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() 
 | 
        {} 
 | 
    } 
 | 
} 
 |