diff options
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index 2bf96e4..c7e0848 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | |||
@@ -2416,6 +2416,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2416 | { | 2416 | { |
2417 | // Averate previous velocity with the new one so | 2417 | // Averate previous velocity with the new one so |
2418 | // client object interpolation works a 'little' better | 2418 | // client object interpolation works a 'little' better |
2419 | if (_zeroFlag) | ||
2420 | return Vector3.Zero; | ||
2421 | |||
2419 | Vector3 returnVelocity = Vector3.Zero; | 2422 | Vector3 returnVelocity = Vector3.Zero; |
2420 | returnVelocity.X = (m_lastVelocity.X + _velocity.X)/2; | 2423 | returnVelocity.X = (m_lastVelocity.X + _velocity.X)/2; |
2421 | returnVelocity.Y = (m_lastVelocity.Y + _velocity.Y)/2; | 2424 | returnVelocity.Y = (m_lastVelocity.Y + _velocity.Y)/2; |
@@ -2702,7 +2705,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2702 | //outofBounds = true; | 2705 | //outofBounds = true; |
2703 | } | 2706 | } |
2704 | 2707 | ||
2705 | // float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation)); | 2708 | //float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation)); |
2706 | //Console.WriteLine("Adiff " + m_primName + " = " + Adiff); | 2709 | //Console.WriteLine("Adiff " + m_primName + " = " + Adiff); |
2707 | if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02) | 2710 | if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02) |
2708 | && (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02) | 2711 | && (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02) |
@@ -2718,6 +2721,8 @@ Console.WriteLine(" JointCreateFixed"); | |||
2718 | { | 2721 | { |
2719 | //m_log.Debug(Math.Abs(m_lastposition.X - l_position.X).ToString()); | 2722 | //m_log.Debug(Math.Abs(m_lastposition.X - l_position.X).ToString()); |
2720 | _zeroFlag = false; | 2723 | _zeroFlag = false; |
2724 | m_lastUpdateSent = false; | ||
2725 | //m_throttleUpdates = false; | ||
2721 | } | 2726 | } |
2722 | 2727 | ||
2723 | if (_zeroFlag) | 2728 | if (_zeroFlag) |
@@ -2744,7 +2749,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2744 | m_rotationalVelocity = pv; | 2749 | m_rotationalVelocity = pv; |
2745 | 2750 | ||
2746 | if (_parent == null) | 2751 | if (_parent == null) |
2752 | { | ||
2747 | base.RequestPhysicsterseUpdate(); | 2753 | base.RequestPhysicsterseUpdate(); |
2754 | } | ||
2748 | 2755 | ||
2749 | m_lastUpdateSent = true; | 2756 | m_lastUpdateSent = true; |
2750 | } | 2757 | } |
@@ -2754,7 +2761,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2754 | if (lastZeroFlag != _zeroFlag) | 2761 | if (lastZeroFlag != _zeroFlag) |
2755 | { | 2762 | { |
2756 | if (_parent == null) | 2763 | if (_parent == null) |
2764 | { | ||
2757 | base.RequestPhysicsterseUpdate(); | 2765 | base.RequestPhysicsterseUpdate(); |
2766 | } | ||
2758 | } | 2767 | } |
2759 | 2768 | ||
2760 | m_lastVelocity = _velocity; | 2769 | m_lastVelocity = _velocity; |
@@ -2787,7 +2796,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2787 | if (!m_throttleUpdates || throttleCounter > _parent_scene.geomUpdatesPerThrottledUpdate) | 2796 | if (!m_throttleUpdates || throttleCounter > _parent_scene.geomUpdatesPerThrottledUpdate) |
2788 | { | 2797 | { |
2789 | if (_parent == null) | 2798 | if (_parent == null) |
2799 | { | ||
2790 | base.RequestPhysicsterseUpdate(); | 2800 | base.RequestPhysicsterseUpdate(); |
2801 | } | ||
2791 | } | 2802 | } |
2792 | else | 2803 | else |
2793 | { | 2804 | { |