X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2Fhumaninput%2FWorldNavigationUserInputTracker.java;h=9c8415e073f523e39f6699a10472b9f93abb881b;hb=a3ff3683bd0a025061667b26b6fcf56fe20f0afc;hp=d80924cf3c521946d706c5fe30a5894b73a578df;hpb=70ee733b25c56bed539b89ff5507ae0af842d68a;p=sixth-3d.git diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/WorldNavigationUserInputTracker.java b/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/WorldNavigationUserInputTracker.java index d80924c..9c8415e 100644 --- a/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/WorldNavigationUserInputTracker.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/WorldNavigationUserInputTracker.java @@ -1,37 +1,55 @@ /* - * Sixth 3D engine. Copyright ©2012-2018, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of version 3 of the GNU Lesser General Public License - * or later as published by the Free Software Foundation. - * + * Sixth 3D engine. Author: Svjatoslav Agejenko. + * This project is released under Creative Commons Zero (CC0) license. */ - package eu.svjatoslav.sixth.e3d.gui.humaninput; import eu.svjatoslav.sixth.e3d.gui.Avatar; import eu.svjatoslav.sixth.e3d.gui.ViewPanel; -import eu.svjatoslav.sixth.e3d.gui.textEditorComponent.KeyboardHelper; +import eu.svjatoslav.sixth.e3d.gui.ViewRenderListener; import java.awt.event.KeyEvent; -public class WorldNavigationUserInputTracker implements UserInputHandler { +public class WorldNavigationUserInputTracker implements KeyboardInputHandler, ViewRenderListener { @Override 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 +63,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(); - } }