/// <summary>
        /// Create a server that can set up sessions for virtual world client <-> server communications
        /// </summary>
        /// <param name="_listenIP"></param>
        /// <param name="port"></param>
        /// <param name="proxyPortOffset"></param>
        /// <param name="allow_alternate_port"></param>
        /// <param name="configSource">
        /// Can be null, in which case default values are used
        /// </param>
        /// <param name="assetCache"></param>
        /// <param name="authenticateClass"></param>
        /// <returns></returns>
        public List <IClientNetworkServer> CreateServers(
            IPAddress _listenIP, ref uint port, int proxyPortOffset, bool allow_alternate_port, IConfigSource configSource,
            AgentCircuitManager authenticateClass)
        {
            if (m_log.IsDebugEnabled)
            {
                m_log.DebugFormat("{0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
            }

            List <IClientNetworkServer> servers = new List <IClientNetworkServer>();

            if (plugin != null)
            {
                for (int i = 0; i < plugin.Count; i++)
                {
                    IClientNetworkServer server =
                        (IClientNetworkServer)Activator.CreateInstance(pluginAssembly[i].GetType(plugin[i].ToString()));

                    server.Initialise(
                        _listenIP, ref port, proxyPortOffset, allow_alternate_port,
                        configSource, authenticateClass);
                    servers.Add(server);
                }
                return(servers);
            }

            m_log.Error("[CLIENTSTACK]: Couldn't initialize a new server");
            return(null);
        }
        public void RegionLoaded(Scene scene)
        {
            if (m_scene == null)
            {
                m_scene = scene;
            }

            if ((m_scene != null) && (m_createClientStack))
            {
                m_log.Info("[LLClientStackModule] Starting up LLClientStack.");
                IPEndPoint endPoint = m_scene.RegionInfo.InternalEndPoint;

                uint port = (uint)endPoint.Port;
                m_clientStackManager = new ClientStackManager(m_clientStackDll);

                m_clientServer
                    = m_clientStackManager.CreateServer(endPoint.Address,
                                                        ref port, m_scene.RegionInfo.ProxyOffset, m_scene.RegionInfo.m_allow_alternate_ports, m_source,
                                                        m_scene.AuthenticateHandler);

                m_clientServer.AddScene(m_scene);

                m_clientServer.Start();
            }
        }
Beispiel #3
0
        /// <summary>
        /// Create a server that can set up sessions for virtual world client <-> server communications
        /// </summary>
        /// <param name="_listenIP"></param>
        /// <param name="port"></param>
        /// <param name="proxyPortOffset"></param>
        /// <param name="allow_alternate_port"></param>
        /// <param name="configSource">
        /// Can be null, in which case default values are used
        /// </param>
        /// <param name="assetCache"></param>
        /// <param name="authenticateClass"></param>
        /// <returns></returns>
        public IClientNetworkServer CreateServer(
            IPAddress _listenIP, ref uint port, int proxyPortOffset, bool allow_alternate_port, IConfigSource configSource,
            IAssetCache assetCache, AgentCircuitManager authenticateClass)
        {
            if (plugin != null)
            {
                IClientNetworkServer server =
                    (IClientNetworkServer)Activator.CreateInstance(pluginAssembly.GetType(plugin.ToString()));

                server.Initialise(
                    _listenIP, ref port, proxyPortOffset, allow_alternate_port,
                    configSource, assetCache, authenticateClass);

                return(server);
            }

            m_log.Error("[CLIENTSTACK]: Couldn't initialize a new server");
            return(null);
        }
        public void PostInitialize()
        {
            if ((m_scene != null) && (m_createClientStack))
            {
                m_log.Info("[LLClientStackModule] Starting up LLClientStack.");
                IPEndPoint endPoint = m_scene.RegionInfo.InternalEndPoint;

                uint port = (uint)endPoint.Port;
                m_clientStackManager = new ClientStackManager(m_clientStackDll);

                m_clientServer
                    = m_clientStackManager.CreateServer(endPoint.Address,
                                                        ref port, m_scene.RegionInfo.ProxyOffset, m_scene.RegionInfo.m_allow_alternate_ports, m_source,
                                                        m_scene.CommsManager.AssetCache);

                m_clientServer.AddScene(m_scene);

                m_clientServer.Start();
            }
        }
        public void PostInitialise()
        {
            if ((m_scene != null) && (m_createClientStack))
            {
                m_log.Info("[LLClientStackModule] Starting up LLClientStack.");
                IPEndPoint endPoint = m_scene.RegionInfo.InternalEndPoint;

                uint port = (uint)endPoint.Port;
                m_clientStackManager = new ClientStackManager(m_clientStackDll);

                m_clientServer
                   = m_clientStackManager.CreateServer(endPoint.Address,
                     ref port, m_scene.RegionInfo.ProxyOffset, m_scene.RegionInfo.m_allow_alternate_ports, m_source,
                       m_scene.CommsManager.AssetCache);

                m_clientServer.AddScene(m_scene);

                m_clientServer.Start();
            }
        }
Beispiel #6
0
        /// <summary>
        /// Create a scene and its initial base structures.
        /// </summary>
        /// <param name="regionInfo"></param>
        /// <param name="proxyOffset"></param>
        /// <param name="configSource"></param>
        /// <param name="clientServer"> </param>
        /// <returns></returns>
        protected Scene SetupScene(
            RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out IClientNetworkServer clientServer)
        {
            AgentCircuitManager circuitManager = new AgentCircuitManager();
            IPAddress           listenIP       = regionInfo.InternalEndPoint.Address;
            //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP))
            //    listenIP = IPAddress.Parse("0.0.0.0");

            uint port = (uint)regionInfo.InternalEndPoint.Port;

            if (m_autoCreateClientStack)
            {
                clientServer
                    = m_clientStackManager.CreateServer(
                          listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, configSource,
                          circuitManager);
            }
            else
            {
                clientServer = null;
            }

            regionInfo.InternalEndPoint.Port = (int)port;

            Scene scene = CreateScene(regionInfo, m_simulationDataService, m_estateDataService, circuitManager);

            if (m_autoCreateClientStack)
            {
                clientServer.AddScene(scene);
            }

            scene.LoadWorldMap();

            scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName);
            scene.PhysicsScene.RequestAssetMethod = scene.PhysicsRequestAsset;
            scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised());
            scene.PhysicsScene.SetWaterLevel((float)regionInfo.RegionSettings.WaterHeight);

            return(scene);
        }
