get rotation bug fix
This commit is contained in:
parent
512db06d84
commit
919d222b4d
|
@ -10,42 +10,33 @@ class GetRotationNode extends LogicNode {
|
|||
}
|
||||
|
||||
override function get(from:Int):Dynamic {
|
||||
var object:Object = inputs[0].get();
|
||||
if (object == null)
|
||||
return null;
|
||||
var rot = object.transform.rot;
|
||||
switch (from) {
|
||||
case 0:
|
||||
// euler angles
|
||||
var object:Object = inputs[0].get();
|
||||
if (object == null)
|
||||
return null;
|
||||
return object.transform.rot.getEuler();
|
||||
case 1:
|
||||
// angle radians
|
||||
var object:Object = inputs[0].get();
|
||||
if (object == null)
|
||||
return null;
|
||||
var rot = object.transform.rot;
|
||||
var angle = 2 * Math.acos(rot.w);
|
||||
return angle;
|
||||
// euler angles
|
||||
return object.transform.rot.getEuler();
|
||||
case 2:
|
||||
// angle degrees
|
||||
var object:Object = inputs[0].get();
|
||||
if (object == null)
|
||||
return null;
|
||||
var rot = object.transform.rot;
|
||||
var angle = 2 * Math.acos(rot.w);
|
||||
return angle * (180 / Math.PI);
|
||||
case 3:
|
||||
// vector
|
||||
var object:Object = inputs[0].get();
|
||||
if (object == null)
|
||||
return null;
|
||||
var rot = object.transform.rot;
|
||||
var sqrtW = Math.sqrt(1 - (rot.w * rot.w));
|
||||
if (sqrtW == 0)
|
||||
return new Vec3(0, 0, 1);
|
||||
return new Vec3(rot.x / sqrtW, rot.y / sqrtW, rot.z / sqrtW);
|
||||
case 3:
|
||||
// angle radians
|
||||
var angle = 2 * Math.acos(rot.w);
|
||||
return angle;
|
||||
case 4:
|
||||
return new Vec3(rot.x, rot.y, rot.z);
|
||||
// angle degrees
|
||||
var angle = 2 * Math.acos(rot.w);
|
||||
return angle * (180 / Math.PI);
|
||||
case 5:
|
||||
//quaternion xyz
|
||||
return new Vec3(rot.x, rot.y, rot.z);
|
||||
case 6:
|
||||
//quaternion w
|
||||
return rot.w;
|
||||
}
|
||||
return null;
|
||||
|
|
|
@ -12,9 +12,9 @@ class GetRotationNode(Node, ArmLogicTreeNode):
|
|||
def init(self, context):
|
||||
self.inputs.new('ArmNodeSocketObject', 'Object')
|
||||
self.outputs.new('NodeSocketVector', 'Euler Angles')
|
||||
self.outputs.new('NodeSocketVector', 'Vector')
|
||||
self.outputs.new('NodeSocketFloat', 'Angle (Radians)')
|
||||
self.outputs.new('NodeSocketFloat', 'Angle (Degrees)')
|
||||
self.outputs.new('NodeSocketVector', 'Vector')
|
||||
self.outputs.new('NodeSocketVector', 'Quaternion XYZ')
|
||||
self.outputs.new('NodeSocketFloat', 'Quaternion W')
|
||||
|
||||
|
|
Loading…
Reference in a new issue