public void OnInputChange(Input input)
{
if (!started)
return;
Node node = GetInputOwner(input.Id);
if (node == null)
return;
ShowNodeActivity(node);
if (changedInputsStack.Contains(input))
{
try
{
changedInputsStack.Remove(input);
}
catch { }
LogEngineError($"Event dropped in [{node.PanelName}: {node.Type}].");
return;
}
changedInputsStack.Add(input);
node.CheckInputDataTypeIsCorrect(input);
OnInputStateUpdated?.Invoke(input);
if (node.GetNodeOptions().ResetOutputsIfAnyInputIsNull
&& node.Inputs.Any(i => !i.IsOptional && i.Value == null))
node.ResetOutputs();
else
node.OnInputChange(input);
try
{
if (changedInputsStack.Contains(input))
changedInputsStack.Remove(input);
}
catch { }
}