91 lines
2.6 KiB
C#
91 lines
2.6 KiB
C#
using Editor;
|
|
using Sandbox;
|
|
|
|
namespace VeloX;
|
|
|
|
[CustomEditor( typeof( Pacejka ) )]
|
|
public class PacejkaWidget : ControlObjectWidget
|
|
{
|
|
public override bool SupportsMultiEdit => false;
|
|
public override bool IncludeLabel => false;
|
|
|
|
[CustomEditor( typeof( Pacejka.LateralForce ) )]
|
|
private class LateralForceWidget : ControlObjectWidget
|
|
{
|
|
public LateralForceWidget( SerializedProperty property ) : base( property, true )
|
|
{
|
|
Layout = Layout.Column();
|
|
Layout.Margin = 8f;
|
|
Layout.Spacing = 8;
|
|
foreach ( var item in TypeLibrary.GetType<Pacejka.LateralForce>().Properties )
|
|
{
|
|
var row = Layout.AddRow();
|
|
row.Spacing = 8;
|
|
var propetry = SerializedObject.GetProperty( item.Name );
|
|
row.Add( new Label( propetry.Name ) );
|
|
row.Add( Create( propetry ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
[CustomEditor( typeof( Pacejka.LongitudinalForce ) )]
|
|
private class LongitudinalForceWidget : ControlObjectWidget
|
|
{
|
|
public LongitudinalForceWidget( SerializedProperty property ) : base( property, true )
|
|
{
|
|
Layout = Layout.Column();
|
|
Layout.Margin = 8f;
|
|
Layout.Spacing = 8;
|
|
foreach ( var item in TypeLibrary.GetType<Pacejka.LongitudinalForce>().Properties )
|
|
{
|
|
var row = Layout.AddRow();
|
|
row.Spacing = 8;
|
|
var propetry = SerializedObject.GetProperty( item.Name );
|
|
row.Add( new Label( propetry.Name ) );
|
|
row.Add( Create( propetry ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
[CustomEditor( typeof( Pacejka.AligningMoment ) )]
|
|
private class AligningMomentWidget : ControlObjectWidget
|
|
{
|
|
public AligningMomentWidget( SerializedProperty property ) : base( property, true )
|
|
{
|
|
Layout = Layout.Column();
|
|
Layout.Margin = 8f;
|
|
Layout.Spacing = 8;
|
|
foreach ( var item in TypeLibrary.GetType<Pacejka.AligningMoment>().Properties )
|
|
{
|
|
var row = Layout.AddRow();
|
|
row.Spacing = 8;
|
|
var propetry = SerializedObject.GetProperty( item.Name );
|
|
row.Add( new Label( propetry.Name ) );
|
|
row.Add( Create( propetry ) );
|
|
}
|
|
}
|
|
}
|
|
|
|
private Pacejka Pacejka;
|
|
public PacejkaWidget( SerializedProperty property ) : base( property, true )
|
|
{
|
|
|
|
var obj = SerializedObject;
|
|
Pacejka = obj.ParentProperty.GetValue<Pacejka>();
|
|
|
|
Layout = Layout.Column();
|
|
Layout.Margin = 8f;
|
|
Layout.Add( new Label.Body( $" {ToolTip}" ) { Color = Color.White } );
|
|
var tabs = Layout.Add( new TabWidget( null ) );
|
|
tabs.AddPage( nameof( Pacejka.Lateral ), null,
|
|
Layout.Add( Create( obj.GetProperty( nameof( Pacejka.Lateral ) ) ) )
|
|
);
|
|
tabs.AddPage( nameof( Pacejka.Longitudinal ), null,
|
|
Layout.Add( Create( obj.GetProperty( nameof( Pacejka.Longitudinal ) ) ) )
|
|
);
|
|
tabs.AddPage( nameof( Pacejka.Aligning ), null,
|
|
Layout.Add( Create( obj.GetProperty( nameof( Pacejka.Aligning ) ) ) )
|
|
);
|
|
}
|
|
}
|