diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index e3a564e..3fa6bb0 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -1731,18 +1731,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
1731 | //if ((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0) | 1731 | //if ((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0) |
1732 | // return; | 1732 | // return; |
1733 | 1733 | ||
1734 | bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0); | 1734 | // If we somehow got here to updating the SOG and its root part is not scheduled for update, |
1735 | 1735 | // check to see if the physical position or rotation warrant an update. | |
1736 | if (UsePhysics && !AbsolutePosition.ApproxEquals(lastPhysGroupPos, 0.02f)) | 1736 | if (m_rootPart.UpdateFlag == UpdateRequired.NONE) |
1737 | { | 1737 | { |
1738 | m_rootPart.UpdateFlag = UpdateRequired.TERSE; | 1738 | bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0); |
1739 | lastPhysGroupPos = AbsolutePosition; | ||
1740 | } | ||
1741 | 1739 | ||
1742 | if (UsePhysics && !GroupRotation.ApproxEquals(lastPhysGroupRot, 0.1f)) | 1740 | if (UsePhysics && !AbsolutePosition.ApproxEquals(lastPhysGroupPos, 0.02f)) |
1743 | { | 1741 | { |
1744 | m_rootPart.UpdateFlag = UpdateRequired.TERSE; | 1742 | m_rootPart.UpdateFlag = UpdateRequired.TERSE; |
1745 | lastPhysGroupRot = GroupRotation; | 1743 | lastPhysGroupPos = AbsolutePosition; |
1744 | } | ||
1745 | |||
1746 | if (UsePhysics && !GroupRotation.ApproxEquals(lastPhysGroupRot, 0.1f)) | ||
1747 | { | ||
1748 | m_rootPart.UpdateFlag = UpdateRequired.TERSE; | ||
1749 | lastPhysGroupRot = GroupRotation; | ||
1750 | } | ||
1746 | } | 1751 | } |
1747 | 1752 | ||
1748 | SceneObjectPart[] parts = m_parts.GetArray(); | 1753 | SceneObjectPart[] parts = m_parts.GetArray(); |