aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-07-16 01:36:27 +0100
committerJustin Clark-Casey (justincc)2011-07-16 01:36:27 +0100
commit18652eb87ef0613b66664059581f991448d76af4 (patch)
treed0ca27e3ccaed6d82d56e8431136ebf4ccb6df63 /OpenSim/Region/Framework/Scenes
parentuse constants in llGetObjectDetails() rather than magic numbers (diff)
downloadopensim-SC-18652eb87ef0613b66664059581f991448d76af4.zip
opensim-SC-18652eb87ef0613b66664059581f991448d76af4.tar.gz
opensim-SC-18652eb87ef0613b66664059581f991448d76af4.tar.bz2
opensim-SC-18652eb87ef0613b66664059581f991448d76af4.tar.xz
Fix physics proxy regeneration when a mesh with more than one submesh is resized
Addresses http://opensimulator.org/mantis/view.php?id=5584
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs12
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs9
2 files changed, 20 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 0fbd746..fd5f1b0 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2662,13 +2662,18 @@ namespace OpenSim.Region.Framework.Scenes
2662 SceneObjectPart part = GetChildPart(localID); 2662 SceneObjectPart part = GetChildPart(localID);
2663 if (part != null) 2663 if (part != null)
2664 { 2664 {
2665// m_log.DebugFormat(
2666// "[SCENE OBJECT GROUP]: Group resizing {0} {1} from {2} to {3}", Name, localID, part.Scale, scale);
2667
2665 part.IgnoreUndoUpdate = true; 2668 part.IgnoreUndoUpdate = true;
2669
2666 if (scale.X > m_scene.m_maxNonphys) 2670 if (scale.X > m_scene.m_maxNonphys)
2667 scale.X = m_scene.m_maxNonphys; 2671 scale.X = m_scene.m_maxNonphys;
2668 if (scale.Y > m_scene.m_maxNonphys) 2672 if (scale.Y > m_scene.m_maxNonphys)
2669 scale.Y = m_scene.m_maxNonphys; 2673 scale.Y = m_scene.m_maxNonphys;
2670 if (scale.Z > m_scene.m_maxNonphys) 2674 if (scale.Z > m_scene.m_maxNonphys)
2671 scale.Z = m_scene.m_maxNonphys; 2675 scale.Z = m_scene.m_maxNonphys;
2676
2672 if (part.PhysActor != null && part.PhysActor.IsPhysical) 2677 if (part.PhysActor != null && part.PhysActor.IsPhysical)
2673 { 2678 {
2674 if (scale.X > m_scene.m_maxPhys) 2679 if (scale.X > m_scene.m_maxPhys)
@@ -2780,7 +2785,14 @@ namespace OpenSim.Region.Framework.Scenes
2780 newSize.Z *= z; 2785 newSize.Z *= z;
2781 obPart.Resize(newSize); 2786 obPart.Resize(newSize);
2782 obPart.UpdateOffSet(currentpos); 2787 obPart.UpdateOffSet(currentpos);
2788
2789 if (obPart.PhysActor != null)
2790 {
2791 obPart.PhysActor.Size = newSize;
2792 m_scene.PhysicsScene.AddPhysicsActorTaint(obPart.PhysActor);
2793 }
2783 } 2794 }
2795
2784 obPart.IgnoreUndoUpdate = false; 2796 obPart.IgnoreUndoUpdate = false;
2785 obPart.StoreUndoState(); 2797 obPart.StoreUndoState();
2786 } 2798 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 7604510..96dc82b8 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2839,6 +2839,8 @@ namespace OpenSim.Region.Framework.Scenes
2839 /// <param name="scale"></param> 2839 /// <param name="scale"></param>
2840 public void Resize(Vector3 scale) 2840 public void Resize(Vector3 scale)
2841 { 2841 {
2842// m_log.DebugFormat("[SCENE OBJECT PART]: Resizing {0} {1} to {2}", Name, LocalId, scale);
2843
2842 StoreUndoState(); 2844 StoreUndoState();
2843 m_shape.Scale = scale; 2845 m_shape.Scale = scale;
2844 2846
@@ -2976,6 +2978,11 @@ namespace OpenSim.Region.Framework.Scenes
2976 } 2978 }
2977 } 2979 }
2978 2980
2981 /// <summary>
2982 /// Sets sculpt and mesh data, and tells the physics engine to process the change.
2983 /// </summary>
2984 /// <param name="textureID">Texture id of the mesh. XXX: Redundant since this is also in AssetBase</param>
2985 /// <param name="texture">The mesh itself.</param>
2979 public void SculptTextureCallback(UUID textureID, AssetBase texture) 2986 public void SculptTextureCallback(UUID textureID, AssetBase texture)
2980 { 2987 {
2981 if (m_shape.SculptEntry) 2988 if (m_shape.SculptEntry)
@@ -4613,7 +4620,7 @@ namespace OpenSim.Region.Framework.Scenes
4613 /// </remarks> 4620 /// </remarks>
4614 public void CheckSculptAndLoad() 4621 public void CheckSculptAndLoad()
4615 { 4622 {
4616// m_log.Debug("Processing CheckSculptAndLoad for {0} {1}", Name, LocalId); 4623// m_log.DebugFormat("Processing CheckSculptAndLoad for {0} {1}", Name, LocalId);
4617 4624
4618 if (ParentGroup.IsDeleted) 4625 if (ParentGroup.IsDeleted)
4619 return; 4626 return;