aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs8
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs5
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs12
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;
44using OpenSim.Region.Environment.LandManagement; 44using OpenSim.Region.Environment.LandManagement;
45using OpenSim.Region.Environment; 45using OpenSim.Region.Environment;
46using OpenSim.Region.Environment.Interfaces; 46using OpenSim.Region.Environment.Interfaces;
47using OpenSim.Region.Environment.Types;
47using OpenSim.Region.Terrain; 48using OpenSim.Region.Terrain;
48using OpenSim.Framework.Data; 49using OpenSim.Framework.Data;
49using Caps = OpenSim.Region.Capabilities.Caps; 50using 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 }