Files
2024-11-19 11:48:21 +01:00

64 lines
1.7 KiB
C#

using UnityEditor;
using UnityEngine;
namespace Gley.UrbanSystem.Editor
{
internal class Drawer
{
private readonly bool _showDebugMessages = false;
private readonly EditorData _data;
private readonly Quaternion _arrowSide1 = Quaternion.Euler(0, -25, 0);
private readonly Quaternion _arrowSide2 = Quaternion.Euler(0, 25, 0);
private Vector3 _direction;
protected GUIStyle _style;
protected bool _cameraMoved;
protected Drawer(EditorData data)
{
if (_showDebugMessages)
{
Debug.Log("Initialize " + this);
}
_data = data;
data.OnModified += Refresh;
_style = new GUIStyle();
SceneCameraTracker.OnSceneCameraMoved += CameraMoved;
SceneCameraTracker.TriggerSceneCameraMovedEvent();
}
protected void DrawTriangle(Vector3 start, Vector3 end)
{
_direction = (start - end).normalized;
Handles.DrawPolyLine(end, end + _arrowSide1 * _direction, end + _arrowSide2 * _direction, end);
}
private void Refresh()
{
SceneCameraTracker.TriggerSceneCameraMovedEvent();
SceneView.RepaintAll();
}
private void CameraMoved()
{
_cameraMoved = true;
}
internal virtual void OnDestroy()
{
if (_showDebugMessages)
{
Debug.Log("OnDestroy " + this);
}
_data.OnModified -= Refresh;
SceneCameraTracker.OnSceneCameraMoved -= CameraMoved;
}
}
}