armory/Sources/armory/trait/internal/PhysicsConstraint.hx
Lubos Lenco f24324a903 Fix DCE
2017-08-10 14:10:37 +02:00

65 lines
1.4 KiB
Haxe

package armory.trait.internal;
import iron.math.Vec4;
import iron.math.Mat4;
import iron.Trait;
import iron.object.MeshObject;
import iron.data.MeshData;
import iron.data.SceneFormat;
#if arm_physics
import armory.trait.internal.RigidBody;
import armory.trait.internal.PhysicsWorld;
import haxebullet.Bullet;
#end
class PhysicsConstraint extends Trait {
#if (!arm_physics)
public function new() { super(); }
#else
var body1:String;
var body2:String;
public function new(body1:String, body2:String) {
super();
this.body1 = body1;
this.body2 = body2;
Scene.active.notifyOnInit(function() {
notifyOnInit(init);
});
}
function init() {
var physics = PhysicsWorld.active;
var target1 = iron.Scene.active.getChild(body1);
var target2 = iron.Scene.active.getChild(body2);
if (target1 == null || target2 == null) return;
var rb1:RigidBody = target1.getTrait(RigidBody);
var rb2:RigidBody = target2.getTrait(RigidBody);
if (rb1 != null && rb1.ready && rb2 != null && rb2.ready) {
#if js // TODO
var constraint = BtHingeConstraint.create(rb1.body, rb2.body,
BtVector3.create(0, 0.0, -2.0),
BtVector3.create(0, 0.0, 2.0),
BtVector3.create(0, 0, 2.0),
BtVector3.create(0, 0, 2.0));
// constraint.setLimit(0.0, Math.PI / 2.0);
physics.world.addConstraint(constraint, true);
#end
return;
}
// Rigid body not initialized yet
notifyOnInit(init);
}
#end
}