Files
2026-07-13 13:13:17 +08:00

45 lines
1.5 KiB
C#

#nullable enable
using T3.Core.Operator;
namespace T3.Editor.UiModel.Commands.Graph;
internal sealed class AddConnectionCommand : ICommand
{
public string Name => "Add Connection";
public bool IsUndoable => true;
internal AddConnectionCommand(Symbol compositionSymbol, Symbol.Connection connectionToAdd, int multiInputIndex)
{
_addedConnection = connectionToAdd;
_compositionSymbolId = compositionSymbol.Id;
_multiInputIndex = multiInputIndex;
}
public void Do()
{
if (!SymbolUiRegistry.TryGetSymbolUi(_compositionSymbolId, out var compositionSymbolUi))
{
Log.Warning($"Could not find symbol with id {_compositionSymbolId} - was it removed?");
return;
}
compositionSymbolUi.Symbol.AddConnection(_addedConnection, _multiInputIndex);
compositionSymbolUi.FlagAsModified();
}
public void Undo()
{
if (!SymbolUiRegistry.TryGetSymbolUi(_compositionSymbolId, out var compositionSymbolUi))
{
Log.Warning($"Could not find symbol with id {_compositionSymbolId} - was it removed?");
return;
}
compositionSymbolUi.Symbol.RemoveConnection(_addedConnection, _multiInputIndex);
compositionSymbolUi.FlagAsModified();
}
private readonly Guid _compositionSymbolId;
private readonly Symbol.Connection _addedConnection;
private readonly int _multiInputIndex;
}