aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs3
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs22
2 files changed, 18 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index f2b7014..a6ffe6e 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2023,8 +2023,7 @@ namespace OpenSim.Region.Framework.Scenes
2023 } 2023 }
2024 else if (part.PhysActor != null) 2024 else if (part.PhysActor != null)
2025 { 2025 {
2026 PhysicsScene.RemovePrim(part.PhysActor); 2026 part.RemoveFromPhysics();
2027 part.PhysActor = null;
2028 } 2027 }
2029 } 2028 }
2030 2029
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index e52131e..822d54f 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -1589,6 +1589,7 @@ namespace OpenSim.Region.Framework.Scenes
1589 m_log.ErrorFormat("[SCENE]: caught exception meshing object {0}. Object set to phantom.", m_uuid); 1589 m_log.ErrorFormat("[SCENE]: caught exception meshing object {0}. Object set to phantom.", m_uuid);
1590 PhysActor = null; 1590 PhysActor = null;
1591 } 1591 }
1592
1592 // Basic Physics returns null.. joy joy joy. 1593 // Basic Physics returns null.. joy joy joy.
1593 if (PhysActor != null) 1594 if (PhysActor != null)
1594 { 1595 {
@@ -4399,12 +4400,9 @@ namespace OpenSim.Region.Framework.Scenes
4399 || (Shape.PathCurve == (byte)Extrusion.Flexible)) // note: this may have been changed above in the case of joints 4400 || (Shape.PathCurve == (byte)Extrusion.Flexible)) // note: this may have been changed above in the case of joints
4400 { 4401 {
4401 AddFlag(PrimFlags.Phantom); 4402 AddFlag(PrimFlags.Phantom);
4403
4402 if (PhysActor != null) 4404 if (PhysActor != null)
4403 { 4405 RemoveFromPhysics();
4404 m_parentGroup.Scene.PhysicsScene.RemovePrim(PhysActor);
4405 /// that's not wholesome. Had to make Scene public
4406 PhysActor = null;
4407 }
4408 } 4406 }
4409 else // Not phantom 4407 else // Not phantom
4410 { 4408 {
@@ -4518,6 +4516,20 @@ namespace OpenSim.Region.Framework.Scenes
4518// m_log.DebugFormat("[SCENE OBJECT PART]: Updated PrimFlags on {0} {1} to {2}", Name, LocalId, Flags); 4516// m_log.DebugFormat("[SCENE OBJECT PART]: Updated PrimFlags on {0} {1} to {2}", Name, LocalId, Flags);
4519 } 4517 }
4520 4518
4519 /// <summary>
4520 /// This removes the part from physics
4521 /// </summary>
4522 /// <remarks>
4523 /// This isn't the same as turning off physical, since even without being physical the prim has a physics
4524 /// representation for collision detection. Rather, this would be used in situations such as making a prim
4525 /// phantom.
4526 /// </remarks>
4527 public void RemoveFromPhysics()
4528 {
4529 ParentGroup.Scene.PhysicsScene.RemovePrim(PhysActor);
4530 PhysActor = null;
4531 }
4532
4521 public void UpdateRotation(Quaternion rot) 4533 public void UpdateRotation(Quaternion rot)
4522 { 4534 {
4523 if ((rot.X != RotationOffset.X) || 4535 if ((rot.X != RotationOffset.X) ||