Files
Fishing2/Assets/Enviro 3 - Sky and Weather/Scripts/Editor/Modules/Weather/EnviroWeatherModuleEditor.cs
2025-12-24 00:09:42 +08:00

638 lines
44 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
namespace Enviro
{
[CustomEditor(typeof(EnviroWeatherModule))]
public class EnviroWeatherModuleEditor : EnviroModuleEditor
{
private EnviroWeatherModule myTarget;
//Properties
private SerializedProperty cloudsTransitionSpeed,fogTransitionSpeed,skyTransitionSpeed, lightingTransitionSpeed,effectsTransitionSpeed,auroraTransitionSpeed,environmentTransitionSpeed,audioTransitionSpeed;
private SerializedProperty globalAutoWeatherChange;
private int controlID = -100;
//On Enable
public override void OnEnable()
{
if(!target)
return;
myTarget = (EnviroWeatherModule)target;
serializedObj = new SerializedObject(myTarget);
preset = serializedObj.FindProperty("preset");
cloudsTransitionSpeed = serializedObj.FindProperty("Settings.cloudsTransitionSpeed");
fogTransitionSpeed = serializedObj.FindProperty("Settings.fogTransitionSpeed");
lightingTransitionSpeed = serializedObj.FindProperty("Settings.lightingTransitionSpeed");
skyTransitionSpeed = serializedObj.FindProperty("Settings.skyTransitionSpeed");
effectsTransitionSpeed = serializedObj.FindProperty("Settings.effectsTransitionSpeed");
auroraTransitionSpeed = serializedObj.FindProperty("Settings.auroraTransitionSpeed");
audioTransitionSpeed = serializedObj.FindProperty("Settings.audioTransitionSpeed");
environmentTransitionSpeed = serializedObj.FindProperty("Settings.environmentTransitionSpeed");
globalAutoWeatherChange = serializedObj.FindProperty("globalAutoWeatherChange");
}
public override void OnInspectorGUI()
{
if(!target)
return;
base.OnInspectorGUI();
GUI.backgroundColor = baseModuleColor;
GUILayout.BeginVertical("",boxStyleModified);
GUI.backgroundColor = Color.white;
EditorGUILayout.BeginHorizontal();
myTarget.showModuleInspector = GUILayout.Toggle(myTarget.showModuleInspector, "Weather", headerFoldout);
GUILayout.FlexibleSpace();
if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
{
EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Weather);
DestroyImmediate(this);
return;
}
EditorGUILayout.EndHorizontal();
if(myTarget.showModuleInspector)
{
serializedObj.UpdateIfRequiredOrScript ();
EditorGUI.BeginChangeCheck();
GUI.backgroundColor = categoryModuleColor;
GUILayout.BeginVertical("",boxStyleModified);
GUI.backgroundColor = Color.white;
myTarget.showWeatherPresetsControls = GUILayout.Toggle(myTarget.showWeatherPresetsControls, "Weather Preset Controls", headerFoldout);
if(myTarget.showWeatherPresetsControls)
{
GUILayout.Space(5);
Object selectedObject = null;
if(GUILayout.Button("Add"))
{
controlID = EditorGUIUtility.GetControlID (FocusType.Passive);
EditorGUIUtility.ShowObjectPicker<EnviroWeatherType>(null,false,"",controlID);
}
string commandName = Event.current.commandName;
if (commandName == "ObjectSelectorClosed" && EditorGUIUtility.GetObjectPickerControlID() == controlID)
{
selectedObject = EditorGUIUtility.GetObjectPickerObject ();
bool add = true;
for (int i = 0; i < myTarget.Settings.weatherTypes.Count; i++)
{
if((EnviroWeatherType)selectedObject == myTarget.Settings.weatherTypes[i])
add = false;
}
if(add)
{
myTarget.Settings.weatherTypes.Add((EnviroWeatherType)selectedObject);
EditorUtility.SetDirty(myTarget);
}
controlID = -100;
}
if(GUILayout.Button("Create New"))
{
myTarget.CreateNewWeatherType();
}
GUILayout.Space(15);
//Make sure that we remove old empty entries where user deleted the scriptable object.
myTarget.CleanupList();
for (int i = 0; i < myTarget.Settings.weatherTypes.Count; i++)
{
EnviroWeatherType curWT = myTarget.Settings.weatherTypes[i];
if(curWT == myTarget.targetWeatherType)
GUI.backgroundColor = new Color(0.0f,0.5f,0.0f,1f);
GUILayout.BeginVertical ("", boxStyleModified);
GUI.backgroundColor = Color.white;
EditorGUILayout.BeginHorizontal();
curWT.showEditor = GUILayout.Toggle(curWT.showEditor, curWT.name, headerFoldout);
GUILayout.FlexibleSpace();
if(curWT != myTarget.targetWeatherType)
{
if(GUILayout.Button("Set Active", EditorStyles.miniButtonRight,GUILayout.Width(70), GUILayout.Height(18)))
{
if(EnviroManager.instance != null)
{
myTarget.ChangeWeather(curWT);
EditorUtility.SetDirty(myTarget);
}
}
}
if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
{
myTarget.RemoveWeatherType(curWT);
EditorUtility.SetDirty(myTarget);
}
EditorGUILayout.EndHorizontal();
//GUILayout.Space(15);
if(curWT.showEditor)
{
Undo.RecordObject(curWT, "WeatherPreset Changed");
curWT.name = EditorGUILayout.TextField ("Name", curWT.name);
//Lighting
if(EnviroManager.instance == null || EnviroManager.instance.Lighting != null)
{
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showLightingControls = GUILayout.Toggle(curWT.showLightingControls, "Lighting", headerFoldout);
if(curWT.showLightingControls)
{
GUILayout.Space(5);
curWT.lightingOverride.directLightIntensityModifier = EditorGUILayout.Slider("Direct Light Intensity", curWT.lightingOverride.directLightIntensityModifier,0f,2f);
curWT.lightingOverride.ambientIntensityModifier = EditorGUILayout.Slider("Ambient Light Intensity", curWT.lightingOverride.ambientIntensityModifier,0f,2f);
curWT.lightingOverride.shadowIntensity = EditorGUILayout.Slider("Shadow Intensity", curWT.lightingOverride.shadowIntensity,0f,1f);
}
GUILayout.EndVertical();
}
//Sky
if(EnviroManager.instance == null || EnviroManager.instance.Sky != null)
{
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showSkyControls = GUILayout.Toggle(curWT.showSkyControls, "Sky", headerFoldout);
if(curWT.showSkyControls)
{
GUILayout.Space(5);
GUIContent colorTitle = new GUIContent();
colorTitle.text = "Color Tint";
colorTitle.tooltip = "Sets a color tint for skybox";
curWT.skyOverride.skyColorTint = EditorGUILayout.ColorField(colorTitle, curWT.skyOverride.skyColorTint,true,false,true);
curWT.skyOverride.skyColorExponent = EditorGUILayout.Slider("Color Exponent", curWT.skyOverride.skyColorExponent,0f,2f);
curWT.skyOverride.mieScatteringMultiplier = EditorGUILayout.Slider("Mie Scattering Multiplier", curWT.skyOverride.mieScatteringMultiplier,0f,2f);
}
GUILayout.EndVertical();
}
//Volumetric Clouds
if(EnviroManager.instance == null || EnviroManager.instance.VolumetricClouds != null)
{
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showCloudControls = GUILayout.Toggle(curWT.showCloudControls, "Volumetric Clouds", headerFoldout);
if(curWT.showCloudControls)
{
GUILayout.Space(5);
GUILayout.BeginVertical ("", boxStyleModified);
EditorGUILayout.LabelField("Coverage", headerStyle);
curWT.cloudsOverride.coverage = EditorGUILayout.Slider("Coverage", curWT.cloudsOverride.coverage,-1f,1f);
curWT.cloudsOverride.dilateCoverage = EditorGUILayout.Slider("Dilate Coverage", curWT.cloudsOverride.dilateCoverage,0f,1f);
GUILayout.Space(10);
EditorGUILayout.LabelField("Type Shaping", headerStyle);
curWT.cloudsOverride.dilateType = EditorGUILayout.Slider("Dilate Type", curWT.cloudsOverride.dilateType,0f,1f);
curWT.cloudsOverride.typeModifier = EditorGUILayout.Slider("Type Modifier", curWT.cloudsOverride.typeModifier,0f,1f);
curWT.cloudsOverride.cloudTypeShaping = EditorGUILayout.Slider("Type Influence", curWT.cloudsOverride.cloudTypeShaping,0f,1f);
GUILayout.Space(10);
EditorGUILayout.LabelField("Segment Shaping", headerStyle);
curWT.cloudsOverride.bottomShape = EditorGUILayout.Slider("Bottom Shape", curWT.cloudsOverride.bottomShape,-5f,5f);
curWT.cloudsOverride.midShape = EditorGUILayout.Slider("Mid Shape", curWT.cloudsOverride.midShape,-5f,5f);
curWT.cloudsOverride.topShape = EditorGUILayout.Slider("Top Shape", curWT.cloudsOverride.topShape,-5f,5f);
curWT.cloudsOverride.rampShape = EditorGUILayout.Slider("Ramp Shape", curWT.cloudsOverride.rampShape,0f,2f);
GUILayout.Space(5);
curWT.cloudsOverride.topLayer = EditorGUILayout.Slider("Top Layer", curWT.cloudsOverride.topLayer,0f,2f);
GUILayout.Space(10);
EditorGUILayout.LabelField("Lighting", headerStyle);
curWT.cloudsOverride.exposure = EditorGUILayout.Slider("Exposure", curWT.cloudsOverride.exposure,0.0f,2f);
GUILayout.Space(5);
curWT.cloudsOverride.scatteringIntensity = EditorGUILayout.Slider("Scattering Intensity", curWT.cloudsOverride.scatteringIntensity,0f,10f);
curWT.cloudsOverride.multiScatterStrength = EditorGUILayout.Slider("Multi Scattering Strength", curWT.cloudsOverride.multiScatterStrength,0f,1f);
curWT.cloudsOverride.multiScatterFalloff = EditorGUILayout.Slider("Multi Scattering Falloff", curWT.cloudsOverride.multiScatterFalloff,0f,0.5f);
curWT.cloudsOverride.ambientFloor = EditorGUILayout.Slider("Ambient Floor", curWT.cloudsOverride.ambientFloor,0f,1f);
GUILayout.Space(5);
curWT.cloudsOverride.silverLiningIntensity = EditorGUILayout.Slider("Silver Lining Intensity", curWT.cloudsOverride.silverLiningIntensity,0f,2f);
curWT.cloudsOverride.silverLiningSpread = EditorGUILayout.Slider("Silver Lining Spread", curWT.cloudsOverride.silverLiningSpread,0f,1f);
curWT.cloudsOverride.edgeHighlightStrength = EditorGUILayout.Slider("Edge Highlights", curWT.cloudsOverride.edgeHighlightStrength,0f,1f);
GUILayout.Space(5);
curWT.cloudsOverride.ligthAbsorbtion = EditorGUILayout.Slider("Light Absorbtion", curWT.cloudsOverride.ligthAbsorbtion,0f,2.0f);
curWT.cloudsOverride.ambientLightIntensity = EditorGUILayout.Slider("Ambient Light Intensity", curWT.cloudsOverride.ambientLightIntensity, 0f, 2f);
GUILayout.Space(5);
curWT.cloudsOverride.lightningIntensity = EditorGUILayout.Slider("Lightning Intensity", curWT.cloudsOverride.lightningIntensity,0.0f,2f);
GUILayout.Space(10);
EditorGUILayout.LabelField("Density", headerStyle);
curWT.cloudsOverride.density = EditorGUILayout.Slider("Density", curWT.cloudsOverride.density,0f,2f);
curWT.cloudsOverride.densitySmoothness = EditorGUILayout.Slider("Density Smoothness", curWT.cloudsOverride.densitySmoothness,0f,2f);
GUILayout.Space(10);
EditorGUILayout.LabelField("Noise Shaping", headerStyle);
curWT.cloudsOverride.baseNoiseUVMultiplier = EditorGUILayout.Slider("Base Noise UV Multiplier", curWT.cloudsOverride.baseNoiseUVMultiplier,0f,2f);
curWT.cloudsOverride.baseErosionIntensity = EditorGUILayout.Slider("Base Erosion Intensity", curWT.cloudsOverride.baseErosionIntensity,0f,1f);
curWT.cloudsOverride.baseNoiseMultiplier = EditorGUILayout.Slider("Base Noise Multiplier", curWT.cloudsOverride.baseNoiseMultiplier,0f,2f);
GUILayout.Space(5);
curWT.cloudsOverride.detailNoiseUVMultiplier = EditorGUILayout.Slider("Detail Noise UV Multiplier", curWT.cloudsOverride.detailNoiseUVMultiplier,0f,2f);
curWT.cloudsOverride.detailErosionIntensity = EditorGUILayout.Slider("Detail Erosion Intensity", curWT.cloudsOverride.detailErosionIntensity,0f,1f);
curWT.cloudsOverride.detailNoiseMultiplier = EditorGUILayout.Slider("Detail Noise Multiplier", curWT.cloudsOverride.detailNoiseMultiplier,0f,2f);
curWT.cloudsOverride.curlIntensity = EditorGUILayout.Slider("Curl Intensity", curWT.cloudsOverride.curlIntensity,0f,1f);
GUILayout.Space(10);
GUILayout.EndVertical();
}
GUILayout.EndVertical();
}
if(EnviroManager.instance == null || EnviroManager.instance.FlatClouds != null)
{
//Flat Clouds
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showFlatCloudControls = GUILayout.Toggle(curWT.showFlatCloudControls, "Flat Clouds", headerFoldout);
if(curWT.showFlatCloudControls)
{
GUILayout.Space(5);
EditorGUILayout.LabelField("Cirrus Clouds", headerStyle);
curWT.flatCloudsOverride.cirrusCloudsCoverage = EditorGUILayout.Slider("Cirrus Clouds Coverage", curWT.flatCloudsOverride.cirrusCloudsCoverage,0f,1f);
curWT.flatCloudsOverride.cirrusCloudsAlpha = EditorGUILayout.Slider("Cirrus Clouds Alpha", curWT.flatCloudsOverride.cirrusCloudsAlpha,0f,1f);
curWT.flatCloudsOverride.cirrusCloudsColorPower = EditorGUILayout.Slider("Cirrus Clouds Color", curWT.flatCloudsOverride.cirrusCloudsColorPower,0f,2f);
GUILayout.Space(10);
EditorGUILayout.LabelField("Flat Clouds", headerStyle);
curWT.flatCloudsOverride.flatCloudsCoverage = EditorGUILayout.Slider("Flat Clouds Coverage", curWT.flatCloudsOverride.flatCloudsCoverage,0f,2f);
curWT.flatCloudsOverride.flatCloudsLightIntensity = EditorGUILayout.Slider("Flat Clouds Light Intensity", curWT.flatCloudsOverride.flatCloudsLightIntensity,0f,2f);
curWT.flatCloudsOverride.flatCloudsAmbientIntensity = EditorGUILayout.Slider("Flat Clouds Ambient Intensity", curWT.flatCloudsOverride.flatCloudsAmbientIntensity,0f,2f);
curWT.flatCloudsOverride.flatCloudsDensity =EditorGUILayout.Slider("Flat Clouds Density", curWT.flatCloudsOverride.flatCloudsDensity,0f,2f);
curWT.flatCloudsOverride.flatCloudsShadowIntensity = EditorGUILayout.Slider("Flat Clouds Shadow Intensity", curWT.flatCloudsOverride.flatCloudsShadowIntensity,0f,2f);
}
GUILayout.EndVertical();
}
if(EnviroManager.instance == null || EnviroManager.instance.Fog != null)
{
//Fog
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showFogControls = GUILayout.Toggle(curWT.showFogControls, "Fog", headerFoldout);
if(curWT.showFogControls)
{
GUILayout.Space(5);
EditorGUILayout.LabelField("Layer 1", headerStyle);
curWT.fogOverride.fogDensity = EditorGUILayout.Slider("Fog Density 1", curWT.fogOverride.fogDensity,0f,1f);
curWT.fogOverride.fogHeightFalloff = EditorGUILayout.Slider("Fog Height Falloff 1", curWT.fogOverride.fogHeightFalloff,0f,0.05f);
curWT.fogOverride.fogHeight = EditorGUILayout.FloatField("Fog Height 1 ", curWT.fogOverride.fogHeight);
GUILayout.Space(10);
EditorGUILayout.LabelField("Layer 2", headerStyle);
curWT.fogOverride.fogDensity2 = EditorGUILayout.Slider("Fog Density 2", curWT.fogOverride.fogDensity2,0f,1f);
curWT.fogOverride.fogHeightFalloff2 = EditorGUILayout.Slider("Fog Height Falloff 2", curWT.fogOverride.fogHeightFalloff2,0f,0.05f);
curWT.fogOverride.fogHeight2 = EditorGUILayout.FloatField("Fog Height 2", curWT.fogOverride.fogHeight2);
GUILayout.Space(10);
EditorGUILayout.LabelField("Color", headerStyle);
curWT.fogOverride.fogColorBlend = EditorGUILayout.Slider("Fog Sky-Color Blending", curWT.fogOverride.fogColorBlend,0f,1.0f);
curWT.fogOverride.fogColorMod = EditorGUILayout.ColorField("Fog Color Tint", curWT.fogOverride.fogColorMod);
GUILayout.Space(10);
#if !ENVIRO_HDRP
EditorGUILayout.LabelField("Unity Fog", headerStyle);
if(EnviroManager.instance != null && EnviroManager.instance.Fog.Settings.unityFogMode == FogMode.Linear)
{
curWT.fogOverride.unityFogStartDistance = EditorGUILayout.FloatField("Unity Fog Start Distance", curWT.fogOverride.unityFogStartDistance);
curWT.fogOverride.unityFogEndDistance = EditorGUILayout.FloatField("Unity Fog End Distance", curWT.fogOverride.unityFogEndDistance);
}
else
{
curWT.fogOverride.unityFogDensity = EditorGUILayout.FloatField("Unity Fog Density", curWT.fogOverride.unityFogDensity);
}
GUILayout.Space(10);
EditorGUILayout.LabelField("Volumetrics", headerStyle);
curWT.fogOverride.scattering = EditorGUILayout.Slider("Scattering Intensity", curWT.fogOverride.scattering,0f,2.0f);
curWT.fogOverride.extinction = EditorGUILayout.Slider("Extinction Intensity", curWT.fogOverride.extinction,0f,1.0f);
curWT.fogOverride.anistropy = EditorGUILayout.Slider("Anistropy", curWT.fogOverride.anistropy,0f,1.0f);
#else
EditorGUILayout.LabelField("HDRP Fog", headerStyle);
curWT.fogOverride.fogAttenuationDistance = EditorGUILayout.Slider("Attenuation Distance", curWT.fogOverride.fogAttenuationDistance,0f,4000f);
curWT.fogOverride.baseHeight = EditorGUILayout.FloatField("Base Height", curWT.fogOverride.baseHeight);
curWT.fogOverride.maxHeight = EditorGUILayout.FloatField("Max Height", curWT.fogOverride.maxHeight);
GUILayout.Space(10);
EditorGUILayout.LabelField("HDRP Volumetrics", headerStyle);
curWT.fogOverride.ambientDimmer = EditorGUILayout.Slider("Ambient Dimmer", curWT.fogOverride.ambientDimmer,0f,1f);
curWT.fogOverride.directLightMultiplier = EditorGUILayout.Slider("Direct Light Multiplier", curWT.fogOverride.directLightMultiplier,0f,16f);
curWT.fogOverride.directLightShadowdimmer = EditorGUILayout.Slider("Direct Light Shadow gimmer", curWT.fogOverride.directLightShadowdimmer,0f,1f);
#endif
}
GUILayout.EndVertical();
}
if(EnviroManager.instance == null || EnviroManager.instance.Effects != null)
{
//Effects
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showEffectControls = GUILayout.Toggle(curWT.showEffectControls, "Effects", headerFoldout);
if(curWT.showEffectControls)
{
GUILayout.Space(10);
if (GUILayout.Button ("Add"))
{
curWT.effectsOverride.effectsOverride.Add (new EnviroEffectsOverrideType());
EditorUtility.SetDirty(curWT);
}
GUILayout.Space(10);
for (int a = 0; a < curWT.effectsOverride.effectsOverride.Count; a++)
{
GUILayout.BeginVertical ("", boxStyleModified);
EditorGUILayout.BeginHorizontal();
curWT.effectsOverride.effectsOverride[a].showEditor = GUILayout.Toggle(curWT.effectsOverride.effectsOverride[a].showEditor, curWT.effectsOverride.effectsOverride[a].name, headerFoldout);
GUILayout.FlexibleSpace();
if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
{
curWT.effectsOverride.effectsOverride.Remove (curWT.effectsOverride.effectsOverride[a]);
EditorUtility.SetDirty(curWT);
return;
}
EditorGUILayout.EndHorizontal();
if(curWT.effectsOverride.effectsOverride[a].showEditor)
{
curWT.effectsOverride.effectsOverride[a].name = EditorGUILayout.TextField ("Effect Name", curWT.effectsOverride.effectsOverride[a].name);
curWT.effectsOverride.effectsOverride[a].emission = EditorGUILayout.Slider ("Emission", curWT.effectsOverride.effectsOverride[a].emission,0f,1f);
}
GUILayout.EndVertical ();
}
}
GUILayout.EndVertical();
}
if(EnviroManager.instance == null || EnviroManager.instance.Aurora != null)
{
//Aurora
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showAuroraControls = GUILayout.Toggle(curWT.showAuroraControls, "Aurora", headerFoldout);
if(curWT.showAuroraControls)
{
GUILayout.Space(5);
curWT.auroraOverride.auroraIntensity = EditorGUILayout.Slider("Aurora Intensity Modifier", curWT.auroraOverride.auroraIntensity,0f,1f);
}
GUILayout.EndVertical();
}
if(EnviroManager.instance == null || EnviroManager.instance.Environment != null)
{
//Environment
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showEnvironmentControls = GUILayout.Toggle(curWT.showEnvironmentControls, "Environment", headerFoldout);
if(EnviroManager.instance == null || curWT.showEnvironmentControls)
{
GUILayout.Space(5);
curWT.environmentOverride.temperatureWeatherMod = EditorGUILayout.Slider("Temperature Modifier", curWT.environmentOverride.temperatureWeatherMod,-20f,20f);
GUILayout.Space(5);
curWT.environmentOverride.wetnessTarget = EditorGUILayout.Slider("Wetness Target", curWT.environmentOverride.wetnessTarget,0f,1f);
curWT.environmentOverride.snowTarget = EditorGUILayout.Slider("Snow Target", curWT.environmentOverride.snowTarget,0f,1f);
GUILayout.Space(10);
curWT.environmentOverride.windDirectionX = EditorGUILayout.Slider("Wind Direction X", curWT.environmentOverride.windDirectionX,-1f,1f);
curWT.environmentOverride.windDirectionY = EditorGUILayout.Slider("Wind Direction Y", curWT.environmentOverride.windDirectionY,-1f,1f);
GUILayout.Space(5);
curWT.environmentOverride.windSpeed = EditorGUILayout.Slider("Wind Speed", curWT.environmentOverride.windSpeed,0f,1f);
curWT.environmentOverride.windTurbulence = EditorGUILayout.Slider("Wind Turbulence", curWT.environmentOverride.windTurbulence,0f,1f); }
GUILayout.EndVertical();
}
if(EnviroManager.instance == null || EnviroManager.instance.Lightning != null)
{
//Lightning
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showLightningControls = GUILayout.Toggle(curWT.showLightningControls, "Lightning", headerFoldout);
if(curWT.showLightningControls)
{
GUILayout.Space(5);
curWT.lightningOverride.lightningStorm = EditorGUILayout.Toggle("Lightning Storm", curWT.lightningOverride.lightningStorm);
curWT.lightningOverride.randomLightningDelay = EditorGUILayout.Slider("Lightning Delay", curWT.lightningOverride.randomLightningDelay,1f,60f);
}
GUILayout.EndVertical();
}
if(EnviroManager.instance == null || EnviroManager.instance.Audio != null)
{
//Audio
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showAudioControls = GUILayout.Toggle(curWT.showAudioControls, "Audio", headerFoldout);
if(curWT.showAudioControls)
{
GUILayout.Space(5);
//Ambient SFX
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showAmbientAudioControls = GUILayout.Toggle(curWT.showAmbientAudioControls, "Ambient", headerFoldout);
if(curWT.showAmbientAudioControls)
{
GUILayout.Space(10);
if (GUILayout.Button ("Add"))
{
curWT.audioOverride.ambientOverride.Add (new EnviroAudioOverrideType());
EditorUtility.SetDirty(curWT);
}
GUILayout.Space(10);
for (int a = 0; a < curWT.audioOverride.ambientOverride.Count; a++)
{
GUILayout.BeginVertical ("", boxStyleModified);
EditorGUILayout.BeginHorizontal();
curWT.audioOverride.ambientOverride[a].showEditor = GUILayout.Toggle(curWT.audioOverride.ambientOverride[a].showEditor, curWT.audioOverride.ambientOverride[a].name, headerFoldout);
GUILayout.FlexibleSpace();
if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
{
curWT.audioOverride.ambientOverride.Remove (curWT.audioOverride.ambientOverride[a]);
EditorUtility.SetDirty(curWT);
return;
}
EditorGUILayout.EndHorizontal();
if(curWT.audioOverride.ambientOverride[a].showEditor)
{
curWT.audioOverride.ambientOverride[a].name = EditorGUILayout.TextField ("Audio Name", curWT.audioOverride.ambientOverride[a].name);
curWT.audioOverride.ambientOverride[a].volume = EditorGUILayout.Slider ("Volume", curWT.audioOverride.ambientOverride[a].volume,0f,1f);
}
GUILayout.EndVertical ();
}
}
GUILayout.EndVertical ();
//Weather SFX
GUILayout.BeginVertical ("", boxStyleModified);
curWT.showWeatherAudioControls = GUILayout.Toggle(curWT.showWeatherAudioControls, "Weather", headerFoldout);
if(curWT.showWeatherAudioControls)
{
GUILayout.Space(10);
if (GUILayout.Button ("Add"))
{
curWT.audioOverride.weatherOverride.Add (new EnviroAudioOverrideType());
EditorUtility.SetDirty(curWT);
}
GUILayout.Space(10);
for (int a = 0; a < curWT.audioOverride.weatherOverride.Count; a++)
{
GUILayout.BeginVertical ("", boxStyleModified);
EditorGUILayout.BeginHorizontal();
curWT.audioOverride.weatherOverride[a].showEditor = GUILayout.Toggle(curWT.audioOverride.weatherOverride[a].showEditor, curWT.audioOverride.weatherOverride[a].name, headerFoldout);
GUILayout.FlexibleSpace();
if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
{
curWT.audioOverride.weatherOverride.Remove (curWT.audioOverride.weatherOverride[a]);
EditorUtility.SetDirty(curWT);
return;
}
EditorGUILayout.EndHorizontal();
if(curWT.audioOverride.weatherOverride[a].showEditor)
{
curWT.audioOverride.weatherOverride[a].name = EditorGUILayout.TextField ("Audio Name", curWT.audioOverride.weatherOverride[a].name);
curWT.audioOverride.weatherOverride[a].volume = EditorGUILayout.Slider ("Volume", curWT.audioOverride.weatherOverride[a].volume,0f,1f);
}
GUILayout.EndVertical ();
}
}
GUILayout.EndVertical ();
}
GUILayout.EndVertical();
}
//END
}
GUILayout.EndVertical ();
GUILayout.Space(2.5f);
}
}
GUILayout.EndVertical ();
/// Transition Foldout
GUI.backgroundColor = categoryModuleColor;
GUILayout.BeginVertical("",boxStyleModified);
GUI.backgroundColor = Color.white;
myTarget.showTransitionControls = GUILayout.Toggle(myTarget.showTransitionControls, "Transition Controls", headerFoldout);
if(myTarget.showTransitionControls)
{
GUILayout.Space(5);
EditorGUILayout.PropertyField(cloudsTransitionSpeed);
EditorGUILayout.PropertyField(fogTransitionSpeed);
EditorGUILayout.PropertyField(skyTransitionSpeed);
EditorGUILayout.PropertyField(lightingTransitionSpeed);
EditorGUILayout.PropertyField(effectsTransitionSpeed);
EditorGUILayout.PropertyField(auroraTransitionSpeed);
EditorGUILayout.PropertyField(environmentTransitionSpeed);
EditorGUILayout.PropertyField(audioTransitionSpeed);
}
GUILayout.EndVertical ();
///Zone Foldout
if(EnviroManager.instance != null)
{
GUI.backgroundColor = categoryModuleColor;
GUILayout.BeginVertical("",boxStyleModified);
GUI.backgroundColor = Color.white;
myTarget.showZoneControls = GUILayout.Toggle(myTarget.showZoneControls, "Zone Controls", headerFoldout);
if(myTarget.showZoneControls)
{
GUILayout.Space(5);
EditorGUILayout.PropertyField(globalAutoWeatherChange);
GUILayout.Space(5);
EnviroManager.instance.defaultZone = (EnviroZone)EditorGUILayout.ObjectField ("Default Zone", EnviroManager.instance.defaultZone, typeof(EnviroZone), true);
EnviroManager.instance.currentZone = (EnviroZone)EditorGUILayout.ObjectField ("Current Zone", EnviroManager.instance.currentZone, typeof(EnviroZone), true);
GUILayout.Space(5);
GUILayout.Label("Zones List" , headerStyle);
GUILayout.Space(5);
for (int i = 0; i < EnviroManager.instance.zones.Count; i++)
{
if(EnviroManager.instance.zones[i] != null)
{
GUI.backgroundColor = EnviroManager.instance.zones[i].zoneGizmoColor;
GUILayout.BeginVertical(EnviroManager.instance.zones[i].gameObject.name,boxStyleModified);
GUI.backgroundColor = Color.white;
EditorGUILayout.BeginHorizontal();
GUILayout.FlexibleSpace();
if(GUILayout.Button("Show", EditorStyles.miniButtonRight,GUILayout.Width(100), GUILayout.Height(18)))
{
UnityEditor.Selection.activeObject = EnviroManager.instance.zones[i];
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
if(EnviroManager.instance.zones[i].currentWeatherType != null)
GUILayout.Label("Current Weather: " + EnviroManager.instance.zones[i].currentWeatherType.name , wrapStyle);
else
GUILayout.Label("Current Weather: Not Set" , wrapStyle);
if(EnviroManager.instance.zones[i].nextWeatherType != null)
GUILayout.Label("Next Weather: " + EnviroManager.instance.zones[i].nextWeatherType.name, wrapStyle);
else
GUILayout.Label("Next Weather: Not Set" , wrapStyle);
EditorGUILayout.EndHorizontal();
GUILayout.EndVertical ();
}
}
}
GUILayout.EndVertical ();
}
/// Save Load
GUI.backgroundColor = categoryModuleColor;
GUILayout.BeginVertical("",boxStyleModified);
GUI.backgroundColor = Color.white;
myTarget.showSaveLoad = GUILayout.Toggle(myTarget.showSaveLoad, "Save/Load", headerFoldout);
if(myTarget.showSaveLoad)
{
EditorGUILayout.PropertyField(preset);
GUILayout.BeginHorizontal("",wrapStyle);
if(myTarget.preset != null)
{
if(GUILayout.Button("Load"))
{
myTarget.LoadModuleValues();
}
if(GUILayout.Button("Save"))
{
myTarget.SaveModuleValues(myTarget.preset);
}
}
if(GUILayout.Button("Save As New"))
{
myTarget.SaveModuleValues();
}
GUILayout.EndHorizontal();
}
GUILayout.EndVertical();
/// Save Load End
ApplyChanges ();
}
GUILayout.EndVertical();
if(myTarget.showModuleInspector)
GUILayout.Space(20);
}
}
}