void CompileTimeLine(NodeCode parent, int index, CodeBlock targetFunctionBlock) { CodeBlock TimeLineCodeBlock = new CodeBlock(new Variable() { Var = "void TimeLine_" + index + "()" }, new List <ICodeBase>()); targetFunctionBlock.CommandLines.Add(TimeLineCodeBlock); ((CodeBlock)(targetFunctionBlock.CommandLines[1])).CommandLines.Add(new Variable( "TimelineEvents.Add(new TimeLineEvent(" + parent.logicParamCode.ToCodeText() + ", TimeLine_" + index + "));\n" )); List <NodePointData> flowPoint = parent.GetPointData(ConnectionPointType.Out); NodePointData currentFlow = flowPoint[0]; if (currentFlow.connections.Count == 0) { return; } NodeCode nextCode = guidMap.GetCode(guidMap.GetData <NodePointData>( guidMap.GetData <NodeConnectionData>(currentFlow.connections[0]).inGUID).nodeGUID); CompileFunction(nextCode, TimeLineCodeBlock); }
void CompileFunction(NodeCode parent, CodeBlock targetFunctionBlock) { List <NodePointData> flowPoint = parent.GetPointData(ConnectionPointType.Out); NodePointData currentFlow = flowPoint[0]; if (parent.funcNodeData.nodeType == NodeType.Event) { if (currentFlow.connections.Count == 0) { return; } NodeCode nextCode = guidMap.GetCode(guidMap.GetData <NodePointData>( guidMap.GetData <NodeConnectionData>(currentFlow.connections[0]).inGUID).nodeGUID); CompileFunction(nextCode, targetFunctionBlock); } else if (parent.funcNodeData.nodeType == NodeType.Condition) { if (currentFlow.connections.Count != 0) { NodeCode nextCode = guidMap.GetCode(guidMap.GetData <NodePointData>( guidMap.GetData <NodeConnectionData>(currentFlow.connections[0]).inGUID).nodeGUID); CompileFunction(nextCode, ((ConditionCode)parent.code).isTrue); } currentFlow = flowPoint[1]; if (currentFlow.connections.Count != 0) { NodeCode nextCode = guidMap.GetCode(guidMap.GetData <NodePointData>( guidMap.GetData <NodeConnectionData>(currentFlow.connections[0]).inGUID).nodeGUID); CompileFunction(nextCode, ((ConditionCode)parent.code).isFalse); } targetFunctionBlock.CommandLines.Add(parent.code); } //add for else { targetFunctionBlock.CommandLines.Add(new CodeLine() { code = parent.code }); if (currentFlow.connections.Count == 0) { return; } NodeCode nextCode = guidMap.GetCode(guidMap.GetData <NodePointData>( guidMap.GetData <NodeConnectionData>(currentFlow.connections[0]).inGUID).nodeGUID); CompileFunction(nextCode, targetFunctionBlock); } }