EnviroEffectsModuleEditor.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroEffectsModule))]
  8. public class EnviroEffectsModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroEffectsModule myTarget;
  11. //Properties
  12. private SerializedProperty rain1Emission, rain2Emission, snow1Emission, snow2Emission,custom1Emission, custom2Emission;
  13. //On Enable
  14. public override void OnEnable()
  15. {
  16. if(!target)
  17. return;
  18. myTarget = (EnviroEffectsModule)target;
  19. serializedObj = new SerializedObject(myTarget);
  20. preset = serializedObj.FindProperty("preset");
  21. //Emission Rates
  22. rain1Emission = serializedObj.FindProperty("Settings.rain1Emission");
  23. rain2Emission = serializedObj.FindProperty("Settings.rain2Emission");
  24. snow1Emission = serializedObj.FindProperty("Settings.snow1Emission");
  25. snow2Emission = serializedObj.FindProperty("Settings.snow2Emission");
  26. custom1Emission = serializedObj.FindProperty("Settings.custom1Emission");
  27. custom2Emission = serializedObj.FindProperty("Settings.custom2Emission");
  28. }
  29. public override void OnInspectorGUI()
  30. {
  31. if(!target)
  32. return;
  33. base.OnInspectorGUI();
  34. GUI.backgroundColor = baseModuleColor;
  35. GUILayout.BeginVertical("",boxStyleModified);
  36. GUI.backgroundColor = Color.white;
  37. EditorGUILayout.BeginHorizontal();
  38. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Effects", headerFoldout);
  39. GUILayout.FlexibleSpace();
  40. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  41. {
  42. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Effects);
  43. DestroyImmediate(this);
  44. return;
  45. }
  46. EditorGUILayout.EndHorizontal();
  47. if(myTarget.showModuleInspector)
  48. {
  49. RenderDisableInputBox();
  50. serializedObj.UpdateIfRequiredOrScript ();
  51. EditorGUI.BeginChangeCheck();
  52. GUI.backgroundColor = categoryModuleColor;
  53. GUILayout.BeginVertical("",boxStyleModified);
  54. GUI.backgroundColor = Color.white;
  55. myTarget.showEmissionControls = GUILayout.Toggle(myTarget.showEmissionControls, "Emission Rates", headerFoldout);
  56. if(myTarget.showEmissionControls)
  57. {
  58. DisableInputStart();
  59. EditorGUILayout.PropertyField(rain1Emission);
  60. EditorGUILayout.PropertyField(rain2Emission);
  61. GUILayout.Space(5);
  62. EditorGUILayout.PropertyField(snow1Emission);
  63. EditorGUILayout.PropertyField(snow2Emission);
  64. GUILayout.Space(5);
  65. EditorGUILayout.PropertyField(custom1Emission);
  66. EditorGUILayout.PropertyField(custom2Emission);
  67. DisableInputEnd();
  68. }
  69. GUILayout.EndVertical();
  70. GUI.backgroundColor = categoryModuleColor;
  71. GUILayout.BeginVertical("",boxStyleModified);
  72. GUI.backgroundColor = Color.white;
  73. myTarget.showSetupControls = GUILayout.Toggle(myTarget.showSetupControls, "Setup", headerFoldout);
  74. if(myTarget.showSetupControls)
  75. {
  76. GUILayout.Space(10);
  77. if (!Application.isPlaying)
  78. {
  79. if (GUILayout.Button ("Add"))
  80. {
  81. myTarget.Settings.effectTypes.Add (new EnviroEffectTypes ());
  82. }
  83. }
  84. else
  85. EditorGUILayout.LabelField ("Can't add effects in runtime!");
  86. if (GUILayout.Button ("Apply Changes"))
  87. {
  88. myTarget.CreateEffects();
  89. }
  90. GUILayout.Space(10);
  91. for (int i = 0; i < myTarget.Settings.effectTypes.Count; i++)
  92. {
  93. GUILayout.BeginVertical (myTarget.Settings.effectTypes[i].name, boxStyleModified);
  94. GUILayout.Space(15);
  95. myTarget.Settings.effectTypes[i].name = EditorGUILayout.TextField ("Effect Name", myTarget.Settings.effectTypes[i].name);
  96. myTarget.Settings.effectTypes[i].prefab = (GameObject)EditorGUILayout.ObjectField ("Effect Prefab", myTarget.Settings.effectTypes[i].prefab, typeof(GameObject), true);
  97. myTarget.Settings.effectTypes [i].localPositionOffset = EditorGUILayout.Vector3Field ("Position Offset", myTarget.Settings.effectTypes [i].localPositionOffset);
  98. myTarget.Settings.effectTypes [i].localRotationOffset = EditorGUILayout.Vector3Field ("Rotation Offset", myTarget.Settings.effectTypes [i].localRotationOffset);
  99. GUILayout.Space(10);
  100. myTarget.Settings.effectTypes [i].controlType = (Enviro.EnviroEffectTypes.ControlType)EditorGUILayout.EnumPopup ("Control Type", myTarget.Settings.effectTypes [i].controlType);
  101. myTarget.Settings.effectTypes [i].maxEmission = EditorGUILayout.FloatField ("Maximum Emission", myTarget.Settings.effectTypes [i].maxEmission);
  102. if (GUILayout.Button ("Remove"))
  103. {
  104. myTarget.Settings.effectTypes.Remove (myTarget.Settings.effectTypes[i]);
  105. }
  106. GUILayout.EndVertical ();
  107. }
  108. }
  109. GUILayout.EndVertical();
  110. /// Save Load
  111. GUI.backgroundColor = categoryModuleColor;
  112. GUILayout.BeginVertical("",boxStyleModified);
  113. GUI.backgroundColor = Color.white;
  114. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  115. if(myTarget.showSaveLoad)
  116. {
  117. EditorGUILayout.PropertyField(preset);
  118. GUILayout.BeginHorizontal("",wrapStyle);
  119. if(myTarget.preset != null)
  120. {
  121. if(GUILayout.Button("Load"))
  122. {
  123. myTarget.LoadModuleValues();
  124. }
  125. if(GUILayout.Button("Save"))
  126. {
  127. myTarget.SaveModuleValues(myTarget.preset);
  128. }
  129. }
  130. if(GUILayout.Button("Save As New"))
  131. {
  132. myTarget.SaveModuleValues();
  133. }
  134. GUILayout.EndHorizontal();
  135. }
  136. GUILayout.EndVertical();
  137. /// Save Load End
  138. ApplyChanges ();
  139. }
  140. GUILayout.EndVertical();
  141. if(myTarget.showModuleInspector)
  142. GUILayout.Space(20);
  143. }
  144. }
  145. }