diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 05931c72..bfef35d8 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -2137,6 +2137,7 @@ Fix many places where entity position being set on vector fetched from getPositi - Fixed skybox placement update Undo getPosition new alloc to lower memory footprint Work to reduce allocations +Prevent mouse event re-allocation every frame diff --git a/src/main/java/electrosphere/controls/ControlHandler.java b/src/main/java/electrosphere/controls/ControlHandler.java index dcaaa455..f369b7cf 100644 --- a/src/main/java/electrosphere/controls/ControlHandler.java +++ b/src/main/java/electrosphere/controls/ControlHandler.java @@ -86,6 +86,11 @@ public class ControlHandler { */ boolean cameraIsThirdPerson = false; + /** + * Private mouse event to prevent re-allocating + */ + private MouseEvent mouseEvent = new MouseEvent(); + /** * The list of window strings that would block main game controls */ @@ -245,7 +250,7 @@ public class ControlHandler { this.mouseState.setDeltaY(this.mouseState.getLastY() - this.mouseState.getCurrentY()); float xoffset = (float) (this.mouseState.getCurrentX() - this.mouseState.getLastX()); float yoffset = (float) (this.mouseState.getLastY() - this.mouseState.getCurrentY()); - MouseEvent currentMouseEvent = new MouseEvent( + this.mouseEvent.set( (int)this.mouseState.getCurrentX(), (int)this.mouseState.getCurrentY(), (int)this.mouseState.getLastX(), @@ -311,7 +316,7 @@ public class ControlHandler { } break; case MOUSE_MOVEMENT: { if(mouseMoveEvent){ - control.onMove(this.mouseState,currentMouseEvent); + control.onMove(this.mouseState,this.mouseEvent); } } break; case MOUSE_SCROLL: { diff --git a/src/main/java/electrosphere/renderer/ui/events/MouseEvent.java b/src/main/java/electrosphere/renderer/ui/events/MouseEvent.java index e1013b10..59ed0653 100644 --- a/src/main/java/electrosphere/renderer/ui/events/MouseEvent.java +++ b/src/main/java/electrosphere/renderer/ui/events/MouseEvent.java @@ -11,7 +11,7 @@ public class MouseEvent implements Event { boolean button1; boolean button2; - public MouseEvent(int currentX,int currentY,int previousX,int previousY,int deltaX,int deltaY,boolean button1,boolean button2){ + public void set(int currentX,int currentY,int previousX,int previousY,int deltaX,int deltaY,boolean button1,boolean button2){ this.currentX = currentX; this.currentY = currentY; this.previousX = previousX;