From 0295e6822dd6408b6dc6580b4a7a92b0f057d4b8 Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Fri, 22 Aug 2014 20:01:07 +0100
Subject: some cleanup ( well or not )
---
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 73 ++++++++++++++++++++--
1 file changed, 67 insertions(+), 6 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPart.cs')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 98ea880..0930820 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -862,7 +862,8 @@ namespace OpenSim.Region.Framework.Scenes
{
Vector3 offset = (m_offsetPosition - oldpos);
av.AbsolutePosition += offset;
- av.SendAvatarDataToAllAgents();
+// av.SendAvatarDataToAllAgents();
+ av.SendTerseUpdateToAllClients();
}
}
}
@@ -3257,7 +3258,7 @@ namespace OpenSim.Region.Framework.Scenes
///
/// Send a full update for this part to all clients.
///
- public void SendFullUpdateToAllClients()
+ public void SendFullUpdateToAllClientsInternal()
{
if (ParentGroup == null)
return;
@@ -3276,6 +3277,36 @@ namespace OpenSim.Region.Framework.Scenes
});
}
+ public void SendFullUpdateToAllClients()
+ {
+ if (ParentGroup == null)
+ return;
+
+ // Update the "last" values
+ m_lastPosition = OffsetPosition;
+ m_lastRotation = RotationOffset;
+ m_lastVelocity = Velocity;
+ m_lastAcceleration = Acceleration;
+ m_lastAngularVelocity = AngularVelocity;
+ m_lastUpdateSentTime = Environment.TickCount;
+
+ if (ParentGroup.IsAttachment)
+ {
+ ScenePresence sp = ParentGroup.Scene.GetScenePresence(ParentGroup.AttachedAvatar);
+ if (sp != null)
+ {
+ sp.SendAttachmentUpdate(this, UpdateRequired.FULL);
+ }
+ }
+ else
+ {
+ ParentGroup.Scene.ForEachScenePresence(delegate(ScenePresence avatar)
+ {
+ SendFullUpdate(avatar.ControllingClient);
+ });
+ }
+ }
+
///
/// Sends a full update to the client
///
@@ -3345,24 +3376,24 @@ namespace OpenSim.Region.Framework.Scenes
!OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) ||
Environment.TickCount - m_lastUpdateSentTime > TIME_MS_TOLERANCE)
{
- SendTerseUpdateToAllClients();
-
+ SendTerseUpdateToAllClientsInternal();
}
break;
}
case UpdateRequired.FULL:
{
ClearUpdateSchedule();
- SendFullUpdateToAllClients();
+ SendFullUpdateToAllClientsInternal();
break;
}
}
}
+
///
/// Send a terse update to all clients
///
- public void SendTerseUpdateToAllClients()
+ public void SendTerseUpdateToAllClientsInternal()
{
if (ParentGroup == null || ParentGroup.Scene == null)
return;
@@ -3381,6 +3412,36 @@ namespace OpenSim.Region.Framework.Scenes
});
}
+ public void SendTerseUpdateToAllClients()
+ {
+ if (ParentGroup == null || ParentGroup.Scene == null)
+ return;
+
+ // Update the "last" values
+ m_lastPosition = OffsetPosition;
+ m_lastRotation = RotationOffset;
+ m_lastVelocity = Velocity;
+ m_lastAcceleration = Acceleration;
+ m_lastAngularVelocity = AngularVelocity;
+ m_lastUpdateSentTime = Environment.TickCount;
+
+ if (ParentGroup.IsAttachment)
+ {
+ ScenePresence sp = ParentGroup.Scene.GetScenePresence(ParentGroup.AttachedAvatar);
+ if (sp != null)
+ {
+ sp.SendAttachmentUpdate(this, UpdateRequired.TERSE);
+ }
+ }
+ else
+ {
+ ParentGroup.Scene.ForEachClient(delegate(IClientAPI client)
+ {
+ SendTerseUpdateToClient(client);
+ });
+ }
+ }
+
public void SetAxisRotation(int axis, int rotate)
{
ParentGroup.SetAxisRotation(axis, rotate);
--
cgit v1.1