aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs3
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs22
3 files changed, 19 insertions, 11 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 09781c7..96766f3 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -536,10 +536,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
536 so.AttachedAvatar = sp.UUID; 536 so.AttachedAvatar = sp.UUID;
537 537
538 if (so.RootPart.PhysActor != null) 538 if (so.RootPart.PhysActor != null)
539 { 539 so.RootPart.RemoveFromPhysics();
540 m_scene.PhysicsScene.RemovePrim(so.RootPart.PhysActor);
541 so.RootPart.PhysActor = null;
542 }
543 540
544 so.AbsolutePosition = attachOffset; 541 so.AbsolutePosition = attachOffset;
545 so.RootPart.AttachedPos = attachOffset; 542 so.RootPart.AttachedPos = attachOffset;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 935cac5..03b5d36 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2094,8 +2094,7 @@ namespace OpenSim.Region.Framework.Scenes
2094 } 2094 }
2095 else if (part.PhysActor != null) 2095 else if (part.PhysActor != null)
2096 { 2096 {
2097 PhysicsScene.RemovePrim(part.PhysActor); 2097 part.RemoveFromPhysics();
2098 part.PhysActor = null;
2099 } 2098 }
2100 } 2099 }
2101 2100
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 370c55b..1cdd567 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -1641,6 +1641,7 @@ namespace OpenSim.Region.Framework.Scenes
1641 m_log.ErrorFormat("[SCENE]: caught exception meshing object {0}. Object set to phantom.", m_uuid); 1641 m_log.ErrorFormat("[SCENE]: caught exception meshing object {0}. Object set to phantom.", m_uuid);
1642 PhysActor = null; 1642 PhysActor = null;
1643 } 1643 }
1644
1644 // Basic Physics returns null.. joy joy joy. 1645 // Basic Physics returns null.. joy joy joy.
1645 if (PhysActor != null) 1646 if (PhysActor != null)
1646 { 1647 {
@@ -4454,12 +4455,9 @@ namespace OpenSim.Region.Framework.Scenes
4454 || (Shape.PathCurve == (byte)Extrusion.Flexible)) // note: this may have been changed above in the case of joints 4455 || (Shape.PathCurve == (byte)Extrusion.Flexible)) // note: this may have been changed above in the case of joints
4455 { 4456 {
4456 AddFlag(PrimFlags.Phantom); 4457 AddFlag(PrimFlags.Phantom);
4458
4457 if (PhysActor != null) 4459 if (PhysActor != null)
4458 { 4460 RemoveFromPhysics();
4459 m_parentGroup.Scene.PhysicsScene.RemovePrim(PhysActor);
4460 /// that's not wholesome. Had to make Scene public
4461 PhysActor = null;
4462 }
4463 } 4461 }
4464 else // Not phantom 4462 else // Not phantom
4465 { 4463 {
@@ -4573,6 +4571,20 @@ namespace OpenSim.Region.Framework.Scenes
4573// m_log.DebugFormat("[SCENE OBJECT PART]: Updated PrimFlags on {0} {1} to {2}", Name, LocalId, Flags); 4571// m_log.DebugFormat("[SCENE OBJECT PART]: Updated PrimFlags on {0} {1} to {2}", Name, LocalId, Flags);
4574 } 4572 }
4575 4573
4574 /// <summary>
4575 /// This removes the part from physics
4576 /// </summary>
4577 /// <remarks>
4578 /// This isn't the same as turning off physical, since even without being physical the prim has a physics
4579 /// representation for collision detection. Rather, this would be used in situations such as making a prim
4580 /// phantom.
4581 /// </remarks>
4582 public void RemoveFromPhysics()
4583 {
4584 ParentGroup.Scene.PhysicsScene.RemovePrim(PhysActor);
4585 PhysActor = null;
4586 }
4587
4576 public void UpdateRotation(Quaternion rot) 4588 public void UpdateRotation(Quaternion rot)
4577 { 4589 {
4578 if ((rot.X != RotationOffset.X) || 4590 if ((rot.X != RotationOffset.X) ||