public bool TryGetModule(Type type, out EngineModule result) { if (modulesByType == null || !modulesByType.TryGetValue(type, out var list)) { result = default; return(false); } result = list[0]; return(true); }
public void AddModule(EngineModule module) { modules.Add(module); foreach (var type in ReflectionUtils.EnumerateBaseTypes(module.GetType(), true, typeof(EngineModule))) { if (!modulesByType.TryGetValue(type, out var list)) { modulesByType[type] = list = new List <EngineModule>(); } list.Add(module); } if (modulesReady) { RefreshModules(); } }