Beispiel #7
0
        /// <summary>
        ///   Create a scene and its initial base structures.
        /// </summary>
        /// <param name = "regionInfo"></param>
        /// <param name = "proxyOffset"></param>
        /// <param name = "configSource"></param>
        /// <param name = "clientServer"> </param>
        /// <returns></returns>
        protected IScene SetupScene(RegionInfo regionInfo, IConfigSource configSource)
        {
            AgentCircuitManager         circuitManager   = new AgentCircuitManager();
            List <IClientNetworkServer> clientServers    = AuroraModuleLoader.PickupModules <IClientNetworkServer>();
            List <IClientNetworkServer> allClientServers = new List <IClientNetworkServer>();

            foreach (IClientNetworkServer clientServer in clientServers)
            {
                foreach (int port in regionInfo.UDPPorts)
                {
                    IClientNetworkServer copy = clientServer.Copy();
                    copy.Initialise(port, m_configSource, circuitManager);
                    allClientServers.Add(copy);
                }
            }

            AsyncScene scene = new AsyncScene();

            scene.AddModuleInterfaces(m_openSimBase.ApplicationRegistry.GetInterfaces());
            scene.Initialize(regionInfo, circuitManager, allClientServers);

            return(scene);
        }
Beispiel #8
0
        /// <summary>
        /// Create a scene and its initial base structures.
        /// </summary>
        /// <param name="regionInfo"></param>
        /// <param name="proxyOffset"></param>
        /// <param name="configSource"></param>
        /// <param name="clientServer"> </param>
        /// <returns></returns>
        protected Scene SetupScene(RegionInfo regionInfo, IConfigSource configSource)
        {
            AgentCircuitManager circuitManager = new AgentCircuitManager();
            IPAddress           listenIP       = regionInfo.InternalEndPoint.Address;

            if (!IPAddress.TryParse(regionInfo.InternalEndPoint.Address.ToString(), out listenIP))
            {
                listenIP = IPAddress.Parse("0.0.0.0");
            }

            uint port = (uint)regionInfo.InternalEndPoint.Port;

            string ClientstackDll = m_config.Configs["Startup"].GetString("ClientStackPlugin", "OpenSim.Region.ClientStack.LindenUDP.dll");

            IClientNetworkServer clientServer = AuroraModuleLoader.LoadPlugin <IClientNetworkServer> (Util.BasePathCombine(ClientstackDll));

            clientServer.Initialise(
                listenIP, ref port, 0, regionInfo.m_allow_alternate_ports,
                m_config, circuitManager);

            regionInfo.InternalEndPoint.Port = (int)port;

            Scene scene = new Scene();

            scene.AddModuleInterfaces(m_OpenSimBase.ApplicationRegistry.GetInterfaces());
            scene.Initialize(regionInfo, circuitManager, clientServer);

            StartModules(scene);

            m_clientServers.Add(clientServer);

            //Do this here so that we don't have issues later when startup complete messages start coming in
            m_localScenes.Add(scene);

            return(scene);
        }
