2024-02-12 20:50:24 +00:00
|
|
|
using UnityEditor;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
|
|
namespace BlueWaterProject
|
|
|
|
{
|
2024-03-05 03:47:17 +00:00
|
|
|
[CustomEditor(typeof(Patrol),true)]
|
2024-02-12 20:50:24 +00:00
|
|
|
public class ShipPatrolEditor : Editor
|
|
|
|
{
|
|
|
|
private void OnSceneGUI()
|
|
|
|
{
|
|
|
|
Handles.color = Color.green;
|
2024-03-05 03:47:17 +00:00
|
|
|
var patrol = (Patrol)target;
|
2024-02-12 20:50:24 +00:00
|
|
|
|
|
|
|
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)
|
|
|
|
{
|
2024-03-05 03:47:17 +00:00
|
|
|
var patrolSetting = (Patrol)target;
|
2024-02-12 20:50:24 +00:00
|
|
|
if (patrolSetting.LockHandlesOnXAxis)
|
|
|
|
{
|
|
|
|
newPoint.x = oldPoint.x;
|
|
|
|
}
|
|
|
|
if (patrolSetting.LockHandlesOnYAxis)
|
|
|
|
{
|
|
|
|
newPoint.y = oldPoint.y;
|
|
|
|
}
|
|
|
|
if (patrolSetting.LockHandlesOnZAxis)
|
|
|
|
{
|
|
|
|
newPoint.z = oldPoint.z;
|
|
|
|
}
|
|
|
|
|
|
|
|
return newPoint;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|