From c29df824c2db40ccdfbaf7ac6f166c578d77db3a Mon Sep 17 00:00:00 2001 From: MW Date: Sat, 8 Sep 2007 07:50:31 +0000 Subject: Converted the LSL scripting engine into a IRegionModule, so now all "modules" share a common base interface and are loaded from the single loader. (It seems to work fine, but I have left the old scriptengine loader, incase we have to change back). Removed the reference to OpenJpeg in the DynamicTextureModule, to see if that was causing the build problem someone is having. Added a Temporary fix for the "existing connection was forcibly closed by the remote host" exception on windows when a user logs out of a multiregion instance. Some early work to prepare for improving the way clients are updated (about prims etc). --- OpenSim/Region/Environment/Scenes/Scene.cs | 8 ++++++++ OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 5 +++++ OpenSim/Region/Environment/Scenes/ScenePresence.cs | 12 +++++++----- 3 files changed, 20 insertions(+), 5 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes') 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; using OpenSim.Region.Environment.LandManagement; using OpenSim.Region.Environment; using OpenSim.Region.Environment.Interfaces; +using OpenSim.Region.Environment.Types; using OpenSim.Region.Terrain; using OpenSim.Framework.Data; using Caps = OpenSim.Region.Capabilities.Caps; @@ -72,6 +73,8 @@ namespace OpenSim.Region.Environment.Scenes private int m_timePhase = 24; private int m_timeUpdateCount; + public BasicQuadTreeNode QuadTree; + private Mutex updateLock; protected ModuleLoader m_moduleLoader; @@ -178,6 +181,10 @@ namespace OpenSim.Region.Environment.Scenes m_eventManager.OnPermissionError += SendPermissionAlert; + QuadTree = new BasicQuadTreeNode(null, 0, 0, 256, 256); + QuadTree.Subdivide(); + QuadTree.Subdivide(); + MainLog.Instance.Verbose("Creating new entitities instance"); Entities = new Dictionary(); Avatars = new Dictionary(); @@ -596,6 +603,7 @@ namespace OpenSim.Region.Environment.Scenes { if (!Entities.ContainsKey(sceneObject.UUID)) { + QuadTree.AddObject(sceneObject); Entities.Add(sceneObject.UUID, sceneObject); } } 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 protected byte[] m_particleSystem = new byte[0]; + public uint TimeStampFull = 0; + public uint TimeStampTerse = 0; + protected SceneObjectGroup m_parentGroup; /// @@ -366,6 +369,7 @@ namespace OpenSim.Region.Environment.Scenes { m_parentGroup.HasChanged = true; } + this.TimeStampFull =(uint) Util.UnixTimeSinceEpoch(); m_updateFlag = 2; } @@ -380,6 +384,7 @@ namespace OpenSim.Region.Environment.Scenes { m_parentGroup.HasChanged = true; } + this.TimeStampTerse = (uint)Util.UnixTimeSinceEpoch(); m_updateFlag = 1; } } 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 public delegate void SignificantClientMovement(IClientAPI remote_client); public event SignificantClientMovement OnSignificantClientMovement; + public List InterestList = new List(); + // private Queue m_fullGroupUpdates = new Queue(); // private Queue m_terseGroupUpdates = new Queue(); private Queue m_fullPartUpdates = new Queue(); - private Queue m_teserPartUpdates = new Queue(); + private Queue m_tersePartUpdates = new Queue(); #region Properties /// @@ -201,7 +203,7 @@ namespace OpenSim.Region.Environment.Scenes public void AddTersePart(SceneObjectPart part) { - m_teserPartUpdates.Enqueue(part); + m_tersePartUpdates.Enqueue(part); } public void AddFullPart(SceneObjectPart part) @@ -211,18 +213,18 @@ namespace OpenSim.Region.Environment.Scenes public void SendPrimUpdates() { - if (m_teserPartUpdates.Count > 0) + if (m_tersePartUpdates.Count > 0) { bool terse = true; int terseCount = 0; while (terse) { - SceneObjectPart part = m_teserPartUpdates.Dequeue(); + SceneObjectPart part = m_tersePartUpdates.Dequeue(); part.SendTerseUpdate(this.ControllingClient); terseCount++; - if ((m_teserPartUpdates.Count < 1) |(terseCount > 30)) + if ((m_tersePartUpdates.Count < 1) |(terseCount > 30)) { terse = false; } -- cgit v1.1