aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-07-19 03:38:22 +0100
committerJustin Clark-Casey (justincc)2011-07-19 03:38:22 +0100
commit7c468cda360b9a9382986c3a029b799fd49bf898 (patch)
tree1abc41267041a08aa2d6462a0652ce4a1de94753
parentfix undo when resizing of non-root individual prims in a linkset (diff)
downloadopensim-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.cs10
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs12
-rw-r--r--OpenSim/Region/Framework/Scenes/UndoState.cs11
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(