From 82e3698f59d3ed8e60cce850c7f05953e69f1175 Mon Sep 17 00:00:00 2001 From: Charles Krinke Date: Wed, 28 May 2008 02:10:16 +0000 Subject: Thank you very much, ChrisIndigo for a patch that: If a script updates an object to the same position or rotation offset, the object triggers an update and storage of the object. This become more prevalent in sensor and timer events which may be firing frequently. --- .../Region/Environment/Scenes/SceneObjectPart.cs | 34 ++++++++++++++++------ 1 file changed, 25 insertions(+), 9 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 4b174e3..a4ca33d 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -2100,16 +2100,26 @@ namespace OpenSim.Region.Environment.Scenes /// public void UpdateOffSet(LLVector3 pos) { - LLVector3 newPos = new LLVector3(pos.X, pos.Y, pos.Z); - OffsetPosition = newPos; - ScheduleTerseUpdate(); + if ((pos.X != OffsetPosition.X) || + (pos.Y != OffsetPosition.Y) || + (pos.Z != OffsetPosition.Z)) + { + LLVector3 newPos = new LLVector3(pos.X, pos.Y, pos.Z); + OffsetPosition = newPos; + ScheduleTerseUpdate(); + } } public void UpdateGroupPosition(LLVector3 pos) { - LLVector3 newPos = new LLVector3(pos.X, pos.Y, pos.Z); - GroupPosition = newPos; - ScheduleTerseUpdate(); + if ((pos.X != GroupPosition.X) || + (pos.Y != GroupPosition.Y) || + (pos.Z != GroupPosition.Z)) + { + LLVector3 newPos = new LLVector3(pos.X, pos.Y, pos.Z); + GroupPosition = newPos; + ScheduleTerseUpdate(); + } } #endregion @@ -2118,9 +2128,15 @@ namespace OpenSim.Region.Environment.Scenes public void UpdateRotation(LLQuaternion rot) { - //StoreUndoState(); - RotationOffset = new LLQuaternion(rot.X, rot.Y, rot.Z, rot.W); - ScheduleTerseUpdate(); + if ((rot.X != RotationOffset.X) || + (rot.Y != RotationOffset.Y) || + (rot.Z != RotationOffset.Z) || + (rot.W != RotationOffset.W)) + { + //StoreUndoState(); + RotationOffset = new LLQuaternion(rot.X, rot.Y, rot.Z, rot.W); + ScheduleTerseUpdate(); + } } #endregion -- cgit v1.1