Editor/SplineComponentEditorTool.cs
using Sandbox;
using Editor;
namespace RedSnail.RoadTool.Editor;
/// <summary>
/// Create and manage road splines.
/// </summary>
[Title("Road Splines")]
[Icon("timeline")]
[Alias("road_splines")]
[Group("1")]
[Order(1)]
public class SplineEditorTool : EditorTool<RoadComponent>
{
private RoadToolWindow m_Window;
private RoadComponent m_SelectedRoadComponent;
public override void OnEnabled()
{
m_Window = new RoadToolWindow();
AddOverlay(m_Window, TextFlag.RightBottom, 10);
}
public override void OnDisabled()
{
m_Window?.OnDisabled();
}
public override void OnUpdate()
{
m_Window?.OnUpdate();
}
public override void OnSelectionChanged()
{
RoadComponent target = GetSelectedComponent<RoadComponent>();
if (!target.IsValid())
return;
// Fix because otherwise it get triggered everytime a value get edited on the road spline
if (target != m_SelectedRoadComponent)
{
m_Window?.OnSelectionChanged(target);
m_SelectedRoadComponent = target;
}
}
}