You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/Feel/MMTools/Editor/MMMovement/MMPathMovement/MMPathMovementEditor.cs

78 lines
1.9 KiB
C#

#if UNITY_EDITOR
using UnityEngine;
using UnityEditor;
using System.Collections;
namespace MoreMountains.Tools
{
/// <summary>
/// This class adds names for each LevelMapPathElement next to it on the scene view, for easier setup
/// </summary>
[CustomEditor(typeof(MMPathMovement),true)]
[InitializeOnLoad]
public class MMPathMovementEditor : Editor
{
public MMPathMovement pathMovementTarget
{
get
{
return (MMPathMovement)target;
}
}
public override void OnInspectorGUI()
{
serializedObject.Update ();
if (pathMovementTarget.AccelerationType == MMPathMovement.PossibleAccelerationType.AnimationCurve)
{
DrawDefaultInspector ();
}
else
{
Editor.DrawPropertiesExcluding (serializedObject, new string [] { "Acceleration" });
}
serializedObject.ApplyModifiedProperties ();
}
/// <summary>
/// OnSceneGUI, draws repositionable handles at every point in the path, for easier setup
/// </summary>
protected virtual void OnSceneGUI()
{
Handles.color = Color.green;
MMPathMovement t = (target as MMPathMovement);
if (t.GetOriginalTransformPositionStatus() == false)
{
return;
}
for (int i=0;i<t.PathElements.Count;i++)
{
EditorGUI.BeginChangeCheck();
Vector3 oldPoint = t.PointPosition(i);
GUIStyle style = new GUIStyle();
// draws the path item number
style.normal.textColor = Color.yellow;
Handles.Label(t.PointPosition(i) + (Vector3.down*0.4f) + (Vector3.right*0.4f), ""+i,style);
// draws a movable handle
var fmh_65_57_638273671351788380 = Quaternion.identity; Vector3 newPoint = Handles.FreeMoveHandle(oldPoint,.5f,new Vector3(.25f,.25f,.25f),Handles.CircleHandleCap);
// records changes
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(target, "Free Move Handle");
t.PathElements[i].PathElementPosition = newPoint - t.GetOriginalTransformPosition();
}
}
}
}
}
#endif