Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
        }
    }