OldBlueWater/BlueWater/Assets/02.Scripts/Editor/PatrolEditor.cs
NTG 86f9d2607e Closes #213 #214 해적선 Ai 추가 및 항해 씬 취합
+ 해적선 Ai 추가
  ㄴ 패트롤, 추격, 공격 등의 패턴 적용
+ Cannon 클래스 분리
  ㄴ 캐논 자체의 기능만 남기고, Player는 CannonController와 연결해서 사용
+ Player, Pirate 용 cannon projectile 분리
+ New input system 네이밍 변경
  ㄴ ToggleCannon -> ToggleLaunchMode
  ㄴ FireCannon -> LaunchCannon
+ 해적선 Ai에 Rayfire(파괴) 기능 테스트용 추가
2024-03-05 12:47:17 +09:00

57 lines
1.8 KiB
C#

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;
}
}
}