Files
old-game/Assets/Low Poly Animated People/- Scripts/AIScripts/Editor/WanderScriptEditor.cs
2020-01-11 07:32:13 +01:00

159 lines
6.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.Linq;
namespace PolyPerfect
{
[CustomEditor(typeof(WanderScript))]
[CanEditMultipleObjects]
public class WanderScriptEditor : Editor
{
static bool AnimationStates, AIControls, DEBUGToggle, StateEvents = false;
public override void OnInspectorGUI()
{
WanderScript myWanderScript = (WanderScript)target;
serializedObject.Update();
//Get Lists
SerializedProperty idleStates = serializedObject.FindProperty("idleStates");
SerializedProperty movementStates = serializedObject.FindProperty("movementStates");
SerializedProperty attackingStates = serializedObject.FindProperty("attackingStates");
SerializedProperty deathStates = serializedObject.FindProperty("deathStates");
//Death Unity Event
SerializedProperty deathEvent = serializedObject.FindProperty("deathEvent");
SerializedProperty attackingEvent = serializedObject.FindProperty("attackingEvent");
SerializedProperty idleEvent = serializedObject.FindProperty("idleEvent");
SerializedProperty movementEvent = serializedObject.FindProperty("movementEvent");
//Get Strings
SerializedProperty species = serializedObject.FindProperty("species");
//Get Animal Stats
SerializedProperty stats = serializedObject.FindProperty("stats");
//Get AI Controls
SerializedProperty wanderSize = serializedObject.FindProperty("wanderZone");
SerializedProperty awareness = serializedObject.FindProperty("awareness");
SerializedProperty scent = serializedObject.FindProperty("scent");
SerializedProperty constainedToWanderZone = serializedObject.FindProperty("constainedToWanderZone");
SerializedProperty nonAgressiveTowards = serializedObject.FindProperty("nonAgressiveTowards");
SerializedProperty surfaceRotationSpeed = serializedObject.FindProperty("surfaceRotationSpeed");
SerializedProperty matchSurfaceRotation = serializedObject.FindProperty("matchSurfaceRotation");
///DEBUG
SerializedProperty logChanges = serializedObject.FindProperty("logChanges");
SerializedProperty showGizmos = serializedObject.FindProperty("showGizmos");
SerializedProperty drawWanderRange = serializedObject.FindProperty("drawWanderRange");
SerializedProperty drawScentRange = serializedObject.FindProperty("drawScentRange");
SerializedProperty drawAwarenessRange = serializedObject.FindProperty("drawAwarenessRange");
//Load a Texture (Assets/Resources/Textures/texture01.png)
var mainTexture = Resources.Load<Texture2D>("WanderScriptLogo");
//Main Image
GUILayout.BeginHorizontal();
GUILayout.Label(mainTexture);
GUILayout.EndHorizontal();
//Draw The Species Name
EditorGUILayout.PropertyField(species);
EditorGUILayout.PropertyField(stats);
if (GUILayout.Button("Show Animation States",GUILayout.MaxWidth(Screen.width - 30)))
{
AnimationStates = !AnimationStates;
}
if (AnimationStates)
{
GUILayout.BeginHorizontal();
//GUILayout.Label(idleTexture);
GUILayout.EndHorizontal();
EditorGUILayout.PropertyField(idleStates, true);
GUILayout.BeginHorizontal();
//GUILayout.Label(movementTexture);
GUILayout.EndHorizontal();
EditorGUILayout.PropertyField(movementStates, true);
GUILayout.BeginHorizontal();
//GUILayout.Label(attackingTexture);
GUILayout.EndHorizontal();
EditorGUILayout.PropertyField(attackingStates, true);
GUILayout.BeginHorizontal();
//GUILayout.Label(deathTexture);
GUILayout.EndHorizontal();
EditorGUILayout.PropertyField(deathStates, true);
}
if (GUILayout.Button("Show State Unity Events", GUILayout.MaxWidth(Screen.width - 30)))
{
StateEvents = !StateEvents;
}
if (StateEvents)
{
var width = GUILayout.MaxWidth(Screen.width);
EditorGUILayout.PropertyField(idleEvent, width);
EditorGUILayout.PropertyField(movementEvent, width);
EditorGUILayout.PropertyField(attackingEvent, width);
EditorGUILayout.PropertyField(deathEvent, width);
}
if (GUILayout.Button("Show AI Controls", GUILayout.MaxWidth(Screen.width - 30)))
{
AIControls = !AIControls;
}
if (AIControls)
{
GUILayout.BeginHorizontal();
//GUILayout.Label(AITexture);
GUILayout.EndHorizontal();
EditorGUILayout.PropertyField(wanderSize);
EditorGUILayout.PropertyField(awareness);
EditorGUILayout.PropertyField(scent);
EditorGUILayout.PropertyField(constainedToWanderZone);
EditorGUILayout.PropertyField(nonAgressiveTowards, true);
EditorGUILayout.PropertyField(matchSurfaceRotation, true);
EditorGUILayout.PropertyField(surfaceRotationSpeed, true);
}
if (GUILayout.Button("Show DEBUG Options",GUILayout.MaxWidth(Screen.width - 30)))
{
DEBUGToggle = !DEBUGToggle;
}
if (DEBUGToggle)
{
EditorGUILayout.PropertyField(logChanges);
EditorGUILayout.PropertyField(showGizmos);
EditorGUILayout.PropertyField(drawWanderRange);
EditorGUILayout.PropertyField(drawScentRange);
EditorGUILayout.PropertyField(drawAwarenessRange, true);
}
serializedObject.ApplyModifiedProperties();
//DrawDefaultInspector();
}
}
}