Beispiel #9
0
        /// <summary>
        /// Create a scene and its initial base structures.
        /// </summary>
        /// <param name="regionInfo"></param>
        /// <param name="proxyOffset"></param>
        /// <param name="configSource"></param>
        /// <param name="clientServer"> </param>
        /// <returns></returns>
        protected Scene SetupScene(RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out IClientNetworkServer clientServer)
        {
            AgentCircuitManager circuitManager = new AgentCircuitManager();
            IPAddress listenIP = regionInfo.InternalEndPoint.Address;
            //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP))
            //    listenIP = IPAddress.Parse("0.0.0.0");

            uint port = (uint)regionInfo.InternalEndPoint.Port;

            string ClientstackDll = m_config.Configs["Startup"].GetString("ClientStackPlugin", "OpenSim.Region.ClientStack.LindenUDP.dll");

            clientServer = Aurora.Framework.AuroraModuleLoader.LoadPlugin<IClientNetworkServer>(ClientstackDll, "IClientNetworkServer");
            clientServer.Initialise(
                    listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports,
                    m_config, circuitManager);
            
            regionInfo.InternalEndPoint.Port = (int)port;

            SceneCommunicationService sceneGridService = new SceneCommunicationService();
            Scene scene = new Scene(regionInfo, circuitManager, sceneGridService, m_config, m_OpenSimBase.Version, m_simulationDataService, m_OpenSimBase.Stats);
            
            FindEstateInfo(scene);

            clientServer.AddScene(scene);
            m_clientServers.Add(clientServer);

            //Do this here so that we don't have issues later when startup complete messages start coming in
            Add(scene);

            scene.PhysicsScene = GetPhysicsScene(m_config, scene.RegionInfo.RegionName);
            
            return scene;
        }
Beispiel #10
0
        /// <summary>
        /// Create a scene and its initial base structures.
        /// </summary>
        /// <param name="regionInfo"></param>
        /// <param name="proxyOffset"></param>
        /// <param name="configSource"></param>
        /// <param name="clientServer"> </param>
        /// <returns></returns>
        protected Scene SetupScene(
            RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out IClientNetworkServer clientServer)
        {
            IPAddress listenIP = regionInfo.InternalEndPoint.Address;
            //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP))
            //    listenIP = IPAddress.Parse("0.0.0.0");

            uint port = (uint) regionInfo.InternalEndPoint.Port;

            if (m_autoCreateClientStack)
            {
                clientServer
                    = m_clientStackManager.CreateServer(
                        listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, configSource,
                        m_assetCache);
            }
            else
            {
                clientServer = null;
            }

            regionInfo.InternalEndPoint.Port = (int) port;

            // TODO: Remove this cruft once MasterAvatar is fully deprecated
            //Master Avatar Setup
            UserProfileData masterAvatar;
            if (regionInfo.MasterAvatarAssignedUUID == UUID.Zero)
            {
                masterAvatar =
                    m_commsManager.UserService.SetupMasterUser(regionInfo.MasterAvatarFirstName,
                                                               regionInfo.MasterAvatarLastName,
                                                               regionInfo.MasterAvatarSandboxPassword);
            }
            else
            {
                masterAvatar = m_commsManager.UserService.SetupMasterUser(regionInfo.MasterAvatarAssignedUUID);
            }

            if (masterAvatar == null)
            {
                regionInfo.MasterAvatarAssignedUUID = UUID.Zero;
                m_log.Error("[PARCEL]: No master avatar found, using null UUID for master avatar.");
                // Should be a fatal error?
            }
            else
            {
                regionInfo.MasterAvatarAssignedUUID = masterAvatar.ID;
                regionInfo.MasterAvatarFirstName = masterAvatar.FirstName;
                regionInfo.MasterAvatarLastName = masterAvatar.SurName;
                m_log.InfoFormat("[PARCEL]: Found master avatar {0} {1} [{2}]",
                        regionInfo.MasterAvatarFirstName,
                        regionInfo.MasterAvatarLastName,
                        regionInfo.MasterAvatarAssignedUUID.ToString()
                        );
            }

            Scene scene = CreateScene(regionInfo, m_storageManager);

            if (m_autoCreateClientStack)
            {
                clientServer.AddScene(scene);
            }

            scene.LoadWorldMap();

            scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName, scene.RegionInfo.RegionID);
            scene.PhysicsScene.TerrainChannel = scene.Heightmap;
            scene.PhysicsScene.RegionSettings = scene.RegionInfo.RegionSettings;
            scene.PhysicsScene.SetStartupTerrain(scene.Heightmap.GetFloatsSerialized(), scene.Heightmap.RevisionNumber);
            scene.PhysicsScene.SetWaterLevel((float) regionInfo.RegionSettings.WaterHeight);

            return scene;
        }
