Ejemplo n.º 1
0
        public void OnClickedHook(HookAttachment hookWidget)
        {
            if (CurrentSelectedHook == null)
            {
                CurrentSelectedHook     = hookWidget;
                CreatingConnection      = CurrentSelectedHook.Hook.CreateConnection();
                CurrentConnectionWidget = Instantiate(ConnectionElement.Get(), workspace).GetComponent <ConnectionAttachment> ();
                CurrentConnectionWidget.Initialize(CreatingConnection, CurrentSelectedHook.image.color);
            }
            else
            {
                if (CreatingConnection.Connect(CurrentSelectedHook.Hook, hookWidget.Hook))
                {
                    CurrentConnectionWidget.Connect(CurrentSelectedHook, hookWidget);
                }
                else
                {
                    if (CurrentSelectedHook.Hook.IsConnectedTo(hookWidget.Hook))
                    {
                        CurrentSelectedHook.Hook.GetConnectionTo(hookWidget.Hook).Delete();
                    }

                    Destroy(CurrentConnectionWidget.gameObject);
                }

                CurrentSelectedHook     = null;
                CurrentConnectionWidget = null;
                CreatingConnection      = null;
            }
        }
Ejemplo n.º 2
0
        public override void LoadFrom(Node source)
        {
            void InstantiateValueHooks(IEnumerable <IVariableHook> hooks, GameObject prefabObject, Transform parent)
            {
                foreach (var hook in hooks)
                {
                    InstantiateHook(hook, prefabObject, parent, TypeColors.GetColor(hook.ValueType));
                }
            }

            void InstantiateHook(IHook hook, GameObject prefabObject, Transform parent, Color color)
            {
                GameObject     newHookWidget  = Instantiate(prefabObject, parent);
                HookAttachment hookAttachment = newHookWidget.GetComponent <HookAttachment>();

                hookAttachment.Initialize(hook, color);
            }

            if (source is IHasInput input)
            {
                InstantiateValueHooks(input.InputHooks, HookAttachment.LeftHookWidget.Get(), inputSide);
            }
            else
            {
                Destroy(inputSide.gameObject);
            }

            if (source is IHasOutput output)
            {
                InstantiateValueHooks(output.OutputHooks, HookAttachment.RightHookWidget.Get(), outputSide);
            }
            else
            {
                Destroy(outputSide.gameObject);
            }

            if (source is IFlowNode flowNode)
            {
                foreach (var hook in flowNode.PossibleRoutes)
                {
                    InstantiateHook(hook, FlowOutputHook.Get(), flowSide, Color.white);
                }
            }
            else
            {
                Destroy(flowSide.gameObject);
            }
        }
Ejemplo n.º 3
0
        public void CreateValueWidgetFor(HookAttachment inputWidget, InputHook inputHook)
        {
            GameObject widgetPrefab = FindCorrectValueWidget(inputHook.ValueType);

            object value = inputHook.ValueType.IsValueType ? Activator.CreateInstance(inputHook.ValueType) : null;

            Console.WriteLine(value);

            ValueNode valueNode = new ValueNode().SetPosition(new VectorPosition(0, 0)).SetProgram(ProgramEditor.CurrentEditor.CurrentProgram) as ValueNode;

            valueNode.InitChildren();

            valueNode.SetValue(value).SetType(inputHook.ValueType);

            GameObject newWidget = Instantiate(widgetPrefab, workspace.transform);

            newWidget.transform.position = Input.mousePosition;
            IValueWidget widget = newWidget.GetComponent <IValueWidget> ();

            widget.Initialize(valueNode);
            OnClickedHook(widget.OutputHookWidget);
        }