Changed license to Creative Commons Zero (CC0).
[sixth-3d.git] / src / main / java / eu / svjatoslav / sixth / e3d / gui / humaninput / WorldNavigationUserInputTracker.java
1 /*
2  * Sixth 3D engine. Author: Svjatoslav Agejenko. 
3  * This project is released under Creative Commons Zero (CC0) license.
4  *
5 *
6  */
7
8 package eu.svjatoslav.sixth.e3d.gui.humaninput;
9
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;
13
14 import java.awt.event.KeyEvent;
15
16 public class WorldNavigationUserInputTracker implements UserInputHandler {
17
18     @Override
19     public boolean beforeRender(final ViewPanel viewPanel,
20                                 final int millisecondsSinceLastFrame) {
21
22         final HIDInputTracker inputTracker = viewPanel.getHIDInputTracker();
23
24         final Avatar avatar = viewPanel.getAvatar();
25
26         final double actualAcceleration = (long) millisecondsSinceLastFrame
27                 * avatar.avatarAcceleration
28                 * (1 + (avatar.getMovementSpeed() / 10));
29
30         if (inputTracker.isKeyPressed(KeyboardHelper.UP))
31             avatar.getMovementVector().z += actualAcceleration;
32
33         if (inputTracker.isKeyPressed(KeyboardHelper.DOWN))
34             avatar.getMovementVector().z -= actualAcceleration;
35
36         if (inputTracker.isKeyPressed(KeyboardHelper.RIGHT))
37             avatar.getMovementVector().x += actualAcceleration;
38
39         if (inputTracker.isKeyPressed(KeyboardHelper.LEFT))
40             avatar.getMovementVector().x -= actualAcceleration;
41
42         avatar.enforceSpeedLimit();
43
44         return false;
45     }
46
47     @Override
48     public boolean focusLost(final ViewPanel viewPanel) {
49         viewPanel.removeViewRenderListener(this);
50         return false;
51     }
52
53     @Override
54     public boolean focusReceived(final ViewPanel viewPanel) {
55         viewPanel.addViewRenderListener(this);
56         return false;
57     }
58
59     @Override
60     public boolean keyPressed(final KeyEvent event, final ViewPanel viewContext) {
61         return false;
62     }
63
64     @Override
65     public boolean keyReleased(final KeyEvent event, final ViewPanel viewContext) {
66         return false;
67     }
68
69 }