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);
        }
Example #2
0
        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)));
         }
     };
 }
Example #4
0
        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);
        }
Example #5
0
        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);
 }