56 lines
1.3 KiB
Haxe
Executable file
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
|
|
}
|