diff options
Diffstat (limited to '')
-rwxr-xr-x | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 579874a..2f65ce2 100755 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -87,21 +87,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
87 | protected int m_scriptLPS = 0; | 87 | protected int m_scriptLPS = 0; |
88 | 88 | ||
89 | protected internal PhysicsScene _PhyScene; | 89 | protected internal PhysicsScene _PhyScene; |
90 | 90 | ||
91 | /// <summary> | 91 | /// <summary> |
92 | /// Index the SceneObjectGroup for each part by the root part's UUID. | 92 | /// Index the SceneObjectGroup for each part by the root part's UUID. |
93 | /// </summary> | 93 | /// </summary> |
94 | protected internal Dictionary<UUID, SceneObjectGroup> SceneObjectGroupsByFullID = new Dictionary<UUID, SceneObjectGroup>(); | 94 | protected internal Dictionary<UUID, SceneObjectGroup> SceneObjectGroupsByFullID = new Dictionary<UUID, SceneObjectGroup>(); |
95 | 95 | ||
96 | /// <summary> | 96 | /// <summary> |
97 | /// Index the SceneObjectGroup for each part by that part's UUID. | 97 | /// Index the SceneObjectGroup for each part by that part's UUID. |
98 | /// </summary> | 98 | /// </summary> |
99 | protected internal Dictionary<UUID, SceneObjectGroup> SceneObjectGroupsByFullPartID = new Dictionary<UUID, SceneObjectGroup>(); | 99 | protected internal Dictionary<UUID, SceneObjectGroup> SceneObjectGroupsByFullPartID = new Dictionary<UUID, SceneObjectGroup>(); |
100 | 100 | ||
101 | /// <summary> | 101 | /// <summary> |
102 | /// Index the SceneObjectGroup for each part by that part's local ID. | 102 | /// Index the SceneObjectGroup for each part by that part's local ID. |
103 | /// </summary> | 103 | /// </summary> |
104 | protected internal Dictionary<uint, SceneObjectGroup> SceneObjectGroupsByLocalPartID = new Dictionary<uint, SceneObjectGroup>(); | 104 | protected internal Dictionary<uint, SceneObjectGroup> SceneObjectGroupsByLocalPartID = new Dictionary<uint, SceneObjectGroup>(); |
105 | 105 | ||
106 | /// <summary> | 106 | /// <summary> |
107 | /// Lock to prevent object group update, linking, delinking and duplication operations from running concurrently. | 107 | /// Lock to prevent object group update, linking, delinking and duplication operations from running concurrently. |
@@ -121,11 +121,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
121 | 121 | ||
122 | public PhysicsScene PhysicsScene | 122 | public PhysicsScene PhysicsScene |
123 | { | 123 | { |
124 | get | 124 | get |
125 | { | 125 | { |
126 | if (_PhyScene == null) | 126 | if (_PhyScene == null) |
127 | _PhyScene = m_parentScene.RequestModuleInterface<PhysicsScene>(); | 127 | _PhyScene = m_parentScene.RequestModuleInterface<PhysicsScene>(); |
128 | return _PhyScene; | 128 | return _PhyScene; |
129 | } | 129 | } |
130 | set | 130 | set |
131 | { | 131 | { |
@@ -215,7 +215,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
215 | // the joint in the Scene does not exist in the PhysicsScene. | 215 | // the joint in the Scene does not exist in the PhysicsScene. |
216 | // | 216 | // |
217 | // To solve this, we have an event in the PhysicsScene that is fired when a joint | 217 | // To solve this, we have an event in the PhysicsScene that is fired when a joint |
218 | // has changed position (because one of its associated PhysicsActors has changed | 218 | // has changed position (because one of its associated PhysicsActors has changed |
219 | // position). | 219 | // position). |
220 | // | 220 | // |
221 | // Therefore, JointMoved and JointDeactivated events will be fired as a result of the following Simulate(). | 221 | // Therefore, JointMoved and JointDeactivated events will be fired as a result of the following Simulate(). |
@@ -244,7 +244,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
244 | 244 | ||
245 | // coarse locations are sent as BYTE, so limited to the 255m max of normal regions | 245 | // coarse locations are sent as BYTE, so limited to the 255m max of normal regions |
246 | // try to work around that scale down X and Y acording to region size, so reducing the resolution | 246 | // try to work around that scale down X and Y acording to region size, so reducing the resolution |
247 | // | 247 | // |
248 | // viewers need to scale up | 248 | // viewers need to scale up |
249 | float scaleX = (float)m_parentScene.RegionInfo.RegionSizeX / (float)Constants.RegionSize; | 249 | float scaleX = (float)m_parentScene.RegionInfo.RegionSizeX / (float)Constants.RegionSize; |
250 | if (scaleX == 0) | 250 | if (scaleX == 0) |
@@ -259,7 +259,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
259 | for (int i = 0; i < Math.Min(presences.Count, maxLocations); ++i) | 259 | for (int i = 0; i < Math.Min(presences.Count, maxLocations); ++i) |
260 | { | 260 | { |
261 | ScenePresence sp = presences[i]; | 261 | ScenePresence sp = presences[i]; |
262 | 262 | ||
263 | // If this presence is a child agent, we don't want its coarse locations | 263 | // If this presence is a child agent, we don't want its coarse locations |
264 | if (sp.IsChildAgent) | 264 | if (sp.IsChildAgent) |
265 | continue; | 265 | continue; |
@@ -346,7 +346,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
346 | 346 | ||
347 | return ret; | 347 | return ret; |
348 | } | 348 | } |
349 | 349 | ||
350 | /// <summary> | 350 | /// <summary> |
351 | /// Add a newly created object to the scene. This will both update the scene, and send information about the | 351 | /// Add a newly created object to the scene. This will both update the scene, and send information about the |
352 | /// new object to all clients interested in the scene. | 352 | /// new object to all clients interested in the scene. |
@@ -372,11 +372,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
372 | 372 | ||
373 | return ret; | 373 | return ret; |
374 | } | 374 | } |
375 | 375 | ||
376 | /// <summary> | 376 | /// <summary> |
377 | /// Add a newly created object to the scene. | 377 | /// Add a newly created object to the scene. |
378 | /// </summary> | 378 | /// </summary> |
379 | /// | 379 | /// |
380 | /// This method does not send updates to the client - callers need to handle this themselves. | 380 | /// This method does not send updates to the client - callers need to handle this themselves. |
381 | /// Caller should also trigger EventManager.TriggerObjectAddedToScene | 381 | /// Caller should also trigger EventManager.TriggerObjectAddedToScene |
382 | /// <param name="sceneObject"></param> | 382 | /// <param name="sceneObject"></param> |
@@ -630,7 +630,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
630 | { | 630 | { |
631 | List<SceneObjectGroup> updates; | 631 | List<SceneObjectGroup> updates; |
632 | 632 | ||
633 | // Some updates add more updates to the updateList. | 633 | // Some updates add more updates to the updateList. |
634 | // Get the current list of updates and clear the list before iterating | 634 | // Get the current list of updates and clear the list before iterating |
635 | lock (m_updateList) | 635 | lock (m_updateList) |
636 | { | 636 | { |
@@ -762,7 +762,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
762 | { | 762 | { |
763 | Dictionary<UUID, ScenePresence> newmap = new Dictionary<UUID, ScenePresence>(m_scenePresenceMap); | 763 | Dictionary<UUID, ScenePresence> newmap = new Dictionary<UUID, ScenePresence>(m_scenePresenceMap); |
764 | List<ScenePresence> newlist = new List<ScenePresence>(m_scenePresenceArray); | 764 | List<ScenePresence> newlist = new List<ScenePresence>(m_scenePresenceArray); |
765 | 765 | ||
766 | // Remove the presence reference from the dictionary | 766 | // Remove the presence reference from the dictionary |
767 | if (newmap.ContainsKey(agentID)) | 767 | if (newmap.ContainsKey(agentID)) |
768 | { | 768 | { |
@@ -874,7 +874,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
874 | #endregion | 874 | #endregion |
875 | 875 | ||
876 | #region Get Methods | 876 | #region Get Methods |
877 | 877 | ||
878 | /// <summary> | 878 | /// <summary> |
879 | /// Get the controlling client for the given avatar, if there is one. | 879 | /// Get the controlling client for the given avatar, if there is one. |
880 | /// | 880 | /// |
@@ -1190,7 +1190,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1190 | return null; | 1190 | return null; |
1191 | return group.GetPart(localID); | 1191 | return group.GetPart(localID); |
1192 | } | 1192 | } |
1193 | 1193 | ||
1194 | /// <summary> | 1194 | /// <summary> |
1195 | /// Get a prim by name from the scene (will return the first | 1195 | /// Get a prim by name from the scene (will return the first |
1196 | /// found, if there are more than one prim with the same name) | 1196 | /// found, if there are more than one prim with the same name) |
@@ -1209,7 +1209,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1209 | foreach (SceneObjectPart p in ((SceneObjectGroup)entity).Parts) | 1209 | foreach (SceneObjectPart p in ((SceneObjectGroup)entity).Parts) |
1210 | { | 1210 | { |
1211 | // m_log.DebugFormat("[SCENE GRAPH]: Part {0} has name {1}", p.UUID, p.Name); | 1211 | // m_log.DebugFormat("[SCENE GRAPH]: Part {0} has name {1}", p.UUID, p.Name); |
1212 | 1212 | ||
1213 | if (p.Name == name) | 1213 | if (p.Name == name) |
1214 | { | 1214 | { |
1215 | sop = p; | 1215 | sop = p; |
@@ -1308,7 +1308,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1308 | /// <summary> | 1308 | /// <summary> |
1309 | /// Performs action on all scene presences. This can ultimately run the actions in parallel but | 1309 | /// Performs action on all scene presences. This can ultimately run the actions in parallel but |
1310 | /// any delegates passed in will need to implement their own locking on data they reference and | 1310 | /// any delegates passed in will need to implement their own locking on data they reference and |
1311 | /// modify outside of the scope of the delegate. | 1311 | /// modify outside of the scope of the delegate. |
1312 | /// </summary> | 1312 | /// </summary> |
1313 | /// <param name="action"></param> | 1313 | /// <param name="action"></param> |
1314 | public void ForEachScenePresence(Action<ScenePresence> action) | 1314 | public void ForEachScenePresence(Action<ScenePresence> action) |
@@ -1343,7 +1343,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1343 | } | 1343 | } |
1344 | } | 1344 | } |
1345 | } | 1345 | } |
1346 | 1346 | ||
1347 | #endregion | 1347 | #endregion |
1348 | 1348 | ||
1349 | #region Client Event handlers | 1349 | #region Client Event handlers |
@@ -1574,7 +1574,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1574 | public void UpdatePrimGroupPosition(uint localId, Vector3 pos, UUID updatingAgentId) | 1574 | public void UpdatePrimGroupPosition(uint localId, Vector3 pos, UUID updatingAgentId) |
1575 | { | 1575 | { |
1576 | SceneObjectGroup group = GetGroupByPrim(localId); | 1576 | SceneObjectGroup group = GetGroupByPrim(localId); |
1577 | 1577 | ||
1578 | if (group != null) | 1578 | if (group != null) |
1579 | { | 1579 | { |
1580 | if (group.IsAttachment || (group.RootPart.Shape.PCode == 9 && group.RootPart.Shape.State != 0)) | 1580 | if (group.IsAttachment || (group.RootPart.Shape.PCode == 9 && group.RootPart.Shape.State != 0)) |
@@ -1589,7 +1589,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1589 | } | 1589 | } |
1590 | else | 1590 | else |
1591 | { | 1591 | { |
1592 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, updatingAgentId) | 1592 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, updatingAgentId) |
1593 | && m_parentScene.Permissions.CanObjectEntry(group.UUID, false, pos)) | 1593 | && m_parentScene.Permissions.CanObjectEntry(group.UUID, false, pos)) |
1594 | { | 1594 | { |
1595 | group.UpdateGroupPosition(pos); | 1595 | group.UpdateGroupPosition(pos); |
@@ -1611,7 +1611,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1611 | protected internal void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient) | 1611 | protected internal void UpdatePrimTexture(uint localID, byte[] texture, IClientAPI remoteClient) |
1612 | { | 1612 | { |
1613 | SceneObjectGroup group = GetGroupByPrim(localID); | 1613 | SceneObjectGroup group = GetGroupByPrim(localID); |
1614 | 1614 | ||
1615 | if (group != null) | 1615 | if (group != null) |
1616 | { | 1616 | { |
1617 | if (m_parentScene.Permissions.CanEditObject(group.UUID,remoteClient.AgentId)) | 1617 | if (m_parentScene.Permissions.CanEditObject(group.UUID,remoteClient.AgentId)) |
@@ -1730,8 +1730,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1730 | SceneObjectPart part = m_parentScene.GetSceneObjectPart(primLocalID); | 1730 | SceneObjectPart part = m_parentScene.GetSceneObjectPart(primLocalID); |
1731 | if (part != null) | 1731 | if (part != null) |
1732 | { | 1732 | { |
1733 | part.ClickAction = Convert.ToByte(clickAction); | 1733 | part.ClickAction = Convert.ToByte(clickAction); |
1734 | group.HasGroupChanged = true; | 1734 | group.HasGroupChanged = true; |
1735 | } | 1735 | } |
1736 | } | 1736 | } |
1737 | } | 1737 | } |
@@ -1966,7 +1966,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1966 | // However, editing linked parts and unlinking may be different | 1966 | // However, editing linked parts and unlinking may be different |
1967 | // | 1967 | // |
1968 | SceneObjectGroup group = root.ParentGroup; | 1968 | SceneObjectGroup group = root.ParentGroup; |
1969 | 1969 | ||
1970 | List<SceneObjectPart> newSet = new List<SceneObjectPart>(group.Parts); | 1970 | List<SceneObjectPart> newSet = new List<SceneObjectPart>(group.Parts); |
1971 | 1971 | ||
1972 | newSet.Remove(root); | 1972 | newSet.Remove(root); |
@@ -1978,7 +1978,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1978 | group.DelinkFromGroup(p, false); | 1978 | group.DelinkFromGroup(p, false); |
1979 | 1979 | ||
1980 | SceneObjectPart newRoot = newSet[0]; | 1980 | SceneObjectPart newRoot = newSet[0]; |
1981 | 1981 | ||
1982 | // If there is more than one prim remaining, we | 1982 | // If there is more than one prim remaining, we |
1983 | // need to re-link | 1983 | // need to re-link |
1984 | // | 1984 | // |
@@ -1996,7 +1996,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1996 | { | 1996 | { |
1997 | newRoot.TriggerScriptChangedEvent(Changed.LINK); | 1997 | newRoot.TriggerScriptChangedEvent(Changed.LINK); |
1998 | newRoot.ParentGroup.HasGroupChanged = true; | 1998 | newRoot.ParentGroup.HasGroupChanged = true; |
1999 | newRoot.ParentGroup.ScheduleGroupForFullUpdate(); | 1999 | newRoot.ParentGroup.ScheduleGroupForFullUpdate(); |
2000 | } | 2000 | } |
2001 | } | 2001 | } |
2002 | 2002 | ||
@@ -2089,7 +2089,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2089 | public SceneObjectGroup DuplicateObject(uint originalPrimID, Vector3 offset, uint flags, UUID AgentID, UUID GroupID, Quaternion rot) | 2089 | public SceneObjectGroup DuplicateObject(uint originalPrimID, Vector3 offset, uint flags, UUID AgentID, UUID GroupID, Quaternion rot) |
2090 | { | 2090 | { |
2091 | // m_log.DebugFormat( | 2091 | // m_log.DebugFormat( |
2092 | // "[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", | 2092 | // "[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", |
2093 | // originalPrimID, offset, AgentID); | 2093 | // originalPrimID, offset, AgentID); |
2094 | 2094 | ||
2095 | SceneObjectGroup original = GetGroupByPrim(originalPrimID); | 2095 | SceneObjectGroup original = GetGroupByPrim(originalPrimID); |
@@ -2194,6 +2194,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2194 | 2194 | ||
2195 | #endregion | 2195 | #endregion |
2196 | 2196 | ||
2197 | 2197 | ||
2198 | } | 2198 | } |
2199 | } | 2199 | } |