Code/ISplineComponent.cs

Interface for a component that exposes an editable Sandbox.Spline plus its world transform and owning GameObject. Allows spline editor tools to work with different spline-bearing components.

Native Interop
using Sandbox;

namespace RedSnail.RoadTool;

/// <summary>
/// A component that owns an editable <see cref="Sandbox.Spline"/>. Lets the spline editor tool/window drive any of
/// them (roads, rails, …) without being tied to a single component type.
/// </summary>
public interface ISplineComponent : IValid
{
	Spline Spline { get; }
	Transform WorldTransform { get; }
	GameObject GameObject { get; }
}