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

139 lines
5.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
namespace Enviro
{
[CustomEditor(typeof(EnviroLightningModule))]
public class EnviroLightningModuleEditor : EnviroModuleEditor
{
private EnviroLightningModule myTarget;
//Properties
private SerializedProperty prefab, lightningStorm,randomLightingDelay, randomSpawnRange, randomTargetRange,cloudsLightningRadius ,cloudsLightningDuration;
//On Enable
public override void OnEnable()
{
base.OnEnable();
if(!target)
return;
myTarget = (EnviroLightningModule)target;
serializedObj = new SerializedObject(myTarget);
preset = serializedObj.FindProperty("preset");
prefab = serializedObj.FindProperty("Settings.prefab");
lightningStorm = serializedObj.FindProperty("Settings.lightningStorm");
randomLightingDelay = serializedObj.FindProperty("Settings.randomLightingDelay");
randomSpawnRange = serializedObj.FindProperty("Settings.randomSpawnRange");
randomTargetRange = serializedObj.FindProperty("Settings.randomTargetRange");
cloudsLightningRadius = serializedObj.FindProperty("Settings.cloudsLightningRadius");
cloudsLightningDuration = serializedObj.FindProperty("Settings.cloudsLightningDuration");
}
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, "Lightning", headerFoldout);
GUILayout.FlexibleSpace();
if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
{
EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Lightning); //Add Remove
DestroyImmediate(this);
return;
}
EditorGUILayout.EndHorizontal();
if(myTarget.showModuleInspector)
{
RenderDisableInputBox();
serializedObj.UpdateIfRequiredOrScript ();
EditorGUI.BeginChangeCheck();
// Set Values
GUI.backgroundColor = categoryModuleColor;
GUILayout.BeginVertical("",boxStyleModified);
GUI.backgroundColor = Color.white;
myTarget.showLightningControls = GUILayout.Toggle(myTarget.showLightningControls, "Lightning Controls", headerFoldout);
if(myTarget.showLightningControls)
{
GUILayout.Space(10);
DisableInputStart();
EditorGUILayout.PropertyField(lightningStorm);
DisableInputEnd();
GUILayout.Space(5);
EditorGUILayout.PropertyField(prefab);
GUILayout.Space(5);
EditorGUILayout.LabelField("Random Lighting Storm", headerStyle);
DisableInputStart();
EditorGUILayout.PropertyField(randomLightingDelay);
DisableInputEnd();
EditorGUILayout.PropertyField(randomSpawnRange);
EditorGUILayout.PropertyField(randomTargetRange);
GUILayout.Space(5);
EditorGUILayout.LabelField("Volumetric Clouds", headerStyle);
EditorGUILayout.PropertyField(cloudsLightningRadius);
EditorGUILayout.PropertyField(cloudsLightningDuration);
}
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);
}
}
}