2 * Sixth 3D engine. Author: Svjatoslav Agejenko.
3 * This project is released under Creative Commons Zero (CC0) license.
8 package eu.svjatoslav.sixth.e3d.gui.humaninput;
10 import eu.svjatoslav.sixth.e3d.gui.Avatar;
11 import eu.svjatoslav.sixth.e3d.gui.ViewPanel;
12 import eu.svjatoslav.sixth.e3d.gui.textEditorComponent.KeyboardHelper;
14 import java.awt.event.KeyEvent;
16 public class WorldNavigationUserInputTracker implements UserInputHandler {
19 public boolean beforeRender(final ViewPanel viewPanel,
20 final int millisecondsSinceLastFrame) {
22 final HIDInputTracker inputTracker = viewPanel.getHIDInputTracker();
24 final Avatar avatar = viewPanel.getAvatar();
26 final double actualAcceleration = (long) millisecondsSinceLastFrame
27 * avatar.avatarAcceleration
28 * (1 + (avatar.getMovementSpeed() / 10));
30 if (inputTracker.isKeyPressed(KeyboardHelper.UP))
31 avatar.getMovementVector().z += actualAcceleration;
33 if (inputTracker.isKeyPressed(KeyboardHelper.DOWN))
34 avatar.getMovementVector().z -= actualAcceleration;
36 if (inputTracker.isKeyPressed(KeyboardHelper.RIGHT))
37 avatar.getMovementVector().x += actualAcceleration;
39 if (inputTracker.isKeyPressed(KeyboardHelper.LEFT))
40 avatar.getMovementVector().x -= actualAcceleration;
42 avatar.enforceSpeedLimit();
48 public boolean focusLost(final ViewPanel viewPanel) {
49 viewPanel.removeViewRenderListener(this);
54 public boolean focusReceived(final ViewPanel viewPanel) {
55 viewPanel.addViewRenderListener(this);
60 public boolean keyPressed(final KeyEvent event, final ViewPanel viewContext) {
65 public boolean keyReleased(final KeyEvent event, final ViewPanel viewContext) {