diff options
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 62 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/UndoState.cs | 18 |
3 files changed, 39 insertions, 45 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 038eaa4..2d71372 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1569,7 +1569,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1569 | // "[SCENE OBJECT GROUP]: Processing OnGrabPart for {0} on {1} {2}, offsetPos {3}", | 1569 | // "[SCENE OBJECT GROUP]: Processing OnGrabPart for {0} on {1} {2}, offsetPos {3}", |
1570 | // remoteClient.Name, part.Name, part.LocalId, offsetPos); | 1570 | // remoteClient.Name, part.Name, part.LocalId, offsetPos); |
1571 | 1571 | ||
1572 | part.StoreUndoState(); | 1572 | // part.StoreUndoState(); |
1573 | part.OnGrab(offsetPos, remoteClient); | 1573 | part.OnGrab(offsetPos, remoteClient); |
1574 | } | 1574 | } |
1575 | 1575 | ||
@@ -3119,7 +3119,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3119 | { | 3119 | { |
3120 | // m_log.DebugFormat( | 3120 | // m_log.DebugFormat( |
3121 | // "[SCENE OBJECT GROUP]: Group resizing {0} {1} from {2} to {3}", Name, LocalId, RootPart.Scale, scale); | 3121 | // "[SCENE OBJECT GROUP]: Group resizing {0} {1} from {2} to {3}", Name, LocalId, RootPart.Scale, scale); |
3122 | RootPart.StoreUndoState(true); | 3122 | // RootPart.StoreUndoState(true); |
3123 | 3123 | ||
3124 | scale.X = Math.Min(scale.X, Scene.m_maxNonphys); | 3124 | scale.X = Math.Min(scale.X, Scene.m_maxNonphys); |
3125 | scale.Y = Math.Min(scale.Y, Scene.m_maxNonphys); | 3125 | scale.Y = Math.Min(scale.Y, Scene.m_maxNonphys); |
@@ -3230,7 +3230,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3230 | 3230 | ||
3231 | if (obPart.UUID != m_rootPart.UUID) | 3231 | if (obPart.UUID != m_rootPart.UUID) |
3232 | { | 3232 | { |
3233 | obPart.IgnoreUndoUpdate = true; | 3233 | // obPart.IgnoreUndoUpdate = true; |
3234 | 3234 | ||
3235 | Vector3 currentpos = new Vector3(obPart.OffsetPosition); | 3235 | Vector3 currentpos = new Vector3(obPart.OffsetPosition); |
3236 | currentpos.X *= x; | 3236 | currentpos.X *= x; |
@@ -3245,7 +3245,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3245 | obPart.Resize(newSize); | 3245 | obPart.Resize(newSize); |
3246 | obPart.UpdateOffSet(currentpos); | 3246 | obPart.UpdateOffSet(currentpos); |
3247 | 3247 | ||
3248 | obPart.IgnoreUndoUpdate = false; | 3248 | // obPart.IgnoreUndoUpdate = false; |
3249 | } | 3249 | } |
3250 | 3250 | ||
3251 | // obPart.IgnoreUndoUpdate = false; | 3251 | // obPart.IgnoreUndoUpdate = false; |
@@ -3270,7 +3270,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3270 | { | 3270 | { |
3271 | // m_log.DebugFormat("[SCENE OBJECT GROUP]: Updating group position on {0} {1} to {2}", Name, LocalId, pos); | 3271 | // m_log.DebugFormat("[SCENE OBJECT GROUP]: Updating group position on {0} {1} to {2}", Name, LocalId, pos); |
3272 | 3272 | ||
3273 | RootPart.StoreUndoState(true); | 3273 | // RootPart.StoreUndoState(true); |
3274 | 3274 | ||
3275 | // SceneObjectPart[] parts = m_parts.GetArray(); | 3275 | // SceneObjectPart[] parts = m_parts.GetArray(); |
3276 | // for (int i = 0; i < parts.Length; i++) | 3276 | // for (int i = 0; i < parts.Length; i++) |
@@ -3311,17 +3311,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
3311 | { | 3311 | { |
3312 | SceneObjectPart part = GetChildPart(localID); | 3312 | SceneObjectPart part = GetChildPart(localID); |
3313 | 3313 | ||
3314 | SceneObjectPart[] parts = m_parts.GetArray(); | 3314 | // SceneObjectPart[] parts = m_parts.GetArray(); |
3315 | for (int i = 0; i < parts.Length; i++) | 3315 | // for (int i = 0; i < parts.Length; i++) |
3316 | parts[i].StoreUndoState(); | 3316 | // parts[i].StoreUndoState(); |
3317 | 3317 | ||
3318 | if (part != null) | 3318 | if (part != null) |
3319 | { | 3319 | { |
3320 | // m_log.DebugFormat( | 3320 | // m_log.DebugFormat( |
3321 | // "[SCENE OBJECT GROUP]: Updating single position of {0} {1} to {2}", part.Name, part.LocalId, pos); | 3321 | // "[SCENE OBJECT GROUP]: Updating single position of {0} {1} to {2}", part.Name, part.LocalId, pos); |
3322 | 3322 | ||
3323 | part.StoreUndoState(false); | 3323 | // part.StoreUndoState(false); |
3324 | part.IgnoreUndoUpdate = true; | 3324 | // part.IgnoreUndoUpdate = true; |
3325 | 3325 | ||
3326 | // unlock parts position change | 3326 | // unlock parts position change |
3327 | if (m_rootPart.PhysActor != null) | 3327 | if (m_rootPart.PhysActor != null) |
@@ -3340,7 +3340,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3340 | m_rootPart.PhysActor.Building = false; | 3340 | m_rootPart.PhysActor.Building = false; |
3341 | 3341 | ||
3342 | HasGroupChanged = true; | 3342 | HasGroupChanged = true; |
3343 | part.IgnoreUndoUpdate = false; | 3343 | // part.IgnoreUndoUpdate = false; |
3344 | } | 3344 | } |
3345 | } | 3345 | } |
3346 | 3346 | ||
@@ -3377,16 +3377,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
3377 | } | 3377 | } |
3378 | 3378 | ||
3379 | //We have to set undoing here because otherwise an undo state will be saved | 3379 | //We have to set undoing here because otherwise an undo state will be saved |
3380 | if (!m_rootPart.Undoing) | 3380 | // if (!m_rootPart.Undoing) |
3381 | { | 3381 | // { |
3382 | m_rootPart.Undoing = true; | 3382 | // m_rootPart.Undoing = true; |
3383 | AbsolutePosition = newPos; | ||
3384 | m_rootPart.Undoing = false; | ||
3385 | } | ||
3386 | else | ||
3387 | { | ||
3388 | AbsolutePosition = newPos; | 3383 | AbsolutePosition = newPos; |
3389 | } | 3384 | // m_rootPart.Undoing = false; |
3385 | // } | ||
3386 | // else | ||
3387 | // { | ||
3388 | // AbsolutePosition = newPos; | ||
3389 | // } | ||
3390 | 3390 | ||
3391 | HasGroupChanged = true; | 3391 | HasGroupChanged = true; |
3392 | if (m_rootPart.Undoing) | 3392 | if (m_rootPart.Undoing) |
@@ -3416,9 +3416,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
3416 | // for (int i = 0; i < parts.Length; i++) | 3416 | // for (int i = 0; i < parts.Length; i++) |
3417 | // parts[i].StoreUndoState(); | 3417 | // parts[i].StoreUndoState(); |
3418 | 3418 | ||
3419 | m_rootPart.StoreUndoState(true); | 3419 | // m_rootPart.StoreUndoState(true); |
3420 | 3420 | ||
3421 | m_rootPart.UpdateRotation(rot); | 3421 | // m_rootPart.UpdateRotation(rot); |
3422 | 3422 | ||
3423 | PhysicsActor actor = m_rootPart.PhysActor; | 3423 | PhysicsActor actor = m_rootPart.PhysActor; |
3424 | if (actor != null) | 3424 | if (actor != null) |
@@ -3445,8 +3445,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3445 | // for (int i = 0; i < parts.Length; i++) | 3445 | // for (int i = 0; i < parts.Length; i++) |
3446 | // parts[i].StoreUndoState(); | 3446 | // parts[i].StoreUndoState(); |
3447 | 3447 | ||
3448 | RootPart.StoreUndoState(true); | 3448 | // RootPart.StoreUndoState(true); |
3449 | RootPart.IgnoreUndoUpdate = true; | 3449 | // RootPart.IgnoreUndoUpdate = true; |
3450 | 3450 | ||
3451 | m_rootPart.UpdateRotation(rot); | 3451 | m_rootPart.UpdateRotation(rot); |
3452 | 3452 | ||
@@ -3462,7 +3462,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3462 | HasGroupChanged = true; | 3462 | HasGroupChanged = true; |
3463 | ScheduleGroupForTerseUpdate(); | 3463 | ScheduleGroupForTerseUpdate(); |
3464 | 3464 | ||
3465 | RootPart.IgnoreUndoUpdate = false; | 3465 | // RootPart.IgnoreUndoUpdate = false; |
3466 | } | 3466 | } |
3467 | 3467 | ||
3468 | /// <summary> | 3468 | /// <summary> |
@@ -3511,8 +3511,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3511 | // "[SCENE OBJECT GROUP]: Updating single position and rotation of {0} {1} to {2}", | 3511 | // "[SCENE OBJECT GROUP]: Updating single position and rotation of {0} {1} to {2}", |
3512 | // part.Name, part.LocalId, rot); | 3512 | // part.Name, part.LocalId, rot); |
3513 | 3513 | ||
3514 | part.StoreUndoState(); | 3514 | // part.StoreUndoState(); |
3515 | part.IgnoreUndoUpdate = true; | 3515 | // part.IgnoreUndoUpdate = true; |
3516 | 3516 | ||
3517 | if (m_rootPart.PhysActor != null) | 3517 | if (m_rootPart.PhysActor != null) |
3518 | m_rootPart.PhysActor.Building = true; | 3518 | m_rootPart.PhysActor.Building = true; |
@@ -3541,7 +3541,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3541 | if (m_rootPart.PhysActor != null) | 3541 | if (m_rootPart.PhysActor != null) |
3542 | m_rootPart.PhysActor.Building = false; | 3542 | m_rootPart.PhysActor.Building = false; |
3543 | 3543 | ||
3544 | part.IgnoreUndoUpdate = false; | 3544 | // part.IgnoreUndoUpdate = false; |
3545 | } | 3545 | } |
3546 | } | 3546 | } |
3547 | 3547 | ||
@@ -3557,7 +3557,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3557 | 3557 | ||
3558 | Quaternion axRot = rot; | 3558 | Quaternion axRot = rot; |
3559 | Quaternion oldParentRot = m_rootPart.RotationOffset; | 3559 | Quaternion oldParentRot = m_rootPart.RotationOffset; |
3560 | m_rootPart.StoreUndoState(); | 3560 | // m_rootPart.StoreUndoState(); |
3561 | 3561 | ||
3562 | //Don't use UpdateRotation because it schedules an update prematurely | 3562 | //Don't use UpdateRotation because it schedules an update prematurely |
3563 | m_rootPart.RotationOffset = rot; | 3563 | m_rootPart.RotationOffset = rot; |
@@ -3573,7 +3573,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3573 | SceneObjectPart prim = parts[i]; | 3573 | SceneObjectPart prim = parts[i]; |
3574 | if (prim.UUID != m_rootPart.UUID) | 3574 | if (prim.UUID != m_rootPart.UUID) |
3575 | { | 3575 | { |
3576 | prim.IgnoreUndoUpdate = true; | 3576 | // prim.IgnoreUndoUpdate = true; |
3577 | 3577 | ||
3578 | Quaternion NewRot = oldParentRot * prim.RotationOffset; | 3578 | Quaternion NewRot = oldParentRot * prim.RotationOffset; |
3579 | NewRot = Quaternion.Inverse(axRot) * NewRot; | 3579 | NewRot = Quaternion.Inverse(axRot) * NewRot; |
@@ -3585,7 +3585,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3585 | axPos *= Quaternion.Inverse(axRot); | 3585 | axPos *= Quaternion.Inverse(axRot); |
3586 | prim.OffsetPosition = axPos; | 3586 | prim.OffsetPosition = axPos; |
3587 | 3587 | ||
3588 | prim.IgnoreUndoUpdate = false; | 3588 | // prim.IgnoreUndoUpdate = false; |
3589 | } | 3589 | } |
3590 | } | 3590 | } |
3591 | 3591 | ||
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index cce606a..6622495 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -828,7 +828,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
828 | 828 | ||
829 | set | 829 | set |
830 | { | 830 | { |
831 | StoreUndoState(); | 831 | // StoreUndoState(); |
832 | m_rotationOffset = value; | 832 | m_rotationOffset = value; |
833 | 833 | ||
834 | PhysicsActor actor = PhysActor; | 834 | PhysicsActor actor = PhysActor; |
@@ -1007,7 +1007,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1007 | { | 1007 | { |
1008 | if (m_shape != null) | 1008 | if (m_shape != null) |
1009 | { | 1009 | { |
1010 | StoreUndoState(); | 1010 | // StoreUndoState(); |
1011 | 1011 | ||
1012 | m_shape.Scale = value; | 1012 | m_shape.Scale = value; |
1013 | 1013 | ||
diff --git a/OpenSim/Region/Framework/Scenes/UndoState.cs b/OpenSim/Region/Framework/Scenes/UndoState.cs index 029c828..38474de 100644 --- a/OpenSim/Region/Framework/Scenes/UndoState.cs +++ b/OpenSim/Region/Framework/Scenes/UndoState.cs | |||
@@ -74,14 +74,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
74 | ForGroup = forGroup; | 74 | ForGroup = forGroup; |
75 | Position = part.ParentGroup.AbsolutePosition; | 75 | Position = part.ParentGroup.AbsolutePosition; |
76 | Rotation = part.RotationOffset; | 76 | Rotation = part.RotationOffset; |
77 | if (!forGroup) | 77 | Scale = part.Shape.Scale; |
78 | Scale = part.Shape.Scale; | ||
79 | else | ||
80 | Scale = Vector3.Zero; // until we fix it | ||
81 | } | 78 | } |
82 | else | 79 | else |
83 | { | 80 | { |
84 | ForGroup = false; // previus code implies only root parts can undo grp | 81 | ForGroup = false; // only root parts can undo grp |
85 | Position = part.OffsetPosition; | 82 | Position = part.OffsetPosition; |
86 | Rotation = part.RotationOffset; | 83 | Rotation = part.RotationOffset; |
87 | Scale = part.Shape.Scale; | 84 | Scale = part.Shape.Scale; |
@@ -108,9 +105,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
108 | return false; | 105 | return false; |
109 | if (Rotation != part.RotationOffset) | 106 | if (Rotation != part.RotationOffset) |
110 | return false; | 107 | return false; |
111 | if (ForGroup) | 108 | return Scale == part.Shape.Scale; |
112 | return true; // for now don't do grp scale | ||
113 | return (Scale == part.Shape.Scale); | ||
114 | } | 109 | } |
115 | else | 110 | else |
116 | { | 111 | { |
@@ -144,10 +139,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
144 | 139 | ||
145 | if (Scale != Vector3.Zero) | 140 | if (Scale != Vector3.Zero) |
146 | { | 141 | { |
147 | // if (ForGroup) | 142 | if (ForGroup) |
148 | // part.ParentGroup.GroupResize(Scale); | 143 | part.ParentGroup.GroupResize(Scale); |
149 | // else | 144 | else |
150 | if (!ForGroup) // we don't have grp scale for now | ||
151 | part.Resize(Scale); | 145 | part.Resize(Scale); |
152 | } | 146 | } |
153 | part.ParentGroup.ScheduleGroupForTerseUpdate(); | 147 | part.ParentGroup.ScheduleGroupForTerseUpdate(); |