You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.5 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using UnityEngine;
  5. using UnityEngine.SceneManagement;
  6. namespace IllusionInjector
  7. {
  8. public class PluginComponent : MonoBehaviour
  9. {
  10. private CompositeBSPlugin bsPlugins;
  11. private CompositeIPAPlugin ipaPlugins;
  12. private bool quitting = false;
  13. public static PluginComponent Create()
  14. {
  15. return new GameObject("IPA_PluginManager").AddComponent<PluginComponent>();
  16. }
  17. void Awake()
  18. {
  19. DontDestroyOnLoad(gameObject);
  20. bsPlugins = new CompositeBSPlugin(PluginManager.BSPlugins);
  21. ipaPlugins = new CompositeIPAPlugin(PluginManager.IPAPlugins);
  22. bsPlugins.OnApplicationStart();
  23. ipaPlugins.OnApplicationStart();
  24. SceneManager.activeSceneChanged += OnActiveSceneChanged;
  25. SceneManager.sceneLoaded += OnSceneLoaded;
  26. SceneManager.sceneUnloaded += OnSceneUnloaded;
  27. }
  28. void Update()
  29. {
  30. bsPlugins.OnUpdate();
  31. ipaPlugins.OnUpdate();
  32. }
  33. void LateUpdate()
  34. {
  35. bsPlugins.OnLateUpdate();
  36. ipaPlugins.OnLateUpdate();
  37. }
  38. void FixedUpdate()
  39. {
  40. bsPlugins.OnFixedUpdate();
  41. ipaPlugins.OnFixedUpdate();
  42. }
  43. void OnDestroy()
  44. {
  45. if (!quitting)
  46. {
  47. Create();
  48. }
  49. }
  50. void OnApplicationQuit()
  51. {
  52. SceneManager.activeSceneChanged += OnActiveSceneChanged;
  53. SceneManager.sceneLoaded += OnSceneLoaded;
  54. SceneManager.sceneUnloaded += OnSceneUnloaded;
  55. bsPlugins.OnApplicationQuit();
  56. ipaPlugins.OnApplicationQuit();
  57. quitting = true;
  58. }
  59. void OnLevelWasLoaded(int level)
  60. {
  61. ipaPlugins.OnLevelWasLoaded(level);
  62. }
  63. public void OnLevelWasInitialized(int level)
  64. {
  65. ipaPlugins.OnLevelWasInitialized(level);
  66. }
  67. void OnSceneLoaded(Scene scene, LoadSceneMode sceneMode)
  68. {
  69. bsPlugins.OnSceneLoaded(scene, sceneMode);
  70. }
  71. private void OnSceneUnloaded(Scene scene) {
  72. bsPlugins.OnSceneUnloaded(scene);
  73. }
  74. private void OnActiveSceneChanged(Scene prevScene, Scene nextScene) {
  75. bsPlugins.OnActiveSceneChanged(prevScene, nextScene);
  76. }
  77. }
  78. }