diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 8 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 12 |
3 files changed, 20 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 4151074..1ce75e0 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -44,6 +44,7 @@ using OpenSim.Framework.Communications.Caches; | |||
44 | using OpenSim.Region.Environment.LandManagement; | 44 | using OpenSim.Region.Environment.LandManagement; |
45 | using OpenSim.Region.Environment; | 45 | using OpenSim.Region.Environment; |
46 | using OpenSim.Region.Environment.Interfaces; | 46 | using OpenSim.Region.Environment.Interfaces; |
47 | using OpenSim.Region.Environment.Types; | ||
47 | using OpenSim.Region.Terrain; | 48 | using OpenSim.Region.Terrain; |
48 | using OpenSim.Framework.Data; | 49 | using OpenSim.Framework.Data; |
49 | using Caps = OpenSim.Region.Capabilities.Caps; | 50 | using Caps = OpenSim.Region.Capabilities.Caps; |
@@ -72,6 +73,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
72 | private int m_timePhase = 24; | 73 | private int m_timePhase = 24; |
73 | private int m_timeUpdateCount; | 74 | private int m_timeUpdateCount; |
74 | 75 | ||
76 | public BasicQuadTreeNode QuadTree; | ||
77 | |||
75 | private Mutex updateLock; | 78 | private Mutex updateLock; |
76 | 79 | ||
77 | protected ModuleLoader m_moduleLoader; | 80 | protected ModuleLoader m_moduleLoader; |
@@ -178,6 +181,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
178 | 181 | ||
179 | m_eventManager.OnPermissionError += SendPermissionAlert; | 182 | m_eventManager.OnPermissionError += SendPermissionAlert; |
180 | 183 | ||
184 | QuadTree = new BasicQuadTreeNode(null, 0, 0, 256, 256); | ||
185 | QuadTree.Subdivide(); | ||
186 | QuadTree.Subdivide(); | ||
187 | |||
181 | MainLog.Instance.Verbose("Creating new entitities instance"); | 188 | MainLog.Instance.Verbose("Creating new entitities instance"); |
182 | Entities = new Dictionary<LLUUID, EntityBase>(); | 189 | Entities = new Dictionary<LLUUID, EntityBase>(); |
183 | Avatars = new Dictionary<LLUUID, ScenePresence>(); | 190 | Avatars = new Dictionary<LLUUID, ScenePresence>(); |
@@ -596,6 +603,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
596 | { | 603 | { |
597 | if (!Entities.ContainsKey(sceneObject.UUID)) | 604 | if (!Entities.ContainsKey(sceneObject.UUID)) |
598 | { | 605 | { |
606 | QuadTree.AddObject(sceneObject); | ||
599 | Entities.Add(sceneObject.UUID, sceneObject); | 607 | Entities.Add(sceneObject.UUID, sceneObject); |
600 | } | 608 | } |
601 | } | 609 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index dec017e..9e207c8 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -43,6 +43,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
43 | 43 | ||
44 | protected byte[] m_particleSystem = new byte[0]; | 44 | protected byte[] m_particleSystem = new byte[0]; |
45 | 45 | ||
46 | public uint TimeStampFull = 0; | ||
47 | public uint TimeStampTerse = 0; | ||
48 | |||
46 | protected SceneObjectGroup m_parentGroup; | 49 | protected SceneObjectGroup m_parentGroup; |
47 | 50 | ||
48 | /// <summary> | 51 | /// <summary> |
@@ -366,6 +369,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
366 | { | 369 | { |
367 | m_parentGroup.HasChanged = true; | 370 | m_parentGroup.HasChanged = true; |
368 | } | 371 | } |
372 | this.TimeStampFull =(uint) Util.UnixTimeSinceEpoch(); | ||
369 | m_updateFlag = 2; | 373 | m_updateFlag = 2; |
370 | } | 374 | } |
371 | 375 | ||
@@ -380,6 +384,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
380 | { | 384 | { |
381 | m_parentGroup.HasChanged = true; | 385 | m_parentGroup.HasChanged = true; |
382 | } | 386 | } |
387 | this.TimeStampTerse = (uint)Util.UnixTimeSinceEpoch(); | ||
383 | m_updateFlag = 1; | 388 | m_updateFlag = 1; |
384 | } | 389 | } |
385 | } | 390 | } |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 285c691..7b7c595 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -88,11 +88,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
88 | public delegate void SignificantClientMovement(IClientAPI remote_client); | 88 | public delegate void SignificantClientMovement(IClientAPI remote_client); |
89 | public event SignificantClientMovement OnSignificantClientMovement; | 89 | public event SignificantClientMovement OnSignificantClientMovement; |
90 | 90 | ||
91 | public List<SceneObjectGroup> InterestList = new List<SceneObjectGroup>(); | ||
92 | |||
91 | // private Queue<SceneObjectGroup> m_fullGroupUpdates = new Queue<SceneObjectGroup>(); | 93 | // private Queue<SceneObjectGroup> m_fullGroupUpdates = new Queue<SceneObjectGroup>(); |
92 | // private Queue<SceneObjectGroup> m_terseGroupUpdates = new Queue<SceneObjectGroup>(); | 94 | // private Queue<SceneObjectGroup> m_terseGroupUpdates = new Queue<SceneObjectGroup>(); |
93 | 95 | ||
94 | private Queue<SceneObjectPart> m_fullPartUpdates = new Queue<SceneObjectPart>(); | 96 | private Queue<SceneObjectPart> m_fullPartUpdates = new Queue<SceneObjectPart>(); |
95 | private Queue<SceneObjectPart> m_teserPartUpdates = new Queue<SceneObjectPart>(); | 97 | private Queue<SceneObjectPart> m_tersePartUpdates = new Queue<SceneObjectPart>(); |
96 | 98 | ||
97 | #region Properties | 99 | #region Properties |
98 | /// <summary> | 100 | /// <summary> |
@@ -201,7 +203,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
201 | 203 | ||
202 | public void AddTersePart(SceneObjectPart part) | 204 | public void AddTersePart(SceneObjectPart part) |
203 | { | 205 | { |
204 | m_teserPartUpdates.Enqueue(part); | 206 | m_tersePartUpdates.Enqueue(part); |
205 | } | 207 | } |
206 | 208 | ||
207 | public void AddFullPart(SceneObjectPart part) | 209 | public void AddFullPart(SceneObjectPart part) |
@@ -211,18 +213,18 @@ namespace OpenSim.Region.Environment.Scenes | |||
211 | 213 | ||
212 | public void SendPrimUpdates() | 214 | public void SendPrimUpdates() |
213 | { | 215 | { |
214 | if (m_teserPartUpdates.Count > 0) | 216 | if (m_tersePartUpdates.Count > 0) |
215 | { | 217 | { |
216 | bool terse = true; | 218 | bool terse = true; |
217 | int terseCount = 0; | 219 | int terseCount = 0; |
218 | 220 | ||
219 | while (terse) | 221 | while (terse) |
220 | { | 222 | { |
221 | SceneObjectPart part = m_teserPartUpdates.Dequeue(); | 223 | SceneObjectPart part = m_tersePartUpdates.Dequeue(); |
222 | part.SendTerseUpdate(this.ControllingClient); | 224 | part.SendTerseUpdate(this.ControllingClient); |
223 | terseCount++; | 225 | terseCount++; |
224 | 226 | ||
225 | if ((m_teserPartUpdates.Count < 1) |(terseCount > 30)) | 227 | if ((m_tersePartUpdates.Count < 1) |(terseCount > 30)) |
226 | { | 228 | { |
227 | terse = false; | 229 | terse = false; |
228 | } | 230 | } |