diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index 44eafb7..9c323a4 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | |||
@@ -778,6 +778,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
778 | Body = IntPtr.Zero; | 778 | Body = IntPtr.Zero; |
779 | } | 779 | } |
780 | } | 780 | } |
781 | |||
781 | m_disabled = true; | 782 | m_disabled = true; |
782 | m_collisionscore = 0; | 783 | m_collisionscore = 0; |
783 | } | 784 | } |
@@ -968,7 +969,7 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
968 | OdePrim obj = (OdePrim)m_taintparent; | 969 | OdePrim obj = (OdePrim)m_taintparent; |
969 | //obj.disableBody(); | 970 | //obj.disableBody(); |
970 | //Console.WriteLine("changelink calls ParentPrim"); | 971 | //Console.WriteLine("changelink calls ParentPrim"); |
971 | obj.ParentPrim(this); | 972 | obj.AddChildPrim(this); |
972 | 973 | ||
973 | /* | 974 | /* |
974 | if (obj.Body != (IntPtr)0 && Body != (IntPtr)0 && obj.Body != Body) | 975 | if (obj.Body != (IntPtr)0 && Body != (IntPtr)0 && obj.Body != Body) |
@@ -1008,11 +1009,13 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
1008 | m_taintPhysics = m_isphysical; | 1009 | m_taintPhysics = m_isphysical; |
1009 | } | 1010 | } |
1010 | 1011 | ||
1011 | // I'm the parent | 1012 | /// <summary> |
1012 | // prim is the child | 1013 | /// Add a child prim to this parent prim. |
1013 | public void ParentPrim(OdePrim prim) | 1014 | /// </summary> |
1015 | /// <param name="prim">Child prim</param> | ||
1016 | public void AddChildPrim(OdePrim prim) | ||
1014 | { | 1017 | { |
1015 | //Console.WriteLine("ParentPrim " + Name); | 1018 | //Console.WriteLine("AddChildPrim " + Name); |
1016 | if (this.m_localID != prim.m_localID) | 1019 | if (this.m_localID != prim.m_localID) |
1017 | { | 1020 | { |
1018 | if (Body == IntPtr.Zero) | 1021 | if (Body == IntPtr.Zero) |
@@ -1035,7 +1038,6 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
1035 | d.MassSetZero(out m2); | 1038 | d.MassSetZero(out m2); |
1036 | d.MassSetBoxTotal(out m2, prim.CalculateMass(), prm._size.X, prm._size.Y, prm._size.Z); | 1039 | d.MassSetBoxTotal(out m2, prim.CalculateMass(), prm._size.X, prm._size.Y, prm._size.Z); |
1037 | 1040 | ||
1038 | |||
1039 | d.Quaternion quat = new d.Quaternion(); | 1041 | d.Quaternion quat = new d.Quaternion(); |
1040 | quat.W = prm._orientation.W; | 1042 | quat.W = prm._orientation.W; |
1041 | quat.X = prm._orientation.X; | 1043 | quat.X = prm._orientation.X; |
@@ -1105,6 +1107,7 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
1105 | prm.Body = Body; | 1107 | prm.Body = Body; |
1106 | _parent_scene.addActivePrim(prm); | 1108 | _parent_scene.addActivePrim(prm); |
1107 | } | 1109 | } |
1110 | |||
1108 | m_collisionCategories |= CollisionCategories.Body; | 1111 | m_collisionCategories |= CollisionCategories.Body; |
1109 | m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind); | 1112 | m_collisionFlags |= (CollisionCategories.Land | CollisionCategories.Wind); |
1110 | 1113 | ||
@@ -1113,7 +1116,6 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
1113 | //Console.WriteLine(" Post GeomSetCategoryBits 2"); | 1116 | //Console.WriteLine(" Post GeomSetCategoryBits 2"); |
1114 | d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); | 1117 | d.GeomSetCollideBits(prim_geom, (int)m_collisionFlags); |
1115 | 1118 | ||
1116 | |||
1117 | d.Quaternion quat2 = new d.Quaternion(); | 1119 | d.Quaternion quat2 = new d.Quaternion(); |
1118 | quat2.W = _orientation.W; | 1120 | quat2.W = _orientation.W; |
1119 | quat2.X = _orientation.X; | 1121 | quat2.X = _orientation.X; |
@@ -1135,7 +1137,6 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
1135 | d.BodySetAutoDisableFlag(Body, true); | 1137 | d.BodySetAutoDisableFlag(Body, true); |
1136 | d.BodySetAutoDisableSteps(Body, body_autodisable_frames); | 1138 | d.BodySetAutoDisableSteps(Body, body_autodisable_frames); |
1137 | 1139 | ||
1138 | |||
1139 | m_interpenetrationcount = 0; | 1140 | m_interpenetrationcount = 0; |
1140 | m_collisionscore = 0; | 1141 | m_collisionscore = 0; |
1141 | m_disabled = false; | 1142 | m_disabled = false; |
@@ -1146,7 +1147,9 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
1146 | createAMotor(m_angularlock); | 1147 | createAMotor(m_angularlock); |
1147 | } | 1148 | } |
1148 | d.BodySetPosition(Body, Position.X, Position.Y, Position.Z); | 1149 | d.BodySetPosition(Body, Position.X, Position.Y, Position.Z); |
1149 | if (m_vehicle.Type != Vehicle.TYPE_NONE) m_vehicle.Enable(Body, _parent_scene); | 1150 | if (m_vehicle.Type != Vehicle.TYPE_NONE) |
1151 | m_vehicle.Enable(Body, _parent_scene); | ||
1152 | |||
1150 | _parent_scene.addActivePrim(this); | 1153 | _parent_scene.addActivePrim(this); |
1151 | } | 1154 | } |
1152 | } | 1155 | } |
@@ -1183,7 +1186,7 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
1183 | foreach (OdePrim prm in childrenPrim) | 1186 | foreach (OdePrim prm in childrenPrim) |
1184 | { | 1187 | { |
1185 | //Console.WriteLine("ChildSetGeom calls ParentPrim"); | 1188 | //Console.WriteLine("ChildSetGeom calls ParentPrim"); |
1186 | ParentPrim(prm); | 1189 | AddChildPrim(prm); |
1187 | } | 1190 | } |
1188 | } | 1191 | } |
1189 | 1192 | ||
@@ -1223,7 +1226,7 @@ Console.WriteLine("ZProcessTaints for " + Name); | |||
1223 | foreach (OdePrim prm in childrenPrim) | 1226 | foreach (OdePrim prm in childrenPrim) |
1224 | { | 1227 | { |
1225 | //Console.WriteLine("ChildDelink calls ParentPrim"); | 1228 | //Console.WriteLine("ChildDelink calls ParentPrim"); |
1226 | ParentPrim(prm); | 1229 | AddChildPrim(prm); |
1227 | } | 1230 | } |
1228 | } | 1231 | } |
1229 | } | 1232 | } |