Beispiel #11
0
 /// <summary>
 /// Create a scene and its initial base structures.
 /// </summary>
 /// <param name="regionInfo"></param>
 /// <param name="clientServer"> </param>
 /// <returns></returns>        
 protected Scene SetupScene(RegionInfo regionInfo, out IClientNetworkServer clientServer)
 {
     return SetupScene(regionInfo, 0, null, out clientServer);
 }
Beispiel #12
0
        /// <summary>
        /// Create a scene and its initial base structures.
        /// </summary>
        /// <param name="regionInfo"></param>
        /// <param name="proxyOffset"></param>
        /// <param name="configSource"></param>
        /// <param name="clientServer"> </param>
        /// <returns></returns>
        protected Scene SetupScene(
            RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out IClientNetworkServer clientServer)
        {
            AgentCircuitManager circuitManager = new AgentCircuitManager();
            IPAddress listenIP = regionInfo.InternalEndPoint.Address;
            //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP))
            //    listenIP = IPAddress.Parse("0.0.0.0");

            uint port = (uint) regionInfo.InternalEndPoint.Port;

            if (m_autoCreateClientStack)
            {
                clientServer
                    = m_clientStackManager.CreateServer(
                        listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, configSource,
                        circuitManager);
            }
            else
            {
                clientServer = null;
            }

            regionInfo.InternalEndPoint.Port = (int) port;

            Scene scene = CreateScene(regionInfo, m_simulationDataService, m_estateDataService, circuitManager);

            if (m_autoCreateClientStack)
            {
                clientServer.AddScene(scene);
            }

            scene.LoadWorldMap();

            scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName);
            scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised());
            scene.PhysicsScene.SetWaterLevel((float) regionInfo.RegionSettings.WaterHeight);

            return scene;
        }
Beispiel #13
0
        /// <summary>
        /// Create a scene and its initial base structures.
        /// </summary>
        /// <param name="regionInfo"></param>
        /// <param name="proxyOffset"></param>
        /// <param name="configSource"></param>
        /// <param name="clientServer"> </param>
        /// <returns></returns>
        protected Scene SetupScene(RegionInfo regionInfo, IConfigSource configSource, out IClientNetworkServer clientServer)
        {
            AgentCircuitManager circuitManager = new AgentCircuitManager();
            IPAddress listenIP = regionInfo.InternalEndPoint.Address;
            if (!IPAddress.TryParse(regionInfo.InternalEndPoint.Address.ToString(), out listenIP))
                listenIP = IPAddress.Parse("0.0.0.0");

            uint port = (uint)regionInfo.InternalEndPoint.Port;

            string ClientstackDll = m_config.Configs["Startup"].GetString("ClientStackPlugin", "OpenSim.Region.ClientStack.LindenUDP.dll");

            clientServer = AuroraModuleLoader.LoadPlugin<IClientNetworkServer>(ClientstackDll);
            clientServer.Initialise(
                    listenIP, ref port, 0, regionInfo.m_allow_alternate_ports,
                    m_config, circuitManager);

            regionInfo.InternalEndPoint.Port = (int)port;

            Scene scene = new Scene(regionInfo, circuitManager, this);

            StartModules(scene);

            clientServer.AddScene(scene);
            m_clientServers.Add(clientServer);

            //Do this here so that we don't have issues later when startup complete messages start coming in
            m_localScenes.Add(scene);

            return scene;
        }
        public void RegionLoaded(Scene scene)
        {
            if (m_scene == null)
            {
                m_scene = scene;
            }

            if ((m_scene != null) && (m_createClientStack))
            {
                m_log.Info("[LLClientStackModule] Starting up LLClientStack.");
                IPEndPoint endPoint = m_scene.RegionInfo.InternalEndPoint;

                uint port = (uint)endPoint.Port;
                m_clientStackManager = new ClientStackManager(m_clientStackDll);

                m_clientServer
                   = m_clientStackManager.CreateServer(endPoint.Address,
                     ref port, m_scene.RegionInfo.ProxyOffset, m_scene.RegionInfo.m_allow_alternate_ports, m_source,
                       m_scene.AuthenticateHandler);

                m_clientServer.AddScene(m_scene);

                m_clientServer.Start();
            }
        }
