Example #1
0
        public void ShowProperty(GraphItem node)
        {
            gameObject.SetActive(true);
            ifNode = node as IFBranchItem;
            BranchCondition data = ifNode.GetIFBranchData();

            nodeTitleInput.text   = ifNode.GetBlockTitle;
            ifTypeDrowpdown.value = (int)data.lParamType;
            nodeNameInput.text    = ifNode.GetBlockName;

            nodeTitleInput.onValueChanged.AddListener(ifNode.SetBlockTitle);
            ifTypeDrowpdown.onValueChanged.AddListener(ifNode.SetLParamType);
            nodeNameInput.onValueChanged.AddListener(ifNode.SetBlockName);

            operatorDropdown.value = (int)data.opParameter;
            operatorDropdown.onValueChanged.AddListener(ifNode.SetOpParamType);

            nodeTypeText.text   = node.GetNodeType.ToString();
            nodeIDText.text     = node.BlockID.ToString();
            nodeValueInput.text = data.rParameter;
            nodeValueInput.onValueChanged.AddListener(ifNode.SetRParamValue);

            int nextID = ifNode.GetTrueExecutePoint.GetLineData != null ? ifNode.GetTrueExecutePoint.GetLineData.GetRightExecutePointInfo.blockID : -1;

            trueNextIDText.text = nextID.ToString();

            nextID = ifNode.GetFalseExecutePoint.GetLineData != null ? ifNode.GetFalseExecutePoint.GetLineData.GetRightExecutePointInfo.blockID : -1;
            falseNextIDText.text = nextID.ToString();
        }
Example #2
0
        public static void CompileToXML(ProjectFormat projectFormat, List <GraphItem> locatedItemList, IComparer <GraphItem> comparer)
        {
            locatedItemList.Sort(comparer);

            XMLProject project = new XMLProject();

            foreach (GraphItem node in locatedItemList)
            {
                if (node.GetNodeType == NodeType.SWITCH)
                {
                    SwitchBranchItem switchNode = node as SwitchBranchItem;
                    project.AddNode(switchNode.GetXMLSwitchData());
                }
                else if (node.GetNodeType == NodeType.VARIABLE)
                {
                    VariableItem variableNode = node as VariableItem;
                    project.AddNode(variableNode.GetXMLVariableData());
                }
                else if (node.GetNodeType == NodeType.IF)
                {
                    IFBranchItem ifNode = node as IFBranchItem;
                    project.AddNode(ifNode.GetXMLIFData());
                }
                else
                {
                    project.AddNode(node.GetXMLNormalData());
                }
            }

            XMLSerialize <XMLProject>(project, Application.dataPath + "/Data/TestProject.xml");
        }
Example #3
0
        public void AddNodeItem(GameObject itemPrefab, NodeBlock nodeData)
        {
            // Create Block on to block pane.
            GameObject    newObj        = Instantiate(itemPrefab);
            RectTransform rectTransform = newObj.GetComponent <RectTransform>();

            rectTransform.SetParent(blockPane);
            rectTransform.position   = nodeData.position;
            rectTransform.localScale = Vector3.one;
            GraphItem graphItem = newObj.GetComponent <GraphItem>();

            graphItem.BlockID = nodeData.id;
            graphItem.SetBlockTitle(nodeData.title);
            graphItem.SetItemData(nodeData.value);

            if (nodeData.nodeType == NodeType.SWITCH)
            {
                SwitchBranchItem switchNode = graphItem as SwitchBranchItem;
                switchNode.SetSwitchName(nodeData.name);
                switchNode.SetBlockCount(nodeData.switchBlockCount);

                for (int ix = 1; ix < nodeData.switchBlockCount + 1; ++ix)
                {
                    if (switchNode.executePoints[ix] is ExecuteCasePoint)
                    {
                        ExecuteCasePoint casePoint = switchNode.executePoints[ix] as ExecuteCasePoint;
                        casePoint.CaseValue = nodeData.switchBlockValues[ix - 1];
                    }
                }
            }

            else if (nodeData.nodeType == NodeType.VARIABLE)
            {
                VariableItem variableNode = graphItem as VariableItem;
                variableNode.SetBlockName(nodeData.name);
                variableNode.SetBlockName(nodeData.name);
                variableNode.SetOperatorType(nodeData.variableOperator);
            }

            else if (nodeData.nodeType == NodeType.IF)
            {
                IFBranchItem ifNode = graphItem as IFBranchItem;
                ifNode.SetBlockName(nodeData.name);
                ifNode.SetOpParamType((int)ifNode.GetOpTypeFromString(nodeData.variableOperator));
                ifNode.SetRParamValue(nodeData.value);
                ifNode.SetLParamType((int)nodeData.ifBranchType);
            }

            // Add Block Information to Block Diagram Manager.
            WorkspaceManager.Instance.AddBlock(graphItem);
        }
 public override void SetTargetItem(GraphItem targetItem)
 {
     base.SetTargetItem(targetItem);
     targetIfItem = targetItem as IFBranchItem;
 }
