summaryrefslogtreecommitdiff
path: root/src/tesseract/objects/remote/RemoteObject.java
blob: e3edc1c8be1a404b0a330137a598437c8d34c159 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package tesseract.objects.remote;

import java.awt.event.KeyEvent;

import javax.vecmath.Vector3f;

import tesseract.objects.PhysicalObject;

/**
 * Parent class of network controlled objects.
 * 
 * @author jesse
 */
public abstract class RemoteObject extends PhysicalObject {
	/**
	 * Serial UID.
	 */
	private static final long serialVersionUID = -6966379446377480998L;
	
	/**
	 * Privately used by the key controller.
	 */
	protected static final float STEP = 0.01f;
	
	public RemoteObject(Vector3f thePosition, float mass) {
		super(thePosition, mass);
	}

	/**
	 * This method is called when a key event is received.
	 * 
	 * @param event The KeyEvent recieved
	 */
	protected void keyEventReceived(final KeyEvent event) {
		switch (event.getKeyCode()) {
			case KeyEvent.VK_W:
				velocity.z -= STEP;
				break;
				
			case KeyEvent.VK_S:
				velocity.z += STEP;
				break;
				
			case KeyEvent.VK_A:
				velocity.x -= STEP;
				break;
				
			case KeyEvent.VK_D:
				velocity.x += STEP;
				break;
		}
	}
	
	/**
	 * Get the name of the object for the menu.
	 * 
	 * @return The object's name for the menu.
	 */
	public abstract String getName();

	/**
	 * Send a KeyEvent to this remote object.
	 * 
	 * @param keyEvent The key event
	 */
	public void sendKeyEvent(final KeyEvent keyEvent) {
		// TODO: Send this event over the network if necessary.
		keyEventReceived(keyEvent);
		
		updateTranformGroup();
	} 

}