aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin/ODEPrim.cs')
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs32
1 files changed, 22 insertions, 10 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index 7a9734c..947466f 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -819,7 +819,7 @@ namespace OpenSim.Region.Physics.OdePlugin
819 if (m_taintparent.PhysicsActorType == (int)ActorTypes.Prim) 819 if (m_taintparent.PhysicsActorType == (int)ActorTypes.Prim)
820 { 820 {
821 OdePrim obj = (OdePrim)m_taintparent; 821 OdePrim obj = (OdePrim)m_taintparent;
822 if (obj.Body != (IntPtr)0 && Body != (IntPtr)0) 822 if (obj.Body != (IntPtr)0 && Body != (IntPtr)0 && obj.Body != Body)
823 { 823 {
824 _linkJointGroup = d.JointGroupCreate(0); 824 _linkJointGroup = d.JointGroupCreate(0);
825 m_linkJoint = d.JointCreateFixed(_parent_scene.world, _linkJointGroup); 825 m_linkJoint = d.JointCreateFixed(_parent_scene.world, _linkJointGroup);
@@ -1098,7 +1098,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1098 if (_parent != null) 1098 if (_parent != null)
1099 { 1099 {
1100 OdePrim odParent = (OdePrim)_parent; 1100 OdePrim odParent = (OdePrim)_parent;
1101 if (Body != (IntPtr)0 && odParent.Body != (IntPtr)0) 1101 if (Body != (IntPtr)0 && odParent.Body != (IntPtr)0 && Body != odParent.Body)
1102 { 1102 {
1103 m_linkJoint = d.JointCreateFixed(_parent_scene.world, _linkJointGroup); 1103 m_linkJoint = d.JointCreateFixed(_parent_scene.world, _linkJointGroup);
1104 d.JointAttach(m_linkJoint, Body, odParent.Body); 1104 d.JointAttach(m_linkJoint, Body, odParent.Body);
@@ -1978,12 +1978,14 @@ namespace OpenSim.Region.Physics.OdePlugin
1978 { 1978 {
1979 _position = l_position; 1979 _position = l_position;
1980 //_parent_scene.remActivePrim(this); 1980 //_parent_scene.remActivePrim(this);
1981 base.RequestPhysicsterseUpdate(); 1981 if (_parent == null)
1982 base.RequestPhysicsterseUpdate();
1982 return; 1983 return;
1983 } 1984 }
1984 else 1985 else
1985 { 1986 {
1986 base.RaiseOutOfBounds(l_position); 1987 if (_parent == null)
1988 base.RaiseOutOfBounds(l_position);
1987 return; 1989 return;
1988 } 1990 }
1989 } 1991 }
@@ -1998,7 +2000,8 @@ namespace OpenSim.Region.Physics.OdePlugin
1998 2000
1999 2001
2000 //IsPhysical = false; 2002 //IsPhysical = false;
2001 base.RaiseOutOfBounds(_position); 2003 if (_parent == null)
2004 base.RaiseOutOfBounds(_position);
2002 2005
2003 _acceleration.X = 0; 2006 _acceleration.X = 0;
2004 _acceleration.Y = 0; 2007 _acceleration.Y = 0;
@@ -2010,7 +2013,10 @@ namespace OpenSim.Region.Physics.OdePlugin
2010 m_rotationalVelocity.X = 0; 2013 m_rotationalVelocity.X = 0;
2011 m_rotationalVelocity.Y = 0; 2014 m_rotationalVelocity.Y = 0;
2012 m_rotationalVelocity.Z = 0; 2015 m_rotationalVelocity.Z = 0;
2013 base.RequestPhysicsterseUpdate(); 2016
2017 if (_parent == null)
2018 base.RequestPhysicsterseUpdate();
2019
2014 m_throttleUpdates = false; 2020 m_throttleUpdates = false;
2015 throttleCounter = 0; 2021 throttleCounter = 0;
2016 _zeroFlag = true; 2022 _zeroFlag = true;
@@ -2054,14 +2060,20 @@ namespace OpenSim.Region.Physics.OdePlugin
2054 m_throttleUpdates = false; 2060 m_throttleUpdates = false;
2055 throttleCounter = 0; 2061 throttleCounter = 0;
2056 m_rotationalVelocity = pv; 2062 m_rotationalVelocity = pv;
2057 base.RequestPhysicsterseUpdate(); 2063
2064 if (_parent == null)
2065 base.RequestPhysicsterseUpdate();
2066
2058 m_lastUpdateSent = true; 2067 m_lastUpdateSent = true;
2059 } 2068 }
2060 } 2069 }
2061 else 2070 else
2062 { 2071 {
2063 if (lastZeroFlag != _zeroFlag) 2072 if (lastZeroFlag != _zeroFlag)
2064 base.RequestPhysicsterseUpdate(); 2073 {
2074 if (_parent == null)
2075 base.RequestPhysicsterseUpdate();
2076 }
2065 2077
2066 m_lastVelocity = _velocity; 2078 m_lastVelocity = _velocity;
2067 2079
@@ -2092,8 +2104,8 @@ namespace OpenSim.Region.Physics.OdePlugin
2092 m_lastUpdateSent = false; 2104 m_lastUpdateSent = false;
2093 if (!m_throttleUpdates || throttleCounter > 15) 2105 if (!m_throttleUpdates || throttleCounter > 15)
2094 { 2106 {
2095 2107 if (_parent == null)
2096 base.RequestPhysicsterseUpdate(); 2108 base.RequestPhysicsterseUpdate();
2097 } 2109 }
2098 else 2110 else
2099 { 2111 {