aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs66
1 files changed, 51 insertions, 15 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index 36d46b8..cf68ff4 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -149,27 +149,47 @@ namespace OpenSim.Region.Framework.Scenes
149 /// <param name="remoteClient"></param> 149 /// <param name="remoteClient"></param>
150 public void SelectPrim(uint primLocalID, IClientAPI remoteClient) 150 public void SelectPrim(uint primLocalID, IClientAPI remoteClient)
151 { 151 {
152 /*
153 SceneObjectPart part = GetSceneObjectPart(primLocalID);
154
155 if (null == part)
156 return;
157
158 if (part.IsRoot)
159 {
160 SceneObjectGroup sog = part.ParentGroup;
161 sog.SendPropertiesToClient(remoteClient);
162
163 // A prim is only tainted if it's allowed to be edited by the person clicking it.
164 if (Permissions.CanEditObject(sog.UUID, remoteClient.AgentId)
165 || Permissions.CanMoveObject(sog.UUID, remoteClient.AgentId))
166 {
167 sog.IsSelected = true;
168 EventManager.TriggerParcelPrimCountTainted();
169 }
170 }
171 else
172 {
173 part.SendPropertiesToClient(remoteClient);
174 }
175 */
152 SceneObjectPart part = GetSceneObjectPart(primLocalID); 176 SceneObjectPart part = GetSceneObjectPart(primLocalID);
153 177
154 if (null == part) 178 if (null == part)
155 return; 179 return;
156 180
157 if (part.IsRoot) 181 SceneObjectGroup sog = part.ParentGroup;
158 { 182 if (sog == null)
159 SceneObjectGroup sog = part.ParentGroup; 183 return;
160 sog.SendPropertiesToClient(remoteClient);
161 184
162 // A prim is only tainted if it's allowed to be edited by the person clicking it. 185 part.SendPropertiesToClient(remoteClient);
163 if (Permissions.CanEditObject(sog.UUID, remoteClient.AgentId) 186
164 || Permissions.CanMoveObject(sog.UUID, remoteClient.AgentId)) 187 // A prim is only tainted if it's allowed to be edited by the person clicking it.
165 { 188 if (Permissions.CanEditObject(sog.UUID, remoteClient.AgentId)
166 sog.IsSelected = true; 189 || Permissions.CanMoveObject(sog.UUID, remoteClient.AgentId))
167 EventManager.TriggerParcelPrimCountTainted();
168 }
169 }
170 else
171 { 190 {
172 part.SendPropertiesToClient(remoteClient); 191 part.IsSelected = true;
192 EventManager.TriggerParcelPrimCountTainted();
173 } 193 }
174 } 194 }
175 195
@@ -222,7 +242,7 @@ namespace OpenSim.Region.Framework.Scenes
222 SceneObjectPart part = GetSceneObjectPart(primLocalID); 242 SceneObjectPart part = GetSceneObjectPart(primLocalID);
223 if (part == null) 243 if (part == null)
224 return; 244 return;
225 245 /*
226 // A deselect packet contains all the local prims being deselected. However, since selection is still 246 // A deselect packet contains all the local prims being deselected. However, since selection is still
227 // group based we only want the root prim to trigger a full update - otherwise on objects with many prims 247 // group based we only want the root prim to trigger a full update - otherwise on objects with many prims
228 // we end up sending many duplicate ObjectUpdates 248 // we end up sending many duplicate ObjectUpdates
@@ -257,6 +277,22 @@ namespace OpenSim.Region.Framework.Scenes
257 part.UUID, remoteClient.AgentId)) 277 part.UUID, remoteClient.AgentId))
258 EventManager.TriggerParcelPrimCountTainted(); 278 EventManager.TriggerParcelPrimCountTainted();
259 } 279 }
280 */
281
282 bool oldgprSelect = part.ParentGroup.IsSelected;
283
284 // This is wrong, wrong, wrong. Selection should not be
285 // handled by group, but by prim. Legacy cruft.
286 // TODO: Make selection flagging per prim!
287 //
288 if (Permissions.CanEditObject(part.ParentGroup.UUID, remoteClient.AgentId)
289 || Permissions.CanMoveObject(part.ParentGroup.UUID, remoteClient.AgentId))
290 {
291 part.IsSelected = false;
292 if (!part.ParentGroup.IsAttachment && oldgprSelect != part.ParentGroup.IsSelected)
293 EventManager.TriggerParcelPrimCountTainted();
294 }
295
260 } 296 }
261 297
262 public virtual void ProcessMoneyTransferRequest(UUID source, UUID destination, int amount, 298 public virtual void ProcessMoneyTransferRequest(UUID source, UUID destination, int amount,