armory/Sources/armory/trait/internal/CameraController.hx

56 lines
1.3 KiB
Haxe
Raw Normal View History

2016-10-02 19:52:40 +02:00
package armory.trait.internal;
import iron.Trait;
import iron.system.Input;
import iron.object.Transform;
import iron.object.CameraObject;
import armory.system.Keymap;
2016-10-12 17:52:27 +02:00
@:keep
2016-10-02 19:52:40 +02:00
class CameraController extends Trait {
2016-10-12 18:26:56 +02:00
#if (!arm_physics)
2016-10-02 19:52:40 +02:00
public function new() { super(); }
#else
var transform:Transform;
var body:RigidBody;
var camera:CameraObject;
2016-10-15 20:19:09 +02:00
var moveForward = false;
var moveBackward = false;
var moveLeft = false;
var moveRight = false;
var jump = false;
2016-10-02 19:52:40 +02:00
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
}