armory/Sources/armory/trait/internal/CameraController.hx
2016-10-25 13:01:20 +02:00

56 lines
1.3 KiB
Haxe
Executable file

package armory.trait.internal;
import iron.Trait;
import iron.system.Input;
import iron.object.Transform;
import iron.object.CameraObject;
import armory.system.Keymap;
@:keep
class CameraController extends Trait {
#if (!arm_physics)
public function new() { super(); }
#else
var transform:Transform;
var body:RigidBody;
var camera:CameraObject;
var moveForward = false;
var moveBackward = false;
var moveLeft = false;
var moveRight = false;
var jump = false;
public function new() {
super();
Scene.active.notifyOnInit(initInternal);
}
function initInternal() {
transform = object.transform;
body = object.getTrait(RigidBody);
camera = cast(object.getChildOfType(CameraObject), CameraObject);
kha.input.Keyboard.get().notify(onDown, onUp);
}
function onDown(key: kha.Key, char: String) {
if (char == Keymap.forward) moveForward = true;
else if (char == Keymap.right) moveRight = true;
else if (char == Keymap.backward) moveBackward = true;
else if (char == Keymap.left) moveLeft = true;
else if (char == Keymap.jump) jump = true;
}
function onUp(key: kha.Key, char: String) {
if (char == Keymap.forward) moveForward = false;
else if (char == Keymap.right) moveRight = false;
else if (char == Keymap.backward) moveBackward = false;
else if (char == Keymap.left) moveLeft = false;
}
#end
}