Example #5
0
        public static ProjectFormat GetSaveFormat(List <GraphItem> locatedItemList, List <GraphLine> locatedLineList, string projectName = "")
        {
            ProjectFormat project = new ProjectFormat();

            project.projectName = projectName;

            project.blockArray = new NodeBlockArray();
            for (int ix = 0; ix < locatedItemList.Count; ++ix)
            {
                NodeBlock block = new NodeBlock();
                block.nodeType = locatedItemList[ix].GetNodeType;
                block.id       = locatedItemList[ix].BlockID;
                block.title    = locatedItemList[ix].GetBlockTitle;
                block.value    = locatedItemList[ix].GetItemData() as string;
                block.position = locatedItemList[ix].GetComponent <RectTransform>().position;

                NodeType nodeType = locatedItemList[ix].GetNodeType;

                if (nodeType == NodeType.SWITCH)
                {
                    SwitchBranchItem switchNode = locatedItemList[ix] as SwitchBranchItem;
                    block.switchBlockCount = switchNode.GetBlockCount;
                    block.switchBranchType = switchNode.GetSwitchType;
                    block.name             = switchNode.GetSwitchName;
                    for (int jx = 0; jx < switchNode.GetBlockCount; ++jx)
                    {
                        ExecuteCasePoint casePoint = switchNode.executePoints[jx + 1] as ExecuteCasePoint;
                        block.switchBlockValues.Add(casePoint.CaseValue);
                    }
                }

                else if (nodeType == NodeType.VARIABLE)
                {
                    VariableItem variableNode = locatedItemList[ix] as VariableItem;
                    block.variableOperator = variableNode.GetOperatorType.ToString();
                    block.name             = variableNode.GetBlockName;
                }

                else if (nodeType == NodeType.IF)
                {
                    IFBranchItem    ifNode = locatedItemList[ix] as IFBranchItem;
                    BranchCondition data   = ifNode.GetIFBranchData();
                    block.name             = data.nameField;
                    block.value            = data.rParameter;
                    block.ifBranchType     = data.lParamType;
                    block.variableOperator = ifNode.GetStringFromOpType(data.opParameter);
                }

                project.BlockAdd(block);
            }

            project.lineArray = new LineBlockArray();
            for (int ix = 0; ix < locatedLineList.Count; ++ix)
            {
                int leftBlockID        = locatedLineList[ix].GetLeftExecutePointInfo.blockID;
                int leftExecutePointID = locatedLineList[ix].GetLeftExecutePointInfo.executePointID;
                int rightBlockID       = locatedLineList[ix].GetRightExecutePointInfo.blockID;

                LineBlock line = new LineBlock(leftBlockID, leftExecutePointID, rightBlockID);
                project.LineAdd(line);
            }

            return(project);
        }