using System.Collections.Generic;
|
using UnityEditor;
|
using UnityEngine;
|
|
|
namespace PigeonCoopToolkit.Effects.Trails.Editor
|
{
|
|
public class TrailEditor_Base : UnityEditor.Editor
|
{
|
|
|
public static TrailPreviewUtillity win;
|
|
protected List<string> ExcludedDefaultPropties = new List<string>();
|
|
public override void OnInspectorGUI()
|
{
|
|
TrailRenderer_Base t = (TrailRenderer_Base)serializedObject.targetObject;
|
if (t == null)
|
return;
|
|
float defaultLabelWidth = EditorGUIUtility.labelWidth;
|
float defaultFieldWidth = EditorGUIUtility.fieldWidth;
|
GUILayout.Space(5);
|
|
GUILayout.BeginVertical();
|
|
if (!ExcludedDefaultPropties.Contains("TrailData.Lifetime"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.Lifetime"));
|
}
|
|
EditorGUIUtility.labelWidth = defaultLabelWidth;
|
EditorGUIUtility.fieldWidth = defaultFieldWidth;
|
|
|
GUILayout.BeginHorizontal();
|
EditorGUIUtility.fieldWidth = defaultLabelWidth - 80;
|
if (!ExcludedDefaultPropties.Contains("TrailData.TrailMaterial"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.TrailMaterial"));
|
}
|
GUILayout.Space(10);
|
EditorGUIUtility.labelWidth = 30;
|
EditorGUIUtility.fieldWidth = 40;
|
if (!ExcludedDefaultPropties.Contains("TrailData.MaterialTileLength"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.MaterialTileLength"), new GUIContent("Tile"), GUILayout.Width(70));
|
}
|
GUILayout.EndHorizontal();
|
|
EditorGUIUtility.labelWidth = defaultLabelWidth;
|
EditorGUIUtility.fieldWidth = defaultFieldWidth;
|
|
|
GUILayout.BeginHorizontal();
|
if (!ExcludedDefaultPropties.Contains("TrailData.SizeOverLife"))
|
{
|
if (t.TrailData.UsingSimpleSize)
|
{
|
EditorGUILayout.LabelField("Size Over Life", GUILayout.Width(defaultLabelWidth));
|
serializedObject.FindProperty("TrailData.SimpleSizeOverLifeStart").floatValue =
|
EditorGUILayout.FloatField(serializedObject.FindProperty("TrailData.SimpleSizeOverLifeStart").floatValue);
|
serializedObject.FindProperty("TrailData.SimpleSizeOverLifeEnd").floatValue =
|
EditorGUILayout.FloatField(serializedObject.FindProperty("TrailData.SimpleSizeOverLifeEnd").floatValue);
|
|
}
|
else
|
{
|
EditorGUIUtility.fieldWidth = defaultLabelWidth - 80;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.SizeOverLife"));
|
}
|
|
}
|
|
GUILayout.Space(10);
|
EditorGUIUtility.labelWidth = 50;
|
EditorGUIUtility.fieldWidth = 20;
|
if (!ExcludedDefaultPropties.Contains("TrailData.StretchSizeToFit"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.StretchSizeToFit"), new GUIContent("Stretch"), GUILayout.Width(70));
|
}
|
GUILayout.EndHorizontal();
|
|
EditorGUIUtility.labelWidth = defaultLabelWidth;
|
EditorGUIUtility.fieldWidth = defaultFieldWidth;
|
|
GUILayout.BeginHorizontal();
|
EditorGUIUtility.fieldWidth = defaultLabelWidth - 80;
|
|
if (!ExcludedDefaultPropties.Contains("TrailData.ColorOverLife"))
|
{
|
if (t.TrailData.UsingSimpleColor)
|
{
|
EditorGUIUtility.fieldWidth = (defaultFieldWidth - 80)/2f;
|
|
EditorGUILayout.LabelField("Color Over Life", GUILayout.Width(defaultLabelWidth));
|
serializedObject.FindProperty("TrailData.SimpleColorOverLifeStart").colorValue =
|
EditorGUILayout.ColorField(serializedObject.FindProperty("TrailData.SimpleColorOverLifeStart").colorValue);
|
serializedObject.FindProperty("TrailData.SimpleColorOverLifeEnd").colorValue =
|
EditorGUILayout.ColorField(serializedObject.FindProperty("TrailData.SimpleColorOverLifeEnd").colorValue);
|
|
}
|
else
|
{
|
EditorGUIUtility.fieldWidth = defaultLabelWidth - 80;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.ColorOverLife"));
|
}
|
|
}
|
GUILayout.Space(10);
|
EditorGUIUtility.labelWidth = 50;
|
EditorGUIUtility.fieldWidth = 20;
|
if (!ExcludedDefaultPropties.Contains("TrailData.StretchColorToFit"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.StretchColorToFit"), new GUIContent("Stretch"), GUILayout.Width(70));
|
}
|
GUILayout.EndHorizontal();
|
EditorGUIUtility.labelWidth = defaultLabelWidth;
|
EditorGUIUtility.fieldWidth = defaultFieldWidth;
|
|
if (!ExcludedDefaultPropties.Contains("TrailData.UseForwardOverride"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.UseForwardOverride"));
|
}
|
if (t.TrailData.UseForwardOverride)
|
{
|
EditorGUI.indentLevel++;
|
|
if (!ExcludedDefaultPropties.Contains("TrailData.ForwardOverride"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.ForwardOverride"));
|
}
|
|
if (!ExcludedDefaultPropties.Contains("TrailData.ForwardOverrideRelative"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("TrailData.ForwardOverrideRelative"), new GUIContent("Override Relative"));
|
}
|
|
EditorGUI.indentLevel--;
|
}
|
|
|
DrawTrailSpecificGUI();
|
|
if (!ExcludedDefaultPropties.Contains("Emit"))
|
{
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("Emit"));
|
}
|
|
GUILayout.EndVertical();
|
|
|
|
|
serializedObject.ApplyModifiedProperties();
|
serializedObject.UpdateIfDirtyOrScript();
|
|
|
GUILayout.Space(5);
|
if (GUILayout.Button("Open preview"))
|
{
|
// Get existing open window or if none, make a new one:
|
win = (TrailPreviewUtillity)EditorWindow.GetWindow(typeof(TrailPreviewUtillity), true, "Normalized Trail Preview");
|
win.minSize = new Vector2(900, 140);
|
win.maxSize = new Vector2(900, 140);
|
win.Trail = t;
|
}
|
|
}
|
|
protected virtual void DrawTrailSpecificGUI()
|
{}
|
}
|
}
|