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.
78 lines
1.9 KiB
C#
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 |