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 void AddNodeItem(GameObject itemPrefab, GraphItem node, Vector3 nodePos, int blockID) { // Create Block on to block pane. GameObject newObj = Instantiate(itemPrefab); RectTransform rectTransform = newObj.GetComponent <RectTransform>(); rectTransform.SetParent(blockPane); rectTransform.position = nodePos; rectTransform.localScale = Vector3.one; GraphItem graphItem = newObj.GetComponent <GraphItem>(); graphItem.BlockID = blockID; graphItem.SetBlockTitle(node.GetBlockTitle); graphItem.SetItemData(node.GetItemData()); if (node.GetNodeType == NodeType.SWITCH) { SwitchBranchItem switchNode = graphItem as SwitchBranchItem; SwitchBranchItem givenSwitchNode = node as SwitchBranchItem; switchNode.SetBlockCount(givenSwitchNode.GetBlockCount); switchNode.SetSwitchType(givenSwitchNode.GetSwitchType); switchNode.SetSwitchName(givenSwitchNode.GetSwitchName); for (int ix = 1; ix < givenSwitchNode.GetBlockCount + 1; ++ix) { if (switchNode.executePoints[ix] is ExecuteCasePoint) { ExecuteCasePoint casePoint = switchNode.executePoints[ix] as ExecuteCasePoint; casePoint.CaseValue = (givenSwitchNode.executePoints[ix] as ExecuteCasePoint).CaseValue; } } } else if (node.GetNodeType == NodeType.VARIABLE) { VariableItem variableNode = graphItem as VariableItem; VariableItem givenVariableNode = node as VariableItem; variableNode.SetBlockName(givenVariableNode.GetBlockName); variableNode.SetOperatorType(givenVariableNode.GetOperatorType); } // Add Block Information to Block Diagram Manager. WorkspaceManager.Instance.AddBlock(graphItem); }
private void CreateLines(LineBlockArray lineData) { if (lineData.Length == -1) { return; } for (int ix = 0; ix < lineData.Length; ++ix) { GraphItem leftItem = GetGraphItem(lineData[ix].left.blockID); GraphItem rightItem = GetGraphItem(lineData[ix].right.blockID); if (leftItem.GetNodeType == NodeType.SWITCH) { if (switchCounts.Count == 0) { switchCounts.Add(new SwitchCount() { nodeID = leftItem.BlockID, count = 1 }); } else if (switchCounts.Count == 1 && !switchCounts[0].nodeID.Equals(leftItem.BlockID)) { switchCounts.Add(new SwitchCount() { nodeID = leftItem.BlockID, count = 1 }); } else { bool isProcessed = false; foreach (SwitchCount item in switchCounts) { if (item.nodeID.Equals(leftItem.BlockID)) { item.count++; isProcessed = true; break; } } if (!isProcessed) { switchCounts.Add(new SwitchCount() { nodeID = leftItem.BlockID, count = 1 }); } } } ExecutePoint leftPoint = null; ExecutePoint rightPoint = null; if (leftItem != null) { leftPoint = leftItem.GetExecutePoint(ExecutePoint.PointPosition.ExecutePoint_Right, lineData[ix].left.executePointID); } if (rightItem != null) { rightPoint = rightItem.GetExecutePoint(ExecutePoint.PointPosition.ExecutePoint_Left); } if (leftItem != null && rightItem != null && leftPoint != null && rightPoint != null) { GraphLine newLine = leftPoint.SetLineData(rightPoint); } } //Debug.Log("switchCount: " + switchCounts.Count); foreach (SwitchCount item in switchCounts) { GraphItem node = GetGraphItem(item.nodeID); SwitchBranchItem switchNode = node as SwitchBranchItem; switchNode.SetBlockCount(item.count - 1); } }