123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEditor;
- namespace Enviro
- {
- [CustomEditor(typeof(EnviroEffectsModule))]
- public class EnviroEffectsModuleEditor : EnviroModuleEditor
- {
- private EnviroEffectsModule myTarget;
- //Properties
- private SerializedProperty rain1Emission, rain2Emission, snow1Emission, snow2Emission,custom1Emission, custom2Emission;
-
- //On Enable
- public override void OnEnable()
- {
- if(!target)
- return;
- myTarget = (EnviroEffectsModule)target;
- serializedObj = new SerializedObject(myTarget);
- preset = serializedObj.FindProperty("preset");
-
- //Emission Rates
- rain1Emission = serializedObj.FindProperty("Settings.rain1Emission");
- rain2Emission = serializedObj.FindProperty("Settings.rain2Emission");
- snow1Emission = serializedObj.FindProperty("Settings.snow1Emission");
- snow2Emission = serializedObj.FindProperty("Settings.snow2Emission");
- custom1Emission = serializedObj.FindProperty("Settings.custom1Emission");
- custom2Emission = serializedObj.FindProperty("Settings.custom2Emission");
- }
- 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, "Effects", headerFoldout);
-
- GUILayout.FlexibleSpace();
- if(GUILayout.Button("x", EditorStyles.miniButtonRight,GUILayout.Width(18), GUILayout.Height(18)))
- {
- EnviroManager.instance.RemoveModule(EnviroManager.ModuleType.Effects);
- DestroyImmediate(this);
- return;
- }
-
- EditorGUILayout.EndHorizontal();
-
- if(myTarget.showModuleInspector)
- {
- RenderDisableInputBox();
- serializedObj.UpdateIfRequiredOrScript ();
- EditorGUI.BeginChangeCheck();
- GUI.backgroundColor = categoryModuleColor;
- GUILayout.BeginVertical("",boxStyleModified);
- GUI.backgroundColor = Color.white;
- myTarget.showEmissionControls = GUILayout.Toggle(myTarget.showEmissionControls, "Emission Rates", headerFoldout);
- if(myTarget.showEmissionControls)
- {
- DisableInputStart();
- EditorGUILayout.PropertyField(rain1Emission);
- EditorGUILayout.PropertyField(rain2Emission);
- GUILayout.Space(5);
- EditorGUILayout.PropertyField(snow1Emission);
- EditorGUILayout.PropertyField(snow2Emission);
- GUILayout.Space(5);
- EditorGUILayout.PropertyField(custom1Emission);
- EditorGUILayout.PropertyField(custom2Emission);
- DisableInputEnd();
- }
- GUILayout.EndVertical();
- GUI.backgroundColor = categoryModuleColor;
- GUILayout.BeginVertical("",boxStyleModified);
- GUI.backgroundColor = Color.white;
- myTarget.showSetupControls = GUILayout.Toggle(myTarget.showSetupControls, "Setup", headerFoldout);
- if(myTarget.showSetupControls)
- {
- GUILayout.Space(10);
- if (!Application.isPlaying)
- {
- if (GUILayout.Button ("Add"))
- {
- myTarget.Settings.effectTypes.Add (new EnviroEffectTypes ());
- }
- }
- else
- EditorGUILayout.LabelField ("Can't add effects in runtime!");
- if (GUILayout.Button ("Apply Changes"))
- {
- myTarget.CreateEffects();
- }
- GUILayout.Space(10);
-
- for (int i = 0; i < myTarget.Settings.effectTypes.Count; i++)
- {
- GUILayout.BeginVertical (myTarget.Settings.effectTypes[i].name, boxStyleModified);
- GUILayout.Space(15);
- myTarget.Settings.effectTypes[i].name = EditorGUILayout.TextField ("Effect Name", myTarget.Settings.effectTypes[i].name);
- myTarget.Settings.effectTypes[i].prefab = (GameObject)EditorGUILayout.ObjectField ("Effect Prefab", myTarget.Settings.effectTypes[i].prefab, typeof(GameObject), true);
- myTarget.Settings.effectTypes [i].localPositionOffset = EditorGUILayout.Vector3Field ("Position Offset", myTarget.Settings.effectTypes [i].localPositionOffset);
- myTarget.Settings.effectTypes [i].localRotationOffset = EditorGUILayout.Vector3Field ("Rotation Offset", myTarget.Settings.effectTypes [i].localRotationOffset);
- GUILayout.Space(10);
- myTarget.Settings.effectTypes [i].controlType = (Enviro.EnviroEffectTypes.ControlType)EditorGUILayout.EnumPopup ("Control Type", myTarget.Settings.effectTypes [i].controlType);
- myTarget.Settings.effectTypes [i].maxEmission = EditorGUILayout.FloatField ("Maximum Emission", myTarget.Settings.effectTypes [i].maxEmission);
- if (GUILayout.Button ("Remove"))
- {
- myTarget.Settings.effectTypes.Remove (myTarget.Settings.effectTypes[i]);
- }
- 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);
- }
- }
- }
|