From d1a0fc69c8db13ad657c307f5118ae56ffd61a1c Mon Sep 17 00:00:00 2001 From: Sandy <48373918+Sandy10000@users.noreply.github.com> Date: Sat, 14 Mar 2020 20:58:56 +0900 Subject: [PATCH] Addressing issues reported in the Armory forum https://forums.armory3d.org/t/something-wrong-with-translate-on-local-axis/2772 https://forums.armory3d.org/t/how-to-avoid-camera-going-through-rigid-bodies/3945 --- .../armory/logicnode/TranslateObjectNode.hx | 9 +++----- .../logicnode/TranslateOnLocalAxisNode.hx | 21 ++++--------------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/Sources/armory/logicnode/TranslateObjectNode.hx b/Sources/armory/logicnode/TranslateObjectNode.hx index d5d8c576..b3ede564 100644 --- a/Sources/armory/logicnode/TranslateObjectNode.hx +++ b/Sources/armory/logicnode/TranslateObjectNode.hx @@ -22,12 +22,9 @@ class TranslateObjectNode extends LogicNode { object.transform.buildMatrix(); } else { - var look = object.transform.world.look().mult(vec.y); - var right = object.transform.world.right().mult(vec.x); - var up = object.transform.world.up().mult(vec.z); - object.transform.loc.add(look); - object.transform.loc.add(right); - object.transform.loc.add(up); + object.transform.move(object.transform.local.look(),vec.y); + object.transform.move(object.transform.local.up(),vec.z); + object.transform.move(object.transform.local.right(),vec.x); object.transform.buildMatrix(); } diff --git a/Sources/armory/logicnode/TranslateOnLocalAxisNode.hx b/Sources/armory/logicnode/TranslateOnLocalAxisNode.hx index 2182affb..4906fce1 100644 --- a/Sources/armory/logicnode/TranslateOnLocalAxisNode.hx +++ b/Sources/armory/logicnode/TranslateOnLocalAxisNode.hx @@ -1,14 +1,10 @@ package armory.logicnode; import iron.object.Object; -import iron.math.Vec4; import armory.trait.physics.RigidBody; class TranslateOnLocalAxisNode extends LogicNode { - var loc = new Vec4(); - var vec = new Vec4(); - public function new(tree: LogicTree) { super(tree); } @@ -21,21 +17,12 @@ class TranslateOnLocalAxisNode extends LogicNode { if (object == null) return; - 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) sp *= -1; - if (ini) { - loc.x = -loc.x; - loc.y = -loc.y; - loc.z = -loc.z; - } + if (l == 1) object.transform.move(object.transform.local.look(),sp); + else if (l == 2) object.transform.move(object.transform.local.up(),sp); + else if (l == 3) object.transform.move(object.transform.local.right(),sp); - vec.x = loc.x * sp; - vec.y = loc.y * sp; - vec.z = loc.z * sp; - - object.transform.loc.add(vec); object.transform.buildMatrix(); #if arm_physics