Fixed in room navigation.
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / gui / humaninput / WorldNavigationUserInputTracker.java
index d80924c..de51857 100644 (file)
@@ -21,17 +21,40 @@ public class WorldNavigationUserInputTracker implements UserInputHandler {
     public boolean beforeRender(final ViewPanel viewPanel,
                                 final int millisecondsSinceLastFrame) {
 
-        trackKeys(millisecondsSinceLastFrame, viewPanel);
+        final HIDInputTracker inputTracker = viewPanel.getHIDInputTracker();
+
+        final Avatar avatar = viewPanel.getAvatar();
+
+        final double actualAcceleration = (long) millisecondsSinceLastFrame
+                * avatar.avatarAcceleration
+                * (1 + (avatar.getMovementSpeed() / 10));
+
+        if (inputTracker.isKeyPressed(KeyboardHelper.UP))
+            avatar.getMovementVector().z += actualAcceleration;
+
+        if (inputTracker.isKeyPressed(KeyboardHelper.DOWN))
+            avatar.getMovementVector().z -= actualAcceleration;
+
+        if (inputTracker.isKeyPressed(KeyboardHelper.RIGHT))
+            avatar.getMovementVector().x += actualAcceleration;
+
+        if (inputTracker.isKeyPressed(KeyboardHelper.LEFT))
+            avatar.getMovementVector().x -= actualAcceleration;
+
+        avatar.enforceSpeedLimit();
+
         return false;
     }
 
     @Override
     public boolean focusLost(final ViewPanel viewPanel) {
+        viewPanel.removeViewRenderListener(this);
         return false;
     }
 
     @Override
-    public boolean focusReceived(final ViewPanel viewContext) {
+    public boolean focusReceived(final ViewPanel viewPanel) {
+        viewPanel.addViewRenderListener(this);
         return false;
     }
 
@@ -45,34 +68,4 @@ public class WorldNavigationUserInputTracker implements UserInputHandler {
         return false;
     }
 
-    /**
-     * interpret currently pressed keys
-     */
-    private void trackKeys(final long millisecondsSinceLastFrame,
-                           final ViewPanel viewPanel) {
-
-        System.out.println("Track keys!");
-
-        final HIDInputTracker inputTracker = viewPanel.getHIDInputTracker();
-
-        final Avatar avatar = viewPanel.getAvatar();
-
-        final double actualAcceleration = millisecondsSinceLastFrame
-                * avatar.avatarAcceleration
-                * (1 + (avatar.getMovementSpeed() / 10));
-
-        if (inputTracker.isKeyPressed(KeyboardHelper.UP))
-            avatar.getMovementVector().z += actualAcceleration;
-
-        if (inputTracker.isKeyPressed(KeyboardHelper.DOWN))
-            avatar.getMovementVector().z -= actualAcceleration;
-
-        if (inputTracker.isKeyPressed(KeyboardHelper.RIGHT))
-            avatar.getMovementVector().x += actualAcceleration;
-
-        if (inputTracker.isKeyPressed(KeyboardHelper.LEFT))
-            avatar.getMovementVector().x -= actualAcceleration;
-
-        avatar.enforceSpeedLimit();
-    }
 }