Fix T46902: Revert zeroing velocity in BGE logic brick
authorSybren A. Stüvel <sybren@stuvel.eu>
Mon, 25 Jan 2016 12:43:28 +0000 (13:43 +0100)
committerSybren A. Stüvel <sybren@stuvel.eu>
Mon, 25 Jan 2016 12:50:52 +0000 (13:50 +0100)
This reverts commit 3dbc123061aa063efd1fca358f5e295b0ce7b302, "BGE:
allow setting velocity to zero in a motion actuator" as it caused more
issues than it solved. Zeroing linear or angular velocity with logic
bricks is discussed further in https://developer.blender.org/D1545

source/gameengine/Ketsji/KX_ObjectActuator.cpp

index 87c2592ecfd9fc1e702c67d8c6eb17328b819b48..454366932814dfce8a2950db65467b57452b03ac 100644 (file)
@@ -276,16 +276,8 @@ bool KX_ObjectActuator::Update()
                        {
                                parent->ApplyRotation(m_drot,(m_bitLocalFlag.DRot) != 0);
                        }
-
-                       if (m_bitLocalFlag.ZeroLinearVelocity) {
-                               if (!m_bitLocalFlag.AddOrSetLinV) {
-                                       /* No need to select local or world, as the velocity is zero anyway,
-                                        * and setLinearVelocity() converts local to world first. We do need to
-                                        * pass a true zero vector, as m_linear_velocity is only fuzzily zero. */
-                                       parent->setLinearVelocity(MT_Vector3(0, 0, 0), false);
-                               }
-                       }
-                       else {
+                       if (!m_bitLocalFlag.ZeroLinearVelocity)
+                       {
                                if (m_bitLocalFlag.AddOrSetLinV) {
                                        parent->addLinearVelocity(m_linear_velocity,(m_bitLocalFlag.LinearVelocity) != 0);
                                } else {
@@ -310,13 +302,8 @@ bool KX_ObjectActuator::Update()
                                        }
                                }
                        }
-                       if (m_bitLocalFlag.ZeroAngularVelocity) {
-                               /* No need to select local or world, as the velocity is zero anyway,
-                                * and setAngularVelocity() converts local to world first. We do need to
-                                * pass a true zero vector, as m_angular_velocity is only fuzzily zero. */
-                               parent->setAngularVelocity(MT_Vector3(0, 0, 0), false);
-                       }
-                       else {
+                       if (!m_bitLocalFlag.ZeroAngularVelocity)
+                       {
                                m_active_combined_velocity = true;
                                if (m_damping > 0) {
                                        MT_Vector3 angV;