aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs23
1 files changed, 15 insertions, 8 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 7254992..3bbf76c 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2624,6 +2624,8 @@ namespace OpenSim.Region.Framework.Scenes
2624// m_log.DebugFormat( 2624// m_log.DebugFormat(
2625// "[SCENE OBJECT GROUP]: Group resizing {0} {1} from {2} to {3}", Name, LocalId, RootPart.Scale, scale); 2625// "[SCENE OBJECT GROUP]: Group resizing {0} {1} from {2} to {3}", Name, LocalId, RootPart.Scale, scale);
2626 2626
2627 RootPart.StoreUndoState(true);
2628
2627 scale.X = Math.Min(scale.X, Scene.m_maxNonphys); 2629 scale.X = Math.Min(scale.X, Scene.m_maxNonphys);
2628 scale.Y = Math.Min(scale.Y, Scene.m_maxNonphys); 2630 scale.Y = Math.Min(scale.Y, Scene.m_maxNonphys);
2629 scale.Z = Math.Min(scale.Z, Scene.m_maxNonphys); 2631 scale.Z = Math.Min(scale.Z, Scene.m_maxNonphys);
@@ -2722,16 +2724,20 @@ namespace OpenSim.Region.Framework.Scenes
2722 prevScale.X *= x; 2724 prevScale.X *= x;
2723 prevScale.Y *= y; 2725 prevScale.Y *= y;
2724 prevScale.Z *= z; 2726 prevScale.Z *= z;
2727
2728// RootPart.IgnoreUndoUpdate = true;
2725 RootPart.Resize(prevScale); 2729 RootPart.Resize(prevScale);
2730// RootPart.IgnoreUndoUpdate = false;
2726 2731
2727 parts = m_parts.GetArray(); 2732 parts = m_parts.GetArray();
2728 for (int i = 0; i < parts.Length; i++) 2733 for (int i = 0; i < parts.Length; i++)
2729 { 2734 {
2730 SceneObjectPart obPart = parts[i]; 2735 SceneObjectPart obPart = parts[i];
2731// obPart.IgnoreUndoUpdate = true;
2732 2736
2733 if (obPart.UUID != m_rootPart.UUID) 2737 if (obPart.UUID != m_rootPart.UUID)
2734 { 2738 {
2739 obPart.IgnoreUndoUpdate = true;
2740
2735 Vector3 currentpos = new Vector3(obPart.OffsetPosition); 2741 Vector3 currentpos = new Vector3(obPart.OffsetPosition);
2736 currentpos.X *= x; 2742 currentpos.X *= x;
2737 currentpos.Y *= y; 2743 currentpos.Y *= y;
@@ -2741,12 +2747,11 @@ namespace OpenSim.Region.Framework.Scenes
2741 newSize.X *= x; 2747 newSize.X *= x;
2742 newSize.Y *= y; 2748 newSize.Y *= y;
2743 newSize.Z *= z; 2749 newSize.Z *= z;
2744
2745 obPart.Resize(newSize);
2746 2750
2747 obPart.IgnoreUndoUpdate = true; 2751 obPart.Resize(newSize);
2748 obPart.UpdateOffSet(currentpos); 2752 obPart.UpdateOffSet(currentpos);
2749 obPart.IgnoreUndoUpdate = false; 2753
2754 obPart.IgnoreUndoUpdate = false;
2750 } 2755 }
2751 2756
2752// obPart.IgnoreUndoUpdate = false; 2757// obPart.IgnoreUndoUpdate = false;
@@ -2769,9 +2774,11 @@ namespace OpenSim.Region.Framework.Scenes
2769 { 2774 {
2770// m_log.DebugFormat("[SCENE OBJECT GROUP]: Updating group position on {0} {1} to {2}", Name, LocalId, pos); 2775// m_log.DebugFormat("[SCENE OBJECT GROUP]: Updating group position on {0} {1} to {2}", Name, LocalId, pos);
2771 2776
2772 SceneObjectPart[] parts = m_parts.GetArray(); 2777 RootPart.StoreUndoState(true);
2773 for (int i = 0; i < parts.Length; i++) 2778
2774 parts[i].StoreUndoState(); 2779// SceneObjectPart[] parts = m_parts.GetArray();
2780// for (int i = 0; i < parts.Length; i++)
2781// parts[i].StoreUndoState();
2775 2782
2776 if (m_scene.EventManager.TriggerGroupMove(UUID, pos)) 2783 if (m_scene.EventManager.TriggerGroupMove(UUID, pos))
2777 { 2784 {