diff options
author | Justin Clark-Casey (justincc) | 2011-07-19 03:38:22 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-07-19 03:38:22 +0100 |
commit | 7c468cda360b9a9382986c3a029b799fd49bf898 (patch) | |
tree | 1abc41267041a08aa2d6462a0652ce4a1de94753 | |
parent | fix undo when resizing of non-root individual prims in a linkset (diff) | |
download | opensim-SC_OLD-7c468cda360b9a9382986c3a029b799fd49bf898.zip opensim-SC_OLD-7c468cda360b9a9382986c3a029b799fd49bf898.tar.gz opensim-SC_OLD-7c468cda360b9a9382986c3a029b799fd49bf898.tar.bz2 opensim-SC_OLD-7c468cda360b9a9382986c3a029b799fd49bf898.tar.xz |
Stop undo of just the root prim position in the linkset from shifting the whole linkset.
However, what happens now is that undo just doesn't do anything when the root prim is selected on its own. This requires more code than just fiddling with undo states.
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 12 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/UndoState.cs | 11 |
4 files changed, 20 insertions, 14 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index a34ad62..00115cc 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -11224,8 +11224,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11224 | if (multipleupdate.AgentData.SessionID != SessionId) | 11224 | if (multipleupdate.AgentData.SessionID != SessionId) |
11225 | return false; | 11225 | return false; |
11226 | 11226 | ||
11227 | // m_log.DebugFormat( | 11227 | m_log.DebugFormat( |
11228 | // "[CLIENT]: Incoming MultipleObjectUpdatePacket contained {0} blocks", multipleupdate.ObjectData.Length); | 11228 | "[CLIENT]: Incoming MultipleObjectUpdatePacket contained {0} blocks", multipleupdate.ObjectData.Length); |
11229 | 11229 | ||
11230 | Scene tScene = (Scene)m_scene; | 11230 | Scene tScene = (Scene)m_scene; |
11231 | 11231 | ||
@@ -11247,9 +11247,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
11247 | } | 11247 | } |
11248 | else | 11248 | else |
11249 | { | 11249 | { |
11250 | // m_log.DebugFormat( | 11250 | m_log.DebugFormat( |
11251 | // "[CLIENT]: Processing block {0} type {1} for {2} {3}", | 11251 | "[CLIENT]: Processing block {0} type {1} for {2} {3}", |
11252 | // i, block.Type, part.Name, part.LocalId); | 11252 | i, block.Type, part.Name, part.LocalId); |
11253 | 11253 | ||
11254 | // // Do this once since fetch parts creates a new array. | 11254 | // // Do this once since fetch parts creates a new array. |
11255 | // SceneObjectPart[] parts = part.ParentGroup.Parts; | 11255 | // SceneObjectPart[] parts = part.ParentGroup.Parts; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 8e174f5..26857c2 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -1296,7 +1296,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1296 | } | 1296 | } |
1297 | } | 1297 | } |
1298 | 1298 | ||
1299 | |||
1300 | /// <summary> | 1299 | /// <summary> |
1301 | /// | 1300 | /// |
1302 | /// </summary> | 1301 | /// </summary> |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 5414cf2..af836f6 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -3705,9 +3705,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3705 | 3705 | ||
3706 | m_undo.Push(nUndo); | 3706 | m_undo.Push(nUndo); |
3707 | 3707 | ||
3708 | // m_log.DebugFormat( | 3708 | m_log.DebugFormat( |
3709 | // "[SCENE OBJECT PART]: Stored undo state for {0} {1}, stack size now {2}", | 3709 | "[SCENE OBJECT PART]: Stored undo state for {0} {1}, stack size now {2}", |
3710 | // Name, LocalId, m_undo.Count); | 3710 | Name, LocalId, m_undo.Count); |
3711 | } | 3711 | } |
3712 | } | 3712 | } |
3713 | } | 3713 | } |
@@ -3740,9 +3740,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3740 | { | 3740 | { |
3741 | lock (m_undo) | 3741 | lock (m_undo) |
3742 | { | 3742 | { |
3743 | // m_log.DebugFormat( | 3743 | m_log.DebugFormat( |
3744 | // "[SCENE OBJECT PART]: Handling undo request for {0} {1}, stack size {2}", | 3744 | "[SCENE OBJECT PART]: Handling undo request for {0} {1}, stack size {2}", |
3745 | // Name, LocalId, m_undo.Count); | 3745 | Name, LocalId, m_undo.Count); |
3746 | 3746 | ||
3747 | if (m_undo.Count > 0) | 3747 | if (m_undo.Count > 0) |
3748 | { | 3748 | { |
diff --git a/OpenSim/Region/Framework/Scenes/UndoState.cs b/OpenSim/Region/Framework/Scenes/UndoState.cs index 1fa8ee2..faa1f9e 100644 --- a/OpenSim/Region/Framework/Scenes/UndoState.cs +++ b/OpenSim/Region/Framework/Scenes/UndoState.cs | |||
@@ -59,7 +59,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
59 | { | 59 | { |
60 | // m_log.DebugFormat( | 60 | // m_log.DebugFormat( |
61 | // "[UNDO STATE]: Storing undo position {0} for root part", part.ParentGroup.AbsolutePosition); | 61 | // "[UNDO STATE]: Storing undo position {0} for root part", part.ParentGroup.AbsolutePosition); |
62 | Position = part.ParentGroup.AbsolutePosition; | 62 | |
63 | if (ForGroup) | ||
64 | Position = part.ParentGroup.AbsolutePosition; | ||
65 | else | ||
66 | Position = part.OffsetPosition; | ||
63 | 67 | ||
64 | // m_log.DebugFormat( | 68 | // m_log.DebugFormat( |
65 | // "[UNDO STATE]: Storing undo rotation {0} for root part", part.RotationOffset); | 69 | // "[UNDO STATE]: Storing undo rotation {0} for root part", part.RotationOffset); |
@@ -134,7 +138,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
134 | // "[UNDO STATE]: Undoing position {0} to {1} for root part {2} {3}", | 138 | // "[UNDO STATE]: Undoing position {0} to {1} for root part {2} {3}", |
135 | // part.ParentGroup.AbsolutePosition, Position, part.Name, part.LocalId); | 139 | // part.ParentGroup.AbsolutePosition, Position, part.Name, part.LocalId); |
136 | 140 | ||
137 | part.ParentGroup.AbsolutePosition = Position; | 141 | if (ForGroup) |
142 | part.ParentGroup.AbsolutePosition = Position; | ||
143 | else | ||
144 | part.OffsetPosition = Position; | ||
138 | } | 145 | } |
139 | 146 | ||
140 | // m_log.DebugFormat( | 147 | // m_log.DebugFormat( |