/// <summary> /// Called when the component is activated /// </summary> void Start() { // Get all types who extend a Tweaker Interface and add them to the storage AssemblyLoader.loadedAssemblies.TypeOperation(type => { if (typeof(IPQSModTweaker).IsAssignableFrom(type) && !type.IsAbstract) { IPQSModTweaker tweaker = (IPQSModTweaker)Activator.CreateInstance(type); PQSModTweakers.Add(tweaker); // Get the config String configNodeName = tweaker.GetConfig(); if (!ConfigCache.ContainsKey(configNodeName)) { ConfigNode config = GameDatabase.Instance.GetConfigs(configNodeName)[0].config; ConfigCache.Add(configNodeName, config); } } if (typeof(ICelestialBodyTweaker).IsAssignableFrom(type) && !type.IsAbstract) { ICelestialBodyTweaker tweaker = (ICelestialBodyTweaker)Activator.CreateInstance(type); CBTweakers.Add(tweaker); // Get the config String configNodeName = tweaker.GetConfig(); if (!ConfigCache.ContainsKey(configNodeName)) { ConfigNode config = GameDatabase.Instance.GetConfigs(configNodeName)[0].config; ConfigCache.Add(configNodeName, config); } } if (typeof(IPQSTweaker).IsAssignableFrom(type) && !type.IsAbstract) { IPQSTweaker tweaker = (IPQSTweaker)Activator.CreateInstance(type); PQSTweakers.Add(tweaker); // Get the config String configNodeName = tweaker.GetConfig(); if (!ConfigCache.ContainsKey(configNodeName)) { ConfigNode config = GameDatabase.Instance.GetConfigs(configNodeName)[0].config; ConfigCache.Add(configNodeName, config); } } }); // Get the blacklist bodyBlacklist = GameDatabase.Instance.GetConfigs("PD_BODY_BLACKLIST")[0].config; // Register the callback for manipulating the system GameEvents.onGameSceneSwitchRequested.Add(OnGameSceneSwitchRequested); GameEvents.onLevelWasLoaded.Add(OnLevelWasLoaded); }