diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 2191cfa..ff4ae85 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -144,7 +144,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
144 | /// </remarks> | 144 | /// </remarks> |
145 | public bool IsRoot | 145 | public bool IsRoot |
146 | { | 146 | { |
147 | get { return ParentGroup.RootPart == this; } | 147 | get { return Object.ReferenceEquals(ParentGroup.RootPart, this); } |
148 | } | 148 | } |
149 | 149 | ||
150 | /// <summary> | 150 | /// <summary> |
@@ -319,7 +319,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
319 | protected Vector3 m_lastVelocity; | 319 | protected Vector3 m_lastVelocity; |
320 | protected Vector3 m_lastAcceleration; | 320 | protected Vector3 m_lastAcceleration; |
321 | protected Vector3 m_lastAngularVelocity; | 321 | protected Vector3 m_lastAngularVelocity; |
322 | protected int m_lastTerseSent; | 322 | protected int m_lastUpdateSentTime; |
323 | protected float m_buoyancy = 0.0f; | 323 | protected float m_buoyancy = 0.0f; |
324 | protected Vector3 m_force; | 324 | protected Vector3 m_force; |
325 | protected Vector3 m_torque; | 325 | protected Vector3 m_torque; |
@@ -3198,6 +3198,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
3198 | if (ParentGroup == null) | 3198 | if (ParentGroup == null) |
3199 | return; | 3199 | return; |
3200 | 3200 | ||
3201 | // Update the "last" values | ||
3202 | m_lastPosition = OffsetPosition; | ||
3203 | m_lastRotation = RotationOffset; | ||
3204 | m_lastVelocity = Velocity; | ||
3205 | m_lastAcceleration = Acceleration; | ||
3206 | m_lastAngularVelocity = AngularVelocity; | ||
3207 | m_lastUpdateSentTime = Environment.TickCount; | ||
3208 | |||
3201 | ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) | 3209 | ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar) |
3202 | { | 3210 | { |
3203 | SendFullUpdate(avatar.ControllingClient); | 3211 | SendFullUpdate(avatar.ControllingClient); |
@@ -3271,17 +3279,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
3271 | Velocity.ApproxEquals(Vector3.Zero, VELOCITY_TOLERANCE) || | 3279 | Velocity.ApproxEquals(Vector3.Zero, VELOCITY_TOLERANCE) || |
3272 | !AngularVelocity.ApproxEquals(m_lastAngularVelocity, VELOCITY_TOLERANCE) || | 3280 | !AngularVelocity.ApproxEquals(m_lastAngularVelocity, VELOCITY_TOLERANCE) || |
3273 | !OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || | 3281 | !OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || |
3274 | Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) | 3282 | Environment.TickCount - m_lastUpdateSentTime > TIME_MS_TOLERANCE) |
3275 | { | 3283 | { |
3276 | SendTerseUpdateToAllClients(); | 3284 | SendTerseUpdateToAllClients(); |
3277 | 3285 | ||
3278 | // Update the "last" values | ||
3279 | m_lastPosition = OffsetPosition; | ||
3280 | m_lastRotation = RotationOffset; | ||
3281 | m_lastVelocity = Velocity; | ||
3282 | m_lastAcceleration = Acceleration; | ||
3283 | m_lastAngularVelocity = AngularVelocity; | ||
3284 | m_lastTerseSent = Environment.TickCount; | ||
3285 | } | 3286 | } |
3286 | break; | 3287 | break; |
3287 | } | 3288 | } |
@@ -3302,6 +3303,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
3302 | if (ParentGroup == null || ParentGroup.Scene == null) | 3303 | if (ParentGroup == null || ParentGroup.Scene == null) |
3303 | return; | 3304 | return; |
3304 | 3305 | ||
3306 | // Update the "last" values | ||
3307 | m_lastPosition = OffsetPosition; | ||
3308 | m_lastRotation = RotationOffset; | ||
3309 | m_lastVelocity = Velocity; | ||
3310 | m_lastAcceleration = Acceleration; | ||
3311 | m_lastAngularVelocity = AngularVelocity; | ||
3312 | m_lastUpdateSentTime = Environment.TickCount; | ||
3313 | |||
3305 | ParentGroup.Scene.ForEachClient(delegate(IClientAPI client) | 3314 | ParentGroup.Scene.ForEachClient(delegate(IClientAPI client) |
3306 | { | 3315 | { |
3307 | SendTerseUpdateToClient(client); | 3316 | SendTerseUpdateToClient(client); |