Beispiel #15
0
        public void Initialize (RegionInfo regionInfo, AgentCircuitManager authen, IClientNetworkServer clientServer)
        {
            Initialize (regionInfo);

            //Set up the clientServer
            m_clientServer = clientServer;
            clientServer.AddScene (this);

            m_sceneManager = RequestModuleInterface<SceneManager> ();
            m_simDataStore = m_sceneManager.GetSimulationDataStore ();

            m_config = m_sceneManager.ConfigSource;
            m_authenticateHandler = authen;

            m_AuroraEventManager = new AuroraEventManager();
            m_eventManager = new EventManager();
            m_permissions = new ScenePermissions(this);

            // Load region settings
            m_regInfo.RegionSettings = Aurora.DataManager.DataManager.RequestPlugin<IRegionInfoConnector> ().LoadRegionSettings (m_regInfo.RegionID);

            m_sceneGraph = new SceneGraph(this, m_regInfo);

            #region Region Config

            IConfig aurorastartupConfig = m_config.Configs["AuroraStartup"];
            if (aurorastartupConfig != null)
            {
                //Region specific is still honored here, the RegionInfo checks for it
                RegionInfo.ObjectCapacity = aurorastartupConfig.GetInt("ObjectCapacity", 80000);
            }

            IConfig packetConfig = m_config.Configs["PacketPool"];
            if (packetConfig != null)
            {
                PacketPool.Instance.RecyclePackets = packetConfig.GetBoolean("RecyclePackets", true);
                PacketPool.Instance.RecycleDataBlocks = packetConfig.GetBoolean("RecycleDataBlocks", true);
            }

            #endregion Region Config

            m_basesimfps = 45f;
            m_basesimphysfps = 45f;

            m_basesimphysfps = Config.Configs["Physics"].GetFloat("BasePhysicsFPS", 45f);
            if (m_basesimphysfps > 45f)
                m_basesimphysfps = 45f;

            m_basesimfps = Config.Configs["Protection"].GetFloat("BaseRateFramesPerSecond", 45f);
            if (m_basesimfps > 45f)
                m_basesimfps = 45f;

            if (m_basesimphysfps > m_basesimfps)
                m_basesimphysfps = m_basesimfps;

            m_updatetimespan = 1000 / m_basesimfps;
            m_physicstimespan = 1000 / m_basesimphysfps;

            #region Startup Complete config

            EventManager.OnAddToStartupQueue += AddToStartupQueue;
            EventManager.OnModuleFinishedStartup += FinishedStartup;
            //EventManager.OnStartupComplete += StartupComplete;

            AddToStartupQueue("Startup");

            #endregion
        }
