mirror of
https://github.com/Facepunch/sbox-public.git
synced 2026-04-19 05:48:07 -04:00
This commit imports the C# engine code and game files, excluding C++ source code. [Source-Commit: ceb3d758046e50faa6258bc3b658a30c97743268]
42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
|
|
namespace Editor;
|
|
|
|
[CustomEditor( typeof( string ), NamedEditor = "Sequence" )]
|
|
file class SequenceControlWidget : ControlWidget
|
|
{
|
|
public SequenceControlWidget( SerializedProperty property ) : base( property )
|
|
{
|
|
Layout = Layout.Row();
|
|
|
|
Rebuild();
|
|
}
|
|
|
|
private void Rebuild()
|
|
{
|
|
Layout.Clear( true );
|
|
|
|
var sequence = SerializedProperty.Parent.ParentProperty;
|
|
var v = sequence.GetValue<SkinnedModelRenderer.SequenceAccessor>();
|
|
var comboBox = new ComboBox( this );
|
|
|
|
void SelectSequence( string name )
|
|
{
|
|
var propertyPath = $"{nameof( SkinnedModelRenderer.Sequence )}.{nameof( SkinnedModelRenderer.SequenceAccessor.Name )}";
|
|
var targets = sequence.Parent.Targets.OfType<Component>();
|
|
targets.DispatchPreEdited( propertyPath );
|
|
v.Name = name;
|
|
targets.DispatchEdited( propertyPath );
|
|
}
|
|
|
|
// Add empty item to select no sequence.
|
|
comboBox.AddItem( string.Empty, onSelected: () => SelectSequence( null ), selected: string.IsNullOrEmpty( v.Name ) );
|
|
|
|
foreach ( var name in v.SequenceNames )
|
|
{
|
|
comboBox.AddItem( name, onSelected: () => SelectSequence( name ), selected: string.Equals( v.Name, name, StringComparison.OrdinalIgnoreCase ) );
|
|
}
|
|
|
|
Layout.Add( comboBox );
|
|
}
|
|
}
|