diff options
author | UbitUmarov | 2019-03-24 16:15:24 +0000 |
---|---|---|
committer | UbitUmarov | 2019-03-24 16:15:24 +0000 |
commit | b32b104996289b3e28c179b992cb5f44b6d1327a (patch) | |
tree | 6362c76f5a5a4cfd0a45d1faed679e90c5ce73e5 | |
parent | mantis 8505 ( and not 8506 by mistake on previus commit) remove the meshes nu... (diff) | |
download | opensim-SC-b32b104996289b3e28c179b992cb5f44b6d1327a.zip opensim-SC-b32b104996289b3e28c179b992cb5f44b6d1327a.tar.gz opensim-SC-b32b104996289b3e28c179b992cb5f44b6d1327a.tar.bz2 opensim-SC-b32b104996289b3e28c179b992cb5f44b6d1327a.tar.xz |
some more changes on objects sending
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/ISceneAgent.cs | 8 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 27 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 79 |
3 files changed, 28 insertions, 86 deletions
diff --git a/OpenSim/Framework/ISceneAgent.cs b/OpenSim/Framework/ISceneAgent.cs index 5d70b83..43e1b08 100644 --- a/OpenSim/Framework/ISceneAgent.cs +++ b/OpenSim/Framework/ISceneAgent.cs | |||
@@ -70,14 +70,6 @@ namespace OpenSim.Framework | |||
70 | AvatarAppearance Appearance { get; set; } | 70 | AvatarAppearance Appearance { get; set; } |
71 | 71 | ||
72 | /// <summary> | 72 | /// <summary> |
73 | /// Send initial scene data to the client controlling this agent | ||
74 | /// </summary> | ||
75 | /// <remarks> | ||
76 | /// This includes scene object data and the appearance data of other avatars. | ||
77 | /// </remarks> | ||
78 | void SendInitialDataToMe(); | ||
79 | |||
80 | /// <summary> | ||
81 | /// Direction in which the scene presence is looking. | 73 | /// Direction in which the scene presence is looking. |
82 | /// </summary> | 74 | /// </summary> |
83 | /// <remarks>Will be Vector3.Zero for a child agent.</remarks> | 75 | /// <remarks>Will be Vector3.Zero for a child agent.</remarks> |
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 2b288df..601de61 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -5544,17 +5544,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5544 | 5544 | ||
5545 | if(GroupsNeedFullUpdate.Count > 0) | 5545 | if(GroupsNeedFullUpdate.Count > 0) |
5546 | { | 5546 | { |
5547 | bool viewerCache = m_supportViewerCache && (m_viewerHandShakeFlags & 1) != 0;// && mysp.IsChildAgent; | 5547 | bool sendProbes = m_supportViewerCache && (m_viewerHandShakeFlags & 1) != 0 && (m_viewerHandShakeFlags & 2) == 0; |
5548 | foreach (SceneObjectGroup grp in GroupsNeedFullUpdate) | 5548 | |
5549 | if(sendProbes) | ||
5550 | { | ||
5551 | foreach (SceneObjectGroup grp in GroupsNeedFullUpdate) | ||
5552 | { | ||
5553 | PrimUpdateFlags flags = PrimUpdateFlags.CancelKill; | ||
5554 | if (grp.IsViewerCachable) | ||
5555 | flags |= PrimUpdateFlags.UpdateProbe; | ||
5556 | foreach (SceneObjectPart p in grp.Parts) | ||
5557 | SendEntityUpdate(p, flags); | ||
5558 | } | ||
5559 | } | ||
5560 | else | ||
5549 | { | 5561 | { |
5562 | m_viewerHandShakeFlags &= ~2U; // nexttime send probes | ||
5550 | PrimUpdateFlags flags = PrimUpdateFlags.CancelKill; | 5563 | PrimUpdateFlags flags = PrimUpdateFlags.CancelKill; |
5551 | if (viewerCache && grp.IsViewerCachable) | 5564 | foreach (SceneObjectGroup grp in GroupsNeedFullUpdate) |
5552 | flags |= PrimUpdateFlags.UpdateProbe; | 5565 | { |
5553 | foreach (SceneObjectPart p in grp.Parts) | 5566 | foreach (SceneObjectPart p in grp.Parts) |
5554 | SendEntityUpdate(p, flags); | 5567 | SendEntityUpdate(p, flags); |
5568 | } | ||
5555 | } | 5569 | } |
5556 | } | 5570 | } |
5557 | |||
5558 | CheckGroupsInViewBusy = false; | 5571 | CheckGroupsInViewBusy = false; |
5559 | } | 5572 | } |
5560 | 5573 | ||
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index e35481f..9a879f7 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1214,7 +1214,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1214 | ControllingClient.OnUpdateThrottles += RaiseUpdateThrottles; | 1214 | ControllingClient.OnUpdateThrottles += RaiseUpdateThrottles; |
1215 | ControllingClient.OnRegionHandShakeReply += RegionHandShakeReply; | 1215 | ControllingClient.OnRegionHandShakeReply += RegionHandShakeReply; |
1216 | 1216 | ||
1217 | // ControllingClient.OnAgentFOV += HandleAgentFOV; | 1217 | // ControllingClient.OnAgentFOV += HandleAgentFOV; |
1218 | 1218 | ||
1219 | // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); | 1219 | // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); |
1220 | // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); | 1220 | // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); |
@@ -4022,12 +4022,18 @@ namespace OpenSim.Region.Framework.Scenes | |||
4022 | ControllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations); | 4022 | ControllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations); |
4023 | } | 4023 | } |
4024 | 4024 | ||
4025 | |||
4026 | public void RegionHandShakeReply (IClientAPI client, uint flags) | 4025 | public void RegionHandShakeReply (IClientAPI client, uint flags) |
4027 | { | 4026 | { |
4028 | if(IsNPC) | 4027 | if(IsNPC) |
4029 | return; | 4028 | return; |
4030 | 4029 | ||
4030 | lock (m_completeMovementLock) | ||
4031 | { | ||
4032 | if (SentInitialData) | ||
4033 | return; | ||
4034 | SentInitialData = true; | ||
4035 | } | ||
4036 | |||
4031 | bool selfappearance = (flags & 4) != 0; | 4037 | bool selfappearance = (flags & 4) != 0; |
4032 | bool cacheCulling = (flags & 1) != 0; | 4038 | bool cacheCulling = (flags & 1) != 0; |
4033 | bool cacheEmpty; | 4039 | bool cacheEmpty; |
@@ -4036,16 +4042,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
4036 | else | 4042 | else |
4037 | cacheEmpty = true; | 4043 | cacheEmpty = true; |
4038 | 4044 | ||
4039 | // if (m_teleportFlags > 0) // only doing for child for now | ||
4040 | // return; | ||
4041 | |||
4042 | lock (m_completeMovementLock) | ||
4043 | { | ||
4044 | if (SentInitialData) | ||
4045 | return; | ||
4046 | SentInitialData = true; | ||
4047 | } | ||
4048 | |||
4049 | Util.FireAndForget(delegate | 4045 | Util.FireAndForget(delegate |
4050 | { | 4046 | { |
4051 | if (m_teleportFlags <= 0) | 4047 | if (m_teleportFlags <= 0) |
@@ -4108,65 +4104,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
4108 | 4104 | ||
4109 | } | 4105 | } |
4110 | 4106 | ||
4111 | public void SendInitialDataToMe() | ||
4112 | { | ||
4113 | // Send all scene object to the new client | ||
4114 | lock (m_completeMovementLock) | ||
4115 | { | ||
4116 | if (SentInitialData) | ||
4117 | return; | ||
4118 | SentInitialData = true; | ||
4119 | } | ||
4120 | |||
4121 | Util.FireAndForget(delegate | ||
4122 | { | ||
4123 | // we created a new ScenePresence (a new child agent) in a fresh region. | ||
4124 | // Request info about all the (root) agents in this region | ||
4125 | // Note: This won't send data *to* other clients in that region (children don't send) | ||
4126 | if (m_teleportFlags <= 0) | ||
4127 | { | ||
4128 | Scene.SendLayerData(ControllingClient); | ||
4129 | |||
4130 | ILandChannel landch = m_scene.LandChannel; | ||
4131 | if (landch != null) | ||
4132 | { | ||
4133 | landch.sendClientInitialLandInfo(ControllingClient, true); | ||
4134 | } | ||
4135 | } | ||
4136 | |||
4137 | // recheck to reduce timing issues | ||
4138 | ControllingClient.CheckViewerCaps(); | ||
4139 | |||
4140 | SendOtherAgentsAvatarFullToMe(); | ||
4141 | |||
4142 | if(m_scene.ObjectsCullingByDistance) | ||
4143 | { | ||
4144 | m_reprioritizationBusy = true; | ||
4145 | m_reprioritizationLastPosition = AbsolutePosition; | ||
4146 | m_reprioritizationLastDrawDistance = DrawDistance; | ||
4147 | |||
4148 | ControllingClient.ReprioritizeUpdates(); | ||
4149 | m_reprioritizationLastTime = Util.EnvironmentTickCount(); | ||
4150 | m_reprioritizationBusy = false; | ||
4151 | return; | ||
4152 | } | ||
4153 | |||
4154 | EntityBase[] entities = Scene.Entities.GetEntities(); | ||
4155 | foreach (EntityBase e in entities) | ||
4156 | { | ||
4157 | if (e != null && e is SceneObjectGroup && !((SceneObjectGroup)e).IsAttachment) | ||
4158 | ((SceneObjectGroup)e).SendFullAnimUpdateToClient(ControllingClient); | ||
4159 | } | ||
4160 | |||
4161 | m_reprioritizationLastPosition = AbsolutePosition; | ||
4162 | m_reprioritizationLastDrawDistance = DrawDistance; | ||
4163 | m_reprioritizationLastTime = Util.EnvironmentTickCount() + 15000; // delay it | ||
4164 | |||
4165 | m_reprioritizationBusy = false; | ||
4166 | |||
4167 | }); | ||
4168 | } | ||
4169 | |||
4170 | /// <summary> | 4107 | /// <summary> |
4171 | /// Send avatar full data appearance and animations for all other root agents to this agent, this agent | 4108 | /// Send avatar full data appearance and animations for all other root agents to this agent, this agent |
4172 | /// can be either a child or root | 4109 | /// can be either a child or root |