public bool ConnectorExists() { if (LaminarValue is not null) { LaminarValue.TypeDefinitionChanged -= LaminarValue_TypeDefinitionChanged; LaminarValue = null; } if (_parentComponent is INodeField nodeField) { if (_connectorType is ConnectorType.Input) { LaminarValue = nodeField.GetValue(INodeField.InputKey); } if (_connectorType is ConnectorType.Output) { LaminarValue = nodeField.GetValue(INodeField.OutputKey); } if (LaminarValue is not null) { HexColour.Value = LaminarValue.TypeDefinition is not null?_instance.GetTypeInfo(LaminarValue.TypeDefinition.ValueType).HexColour : "#FFFFFF"; LaminarValue.TypeDefinitionChanged += LaminarValue_TypeDefinitionChanged; return(true); } } return(false); }
public ICompiledScript Compile(IAdvancedScript script) { ICompiledScript compiledScript = _factory.CreateInstance <ICompiledScript>(); compiledScript.OriginalScript = script; Inputs = new(); AllNodes = new(); foreach (InputNode scriptInput in script.Editor.Inputs.InputNodes) { ILaminarValue myInputValue = _valueFactory.Get(scriptInput.Value, true); myInputValue.Name = scriptInput.GetNameLabel().LabelText.Value; compiledScript.Inputs.Add(myInputValue); Inputs.Add(scriptInput, myInputValue); } foreach (INodeContainer triggerNode in script.Editor.TriggerNodes) { if (triggerNode.Name.OutputConnector.ExclusiveConnection is not null) { CompiledNodeWrapper wrappedTrigger = CompiledNodeWrapper.Get(triggerNode, this); compiledScript.AllTriggerNodes.Add(wrappedTrigger); wrappedTrigger.flowOutChains.Add(new CompiledNodeChain(triggerNode.Name, wrappedTrigger.CoreNode.GetNameLabel().FlowOutput, this)); } } return(compiledScript); }
public ValueConnector(ILaminarValue displayValue, NodeBase parent, ConnectionType connectionType) : base(parent, connectionType) { DisplayValue = displayValue; DisplayValue.PropertyChanged += (o, e) => { if (e.PropertyName == nameof(DisplayValue.TypeDefinition)) { PropertyChanged?.Invoke(o, new PropertyChangedEventArgs(nameof(ColourHex))); } }; }
protected override void OnDataContextChanged(EventArgs e) { if (DataContext is ILaminarValue laminarValue) { if (_laminarValue is not null) { _laminarValue.OnChange -= LaminarValue_OnChange; } _laminarValue = laminarValue; _laminarValue.OnChange += LaminarValue_OnChange; UpdateTextBlock(_laminarValue.Value); } base.OnDataContextChanged(e); }
protected override bool TryUpdateConnector(IConnector connector, ConnectionType connectionType, out IConnector newConnector) { if (base.TryUpdateConnector(connector, connectionType, out newConnector)) { return(true); } ILaminarValue relevantValue = connectionType == ConnectionType.Input ? ChildComponent.GetDisplayValue(INodeField.InputKey) : ChildComponent.GetDisplayValue(INodeField.OutputKey); if (relevantValue != null && connector is not ValueConnector) { newConnector = new ValueConnector(relevantValue, ParentNode, connectionType); return(true); } newConnector = default; return(false); }
protected override void OnDataContextChanged(EventArgs e) { _laminarValue = DataContext as ILaminarValue; UpdateTextBlock(); base.OnDataContextChanged(e); }
public static TComponent WithValue <TComponent>(this TComponent nodeField, object valueKey, ILaminarValue value) where TComponent : INodeField { nodeField.AddValue(valueKey, value); return(nodeField); }