X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=sixth-3d.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2Fhumaninput%2FWorldNavigationUserInputTracker.java;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fsixth%2Fe3d%2Fgui%2Fhumaninput%2FWorldNavigationUserInputTracker.java;h=d80924cf3c521946d706c5fe30a5894b73a578df;hp=0000000000000000000000000000000000000000;hb=70ee733b25c56bed539b89ff5507ae0af842d68a;hpb=afdebf8f4f532ed5b456040c6c481f3cfbf8d236 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 new file mode 100644 index 0000000..d80924c --- /dev/null +++ b/src/main/java/eu/svjatoslav/sixth/e3d/gui/humaninput/WorldNavigationUserInputTracker.java @@ -0,0 +1,78 @@ +/* + * 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. + * + */ + +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 java.awt.event.KeyEvent; + +public class WorldNavigationUserInputTracker implements UserInputHandler { + + @Override + public boolean beforeRender(final ViewPanel viewPanel, + final int millisecondsSinceLastFrame) { + + trackKeys(millisecondsSinceLastFrame, viewPanel); + return false; + } + + @Override + public boolean focusLost(final ViewPanel viewPanel) { + return false; + } + + @Override + public boolean focusReceived(final ViewPanel viewContext) { + return false; + } + + @Override + public boolean keyPressed(final KeyEvent event, final ViewPanel viewContext) { + return false; + } + + @Override + public boolean keyReleased(final KeyEvent event, final ViewPanel viewContext) { + 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(); + } +}