diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 41 |
1 files changed, 19 insertions, 22 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index e8d4766..519858b 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -1265,23 +1265,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
1265 | if (part != null) | 1265 | if (part != null) |
1266 | { | 1266 | { |
1267 | part.UpdateShape(shapeBlock); | 1267 | part.UpdateShape(shapeBlock); |
1268 | } | ||
1269 | if (m_rootPart.PhysActor != null) | ||
1270 | { | ||
1271 | m_scene.PhysicsScene.RemovePrim(m_rootPart.PhysActor); | ||
1272 | m_rootPart.PhysActor = m_scene.PhysicsScene.AddPrimShape( | ||
1273 | m_rootPart.Name, | ||
1274 | m_rootPart.Shape, | ||
1275 | new PhysicsVector(m_rootPart.AbsolutePosition.X, m_rootPart.AbsolutePosition.Y, | ||
1276 | m_rootPart.AbsolutePosition.Z), | ||
1277 | new PhysicsVector(m_rootPart.Scale.X, m_rootPart.Scale.Y, m_rootPart.Scale.Z), | ||
1278 | new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X, | ||
1279 | m_rootPart.RotationOffset.Y, m_rootPart.RotationOffset.Z), | ||
1280 | m_rootPart.PhysActor.IsPhysical); | ||
1281 | bool UsePhysics = ((m_rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) != 0); | ||
1282 | m_rootPart.DoPhysicsPropertyUpdate(UsePhysics, true); | ||
1283 | 1268 | ||
1269 | if (part.PhysActor != null) | ||
1270 | m_scene.PhysicsScene.AddPhysicsActorTaint(part.PhysActor); | ||
1284 | } | 1271 | } |
1272 | |||
1285 | } | 1273 | } |
1286 | 1274 | ||
1287 | #endregion | 1275 | #endregion |
@@ -1299,15 +1287,24 @@ namespace OpenSim.Region.Environment.Scenes | |||
1299 | if (part != null) | 1287 | if (part != null) |
1300 | { | 1288 | { |
1301 | part.Resize(scale); | 1289 | part.Resize(scale); |
1302 | if (part.UUID == m_rootPart.UUID) | 1290 | if (part.PhysActor != null) |
1303 | { | 1291 | { |
1304 | if (m_rootPart.PhysActor != null) | 1292 | part.PhysActor.Size = |
1305 | { | 1293 | new PhysicsVector(scale.X, scale.Y, scale.Z); |
1306 | m_rootPart.PhysActor.Size = | 1294 | m_scene.PhysicsScene.AddPhysicsActorTaint(part.PhysActor); |
1307 | new PhysicsVector(m_rootPart.Scale.X, m_rootPart.Scale.Y, m_rootPart.Scale.Z); | ||
1308 | m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor); | ||
1309 | } | ||
1310 | } | 1295 | } |
1296 | if (part.UUID != m_rootPart.UUID) | ||
1297 | ScheduleGroupForFullUpdate(); | ||
1298 | |||
1299 | //if (part.UUID == m_rootPart.UUID) | ||
1300 | //{ | ||
1301 | //if (m_rootPart.PhysActor != null) | ||
1302 | //{ | ||
1303 | //m_rootPart.PhysActor.Size = | ||
1304 | //new PhysicsVector(m_rootPart.Scale.X, m_rootPart.Scale.Y, m_rootPart.Scale.Z); | ||
1305 | //m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor); | ||
1306 | //} | ||
1307 | //} | ||
1311 | } | 1308 | } |
1312 | } | 1309 | } |
1313 | 1310 | ||