Editor/DynamicsControlWidget.cs
using Editor;
using Sandbox;
namespace Andicraft.SecondOrderDynamics.Editor;
[CustomEditor(typeof(DynamicsParameters))]
public class DynamicsControlWidget : ControlWidget
{
public DynamicsControlWidget(SerializedProperty property) : base(property)
{
var l = Layout.Grid();
Layout = l;
l.SetMinimumRowHeight( 1, 100 );
Layout.Spacing = 2;
var serializedObject = property.GetValue<DynamicsParameters>()?.GetSerialized();
if ( serializedObject is null ) return;
serializedObject.TryGetProperty( "Frequency", out var f );
serializedObject.TryGetProperty( "Damping", out var d );
serializedObject.TryGetProperty( "Response", out var r );
l.AddCell(0, 0, new FloatControlWidget( f) { Label = "f"});
l.AddCell(1, 0, new FloatControlWidget( d ) { Label = "d"});
l.AddCell(2, 0, new FloatControlWidget( r ) { Label = "r"});
l.AddCell( 0, 1, new DynamicsGraphWidget( this, serializedObject ), xSpan: 3, ySpan: 5 );
Height = 100f;
}
}