Beispiel #16
0
        /// <summary>
        /// Create a scene and its initial base structures.
        /// </summary>
        /// <param name="regionInfo"></param>
        /// <param name="proxyOffset"></param>
        /// <param name="configSource"></param>
        /// <param name="clientServer"> </param>
        /// <returns></returns>
        protected Scene SetupScene(
            RegionInfo regionInfo, int proxyOffset, IConfigSource configSource, out IClientNetworkServer clientServer)
        {
            AgentCircuitManager circuitManager = new AgentCircuitManager();
            IPAddress           listenIP       = regionInfo.InternalEndPoint.Address;
            //if (!IPAddress.TryParse(regionInfo.InternalEndPoint, out listenIP))
            //    listenIP = IPAddress.Parse("0.0.0.0");

            uint port = (uint)regionInfo.InternalEndPoint.Port;

            if (m_autoCreateClientStack)
            {
                clientServer
                    = m_clientStackManager.CreateServer(
                          listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, configSource,
                          circuitManager);
            }
            else
            {
                clientServer = null;
            }

            regionInfo.InternalEndPoint.Port = (int)port;

            Scene scene = CreateScene(regionInfo, m_storageManager, circuitManager);

            if (m_autoCreateClientStack)
            {
                clientServer.AddScene(scene);
            }

            scene.LoadWorldMap();

            scene.PhysicsScene = GetPhysicsScene(scene.RegionInfo.RegionName);
            scene.PhysicsScene.SetTerrain(scene.Heightmap.GetFloatsSerialised());
            scene.PhysicsScene.SetWaterLevel((float)regionInfo.RegionSettings.WaterHeight);

            // TODO: Remove this cruft once MasterAvatar is fully deprecated
            //Master Avatar Setup
            UserProfileData masterAvatar;

            if (scene.RegionInfo.MasterAvatarAssignedUUID == UUID.Zero)
            {
                masterAvatar =
                    m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName,
                                                               scene.RegionInfo.MasterAvatarLastName,
                                                               scene.RegionInfo.MasterAvatarSandboxPassword);
            }
            else
            {
                masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarAssignedUUID);
                scene.RegionInfo.MasterAvatarFirstName = masterAvatar.FirstName;
                scene.RegionInfo.MasterAvatarLastName  = masterAvatar.SurName;
            }

            if (masterAvatar == null)
            {
                m_log.Info("[PARCEL]: No master avatar found, using null.");
                scene.RegionInfo.MasterAvatarAssignedUUID = UUID.Zero;
            }
            else
            {
                m_log.InfoFormat("[PARCEL]: Found master avatar {0} {1} [" + masterAvatar.ID.ToString() + "]",
                                 scene.RegionInfo.MasterAvatarFirstName, scene.RegionInfo.MasterAvatarLastName);
                scene.RegionInfo.MasterAvatarAssignedUUID = masterAvatar.ID;
            }

            return(scene);
        }
Beispiel #17
0
 /// <summary>
 /// Create a scene and its initial base structures.
 /// </summary>
 /// <param name="regionInfo"></param>
 /// <param name="clientServer"> </param>
 /// <returns></returns>
 protected Scene SetupScene(RegionInfo regionInfo, out IClientNetworkServer clientServer)
 {
     return(SetupScene(regionInfo, 0, null, out clientServer));
 }
Beispiel #18
0
        public void Initialize(RegionInfo regionInfo, AgentCircuitManager authen, IClientNetworkServer clientServer)
        {
            Initialize(regionInfo);

            //Set up the clientServer
            m_clientServer = clientServer;
            clientServer.AddScene(this);

            m_sceneManager = RequestModuleInterface <SceneManager>();

            m_config = m_sceneManager.ConfigSource;
            m_authenticateHandler = authen;

            m_AuroraEventManager = new AuroraEventManager();
            m_eventManager       = new EventManager();
            m_permissions        = new ScenePermissions(this);

            // Load region settings
            m_regInfo.RegionSettings = m_sceneManager.SimulationDataService.LoadRegionSettings(m_regInfo.RegionID);

            m_sceneGraph = new SceneGraph(this, m_regInfo);

            #region Region Config

            IConfig aurorastartupConfig = m_config.Configs["AuroraStartup"];
            if (aurorastartupConfig != null)
            {
                //Region specific is still honored here, the RegionInfo checks for it
                RegionInfo.ObjectCapacity = aurorastartupConfig.GetInt("ObjectCapacity", 80000);
            }

            IConfig packetConfig = m_config.Configs["PacketPool"];
            if (packetConfig != null)
            {
                PacketPool.Instance.RecyclePackets    = packetConfig.GetBoolean("RecyclePackets", true);
                PacketPool.Instance.RecycleDataBlocks = packetConfig.GetBoolean("RecycleDataBlocks", true);
            }

            #endregion Region Config

            m_basesimfps     = 45f;
            m_basesimphysfps = 45f;

            m_basesimphysfps = Config.Configs["Physics"].GetFloat("BasePhysicsFPS", 45f);
            if (m_basesimphysfps > 45f)
            {
                m_basesimphysfps = 45f;
            }

            m_basesimfps = Config.Configs["Protection"].GetFloat("BaseRateFramesPerSecond", 45f);
            if (m_basesimfps > 45f)
            {
                m_basesimfps = 45f;
            }

            if (m_basesimphysfps > m_basesimfps)
            {
                m_basesimphysfps = m_basesimfps;
            }

            m_updatetimespan  = 1 / m_basesimfps;
            m_physicstimespan = 1 / m_basesimphysfps;

            #region Startup Complete config

            EventManager.OnAddToStartupQueue     += AddToStartupQueue;
            EventManager.OnModuleFinishedStartup += FinishedStartup;
            EventManager.OnStartupComplete       += StartupComplete;

            AddToStartupQueue("Startup");

            #endregion
        }