internal void Disable(AuroraODEPrim parent) { if (!m_enabled || m_type == Vehicle.TYPE_NONE) return; m_enabled = false; parent._parent_entity.Friction = m_previousFriction;//Revert to the original parent._parent_entity.Restitution = m_previousRestitution; parent.ThrottleUpdates = true; parent.ForceSetVelocity(Vector3.Zero); parent.ForceSetRotVelocity(Vector3.Zero); parent.ForceSetPosition(parent.Position); m_body = IntPtr.Zero; m_linearMotorDirection = Vector3.Zero; m_linearMotorDirectionLASTSET = Vector3.Zero; m_angularMotorDirection = Vector3.Zero; }
internal void Disable(AuroraODEPrim parent) { if (!m_enabled || m_type == Vehicle.TYPE_NONE) return; m_enabled = false; parent.ThrottleUpdates = true; parent.ForceSetVelocity(Vector3.Zero); parent.ForceSetRotVelocity(Vector3.Zero); parent.ForceSetPosition(parent.Position); m_body = IntPtr.Zero; m_linearMotorDirection = Vector3.Zero; m_linearMotorDirectionLASTSET = Vector3.Zero; m_angularMotorDirection = Vector3.Zero; }
private void SendUpdate (AuroraODEPrim parent) { // WE deal with updates if(m_linearZeroFlag && m_angularZeroFlag) { if(m_sentZeroFlag > 0) { parent.ForceSetVelocity(Vector3.Zero); parent.ForceSetRotVelocity(Vector3.Zero); m_sentZeroFlag--; parent.RequestPhysicsterseUpdate(); } } else { if(!m_lastVelocity.ApproxEquals(parent.Velocity, 0.1f) || !m_lastAngVelocity.ApproxEquals(parent.RotationalVelocity, 0.1f)) { m_lastVelocity = parent.Velocity; m_lastAngVelocity = parent.RotationalVelocity; m_sentZeroFlag = 5; } else { } } }