OldBlueWater/BlueWater/Assets/02.Scripts/Editor/PatrolEditor.cs

57 lines
1.8 KiB
C#
Raw Normal View History

using UnityEditor;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
[CustomEditor(typeof(Patrol),true)]
public class ShipPatrolEditor : Editor
{
private void OnSceneGUI()
{
Handles.color = Color.green;
var patrol = (Patrol)target;
for (var i = 0; i < patrol.WayPoints.Length; i++)
{
EditorGUI.BeginChangeCheck();
var oldPoint = patrol.OriginalPoint + patrol.WayPoints[i].Point;
var style = new GUIStyle();
style.normal.textColor = Color.yellow;
Handles.Label(patrol.OriginalPoint + patrol.WayPoints[i].Point +
(Vector3.down * 0.4f) + (Vector3.right * 0.4f), "" + i, style);
var newPoint = Handles.FreeMoveHandle(oldPoint, 0.5f,
new Vector3(0.25f, 0.25f, 0.25f), Handles.CircleHandleCap);
newPoint = ApplyAxisLock(oldPoint, newPoint);
if (EditorGUI.EndChangeCheck())
{
Undo.RecordObject(target, "Free Move Handle");
patrol.WayPoints[i].Point = newPoint - patrol.OriginalPoint;
}
}
}
private Vector3 ApplyAxisLock(Vector3 oldPoint, Vector3 newPoint)
{
var patrolSetting = (Patrol)target;
if (patrolSetting.LockHandlesOnXAxis)
{
newPoint.x = oldPoint.x;
}
if (patrolSetting.LockHandlesOnYAxis)
{
newPoint.y = oldPoint.y;
}
if (patrolSetting.LockHandlesOnZAxis)
{
newPoint.z = oldPoint.z;
}
return newPoint;
}
}
}