From 7c468cda360b9a9382986c3a029b799fd49bf898 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 19 Jul 2011 03:38:22 +0100 Subject: 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. --- OpenSim/Region/Framework/Scenes/UndoState.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/UndoState.cs') 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 { // m_log.DebugFormat( // "[UNDO STATE]: Storing undo position {0} for root part", part.ParentGroup.AbsolutePosition); - Position = part.ParentGroup.AbsolutePosition; + + if (ForGroup) + Position = part.ParentGroup.AbsolutePosition; + else + Position = part.OffsetPosition; // m_log.DebugFormat( // "[UNDO STATE]: Storing undo rotation {0} for root part", part.RotationOffset); @@ -134,7 +138,10 @@ namespace OpenSim.Region.Framework.Scenes // "[UNDO STATE]: Undoing position {0} to {1} for root part {2} {3}", // part.ParentGroup.AbsolutePosition, Position, part.Name, part.LocalId); - part.ParentGroup.AbsolutePosition = Position; + if (ForGroup) + part.ParentGroup.AbsolutePosition = Position; + else + part.OffsetPosition = Position; } // m_log.DebugFormat( -- cgit v1.1