ParticleTester.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. using System;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class ParticleTester : MonoBehaviour
  5. {
  6. private void Awake()
  7. {
  8. this.expBool = (this.flrBool = false);
  9. this.systemType = ParticleTester.SystemType.None;
  10. this.savedSystemType = ParticleTester.SystemType.None;
  11. this.particleSystems = Resources.LoadAll("Explosions", typeof(GameObject));
  12. this.loadFlareSystems = Resources.LoadAll("Flares", typeof(GameObject));
  13. this.loadDirectionalSystems = Resources.LoadAll("Directional", typeof(GameObject));
  14. this.flareSystems = new List<ParticleTester.FlareSystem>();
  15. this.directionalSystems = new List<ParticleTester.FlareSystem>();
  16. foreach (UnityEngine.Object @object in this.loadFlareSystems)
  17. {
  18. ParticleTester.FlareSystem flareSystem = new ParticleTester.FlareSystem();
  19. flareSystem.name = @object.name;
  20. flareSystem.particleObject = (UnityEngine.Object.Instantiate(@object, Vector3.zero, Quaternion.identity) as GameObject);
  21. flareSystem.particleSystems = flareSystem.particleObject.GetComponentsInChildren<ParticleSystem>();
  22. flareSystem.particleObject.SetActive(false);
  23. flareSystem.toggleFlag = false;
  24. flareSystem.particleObject.transform.parent = base.transform;
  25. this.flareSystems.Add(flareSystem);
  26. }
  27. foreach (UnityEngine.Object object2 in this.loadDirectionalSystems)
  28. {
  29. ParticleTester.FlareSystem flareSystem2 = new ParticleTester.FlareSystem();
  30. flareSystem2.name = object2.name;
  31. flareSystem2.particleObject = (UnityEngine.Object.Instantiate(object2, Vector3.zero, Quaternion.identity) as GameObject);
  32. flareSystem2.particleSystems = flareSystem2.particleObject.GetComponentsInChildren<ParticleSystem>();
  33. flareSystem2.particleObject.SetActive(false);
  34. flareSystem2.toggleFlag = false;
  35. flareSystem2.particleObject.transform.parent = base.transform;
  36. this.directionalSystems.Add(flareSystem2);
  37. }
  38. }
  39. private void OnGUI()
  40. {
  41. GUILayout.BeginHorizontal(new GUILayoutOption[0]);
  42. if (GUILayout.Toggle(this.expBool, "Explosions", new GUILayoutOption[0]))
  43. {
  44. this.expBool = this.SetBool();
  45. this.systemType = ParticleTester.SystemType.Explosions;
  46. }
  47. if (GUILayout.Toggle(this.flrBool, "Flares", new GUILayoutOption[0]))
  48. {
  49. this.flrBool = this.SetBool();
  50. this.systemType = ParticleTester.SystemType.Flares;
  51. }
  52. if (GUILayout.Toggle(this.flmBool, "Flames", new GUILayoutOption[0]))
  53. {
  54. this.flmBool = this.SetBool();
  55. this.systemType = ParticleTester.SystemType.Flames;
  56. }
  57. GUILayout.EndHorizontal();
  58. GUILayout.Space(20f);
  59. this.scrollPosition = GUILayout.BeginScrollView(this.scrollPosition, new GUILayoutOption[]
  60. {
  61. GUILayout.Width(250f),
  62. GUILayout.Height(550f)
  63. });
  64. ParticleTester.SystemType systemType = this.systemType;
  65. if (systemType != ParticleTester.SystemType.Explosions)
  66. {
  67. if (systemType != ParticleTester.SystemType.Flares)
  68. {
  69. if (systemType == ParticleTester.SystemType.Flames)
  70. {
  71. foreach (ParticleTester.FlareSystem flareSystem in this.directionalSystems)
  72. {
  73. flareSystem.toggleFlag = GUILayout.Toggle(flareSystem.toggleFlag, flareSystem.name, new GUILayoutOption[0]);
  74. if (flareSystem.toggleFlag != flareSystem.savedToggleFlag)
  75. {
  76. flareSystem.particleObject.SetActive(flareSystem.toggleFlag);
  77. if (flareSystem.toggleFlag)
  78. {
  79. foreach (ParticleSystem particleSystem in flareSystem.particleSystems)
  80. {
  81. particleSystem.Clear();
  82. particleSystem.Play();
  83. }
  84. flareSystem.toggleFlag = this.SetDirBool();
  85. }
  86. flareSystem.savedToggleFlag = flareSystem.toggleFlag;
  87. }
  88. }
  89. }
  90. }
  91. else
  92. {
  93. foreach (ParticleTester.FlareSystem flareSystem2 in this.flareSystems)
  94. {
  95. flareSystem2.toggleFlag = GUILayout.Toggle(flareSystem2.toggleFlag, flareSystem2.name, new GUILayoutOption[0]);
  96. if (flareSystem2.toggleFlag != flareSystem2.savedToggleFlag)
  97. {
  98. flareSystem2.particleObject.SetActive(flareSystem2.toggleFlag);
  99. if (flareSystem2.toggleFlag)
  100. {
  101. foreach (ParticleSystem particleSystem2 in flareSystem2.particleSystems)
  102. {
  103. particleSystem2.Clear();
  104. particleSystem2.Play();
  105. }
  106. flareSystem2.toggleFlag = this.SetFlareBool();
  107. }
  108. flareSystem2.savedToggleFlag = flareSystem2.toggleFlag;
  109. }
  110. }
  111. }
  112. }
  113. else
  114. {
  115. foreach (GameObject gameObject in this.particleSystems)
  116. {
  117. if (GUILayout.Button(gameObject.name, new GUILayoutOption[0]))
  118. {
  119. GameObject obj = UnityEngine.Object.Instantiate<GameObject>(gameObject, Vector3.zero, Quaternion.identity);
  120. UnityEngine.Object.Destroy(obj, 10f);
  121. }
  122. }
  123. }
  124. GUILayout.EndScrollView();
  125. }
  126. private void Update()
  127. {
  128. if (this.systemType != this.savedSystemType)
  129. {
  130. this.SetNoFlares();
  131. this.savedSystemType = this.systemType;
  132. }
  133. }
  134. private bool SetBool()
  135. {
  136. this.expBool = (this.flrBool = (this.flmBool = false));
  137. return true;
  138. }
  139. private bool SetFlareBool()
  140. {
  141. foreach (ParticleTester.FlareSystem flareSystem in this.flareSystems)
  142. {
  143. flareSystem.toggleFlag = false;
  144. }
  145. return true;
  146. }
  147. private bool SetDirBool()
  148. {
  149. foreach (ParticleTester.FlareSystem flareSystem in this.directionalSystems)
  150. {
  151. flareSystem.toggleFlag = false;
  152. }
  153. return true;
  154. }
  155. private void SetNoFlares()
  156. {
  157. foreach (ParticleTester.FlareSystem flareSystem in this.flareSystems)
  158. {
  159. flareSystem.toggleFlag = false;
  160. flareSystem.savedToggleFlag = false;
  161. flareSystem.particleObject.SetActive(false);
  162. }
  163. foreach (ParticleTester.FlareSystem flareSystem2 in this.directionalSystems)
  164. {
  165. flareSystem2.toggleFlag = false;
  166. flareSystem2.savedToggleFlag = false;
  167. flareSystem2.particleObject.SetActive(false);
  168. }
  169. }
  170. private ParticleTester.SystemType systemType;
  171. public UnityEngine.Object[] particleSystems;
  172. public UnityEngine.Object[] loadFlareSystems;
  173. public UnityEngine.Object[] loadDirectionalSystems;
  174. private List<ParticleTester.FlareSystem> flareSystems;
  175. private List<ParticleTester.FlareSystem> directionalSystems;
  176. private bool expBool;
  177. private bool flrBool;
  178. private bool flmBool;
  179. private Vector2 scrollPosition;
  180. private ParticleTester.SystemType savedSystemType;
  181. private enum SystemType
  182. {
  183. None,
  184. Explosions,
  185. Flares,
  186. Flames
  187. }
  188. private class FlareSystem
  189. {
  190. public string name;
  191. public GameObject particleObject;
  192. public ParticleSystem[] particleSystems;
  193. public bool toggleFlag;
  194. public bool savedToggleFlag;
  195. }
  196. }