public void AddRegion(Scene scene) { if (!m_enableWindlight) return; m_scene = scene; m_scene.RegisterModuleInterface<IWindLightSettingsModule>(this); m_scene.StackModuleInterface<IAuroraBackupModule>(this); IRegionInfoConnector RegionInfoConnector = Aurora.DataManager.DataManager.RequestPlugin<IRegionInfoConnector>(); if (RegionInfoConnector != null) m_WindlightSettings = RegionInfoConnector.LoadRegionWindlightSettings(m_scene.RegionInfo.RegionID); scene.EventManager.OnClientClosed += EventManager_OnClientClosed; scene.EventManager.OnRegisterCaps += OnRegisterCaps; scene.EventManager.OnMakeRootAgent += OnMakeRootAgent; scene.EventManager.OnSignificantClientMovement += OnSignificantClientMovement; scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringNewParcel; }
public InternalSceneBackup(Scene scene) { m_scene = scene; m_scene.StackModuleInterface<IAuroraBackupModule>(this); m_scene.RegisterModuleInterface<IBackupModule>(this); m_scene.EventManager.OnFrame += UpdateStorageBackup; }
public void AddRegion(Scene scene) { if (m_ScriptConfig == null) return; m_ScriptFailCount = 0; m_ScriptErrorMessage = String.Empty; if (m_ScriptConfig == null) { // m_log.ErrorFormat("[XEngine] No script configuration found. Scripts disabled"); return; } m_Enabled = m_ScriptConfig.GetBoolean("Enabled", true); if (!m_Enabled) return; AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; m_Scene = scene; m_log.InfoFormat("[XEngine]: Initializing scripts in region {0}", m_Scene.RegionInfo.RegionName); m_MinThreads = m_ScriptConfig.GetInt("MinThreads", 2); m_MaxThreads = m_ScriptConfig.GetInt("MaxThreads", 100); m_IdleTimeout = m_ScriptConfig.GetInt("IdleTimeout", 60); string priority = m_ScriptConfig.GetString("Priority", "BelowNormal"); m_StartDelay = m_ScriptConfig.GetInt("StartDelay", 15000); m_MaxScriptQueue = m_ScriptConfig.GetInt("MaxScriptEventQueue",300); m_StackSize = m_ScriptConfig.GetInt("ThreadStackSize", 262144); m_SleepTime = m_ScriptConfig.GetInt("MaintenanceInterval", 10) * 1000; m_AppDomainLoading = m_ScriptConfig.GetBoolean("AppDomainLoading", true); m_EventLimit = m_ScriptConfig.GetInt("EventLimit", 30); m_KillTimedOutScripts = m_ScriptConfig.GetBoolean("KillTimedOutScripts", false); m_SaveTime = m_ScriptConfig.GetInt("SaveInterval", 120) * 1000; m_ScriptEnginesPath = m_ScriptConfig.GetString("ScriptEnginesPath", "ScriptEngines"); m_Prio = ThreadPriority.BelowNormal; switch (priority) { case "Lowest": m_Prio = ThreadPriority.Lowest; break; case "BelowNormal": m_Prio = ThreadPriority.BelowNormal; break; case "Normal": m_Prio = ThreadPriority.Normal; break; case "AboveNormal": m_Prio = ThreadPriority.AboveNormal; break; case "Highest": m_Prio = ThreadPriority.Highest; break; default: m_log.ErrorFormat("[XEngine] Invalid thread priority: '{0}'. Assuming BelowNormal", priority); break; } lock (m_ScriptEngines) { m_ScriptEngines.Add(this); } // Needs to be here so we can queue the scripts that need starting // m_Scene.EventManager.OnRezScript += OnRezScript; // Complete basic setup of the thread pool // SetupEngine(m_MinThreads, m_MaxThreads, m_IdleTimeout, m_Prio, m_MaxScriptQueue, m_StackSize); m_Scene.StackModuleInterface<IScriptModule>(this); m_XmlRpcRouter = m_Scene.RequestModuleInterface<IXmlRpcRouter>(); if (m_XmlRpcRouter != null) { OnScriptRemoved += m_XmlRpcRouter.ScriptRemoved; OnObjectRemoved += m_XmlRpcRouter.ObjectRemoved; } MainConsole.Instance.Commands.AddCommand( "Scripts", false, "xengine status", "xengine status", "Show status information", "Show status information on the script engine.", HandleShowStatus); MainConsole.Instance.Commands.AddCommand( "Scripts", false, "scripts show", "scripts show [<script-item-uuid>]", "Show script information", "Show information on all scripts known to the script engine." + "If a <script-item-uuid> is given then only information on that script will be shown.", HandleShowScripts); MainConsole.Instance.Commands.AddCommand( "Scripts", false, "show scripts", "show scripts [<script-item-uuid>]", "Show script information", "Synonym for scripts show command", HandleShowScripts); MainConsole.Instance.Commands.AddCommand( "Scripts", false, "scripts suspend", "scripts suspend [<script-item-uuid>]", "Suspends all running scripts", "Suspends all currently running scripts. This only suspends event delivery, it will not suspend a" + " script that is currently processing an event.\n" + "Suspended scripts will continue to accumulate events but won't process them.\n" + "If a <script-item-uuid> is given then only that script will be suspended. Otherwise, all suitable scripts are suspended.", (module, cmdparams) => HandleScriptsAction(cmdparams, HandleSuspendScript)); MainConsole.Instance.Commands.AddCommand( "Scripts", false, "scripts resume", "scripts resume [<script-item-uuid>]", "Resumes all suspended scripts", "Resumes all currently suspended scripts.\n" + "Resumed scripts will process all events accumulated whilst suspended." + "If a <script-item-uuid> is given then only that script will be resumed. Otherwise, all suitable scripts are resumed.", (module, cmdparams) => HandleScriptsAction(cmdparams, HandleResumeScript)); MainConsole.Instance.Commands.AddCommand( "Scripts", false, "scripts stop", "scripts stop [<script-item-uuid>]", "Stops all running scripts", "Stops all running scripts." + "If a <script-item-uuid> is given then only that script will be stopped. Otherwise, all suitable scripts are stopped.", (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStopScript)); MainConsole.Instance.Commands.AddCommand( "Scripts", false, "scripts start", "scripts start [<script-item-uuid>]", "Starts all stopped scripts", "Starts all stopped scripts." + "If a <script-item-uuid> is given then only that script will be started. Otherwise, all suitable scripts are started.", (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStartScript)); // MainConsole.Instance.Commands.AddCommand( // "Debug", false, "debug xengine", "debug xengine [<level>]", // "Turn on detailed xengine debugging.", // "If level <= 0, then no extra logging is done.\n" // + "If level >= 1, then we log every time that a script is started.", // HandleDebugLevelCommand); }
public void AddRegion(Scene scene) { if (m_ScriptConfig == null) return; m_ScriptFailCount = 0; m_ScriptErrorMessage = String.Empty; if (m_ScriptConfig == null) { // m_log.ErrorFormat("[XEngine] No script configuration found. Scripts disabled"); return; } m_Enabled = m_ScriptConfig.GetBoolean("Enabled", true); if (!m_Enabled) return; AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve; m_log.InfoFormat("[XEngine] Initializing scripts in region {0}", scene.RegionInfo.RegionName); m_Scene = scene; m_MinThreads = m_ScriptConfig.GetInt("MinThreads", 2); m_MaxThreads = m_ScriptConfig.GetInt("MaxThreads", 100); m_IdleTimeout = m_ScriptConfig.GetInt("IdleTimeout", 60); string priority = m_ScriptConfig.GetString("Priority", "BelowNormal"); m_MaxScriptQueue = m_ScriptConfig.GetInt("MaxScriptEventQueue",300); m_StackSize = m_ScriptConfig.GetInt("ThreadStackSize", 262144); m_SleepTime = m_ScriptConfig.GetInt("MaintenanceInterval", 10) * 1000; m_EventLimit = m_ScriptConfig.GetInt("EventLimit", 30); m_KillTimedOutScripts = m_ScriptConfig.GetBoolean("KillTimedOutScripts", false); m_SaveTime = m_ScriptConfig.GetInt("SaveInterval", 120) * 1000; m_Prio = ThreadPriority.BelowNormal; switch (priority) { case "Lowest": m_Prio = ThreadPriority.Lowest; break; case "BelowNormal": m_Prio = ThreadPriority.BelowNormal; break; case "Normal": m_Prio = ThreadPriority.Normal; break; case "AboveNormal": m_Prio = ThreadPriority.AboveNormal; break; case "Highest": m_Prio = ThreadPriority.Highest; break; default: m_log.ErrorFormat("[XEngine] Invalid thread priority: '{0}'. Assuming BelowNormal", priority); break; } lock (m_ScriptEngines) { m_ScriptEngines.Add(this); } // Needs to be here so we can queue the scripts that need starting // m_Scene.EventManager.OnRezScript += OnRezScript; // Complete basic setup of the thread pool // SetupEngine(m_MinThreads, m_MaxThreads, m_IdleTimeout, m_Prio, m_MaxScriptQueue, m_StackSize); m_Scene.StackModuleInterface<IScriptModule>(this); m_XmlRpcRouter = m_Scene.RequestModuleInterface<IXmlRpcRouter>(); if (m_XmlRpcRouter != null) { OnScriptRemoved += m_XmlRpcRouter.ScriptRemoved; OnObjectRemoved += m_XmlRpcRouter.ObjectRemoved; } }
public void AddRegion(Scene scene) { if (!m_enabled) return; //Register the console commands if (FirstStartup) { scene.AddCommand(this, "ADNE", "ADNE", "Subcommands for Aurora DotNet Engine", AuroraDotNetConsoleCommands); scene.AddCommand(this, "help ADNE", "help ADNE", "Brings up the help for ADNE", AuroraDotNetConsoleHelp); //Fire this once to make sure that the APIs are found later... GetAPIs(); // Create all objects we'll be using ScriptProtection = new ScriptProtectionModule(Config); EventManager = new EventManager(this); Compiler = new Compiler(this); AppDomainManager = new AppDomainManager(this); ScriptErrorReporter = new ScriptErrorReporter(Config); AssemblyResolver = new AssemblyResolver(ScriptEnginesPath); } FirstStartup = false; m_Scenes.Add(scene); scene.StackModuleInterface<IScriptModule>(this); }
public void Initialise(Scene scene, IConfigSource source, ISimulationBase openSimBase) { scene.StackModuleInterface<IAuroraBackupModule>(this); }
public void AddRegion(Scene Sceneworld) { m_log.Info("[" + ScriptEngineName + "]: ScriptEngine initializing"); m_Scene = Sceneworld; // Make sure we have config if (ConfigSource.Configs[ScriptEngineName] == null) ConfigSource.AddConfig(ScriptEngineName); ScriptConfigSource = ConfigSource.Configs[ScriptEngineName]; m_enabled = ScriptConfigSource.GetBoolean("Enabled", true); if (!m_enabled) return; // Create all objects we'll be using m_EventQueueManager = new EventQueueManager(this); m_EventManager = new EventManager(this, true); // We need to start it m_ScriptManager = new ScriptManager(this); m_ScriptManager.Setup(); m_AppDomainManager = new AppDomainManager(this); if (m_MaintenanceThread == null) m_MaintenanceThread = new MaintenanceThread(); m_log.Info("[" + ScriptEngineName + "]: Reading configuration "+ "from config section \"" + ScriptEngineName + "\""); ReadConfig(); m_Scene.StackModuleInterface<IScriptModule>(this); }
public void AddRegion(Scene scene) { if (ConfigSource.Configs[ScriptEngineName] == null) ConfigSource.AddConfig(ScriptEngineName); _scriptConfigSource = ConfigSource.Configs[ScriptEngineName]; _enabled = _scriptConfigSource.GetBoolean("Enabled", true); if (!_enabled) return; IWorldComm comms = scene.RequestModuleInterface<IWorldComm>(); if (comms == null) { _log.Error("[Phlox]: Script engine can not start, no worldcomm module found"); return; } comms.SetWorkArrivedDelegate(this.WorkArrived); _scene = scene; _exeScheduler = new ExecutionScheduler(this.WorkArrived, this, comms); _stateManager = new StateManager(_exeScheduler); _exeScheduler.StateManager = _stateManager; _scriptLoader = new ScriptLoader(scene.CommsManager.AssetCache, _exeScheduler, this.WorkArrived, this); _scriptLoader.StateManager = _stateManager; _masterScheduler = new MasterScheduler(_exeScheduler, _scriptLoader, _stateManager); _stateManager.MMasterScheduler = _masterScheduler; _eventRouter = new EventRouter(this); _scene.EventManager.OnRezScript += new EventManager.NewRezScript(EventManager_OnRezScript); _scene.EventManager.OnRemoveScript += new EventManager.RemoveScript(EventManager_OnRemoveScript); _scene.EventManager.OnReloadScript += new EventManager.ReloadScript(EventManager_OnReloadScript); _scene.EventManager.OnScriptReset += new EventManager.ScriptResetDelegate(EventManager_OnScriptReset); _scene.EventManager.OnGetScriptRunning += new EventManager.GetScriptRunning(EventManager_OnGetScriptRunning); _scene.EventManager.OnStartScript += new EventManager.StartScript(EventManager_OnStartScript); _scene.EventManager.OnStopScript += new EventManager.StopScript(EventManager_OnStopScript); _scene.EventManager.OnCompileScript += new EventManager.CompileScript(EventManager_OnCompileScript); _scene.EventManager.OnGroupCrossedToNewParcel += new EventManager.GroupCrossedToNewParcelDelegate(EventManager_OnGroupCrossedToNewParcel); _scene.EventManager.OnSOGOwnerGroupChanged += new EventManager.SOGOwnerGroupChangedDelegate(EventManager_OnSOGOwnerGroupChanged); _scene.EventManager.OnCrossedAvatarReady += OnCrossedAvatarReady; _scene.EventManager.OnGroupBeginInTransit += EventManager_OnGroupBeginInTransit; _scene.EventManager.OnGroupEndInTransit += EventManager_OnGroupEndInTransit; _masterScheduler.Start(); _scene.StackModuleInterface<IScriptModule>(this); Phlox.Util.Preloader.Preload(); }
public InternalSceneBackup (Scene scene) { m_scene = scene; m_scene.StackModuleInterface<IAuroraBackupModule> (this); m_scene.RegisterModuleInterface<IBackupModule> (this); if (MainConsole.Instance != null) { MainConsole.Instance.Commands.AddCommand ("delete object owner", "delete object owner <UUID>", "Delete object by owner", HandleDeleteObject); MainConsole.Instance.Commands.AddCommand ("delete object creator", "delete object creator <UUID>", "Delete object by creator", HandleDeleteObject); MainConsole.Instance.Commands.AddCommand ("delete object uuid", "delete object uuid <UUID>", "Delete object by uuid", HandleDeleteObject); MainConsole.Instance.Commands.AddCommand ("delete object name", "delete object name <name>", "Delete object by name", HandleDeleteObject); } }
public void AddRegion(Scene scene) { m_scene = scene; m_scene.StackModuleInterface<IScriptModule>(this); }