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 35ac908..3ef1e29 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -129,27 +129,47 @@ namespace OpenSim.Region.Framework.Scenes
129 /// <param name="remoteClient"></param> 129 /// <param name="remoteClient"></param>
130 public void SelectPrim(uint primLocalID, IClientAPI remoteClient) 130 public void SelectPrim(uint primLocalID, IClientAPI remoteClient)
131 { 131 {
132 /*
133 SceneObjectPart part = GetSceneObjectPart(primLocalID);
134
135 if (null == part)
136 return;
137
138 if (part.IsRoot)
139 {
140 SceneObjectGroup sog = part.ParentGroup;
141 sog.SendPropertiesToClient(remoteClient);
142
143 // A prim is only tainted if it's allowed to be edited by the person clicking it.
144 if (Permissions.CanEditObject(sog.UUID, remoteClient.AgentId)
145 || Permissions.CanMoveObject(sog.UUID, remoteClient.AgentId))
146 {
147 sog.IsSelected = true;
148 EventManager.TriggerParcelPrimCountTainted();
149 }
150 }
151 else
152 {
153 part.SendPropertiesToClient(remoteClient);
154 }
155 */
132 SceneObjectPart part = GetSceneObjectPart(primLocalID); 156 SceneObjectPart part = GetSceneObjectPart(primLocalID);
133 157
134 if (null == part) 158 if (null == part)
135 return; 159 return;
136 160
137 if (part.IsRoot) 161 SceneObjectGroup sog = part.ParentGroup;
138 { 162 if (sog == null)
139 SceneObjectGroup sog = part.ParentGroup; 163 return;
140 sog.SendPropertiesToClient(remoteClient);
141 164
142 // A prim is only tainted if it's allowed to be edited by the person clicking it. 165 part.SendPropertiesToClient(remoteClient);
143 if (Permissions.CanEditObject(sog.UUID, remoteClient.AgentId) 166
144 || Permissions.CanMoveObject(sog.UUID, remoteClient.AgentId)) 167 // A prim is only tainted if it's allowed to be edited by the person clicking it.
145 { 168 if (Permissions.CanEditObject(sog.UUID, remoteClient.AgentId)
146 sog.IsSelected = true; 169 || Permissions.CanMoveObject(sog.UUID, remoteClient.AgentId))
147 EventManager.TriggerParcelPrimCountTainted();
148 }
149 }
150 else
151 { 170 {
152 part.SendPropertiesToClient(remoteClient); 171 part.IsSelected = true;
172 EventManager.TriggerParcelPrimCountTainted();
153 } 173 }
154 } 174 }
155 175
@@ -202,7 +222,7 @@ namespace OpenSim.Region.Framework.Scenes
202 SceneObjectPart part = GetSceneObjectPart(primLocalID); 222 SceneObjectPart part = GetSceneObjectPart(primLocalID);
203 if (part == null) 223 if (part == null)
204 return; 224 return;
205 225 /*
206 // A deselect packet contains all the local prims being deselected. However, since selection is still 226 // A deselect packet contains all the local prims being deselected. However, since selection is still
207 // group based we only want the root prim to trigger a full update - otherwise on objects with many prims 227 // group based we only want the root prim to trigger a full update - otherwise on objects with many prims
208 // we end up sending many duplicate ObjectUpdates 228 // we end up sending many duplicate ObjectUpdates
@@ -237,6 +257,22 @@ namespace OpenSim.Region.Framework.Scenes
237 part.UUID, remoteClient.AgentId)) 257 part.UUID, remoteClient.AgentId))
238 EventManager.TriggerParcelPrimCountTainted(); 258 EventManager.TriggerParcelPrimCountTainted();
239 } 259 }
260 */
261
262 bool oldgprSelect = part.ParentGroup.IsSelected;
263
264 // This is wrong, wrong, wrong. Selection should not be
265 // handled by group, but by prim. Legacy cruft.
266 // TODO: Make selection flagging per prim!
267 //
268 if (Permissions.CanEditObject(part.ParentGroup.UUID, remoteClient.AgentId)
269 || Permissions.CanMoveObject(part.ParentGroup.UUID, remoteClient.AgentId))
270 {
271 part.IsSelected = false;
272 if (!part.ParentGroup.IsAttachment && oldgprSelect != part.ParentGroup.IsSelected)
273 EventManager.TriggerParcelPrimCountTainted();
274 }
275
240 } 276 }
241 277
242 public virtual void ProcessMoneyTransferRequest(UUID source, UUID destination, int amount, 278 public virtual void ProcessMoneyTransferRequest(UUID source, UUID destination, int amount,