diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/UndoState.cs | 8 |
3 files changed, 11 insertions, 9 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 26b35a3..b6fb5a4 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -2825,6 +2825,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2825 | // "[SCENE OBJECT GROUP]: Updating single position of {0} {1} to {2}", part.Name, part.LocalId, pos); | 2825 | // "[SCENE OBJECT GROUP]: Updating single position of {0} {1} to {2}", part.Name, part.LocalId, pos); |
2826 | 2826 | ||
2827 | part.StoreUndoState(false); | 2827 | part.StoreUndoState(false); |
2828 | part.IgnoreUndoUpdate = true; | ||
2828 | 2829 | ||
2829 | if (part.UUID == m_rootPart.UUID) | 2830 | if (part.UUID == m_rootPart.UUID) |
2830 | { | 2831 | { |
@@ -2836,6 +2837,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2836 | } | 2837 | } |
2837 | 2838 | ||
2838 | HasGroupChanged = true; | 2839 | HasGroupChanged = true; |
2840 | part.IgnoreUndoUpdate = false; | ||
2839 | } | 2841 | } |
2840 | } | 2842 | } |
2841 | 2843 | ||
@@ -2848,9 +2850,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2848 | // m_log.DebugFormat( | 2850 | // m_log.DebugFormat( |
2849 | // "[SCENE OBJECT GROUP]: Updating root position of {0} {1} to {2}", Name, LocalId, pos); | 2851 | // "[SCENE OBJECT GROUP]: Updating root position of {0} {1} to {2}", Name, LocalId, pos); |
2850 | 2852 | ||
2851 | SceneObjectPart[] parts = m_parts.GetArray(); | 2853 | // SceneObjectPart[] parts = m_parts.GetArray(); |
2852 | for (int i = 0; i < parts.Length; i++) | 2854 | // for (int i = 0; i < parts.Length; i++) |
2853 | parts[i].StoreUndoState(); | 2855 | // parts[i].StoreUndoState(); |
2854 | 2856 | ||
2855 | Vector3 newPos = new Vector3(pos.X, pos.Y, pos.Z); | 2857 | Vector3 newPos = new Vector3(pos.X, pos.Y, pos.Z); |
2856 | Vector3 oldPos = | 2858 | Vector3 oldPos = |
@@ -2863,7 +2865,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2863 | axDiff *= Quaternion.Inverse(partRotation); | 2865 | axDiff *= Quaternion.Inverse(partRotation); |
2864 | diff = axDiff; | 2866 | diff = axDiff; |
2865 | 2867 | ||
2866 | parts = m_parts.GetArray(); | 2868 | SceneObjectPart[] parts = m_parts.GetArray(); |
2867 | for (int i = 0; i < parts.Length; i++) | 2869 | for (int i = 0; i < parts.Length; i++) |
2868 | { | 2870 | { |
2869 | SceneObjectPart obPart = parts[i]; | 2871 | SceneObjectPart obPart = parts[i]; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 0357cf9..9d7f87a 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -788,7 +788,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
788 | get { return m_offsetPosition; } | 788 | get { return m_offsetPosition; } |
789 | set | 789 | set |
790 | { | 790 | { |
791 | StoreUndoState(); | 791 | // StoreUndoState(); |
792 | m_offsetPosition = value; | 792 | m_offsetPosition = value; |
793 | 793 | ||
794 | if (ParentGroup != null && !ParentGroup.IsDeleted) | 794 | if (ParentGroup != null && !ParentGroup.IsDeleted) |
diff --git a/OpenSim/Region/Framework/Scenes/UndoState.cs b/OpenSim/Region/Framework/Scenes/UndoState.cs index b013d68..6bf89c5 100644 --- a/OpenSim/Region/Framework/Scenes/UndoState.cs +++ b/OpenSim/Region/Framework/Scenes/UndoState.cs | |||
@@ -59,10 +59,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
59 | { | 59 | { |
60 | ForGroup = forGroup; | 60 | ForGroup = forGroup; |
61 | 61 | ||
62 | if (ForGroup) | 62 | // if (ForGroup) |
63 | Position = part.ParentGroup.AbsolutePosition; | 63 | Position = part.ParentGroup.AbsolutePosition; |
64 | else | 64 | // else |
65 | Position = part.OffsetPosition; | 65 | // Position = part.OffsetPosition; |
66 | 66 | ||
67 | // m_log.DebugFormat( | 67 | // m_log.DebugFormat( |
68 | // "[UNDO STATE]: Storing undo position {0} for root part", Position); | 68 | // "[UNDO STATE]: Storing undo position {0} for root part", Position); |
@@ -143,7 +143,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
143 | if (ForGroup) | 143 | if (ForGroup) |
144 | part.ParentGroup.AbsolutePosition = Position; | 144 | part.ParentGroup.AbsolutePosition = Position; |
145 | else | 145 | else |
146 | part.OffsetPosition = Position; | 146 | part.ParentGroup.UpdateRootPosition(Position); |
147 | } | 147 | } |
148 | 148 | ||
149 | // m_log.DebugFormat( | 149 | // m_log.DebugFormat( |