using System; using System.Collections.Generic; using System.Text; using UnityEngine; namespace IllusionInjector { public class PluginComponent : MonoBehaviour { private CompositePlugin plugins; private bool freshlyLoaded = false; private bool quitting = false; public static PluginComponent Create() { return new GameObject("IPA_PluginManager").AddComponent(); } void Awake() { DontDestroyOnLoad(gameObject); plugins = new CompositePlugin(PluginManager.Plugins); plugins.OnApplicationStart(); } void Start() { OnLevelWasLoaded(Application.loadedLevel); } void Update() { if (freshlyLoaded) { freshlyLoaded = false; plugins.OnLevelWasInitialized(Application.loadedLevel); } plugins.OnUpdate(); } void LateUpdate() { plugins.OnLateUpdate(); } void FixedUpdate() { plugins.OnFixedUpdate(); } void OnDestroy() { if (!quitting) { Create(); } } void OnApplicationQuit() { plugins.OnApplicationQuit(); quitting = true; } void OnLevelWasLoaded(int level) { plugins.OnLevelWasLoaded(level); freshlyLoaded = true; } } }