This commit is contained in:
unknown 2019-04-06 19:15:43 +02:00
parent 86b28c733b
commit eeb81e22c3
4 changed files with 25 additions and 31 deletions

View file

@ -13,21 +13,22 @@ class ApplyForceNode extends LogicNode {
override function run(from:Int) {
var object:Object = inputs[1].get();
var force:Vec4 = inputs[2].get();
var local:Bool = inputs[3].get();
var look:Vec4; var right:Vec4; var up:Vec4;
var local:Bool = inputs.length > 3 ? inputs[3].get() : false;
if (object == null || force == null) return;
#if arm_physics
var rb:RigidBody = object.getTrait(RigidBody);
if (!local) {
rb.applyForce(force);
rb.applyForce(force);
}
else {
look = object.transform.world.look().mult(force.x);
right = object.transform.world.right().mult(force.y);
up = object.transform.world.up().mult(force.z);
rb.applyForce(look); rb.applyImpulse(right); rb.applyImpulse(up);
var look = object.transform.world.look().mult(force.x);
var right = object.transform.world.right().mult(force.y);
var up = object.transform.world.up().mult(force.z);
rb.applyForce(look);
rb.applyImpulse(right);
rb.applyImpulse(up);
}
#end

View file

@ -13,21 +13,22 @@ class ApplyImpulseNode extends LogicNode {
override function run(from:Int) {
var object:Object = inputs[1].get();
var impulse:Vec4 = inputs[2].get();
var local:Bool = inputs[3].get();
var look:Vec4; var right:Vec4; var up:Vec4;
var local:Bool = inputs.length > 3 ? inputs[3].get() : false;
if (object == null || impulse == null) return;
#if arm_physics
var rb:RigidBody = object.getTrait(RigidBody);
if (!local) {
rb.applyImpulse(impulse);
rb.applyImpulse(impulse);
}
else {
look = object.transform.world.look().mult(impulse.x);
right = object.transform.world.right().mult(impulse.y);
up = object.transform.world.up().mult(impulse.z);
rb.applyImpulse(look); rb.applyImpulse(right); rb.applyImpulse(up);
var look = object.transform.world.look().mult(impulse.x);
var right = object.transform.world.right().mult(impulse.y);
var up = object.transform.world.up().mult(impulse.z);
rb.applyImpulse(look);
rb.applyImpulse(right);
rb.applyImpulse(up);
}
#end

View file

@ -14,19 +14,18 @@ class TranslateObjectNode extends LogicNode {
override function run(from:Int) {
var object:Object = inputs[1].get();
var vec:Vec4 = inputs[2].get();
var local:Bool = inputs[3].get();
var look:Vec4; var right:Vec4; var up:Vec4;
var local:Bool = inputs.length > 3 ? inputs[3].get() : false;
if (object == null || vec == null) return;
if(!local) {
object.transform.loc.add(vec);
object.transform.buildMatrix();
object.transform.loc.add(vec);
object.transform.buildMatrix();
}
else {
look = object.transform.world.look().mult(vec.x);
right = object.transform.world.right().mult(vec.y);
up = object.transform.world.up().mult(vec.z);
var look = object.transform.world.look().mult(vec.x);
var right = object.transform.world.right().mult(vec.y);
var up = object.transform.world.up().mult(vec.z);
object.transform.loc.add(look);
object.transform.loc.add(right);
object.transform.loc.add(up);
@ -40,11 +39,4 @@ class TranslateObjectNode extends LogicNode {
runOutput(0);
}
function multVecs(a:Vec4, b:Vec4):Vec4{
var r; r = new Vec4();
r.x=a.x*b.x;
r.y=a.y*b.y;
r.z=a.z*b.z;
return r;
}
}

View file

@ -24,14 +24,14 @@ class TranslateOnLocalAxisNode extends LogicNode {
if (l == 1) loc.setFrom(object.transform.world.look());
else if (l == 2) loc.setFrom(object.transform.world.up());
else if (l == 3) loc.setFrom(object.transform.world.right());
if (ini) {
loc.x = -loc.x;
loc.y = -loc.y;
loc.z = -loc.z;
}
}
vec.x = loc.x * sp;
vec.y = loc.y * sp;
vec.z = loc.z * sp;