예제 #1
0
        /// <summary>
        /// Call this from a region module to add a command to the OpenSim console.
        /// </summary>
        /// <param name="mod"></param>
        /// <param name="command"></param>
        /// <param name="shorthelp"></param>
        /// <param name="longhelp"></param>
        /// <param name="descriptivehelp"></param>
        /// <param name="callback"></param>
        public void AddCommand(
            object mod, string command, string shorthelp, string longhelp, string descriptivehelp, CommandDelegate callback)
        {
            if (MainConsole.Instance == null)
            {
                return;
            }

            string modulename = String.Empty;
            bool   shared     = false;

            if (mod != null)
            {
                if (mod is IRegionModule)
                {
                    IRegionModule module = (IRegionModule)mod;
                    modulename = module.Name;
                    shared     = module.IsSharedModule;
                }
                else if (mod is IRegionModuleBase)
                {
                    IRegionModuleBase module = (IRegionModuleBase)mod;
                    modulename = module.Name;
                    shared     = mod is ISharedRegionModule;
                }
                else
                {
                    throw new Exception("AddCommand module parameter must be IRegionModule or IRegionModuleBase");
                }
            }

            MainConsole.Instance.Commands.AddCommand(
                modulename, shared, command, shorthelp, longhelp, descriptivehelp, callback);
        }
예제 #2
0
 /// <summary>
 /// Add a module to this scene.
 /// </summary>
 /// <param name="name"></param>
 /// <param name="module"></param>
 public void AddModule(string name, IRegionModule module)
 {
     if (!Modules.ContainsKey(name))
     {
         Modules.Add(name, module);
     }
 }
예제 #3
0
 /// <summary>
 ///  Loads/initialises a Module instance that can be used by multiple Regions
 /// </summary>
 /// <param name="module"></param>
 public void LoadSharedModule(IRegionModule module)
 {
     if (!m_loadedSharedModules.ContainsKey(module.Name))
     {
         m_loadedSharedModules.Add(module.Name, module);
     }
 }
예제 #4
0
 public void LoadRegionModule(string dllName, string moduleName, Scene scene)
 {
     IRegionModule module = LoadModule(dllName, moduleName);
     if (module != null)
     {
         InitializeModule(module, scene);
     }
 }
예제 #5
0
        /// <summary>
        ///  Loads/initialises a Module instance that can be used by multiple Regions
        /// </summary>
        /// <param name="dllName"></param>
        /// <param name="moduleName"></param>
        public void LoadSharedModule(string dllName, string moduleName)
        {
            IRegionModule module = LoadModule(dllName, moduleName);

            if (module != null)
            {
                LoadSharedModule(module);
            }
        }
예제 #6
0
 public void LoadDefaultSharedModule(IRegionModule module)
 {
     if (m_loadedSharedModules.ContainsKey(module.Name))
     {
         m_log.ErrorFormat("[MODULES]: Module name \"{0}\" already exists in module list. Module not added!", module.Name);
     }
     else
     {
         m_loadedSharedModules.Add(module.Name, module);
     }
 }
 public void LoadDefaultSharedModule(IRegionModule module)
 {
     if (m_loadedSharedModules.ContainsKey(module.Name))
     {
         m_log.ErrorFormat("[MODULES]: Module name \"{0}\" already exists in module list. Module not added!", module.Name);
     }
     else
     {
         m_loadedSharedModules.Add(module.Name, module);
     }
 }
예제 #8
0
        /// <summary>
        /// Setup modules for a scene.
        /// </summary>
        /// <param name="scene"></param>
        /// <param name="config"></param>
        /// <param name="modules"></param>
        public static void SetupSceneModules(Scene scene, IConfigSource config, params object[] modules)
        {
            List <IRegionModuleBase> newModules = new List <IRegionModuleBase>();

            foreach (object module in modules)
            {
                if (module is IRegionModule)
                {
                    IRegionModule m = (IRegionModule)module;
                    m.Initialise(scene, config);
                    scene.AddModule(m.Name, m);
                    m.PostInitialise();
                }
                else if (module is IRegionModuleBase)
                {
                    // for the new system, everything has to be initialised first,
                    // shared modules have to be post-initialised, then all get an AddRegion with the scene
                    IRegionModuleBase m = (IRegionModuleBase)module;
                    m.Initialise(config);
                    newModules.Add(m);
                }
            }

            foreach (IRegionModuleBase module in newModules)
            {
                if (module is ISharedRegionModule)
                {
                    ((ISharedRegionModule)module).PostInitialise();
                }
            }

            foreach (IRegionModuleBase module in newModules)
            {
                module.AddRegion(scene);
                scene.AddRegionModule(module.Name, module);
            }

            // RegionLoaded is fired after all modules have been appropriately added to all scenes
            foreach (IRegionModuleBase module in newModules)
            {
                module.RegionLoaded(scene);
            }

            scene.SetModuleInterfaces();
        }
예제 #9
0
        /// <summary>
        /// Call this from a region module to add a command to the OpenSim console.
        /// </summary>
        /// <param name="mod"></param>
        /// <param name="command"></param>
        /// <param name="shorthelp"></param>
        /// <param name="longhelp"></param>
        /// <param name="descriptivehelp"></param>
        /// <param name="callback"></param>
        public void AddCommand(object mod, string command, string shorthelp, string longhelp, string descriptivehelp, CommandDelegate callback)
        {
            string moduleName = "";

            if (mod != null)
            {
                if (mod is IRegionModule)
                {
                    IRegionModule module = (IRegionModule)mod;
                    moduleName = module.Name;
                }
                else if (mod is IRegionModuleBase)
                {
                    IRegionModuleBase module = (IRegionModuleBase)mod;
                    moduleName = module.Name;
                }
                else
                {
                    throw new Exception("AddCommand module parameter must be IRegionModule or IRegionModuleBase");
                }
            }

            AddCommand(moduleName, mod, command, shorthelp, longhelp, descriptivehelp, callback);
        }
예제 #10
0
 public void InitializeModule(IRegionModule module, Scene scene)
 {
     module.Initialise(scene, m_config);
     scene.AddModule(module.Name, module);
     m_loadedModules.Add(module);
 }
예제 #11
0
        public void UnloadModule(IRegionModule rm)
        {
            rm.Close();

            m_loadedModules.Remove(rm);
        }
 public void InitializeModule(IRegionModule module, Scene scene)
 {
     module.Initialise(scene, m_config);
     scene.AddModule(module.Name, module);
     m_loadedModules.Add(module);
 }
        public void UnloadModule(IRegionModule rm)
        {
            rm.Close();

            m_loadedModules.Remove(rm);
        }
 /// <summary>
 ///  Loads/initialises a Module instance that can be used by multiple Regions
 /// </summary>
 /// <param name="module"></param>
 public void LoadSharedModule(IRegionModule module)
 {
     if (!m_loadedSharedModules.ContainsKey(module.Name))
     {
         m_loadedSharedModules.Add(module.Name, module);
     }
 }