Added IRegionCreator interface that all ApplicationPlugins that are creators of Scenes should implement and register with the ApplicationRegistry.StackModuleInterface<>(); So that other plugins can attach to their OnNewRegionCreated event.

Made some changes to IRegistryCore and RegistryCore so they support "Stacked" interfaces.
GenericGridServerConcept
MW 2009-02-26 22:51:52 +00:00
parent 7f727bd33e
commit 756c517069
6 changed files with 34 additions and 5 deletions

View File

@ -114,6 +114,7 @@ namespace OpenSim.ApplicationPlugins.CreateCommsManager
private void InitialiseCommsManager(OpenSimBase openSim) private void InitialiseCommsManager(OpenSimBase openSim)
{ {
LibraryRootFolder libraryRootFolder = new LibraryRootFolder(m_openSim.ConfigurationSettings.LibrariesXMLFile); LibraryRootFolder libraryRootFolder = new LibraryRootFolder(m_openSim.ConfigurationSettings.LibrariesXMLFile);
bool hgrid = m_openSim.ConfigSource.Source.Configs["Startup"].GetBoolean("hypergrid", false); bool hgrid = m_openSim.ConfigSource.Source.Configs["Startup"].GetBoolean("hypergrid", false);
if (hgrid) if (hgrid)

View File

@ -42,9 +42,7 @@ using OpenSim.Framework.Servers;
namespace OpenSim.ApplicationPlugins.LoadRegions namespace OpenSim.ApplicationPlugins.LoadRegions
{ {
public delegate void NewRegionCreated(IScene scene); public class LoadRegionsPlugin : IApplicationPlugin, IRegionCreator
public class LoadRegionsPlugin : IApplicationPlugin
{ {
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace OpenSim.Framework
{
public delegate void NewRegionCreated(IScene scene);
public interface IRegionCreator
{
event NewRegionCreated OnNewRegionCreated;
}
}

View File

@ -9,5 +9,8 @@ namespace OpenSim.Framework
T Get<T>(); T Get<T>();
void RegisterInterface<T>(T iface); void RegisterInterface<T>(T iface);
bool TryGet<T>(out T iface); bool TryGet<T>(out T iface);
void StackModuleInterface<M>(M mod);
T[] RequestModuleInterfaces<T>();
} }
} }

View File

@ -40,5 +40,15 @@ namespace OpenSim.Framework
return (T)m_moduleInterfaces[typeof(T)]; return (T)m_moduleInterfaces[typeof(T)];
} }
public void StackModuleInterface<M>(M mod)
{
}
public T[] RequestModuleInterfaces<T>()
{
return new T[] { default(T) };
}
} }
} }

View File

@ -212,6 +212,12 @@ namespace OpenSim
m_commsManager.GridService.RegionLoginsEnabled = true; m_commsManager.GridService.RegionLoginsEnabled = true;
} }
AddPluginCommands();
}
protected virtual void AddPluginCommands()
{
// If console exists add plugin commands. // If console exists add plugin commands.
if (m_console != null) if (m_console != null)
{ {
@ -251,7 +257,6 @@ namespace OpenSim
} }
} }
} }
} }
private void HandleCommanderCommand(string module, string[] cmd) private void HandleCommanderCommand(string module, string[] cmd)