Files
2026-10-25 12:43:53 -07:00

53 lines
1.1 KiB
Haxe

package lnx;
import leenkx.trait.physics.RigidBody;
class TankTrait extends iron.Trait {
static var q = new iron.math.Quat();
var transform:iron.object.Transform;
public function new() {
super();
notifyOnInit(function() {
transform = object.transform;
});
}
public function turnLeft() {
q.fromEuler(0, 0, 0.03);
transform.rot.mult(q);
transform.buildMatrix();
syncRigidBody();
}
public function turnRight() {
q.fromEuler(0, 0, -0.03);
transform.rot.mult(q);
transform.buildMatrix();
syncRigidBody();
}
public function forward() {
var vec = transform.look();
vec.mult(0.05);
transform.loc.add(vec);
transform.buildMatrix();
syncRigidBody();
}
public function backward() {
var vec = transform.look();
vec.mult(-0.05);
transform.loc.add(vec);
transform.buildMatrix();
syncRigidBody();
}
function syncRigidBody() {
var rigidBody = object.getTrait(RigidBody);
if (rigidBody != null) rigidBody.syncTransform();
}
}