diff options
Added IRegistryCore and RegistryCore to OpenSim.Framework.
Added a ApplicationRegistry to OpenSimBase.
Changed LoadRegionsPlugin so it registers itself to that application registry.
Added a event to LoadRegionsPlugin, that is triggered when it creates a new scene ,although maybe this event should actually be in opensimBase incase other plugins are creating regions (like the RemoteAdminPlugin).
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/RegistryCore.cs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/OpenSim/Framework/RegistryCore.cs b/OpenSim/Framework/RegistryCore.cs new file mode 100644 index 0000000..06732f5 --- /dev/null +++ b/OpenSim/Framework/RegistryCore.cs | |||
@@ -0,0 +1,44 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | |||
5 | namespace OpenSim.Framework | ||
6 | { | ||
7 | public class RegistryCore | ||
8 | { | ||
9 | protected Dictionary<Type, object> m_moduleInterfaces = new Dictionary<Type, object>(); | ||
10 | |||
11 | /// <summary> | ||
12 | /// Register an Module interface. | ||
13 | /// </summary> | ||
14 | /// <typeparam name="T"></typeparam> | ||
15 | /// <param name="iface"></param> | ||
16 | public void RegisterInterface<T>(T iface) | ||
17 | { | ||
18 | lock (m_moduleInterfaces) | ||
19 | { | ||
20 | if (!m_moduleInterfaces.ContainsKey(typeof(T))) | ||
21 | { | ||
22 | m_moduleInterfaces.Add(typeof(T), iface); | ||
23 | } | ||
24 | } | ||
25 | } | ||
26 | |||
27 | public bool TryGet<T>(out T iface) | ||
28 | { | ||
29 | if (m_moduleInterfaces.ContainsKey(typeof(T))) | ||
30 | { | ||
31 | iface = (T)m_moduleInterfaces[typeof(T)]; | ||
32 | return true; | ||
33 | } | ||
34 | iface = default(T); | ||
35 | return false; | ||
36 | } | ||
37 | |||
38 | public T Get<T>() | ||
39 | { | ||
40 | return (T)m_moduleInterfaces[typeof(T)]; | ||
41 | } | ||
42 | |||
43 | } | ||
44 | } | ||