From 05a2feba5d780c57c252891a20071800fd9f2e3e Mon Sep 17 00:00:00 2001
From: UbitUmarov
Date: Mon, 4 Aug 2014 19:57:47 +0100
Subject: start sending terrain in scenePresence after well defined avatar.
Minor change on significante AgentUpdate check.
---
OpenSim/Region/Framework/Scenes/Scene.cs | 4 +-
OpenSim/Region/Framework/Scenes/SceneBase.cs | 1160 +++++++++++-----------
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 19 +-
3 files changed, 592 insertions(+), 591 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 0266faf..ec54e15 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -3179,7 +3179,7 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void SubscribeToClientTerrainEvents(IClientAPI client)
{
- client.OnRegionHandShakeReply += SendLayerData;
+// client.OnRegionHandShakeReply += SendLayerData;
}
public virtual void SubscribeToClientPrimEvents(IClientAPI client)
@@ -3307,7 +3307,7 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void UnSubscribeToClientTerrainEvents(IClientAPI client)
{
- client.OnRegionHandShakeReply -= SendLayerData;
+// client.OnRegionHandShakeReply -= SendLayerData;
}
public virtual void UnSubscribeToClientPrimEvents(IClientAPI client)
diff --git a/OpenSim/Region/Framework/Scenes/SceneBase.cs b/OpenSim/Region/Framework/Scenes/SceneBase.cs
index 08e26c5..6adccca 100644
--- a/OpenSim/Region/Framework/Scenes/SceneBase.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneBase.cs
@@ -1,581 +1,581 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System;
-using System.Collections.Generic;
-using System.Reflection;
-using System.Threading;
-using OpenMetaverse;
-using log4net;
-using Nini.Config;
-using OpenSim.Framework;
-using OpenSim.Framework.Console;
-
-using OpenSim.Region.Framework.Interfaces;
-using GridRegion = OpenSim.Services.Interfaces.GridRegion;
-
-namespace OpenSim.Region.Framework.Scenes
-{
- public abstract class SceneBase : IScene
- {
+/*
+ * Copyright (c) Contributors, http://opensimulator.org/
+ * See CONTRIBUTORS.TXT for a full list of copyright holders.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the OpenSimulator Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Threading;
+using OpenMetaverse;
+using log4net;
+using Nini.Config;
+using OpenSim.Framework;
+using OpenSim.Framework.Console;
+
+using OpenSim.Region.Framework.Interfaces;
+using GridRegion = OpenSim.Services.Interfaces.GridRegion;
+
+namespace OpenSim.Region.Framework.Scenes
+{
+ public abstract class SceneBase : IScene
+ {
protected static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- protected static readonly string LogHeader = "[SCENE]";
-
- #region Events
-
- public event restart OnRestart;
-
- #endregion
-
- #region Fields
-
- public string Name { get { return RegionInfo.RegionName; } }
-
- public IConfigSource Config
- {
- get { return GetConfig(); }
- }
-
- protected virtual IConfigSource GetConfig()
- {
- return null;
- }
-
- ///
- /// All the region modules attached to this scene.
- ///
- public Dictionary RegionModules
- {
- get { return m_regionModules; }
- }
- private Dictionary m_regionModules = new Dictionary();
-
- ///
- /// The module interfaces available from this scene.
- ///
- protected Dictionary> ModuleInterfaces = new Dictionary>();
-
- protected Dictionary ModuleAPIMethods = new Dictionary();
-
- ///
- /// The module commanders available from this scene
- ///
- protected Dictionary m_moduleCommanders = new Dictionary();
-
- ///
- /// Registered classes that are capable of creating entities.
- ///
- protected Dictionary m_entityCreators = new Dictionary();
-
- ///
- /// The last allocated local prim id. When a new local id is requested, the next number in the sequence is
- /// dispensed.
- ///
- protected uint m_lastAllocatedLocalId = 720000;
-
- private readonly Mutex _primAllocateMutex = new Mutex(false);
-
- protected readonly ClientManager m_clientManager = new ClientManager();
-
- public bool LoginsEnabled
- {
- get
- {
- return m_loginsEnabled;
- }
-
- set
- {
- if (m_loginsEnabled != value)
- {
- m_loginsEnabled = value;
- EventManager.TriggerRegionLoginsStatusChange(this);
- }
- }
- }
- private bool m_loginsEnabled;
-
- public bool Ready
- {
- get
- {
- return m_ready;
- }
-
- set
- {
- if (m_ready != value)
- {
- m_ready = value;
- EventManager.TriggerRegionReadyStatusChange(this);
- }
- }
- }
- private bool m_ready;
-
- public float TimeDilation
- {
- get { return 1.0f; }
- }
-
- protected ulong m_regionHandle;
- protected string m_regionName;
-
- public ITerrainChannel Heightmap;
-
- ///
- /// Allows retrieval of land information for this scene.
- ///
- public ILandChannel LandChannel;
-
- ///
- /// Manage events that occur in this scene (avatar movement, script rez, etc.). Commonly used by region modules
- /// to subscribe to scene events.
- ///
- public EventManager EventManager
- {
- get { return m_eventManager; }
- }
- protected EventManager m_eventManager;
-
- protected ScenePermissions m_permissions;
- public ScenePermissions Permissions
- {
- get { return m_permissions; }
- }
-
- protected string m_datastore;
-
- /* Used by the loadbalancer plugin on GForge */
- protected RegionStatus m_regStatus;
- public RegionStatus RegionStatus
- {
- get { return m_regStatus; }
- set { m_regStatus = value; }
- }
-
- #endregion
-
- public SceneBase(RegionInfo regInfo)
- {
- RegionInfo = regInfo;
- }
-
- #region Update Methods
-
- ///
- /// Called to update the scene loop by a number of frames and until shutdown.
- ///
- ///
- /// Number of frames to update. Exits on shutdown even if there are frames remaining.
- /// If -1 then updates until shutdown.
- ///
- public abstract void Update(int frames);
-
- #endregion
-
- #region Terrain Methods
-
- ///
- /// Loads the World heightmap
- ///
- public abstract void LoadWorldMap();
-
- ///
- /// Send the region heightmap to the client
- ///
- /// Client to send to
- public virtual void SendLayerData(IClientAPI RemoteClient)
- {
- RemoteClient.SendLayerData(Heightmap.GetFloatsSerialised());
- }
-
- #endregion
-
- #region Add/Remove Agent/Avatar
-
- public abstract ISceneAgent AddNewAgent(IClientAPI client, PresenceType type);
-
- public abstract bool CloseAgent(UUID agentID, bool force);
-
- public bool TryGetScenePresence(UUID agentID, out object scenePresence)
- {
- scenePresence = null;
- ScenePresence sp = null;
- if (TryGetScenePresence(agentID, out sp))
- {
- scenePresence = sp;
- return true;
- }
-
- return false;
- }
-
- ///
- /// Try to get a scene presence from the scene
- ///
- ///
- /// null if there is no scene presence with the given agent id
- /// true if there was a scene presence with the given id, false otherwise.
- public abstract bool TryGetScenePresence(UUID agentID, out ScenePresence scenePresence);
-
- #endregion
-
- ///
- ///
- ///
- ///
- public virtual RegionInfo RegionInfo { get; private set; }
-
- #region admin stuff
-
- public abstract void OtherRegionUp(GridRegion otherRegion);
-
- public virtual string GetSimulatorVersion()
- {
- return "OpenSimulator Server";
- }
-
- #endregion
-
- #region Shutdown
-
- ///
- /// Tidy before shutdown
- ///
- public virtual void Close()
- {
- try
- {
- EventManager.TriggerShutdown();
- }
- catch (Exception e)
- {
- m_log.Error(string.Format("[SCENE]: SceneBase.cs: Close() - Failed with exception ", e));
- }
- }
-
- #endregion
-
- ///
- /// Returns a new unallocated local ID
- ///
- /// A brand new local ID
- public uint AllocateLocalId()
- {
- uint myID;
-
- _primAllocateMutex.WaitOne();
- myID = ++m_lastAllocatedLocalId;
- _primAllocateMutex.ReleaseMutex();
-
- return myID;
- }
-
- #region Module Methods
-
- ///
- /// Add a region-module to this scene. TODO: This will replace AddModule in the future.
- ///
- ///
- ///
- public void AddRegionModule(string name, IRegionModuleBase module)
- {
- if (!RegionModules.ContainsKey(name))
- {
- RegionModules.Add(name, module);
- }
- }
-
- public void RemoveRegionModule(string name)
- {
- RegionModules.Remove(name);
- }
-
- ///
- /// Register a module commander.
- ///
- ///
- public void RegisterModuleCommander(ICommander commander)
- {
- lock (m_moduleCommanders)
- {
- m_moduleCommanders.Add(commander.Name, commander);
- }
- }
-
- ///
- /// Unregister a module commander and all its commands
- ///
- ///
- public void UnregisterModuleCommander(string name)
- {
- lock (m_moduleCommanders)
- {
- ICommander commander;
- if (m_moduleCommanders.TryGetValue(name, out commander))
- m_moduleCommanders.Remove(name);
- }
- }
-
- ///
- /// Get a module commander
- ///
- ///
- /// The module commander, null if no module commander with that name was found
- public ICommander GetCommander(string name)
- {
- lock (m_moduleCommanders)
- {
- if (m_moduleCommanders.ContainsKey(name))
- return m_moduleCommanders[name];
- }
-
- return null;
- }
-
- public Dictionary GetCommanders()
- {
- return m_moduleCommanders;
- }
-
- ///
- /// Register an interface to a region module. This allows module methods to be called directly as
- /// well as via events. If there is already a module registered for this interface, it is not replaced
- /// (is this the best behaviour?)
- ///
- ///
- public void RegisterModuleInterface(M mod)
- {
-// m_log.DebugFormat("[SCENE BASE]: Registering interface {0}", typeof(M));
-
- List