EnviroQualityModuleEditor.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroQualityModule))]
  8. public class EnviroQualityModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroQualityModule myTarget;
  11. //Properties Cirrus
  12. // private SerializedProperty useCirrusClouds;
  13. //On Enable
  14. public override void OnEnable()
  15. {
  16. base.OnEnable();
  17. if(!target)
  18. return;
  19. myTarget = (EnviroQualityModule)target;
  20. serializedObj = new SerializedObject(myTarget);
  21. preset = serializedObj.FindProperty("preset");
  22. //useCirrusClouds = serializedObj.FindProperty("settings.useCirrusClouds");
  23. }
  24. public override void OnInspectorGUI()
  25. {
  26. if(!target)
  27. return;
  28. base.OnInspectorGUI();
  29. GUI.backgroundColor = baseModuleColor;
  30. GUILayout.BeginVertical("",boxStyleModified);
  31. GUI.backgroundColor = Color.white;
  32. EditorGUILayout.BeginHorizontal();
  33. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Quality", headerFoldout);
  34. GUILayout.FlexibleSpace();
  35. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  36. {
  37. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Quality);
  38. DestroyImmediate(this);
  39. return;
  40. }
  41. EditorGUILayout.EndHorizontal();
  42. if(myTarget.showModuleInspector)
  43. {
  44. serializedObj.UpdateIfRequiredOrScript ();
  45. EditorGUI.BeginChangeCheck();
  46. GUI.backgroundColor = categoryModuleColor;
  47. GUILayout.BeginVertical("",boxStyleModified);
  48. GUI.backgroundColor = Color.white;
  49. Object selectedObject = null;
  50. if(GUILayout.Button("Add"))
  51. {
  52. int controlID = EditorGUIUtility.GetControlID (FocusType.Passive);
  53. EditorGUIUtility.ShowObjectPicker<EnviroQuality>(null,false,"",controlID);
  54. }
  55. string commandName = Event.current.commandName;
  56. if (commandName == "ObjectSelectorClosed")
  57. {
  58. selectedObject = EditorGUIUtility.GetObjectPickerObject ();
  59. bool add = true;
  60. for (int i = 0; i < myTarget.Settings.Qualities.Count; i++)
  61. {
  62. if((EnviroQuality)selectedObject == myTarget.Settings.Qualities[i])
  63. add = false;
  64. }
  65. if(add)
  66. myTarget.Settings.Qualities.Add((EnviroQuality)selectedObject);
  67. }
  68. if(GUILayout.Button("Create New"))
  69. {
  70. myTarget.CreateNewQuality();
  71. }
  72. myTarget.CleanupQualityList();
  73. for (int i = 0; i < myTarget.Settings.Qualities.Count; i++)
  74. {
  75. EnviroQuality q = myTarget.Settings.Qualities[i];
  76. if(q == myTarget.Settings.defaultQuality)
  77. GUI.backgroundColor = new Color(0.0f,0.5f,0.0f,1f);
  78. GUILayout.BeginVertical("",boxStyleModified);
  79. GUI.backgroundColor = Color.white;
  80. EditorGUILayout.BeginHorizontal();
  81. q.showEditor = GUILayout.Toggle(q.showEditor, q.name, headerFoldout);
  82. GUILayout.FlexibleSpace();
  83. if(q != myTarget.Settings.defaultQuality)
  84. {
  85. if(GUILayout.Button("Set Default", EditorStyles.miniButtonRight,GUILayout.Width(75), GUILayout.Height(18)))
  86. {
  87. myTarget.Settings.defaultQuality = q;
  88. EditorUtility.SetDirty(q);
  89. }
  90. }
  91. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  92. {
  93. myTarget.RemoveQuality(q);
  94. }
  95. EditorGUILayout.EndHorizontal();
  96. if(q.showEditor)
  97. {
  98. GUILayout.BeginVertical("",boxStyleModified);
  99. EnviroQuality quality = myTarget.Settings.Qualities[i];
  100. q.showVolumeClouds = GUILayout.Toggle(q.showVolumeClouds, "Volumetric Clouds", headerFoldout);
  101. if(q.showVolumeClouds)
  102. {
  103. quality.volumetricCloudsOverride.volumetricClouds = EditorGUILayout.Toggle("Volumetric Clouds", quality.volumetricCloudsOverride.volumetricClouds);
  104. quality.volumetricCloudsOverride.dualLayer = EditorGUILayout.Toggle("Dual Layer", quality.volumetricCloudsOverride.dualLayer);
  105. GUILayout.Space(5);
  106. quality.volumetricCloudsOverride.downsampling = EditorGUILayout.IntSlider("Downsampling", quality.volumetricCloudsOverride.downsampling, 1,6);
  107. quality.volumetricCloudsOverride.stepsLayer1 = EditorGUILayout.IntSlider("Steps Layer 1", quality.volumetricCloudsOverride.stepsLayer1, 32,256);
  108. quality.volumetricCloudsOverride.stepsLayer2 = EditorGUILayout.IntSlider("Steps Layer 2", quality.volumetricCloudsOverride.stepsLayer2, 32,256);
  109. GUILayout.Space(5);
  110. quality.volumetricCloudsOverride.blueNoiseIntensity = EditorGUILayout.Slider("Blue Noise Intensity", quality.volumetricCloudsOverride.blueNoiseIntensity, 0f,2f);
  111. quality.volumetricCloudsOverride.reprojectionBlendTime = EditorGUILayout.Slider("Reprojection Blending", quality.volumetricCloudsOverride.reprojectionBlendTime, 1f,20f);
  112. quality.volumetricCloudsOverride.lodDistance = EditorGUILayout.Slider("LOD", quality.volumetricCloudsOverride.lodDistance, 0f,1f);
  113. }
  114. GUILayout.EndVertical();
  115. GUILayout.BeginVertical("",boxStyleModified);
  116. q.showFog = GUILayout.Toggle(q.showFog, "Fog", headerFoldout);
  117. if(q.showFog)
  118. {
  119. quality.fogOverride.fog = EditorGUILayout.Toggle("Fog", quality.fogOverride.fog);
  120. quality.fogOverride.volumetrics = EditorGUILayout.Toggle("Volumetrics", quality.fogOverride.volumetrics);
  121. quality.fogOverride.quality = (EnviroFogSettings.Quality)EditorGUILayout.EnumPopup("Quality",quality.fogOverride.quality);
  122. quality.fogOverride.steps = EditorGUILayout.IntSlider("Steps", quality.fogOverride.steps, 16,96);
  123. }
  124. GUILayout.EndVertical();
  125. EditorUtility.SetDirty(quality);
  126. }
  127. GUILayout.EndVertical();
  128. if(q.showEditor)
  129. GUILayout.Space(10);
  130. }
  131. GUILayout.EndVertical();
  132. GUILayout.Space(10);
  133. // Save Load
  134. GUI.backgroundColor = categoryModuleColor;
  135. GUILayout.BeginVertical("",boxStyleModified);
  136. GUI.backgroundColor = Color.white;
  137. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  138. if(myTarget.showSaveLoad)
  139. {
  140. EditorGUILayout.PropertyField(preset);
  141. GUILayout.BeginHorizontal("",wrapStyle);
  142. if(myTarget.preset != null)
  143. {
  144. if(GUILayout.Button("Load"))
  145. {
  146. myTarget.LoadModuleValues();
  147. }
  148. if(GUILayout.Button("Save"))
  149. {
  150. myTarget.SaveModuleValues(myTarget.preset);
  151. }
  152. }
  153. if(GUILayout.Button("Save As New"))
  154. {
  155. myTarget.SaveModuleValues();
  156. }
  157. GUILayout.EndHorizontal();
  158. }
  159. GUILayout.EndVertical();
  160. /// Save Load End
  161. ApplyChanges ();
  162. }
  163. GUILayout.EndVertical();
  164. if(myTarget.showModuleInspector)
  165. GUILayout.Space(20);
  166. }
  167. }
  168. }