EnviroWeatherModuleEditor.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEditor;
  5. namespace Enviro
  6. {
  7. [CustomEditor(typeof(EnviroWeatherModule))]
  8. public class EnviroWeatherModuleEditor : EnviroModuleEditor
  9. {
  10. private EnviroWeatherModule myTarget;
  11. //Properties
  12. private SerializedProperty cloudsTransitionSpeed,fogTransitionSpeed,lightingTransitionSpeed,effectsTransitionSpeed,auroraTransitionSpeed,environmentTransitionSpeed,audioTransitionSpeed;
  13. //On Enable
  14. public override void OnEnable()
  15. {
  16. if(!target)
  17. return;
  18. myTarget = (EnviroWeatherModule)target;
  19. serializedObj = new SerializedObject(myTarget);
  20. preset = serializedObj.FindProperty("preset");
  21. cloudsTransitionSpeed = serializedObj.FindProperty("Settings.cloudsTransitionSpeed");
  22. fogTransitionSpeed = serializedObj.FindProperty("Settings.fogTransitionSpeed");
  23. lightingTransitionSpeed = serializedObj.FindProperty("Settings.lightingTransitionSpeed");
  24. effectsTransitionSpeed = serializedObj.FindProperty("Settings.effectsTransitionSpeed");
  25. auroraTransitionSpeed = serializedObj.FindProperty("Settings.auroraTransitionSpeed");
  26. audioTransitionSpeed = serializedObj.FindProperty("Settings.audioTransitionSpeed");
  27. environmentTransitionSpeed = serializedObj.FindProperty("Settings.environmentTransitionSpeed");
  28. //weatherTypeToAdd = serializedObj.FindProperty("weatherTypeToAdd");
  29. }
  30. public override void OnInspectorGUI()
  31. {
  32. if(!target)
  33. return;
  34. base.OnInspectorGUI();
  35. GUI.backgroundColor = baseModuleColor;
  36. GUILayout.BeginVertical("",boxStyleModified);
  37. GUI.backgroundColor = Color.white;
  38. EditorGUILayout.BeginHorizontal();
  39. myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Weather", headerFoldout);
  40. GUILayout.FlexibleSpace();
  41. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  42. {
  43. EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Weather);
  44. DestroyImmediate(this);
  45. return;
  46. }
  47. EditorGUILayout.EndHorizontal();
  48. if(myTarget.showModuleInspector)
  49. {
  50. serializedObj.UpdateIfRequiredOrScript ();
  51. EditorGUI.BeginChangeCheck();
  52. GUI.backgroundColor = categoryModuleColor;
  53. GUILayout.BeginVertical("",boxStyleModified);
  54. GUI.backgroundColor = Color.white;
  55. GUILayout.Space(5);
  56. GUILayout.Label("Weather Presets", headerStyle);
  57. GUILayout.Space(5);
  58. Object selectedObject = null;
  59. if(GUILayout.Button("Add"))
  60. {
  61. int controlID = EditorGUIUtility.GetControlID (FocusType.Passive);
  62. EditorGUIUtility.ShowObjectPicker<EnviroWeatherType>(null,false,"",controlID);
  63. }
  64. string commandName = Event.current.commandName;
  65. if (commandName == "ObjectSelectorClosed")
  66. {
  67. selectedObject = EditorGUIUtility.GetObjectPickerObject ();
  68. bool add = true;
  69. for (int i = 0; i < myTarget.Settings.weatherTypes.Count; i++)
  70. {
  71. if((EnviroWeatherType)selectedObject == myTarget.Settings.weatherTypes[i])
  72. add = false;
  73. }
  74. if(add)
  75. myTarget.Settings.weatherTypes.Add((EnviroWeatherType)selectedObject);
  76. }
  77. if(GUILayout.Button("Create New"))
  78. {
  79. myTarget.CreateNewWeatherType();
  80. }
  81. GUILayout.Space(15);
  82. //Make sure that we remove old empty entries where user deleted the scriptable object.
  83. myTarget.CleanupList();
  84. for (int i = 0; i < myTarget.Settings.weatherTypes.Count; i++)
  85. {
  86. EnviroWeatherType curWT = myTarget.Settings.weatherTypes[i];
  87. if(curWT == myTarget.targetWeatherType)
  88. GUI.backgroundColor = new Color(0.0f,0.5f,0.0f,1f);
  89. GUILayout.BeginVertical ("", boxStyleModified);
  90. GUI.backgroundColor = Color.white;
  91. EditorGUILayout.BeginHorizontal();
  92. curWT.showEditor = GUILayout.Toggle(curWT.showEditor, curWT.name, headerFoldout);
  93. GUILayout.FlexibleSpace();
  94. if(curWT != myTarget.targetWeatherType)
  95. {
  96. if(GUILayout.Button("Set Active", EditorStyles.miniButtonRight,GUILayout.Width(70), GUILayout.Height(18)))
  97. {
  98. myTarget.ChangeWeather(curWT);
  99. EditorUtility.SetDirty(curWT);
  100. }
  101. }
  102. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  103. {
  104. myTarget.RemoveWeatherType(curWT);
  105. }
  106. EditorGUILayout.EndHorizontal();
  107. //GUILayout.Space(15);
  108. if(curWT.showEditor)
  109. {
  110. curWT.name = EditorGUILayout.TextField ("Name", curWT.name);
  111. //Lighting
  112. GUILayout.BeginVertical ("", boxStyleModified);
  113. curWT.showLightingControls = GUILayout.Toggle(curWT.showLightingControls, "Lighting", headerFoldout);
  114. if(curWT.showLightingControls)
  115. {
  116. GUILayout.Space(5);
  117. curWT.lightingOverride.directLightIntensityModifier = EditorGUILayout.Slider("Direct Light Intensity", curWT.lightingOverride.directLightIntensityModifier,0f,2f);
  118. curWT.lightingOverride.ambientIntensityModifier = EditorGUILayout.Slider("Ambient Light Intensity", curWT.lightingOverride.ambientIntensityModifier,0f,2f);
  119. }
  120. GUILayout.EndVertical();
  121. //Volumetric Clouds
  122. GUILayout.BeginVertical ("", boxStyleModified);
  123. curWT.showCloudControls = GUILayout.Toggle(curWT.showCloudControls, "Volumetric Clouds", headerFoldout);
  124. if(curWT.showCloudControls)
  125. {
  126. GUILayout.Space(5);
  127. GUILayout.BeginVertical ("", boxStyleModified);
  128. curWT.cloudsOverride.showLayer1 = GUILayout.Toggle(curWT.cloudsOverride.showLayer1, "Layer 1", headerFoldout);
  129. if(curWT.cloudsOverride.showLayer1)
  130. {
  131. curWT.cloudsOverride.coverageLayer1 = EditorGUILayout.Slider("Coverage", curWT.cloudsOverride.coverageLayer1,-1f,1f);
  132. curWT.cloudsOverride.dilateCoverageLayer1 = EditorGUILayout.Slider("Dilate Coverage", curWT.cloudsOverride.dilateCoverageLayer1,0f,1f);
  133. curWT.cloudsOverride.dilateTypeLayer1 = EditorGUILayout.Slider("Dilate Type", curWT.cloudsOverride.dilateTypeLayer1,0f,1f);
  134. curWT.cloudsOverride.typeModifierLayer1 = EditorGUILayout.Slider("Type Modifier", curWT.cloudsOverride.typeModifierLayer1,0f,1f);
  135. curWT.cloudsOverride.anvilBiasLayer1 = EditorGUILayout.Slider("Anvil Bias", curWT.cloudsOverride.anvilBiasLayer1,0f,1f);
  136. GUILayout.Space(10);
  137. curWT.cloudsOverride.scatteringIntensityLayer1 = EditorGUILayout.Slider("Scattering Intensity", curWT.cloudsOverride.scatteringIntensityLayer1,0f,2f);
  138. curWT.cloudsOverride.multiScatteringALayer1 = EditorGUILayout.Slider("Multi Scattering A", curWT.cloudsOverride.multiScatteringALayer1,0f,1f);
  139. curWT.cloudsOverride.multiScatteringBLayer1 = EditorGUILayout.Slider("Multi Scattering B", curWT.cloudsOverride.multiScatteringBLayer1,0f,1f);
  140. curWT.cloudsOverride.multiScatteringCLayer1 = EditorGUILayout.Slider("Multi Scattering C", curWT.cloudsOverride.multiScatteringCLayer1,0f,1f);
  141. curWT.cloudsOverride.powderIntensityLayer1 = EditorGUILayout.Slider("Powder Intensity", curWT.cloudsOverride.powderIntensityLayer1,0f,1f);
  142. curWT.cloudsOverride.silverLiningSpreadLayer1 = EditorGUILayout.Slider("Silver Lining Spread", curWT.cloudsOverride.silverLiningSpreadLayer1,0f,1f);
  143. curWT.cloudsOverride.ligthAbsorbtionLayer1 = EditorGUILayout.Slider("Light Absorbtion", curWT.cloudsOverride.ligthAbsorbtionLayer1,0f,2f);
  144. GUILayout.Space(10);
  145. curWT.cloudsOverride.densityLayer1 = EditorGUILayout.Slider("Density", curWT.cloudsOverride.densityLayer1,0f,1f);
  146. curWT.cloudsOverride.baseErosionIntensityLayer1 = EditorGUILayout.Slider("Base Erosion Intensity", curWT.cloudsOverride.baseErosionIntensityLayer1,0f,1f);
  147. curWT.cloudsOverride.detailErosionIntensityLayer1 = EditorGUILayout.Slider("Detail Erosion Intensity", curWT.cloudsOverride.detailErosionIntensityLayer1,0f,1f);
  148. curWT.cloudsOverride.curlIntensityLayer1 = EditorGUILayout.Slider("Curl Intensity", curWT.cloudsOverride.curlIntensityLayer1,0f,1f);
  149. GUILayout.Space(10);
  150. }
  151. GUILayout.EndVertical();
  152. if(EnviroManager.instance.VolumetricClouds.settingsGlobal.dualLayer)
  153. {
  154. GUILayout.BeginVertical ("", boxStyleModified);
  155. curWT.cloudsOverride.showLayer2 = GUILayout.Toggle(curWT.cloudsOverride.showLayer2, "Layer 2", headerFoldout);
  156. if(curWT.cloudsOverride.showLayer2)
  157. {
  158. curWT.cloudsOverride.coverageLayer2 = EditorGUILayout.Slider("Coverage", curWT.cloudsOverride.coverageLayer2,-1f,1f);
  159. curWT.cloudsOverride.dilateCoverageLayer2 = EditorGUILayout.Slider("Dilate Coverage", curWT.cloudsOverride.dilateCoverageLayer2,0f,1f);
  160. curWT.cloudsOverride.dilateTypeLayer2 = EditorGUILayout.Slider("Dilate Type", curWT.cloudsOverride.dilateTypeLayer2,0f,1f);
  161. curWT.cloudsOverride.typeModifierLayer2 = EditorGUILayout.Slider("Type Modifier", curWT.cloudsOverride.typeModifierLayer2,0f,1f);
  162. curWT.cloudsOverride.anvilBiasLayer2 = EditorGUILayout.Slider("Anvil Bias", curWT.cloudsOverride.anvilBiasLayer2,0f,1f);
  163. GUILayout.Space(10);
  164. curWT.cloudsOverride.scatteringIntensityLayer2 = EditorGUILayout.Slider("Scattering Intensity", curWT.cloudsOverride.scatteringIntensityLayer2,0f,2f);
  165. curWT.cloudsOverride.multiScatteringALayer2 = EditorGUILayout.Slider("Multi Scattering A", curWT.cloudsOverride.multiScatteringALayer2,0f,1f);
  166. curWT.cloudsOverride.multiScatteringBLayer2 = EditorGUILayout.Slider("Multi Scattering B", curWT.cloudsOverride.multiScatteringBLayer2,0f,1f);
  167. curWT.cloudsOverride.multiScatteringCLayer2 = EditorGUILayout.Slider("Multi Scattering C", curWT.cloudsOverride.multiScatteringCLayer2,0f,1f);
  168. curWT.cloudsOverride.powderIntensityLayer2 = EditorGUILayout.Slider("Powder Intensity", curWT.cloudsOverride.powderIntensityLayer2,0f,1f);
  169. curWT.cloudsOverride.silverLiningSpreadLayer2 = EditorGUILayout.Slider("Silver Lining Spread", curWT.cloudsOverride.silverLiningSpreadLayer2,0f,1f);
  170. curWT.cloudsOverride.ligthAbsorbtionLayer2 = EditorGUILayout.Slider("Light Absorbtion", curWT.cloudsOverride.ligthAbsorbtionLayer2,0f,2f);
  171. GUILayout.Space(10);
  172. curWT.cloudsOverride.densityLayer2 = EditorGUILayout.Slider("Density", curWT.cloudsOverride.densityLayer2,0f,1f);
  173. curWT.cloudsOverride.baseErosionIntensityLayer2 = EditorGUILayout.Slider("Base Erosion Intensity", curWT.cloudsOverride.baseErosionIntensityLayer2,0f,1f);
  174. curWT.cloudsOverride.detailErosionIntensityLayer2 = EditorGUILayout.Slider("Detail Erosion Intensity", curWT.cloudsOverride.detailErosionIntensityLayer2,0f,1f);
  175. curWT.cloudsOverride.curlIntensityLayer2 = EditorGUILayout.Slider("Curl Intensity", curWT.cloudsOverride.curlIntensityLayer2,0f,1f);
  176. }
  177. GUILayout.EndVertical();
  178. }
  179. }
  180. GUILayout.EndVertical();
  181. //Flat Clouds
  182. GUILayout.BeginVertical ("", boxStyleModified);
  183. curWT.showFlatCloudControls = GUILayout.Toggle(curWT.showFlatCloudControls, "Flat Clouds", headerFoldout);
  184. if(curWT.showFlatCloudControls)
  185. {
  186. GUILayout.Space(5);
  187. EditorGUILayout.LabelField("Cirrus Clouds", headerStyle);
  188. curWT.flatCloudsOverride.cirrusCloudsCoverage = EditorGUILayout.Slider("Cirrus Clouds Coverage", curWT.flatCloudsOverride.cirrusCloudsCoverage,0f,1f);
  189. curWT.flatCloudsOverride.cirrusCloudsAlpha = EditorGUILayout.Slider("Cirrus Clouds Alpha", curWT.flatCloudsOverride.cirrusCloudsAlpha,0f,1f);
  190. curWT.flatCloudsOverride.cirrusCloudsColorPower = EditorGUILayout.Slider("Cirrus Clouds Color", curWT.flatCloudsOverride.cirrusCloudsColorPower,0f,2f);
  191. GUILayout.Space(10);
  192. EditorGUILayout.LabelField("Flat Clouds", headerStyle);
  193. curWT.flatCloudsOverride.flatCloudsCoverage = EditorGUILayout.Slider("Flat Clouds Coverage", curWT.flatCloudsOverride.flatCloudsCoverage,0f,2f);
  194. curWT.flatCloudsOverride.flatCloudsLightIntensity = EditorGUILayout.Slider("Flat Clouds Light Intensity", curWT.flatCloudsOverride.flatCloudsLightIntensity,0f,2f);
  195. curWT.flatCloudsOverride.flatCloudsAmbientIntensity = EditorGUILayout.Slider("Flat Clouds Ambient Intensity", curWT.flatCloudsOverride.flatCloudsAmbientIntensity,0f,2f);
  196. curWT.flatCloudsOverride.flatCloudsAbsorbtion = EditorGUILayout.Slider("Flat Clouds Light Absorbtion", curWT.flatCloudsOverride.flatCloudsAbsorbtion,0f,2f);
  197. }
  198. GUILayout.EndVertical();
  199. //Fog
  200. GUILayout.BeginVertical ("", boxStyleModified);
  201. curWT.showFogControls = GUILayout.Toggle(curWT.showFogControls, "Fog", headerFoldout);
  202. if(curWT.showFogControls)
  203. {
  204. GUILayout.Space(5);
  205. EditorGUILayout.LabelField("Layer 1", headerStyle);
  206. curWT.fogOverride.fogDensity = EditorGUILayout.Slider("Fog Density 1", curWT.fogOverride.fogDensity,0f,1f);
  207. curWT.fogOverride.fogHeightFalloff = EditorGUILayout.Slider("Fog Height Falloff 1", curWT.fogOverride.fogHeightFalloff,0f,0.05f);
  208. curWT.fogOverride.fogHeight = EditorGUILayout.FloatField("Fog Height 1 ", curWT.fogOverride.fogHeight);
  209. GUILayout.Space(10);
  210. EditorGUILayout.LabelField("Layer 2", headerStyle);
  211. curWT.fogOverride.fogDensity2 = EditorGUILayout.Slider("Fog Density 2", curWT.fogOverride.fogDensity2,0f,1f);
  212. curWT.fogOverride.fogHeightFalloff2 = EditorGUILayout.Slider("Fog Height Falloff 2", curWT.fogOverride.fogHeightFalloff2,0f,0.05f);
  213. curWT.fogOverride.fogHeight2 = EditorGUILayout.FloatField("Fog Height 2", curWT.fogOverride.fogHeight2);
  214. GUILayout.Space(10);
  215. EditorGUILayout.LabelField("Color", headerStyle);
  216. curWT.fogOverride.fogColorBlend = EditorGUILayout.Slider("Fog Sky-Color Blending", curWT.fogOverride.fogColorBlend,0f,1.0f);
  217. GUILayout.Space(10);
  218. #if !ENVIRO_HDRP
  219. EditorGUILayout.LabelField("Volumetrics", headerStyle);
  220. curWT.fogOverride.scattering = EditorGUILayout.Slider("Scattering Intensity", curWT.fogOverride.scattering,0f,2.0f);
  221. curWT.fogOverride.extinction = EditorGUILayout.Slider("Extinction Intensity", curWT.fogOverride.extinction,0f,1.0f);
  222. curWT.fogOverride.anistropy = EditorGUILayout.Slider("Anistropy", curWT.fogOverride.anistropy,0f,1.0f);
  223. #else
  224. EditorGUILayout.LabelField("HDRP Fog", headerStyle);
  225. curWT.fogOverride.fogAttenuationDistance = EditorGUILayout.Slider("Attenuation Distance", curWT.fogOverride.fogAttenuationDistance,0f,400f);
  226. curWT.fogOverride.baseHeight = EditorGUILayout.FloatField("Base Height", curWT.fogOverride.baseHeight);
  227. curWT.fogOverride.maxHeight = EditorGUILayout.FloatField("Max Height", curWT.fogOverride.maxHeight);
  228. GUILayout.Space(10);
  229. EditorGUILayout.LabelField("HDRP Volumetrics", headerStyle);
  230. curWT.fogOverride.ambientDimmer = EditorGUILayout.Slider("Ambient Dimmer", curWT.fogOverride.ambientDimmer,0f,1f);
  231. curWT.fogOverride.directLightMultiplier = EditorGUILayout.Slider("Direct Light Multiplier", curWT.fogOverride.directLightMultiplier,0f,16f);
  232. curWT.fogOverride.directLightShadowdimmer = EditorGUILayout.Slider("Direct Light Shadow gimmer", curWT.fogOverride.directLightShadowdimmer,0f,1f);
  233. #endif
  234. }
  235. GUILayout.EndVertical();
  236. //Effects
  237. GUILayout.BeginVertical ("", boxStyleModified);
  238. curWT.showEffectControls = GUILayout.Toggle(curWT.showEffectControls, "Effects", headerFoldout);
  239. if(curWT.showEffectControls)
  240. {
  241. GUILayout.Space(5);
  242. curWT.effectsOverride.rain1Emission = EditorGUILayout.Slider("Rain1 Emission", curWT.effectsOverride.rain1Emission,0f,1f);
  243. curWT.effectsOverride.rain2Emission = EditorGUILayout.Slider("Rain2 Emission", curWT.effectsOverride.rain2Emission,0f,1f);
  244. GUILayout.Space(5);
  245. curWT.effectsOverride.snow1Emission = EditorGUILayout.Slider("Snow1 Emission", curWT.effectsOverride.snow1Emission,0f,1f);
  246. curWT.effectsOverride.snow2Emission = EditorGUILayout.Slider("Snow2 Emission", curWT.effectsOverride.snow2Emission,0f,1f);
  247. GUILayout.Space(5);
  248. curWT.effectsOverride.custom1Emission = EditorGUILayout.Slider("Custom1 Emission", curWT.effectsOverride.custom1Emission,0f,1f);
  249. curWT.effectsOverride.custom2Emission = EditorGUILayout.Slider("Custom2 Emission", curWT.effectsOverride.custom2Emission,0f,1f);
  250. }
  251. GUILayout.EndVertical();
  252. //Aurora
  253. GUILayout.BeginVertical ("", boxStyleModified);
  254. curWT.showAuroraControls = GUILayout.Toggle(curWT.showAuroraControls, "Aurora", headerFoldout);
  255. if(curWT.showAuroraControls)
  256. {
  257. GUILayout.Space(5);
  258. curWT.auroraOverride.auroraIntensity = EditorGUILayout.Slider("Aurora Intensity Modifier", curWT.auroraOverride.auroraIntensity,0f,1f);
  259. }
  260. GUILayout.EndVertical();
  261. //Environment
  262. GUILayout.BeginVertical ("", boxStyleModified);
  263. curWT.showEnvironmentControls = GUILayout.Toggle(curWT.showEnvironmentControls, "Environment", headerFoldout);
  264. if(curWT.showEnvironmentControls)
  265. {
  266. GUILayout.Space(5);
  267. curWT.environmentOverride.temperatureWeatherMod = EditorGUILayout.Slider("Temperature Modifier", curWT.environmentOverride.temperatureWeatherMod,-20f,20f);
  268. GUILayout.Space(5);
  269. curWT.environmentOverride.wetnessTarget = EditorGUILayout.Slider("Wetness Target", curWT.environmentOverride.wetnessTarget,0f,1f);
  270. curWT.environmentOverride.snowTarget = EditorGUILayout.Slider("Snow Target", curWT.environmentOverride.snowTarget,0f,1f);
  271. }
  272. GUILayout.EndVertical();
  273. //Lightning
  274. GUILayout.BeginVertical ("", boxStyleModified);
  275. curWT.showLightningControls = GUILayout.Toggle(curWT.showLightningControls, "Lightning", headerFoldout);
  276. if(curWT.showLightningControls)
  277. {
  278. GUILayout.Space(5);
  279. curWT.lightningOverride.lightningStorm = EditorGUILayout.Toggle("Lightning Storm", curWT.lightningOverride.lightningStorm);
  280. curWT.lightningOverride.randomLightningDelay = EditorGUILayout.Slider("Lightning Delay", curWT.lightningOverride.randomLightningDelay,1f,60f);
  281. }
  282. GUILayout.EndVertical();
  283. //Audio
  284. GUILayout.BeginVertical ("", boxStyleModified);
  285. curWT.showAudioControls = GUILayout.Toggle(curWT.showAudioControls, "Audio", headerFoldout);
  286. if(curWT.showAudioControls)
  287. {
  288. GUILayout.Space(5);
  289. //Ambient SFX
  290. GUILayout.BeginVertical ("", boxStyleModified);
  291. curWT.showAmbientAudioControls = GUILayout.Toggle(curWT.showAmbientAudioControls, "Ambient", headerFoldout);
  292. if(curWT.showAmbientAudioControls)
  293. {
  294. GUILayout.Space(10);
  295. if (GUILayout.Button ("Add"))
  296. {
  297. curWT.audioOverride.ambientOverride.Add (new EnviroAudioOverrideType());
  298. }
  299. GUILayout.Space(10);
  300. for (int a = 0; a < curWT.audioOverride.ambientOverride.Count; a++)
  301. {
  302. GUILayout.BeginVertical ("", boxStyleModified);
  303. EditorGUILayout.BeginHorizontal();
  304. curWT.audioOverride.ambientOverride[a].showEditor = GUILayout.Toggle(curWT.audioOverride.ambientOverride[a].showEditor, curWT.audioOverride.ambientOverride[a].name, headerFoldout);
  305. GUILayout.FlexibleSpace();
  306. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  307. {
  308. curWT.audioOverride.ambientOverride.Remove (curWT.audioOverride.ambientOverride[a]);
  309. return;
  310. }
  311. EditorGUILayout.EndHorizontal();
  312. if(curWT.audioOverride.ambientOverride[a].showEditor)
  313. {
  314. curWT.audioOverride.ambientOverride[a].name = EditorGUILayout.TextField ("Audio Name", curWT.audioOverride.ambientOverride[a].name);
  315. curWT.audioOverride.ambientOverride[a].volume = EditorGUILayout.Slider ("Volume", curWT.audioOverride.ambientOverride[a].volume,0f,1f);
  316. }
  317. GUILayout.EndVertical ();
  318. }
  319. }
  320. GUILayout.EndVertical ();
  321. //Weather SFX
  322. GUILayout.BeginVertical ("", boxStyleModified);
  323. curWT.showWeatherAudioControls = GUILayout.Toggle(curWT.showWeatherAudioControls, "Weather", headerFoldout);
  324. if(curWT.showWeatherAudioControls)
  325. {
  326. GUILayout.Space(10);
  327. if (GUILayout.Button ("Add"))
  328. {
  329. curWT.audioOverride.weatherOverride.Add (new EnviroAudioOverrideType());
  330. }
  331. GUILayout.Space(10);
  332. for (int a = 0; a < curWT.audioOverride.weatherOverride.Count; a++)
  333. {
  334. GUILayout.BeginVertical ("", boxStyleModified);
  335. EditorGUILayout.BeginHorizontal();
  336. curWT.audioOverride.weatherOverride[a].showEditor = GUILayout.Toggle(curWT.audioOverride.weatherOverride[a].showEditor, curWT.audioOverride.weatherOverride[a].name, headerFoldout);
  337. GUILayout.FlexibleSpace();
  338. if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
  339. {
  340. curWT.audioOverride.weatherOverride.Remove (curWT.audioOverride.weatherOverride[a]);
  341. return;
  342. }
  343. EditorGUILayout.EndHorizontal();
  344. if(curWT.audioOverride.weatherOverride[a].showEditor)
  345. {
  346. curWT.audioOverride.weatherOverride[a].name = EditorGUILayout.TextField ("Audio Name", curWT.audioOverride.weatherOverride[a].name);
  347. curWT.audioOverride.weatherOverride[a].volume = EditorGUILayout.Slider ("Volume", curWT.audioOverride.weatherOverride[a].volume,0f,1f);
  348. }
  349. GUILayout.EndVertical ();
  350. }
  351. }
  352. GUILayout.EndVertical ();
  353. }
  354. GUILayout.EndVertical();
  355. }
  356. GUILayout.EndVertical ();
  357. GUILayout.Space(2.5f);
  358. }
  359. GUILayout.Space(10);
  360. GUILayout.Label("Transition", headerStyle);
  361. EditorGUILayout.PropertyField(cloudsTransitionSpeed);
  362. EditorGUILayout.PropertyField(fogTransitionSpeed);
  363. EditorGUILayout.PropertyField(lightingTransitionSpeed);
  364. EditorGUILayout.PropertyField(effectsTransitionSpeed);
  365. EditorGUILayout.PropertyField(auroraTransitionSpeed);
  366. EditorGUILayout.PropertyField(environmentTransitionSpeed);
  367. EditorGUILayout.PropertyField(audioTransitionSpeed);
  368. GUILayout.EndVertical ();
  369. /// Save Load
  370. GUI.backgroundColor = categoryModuleColor;
  371. GUILayout.BeginVertical("",boxStyleModified);
  372. GUI.backgroundColor = Color.white;
  373. myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
  374. if(myTarget.showSaveLoad)
  375. {
  376. EditorGUILayout.PropertyField(preset);
  377. GUILayout.BeginHorizontal("",wrapStyle);
  378. if(myTarget.preset != null)
  379. {
  380. if(GUILayout.Button("Load"))
  381. {
  382. myTarget.LoadModuleValues();
  383. }
  384. if(GUILayout.Button("Save"))
  385. {
  386. myTarget.SaveModuleValues(myTarget.preset);
  387. }
  388. }
  389. if(GUILayout.Button("Save As New"))
  390. {
  391. myTarget.SaveModuleValues();
  392. }
  393. GUILayout.EndHorizontal();
  394. }
  395. GUILayout.EndVertical();
  396. /// Save Load End
  397. ApplyChanges ();
  398. }
  399. GUILayout.EndVertical();
  400. if(myTarget.showModuleInspector)
  401. GUILayout.Space(20);
  402. }
  403. }
  404. }