Ejemplo n.º 1
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        EbLog.Note("CNodeStateStart.enter() NodeType=" + mNode.getNodeType() + " NodeId=" + mNode.getNodeId());

        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Start);

        // 广播NodeEnterStart消息
        if (!mNode.getNodeSys().isClient())
        {
            List <object> list_param = new List <object>();
            list_param.Add(mNode.getNodeType());
            list_param.Add(mNode.getNodeId());
            mNode._getNodeServerListener().nodeSendMsg((int)_eNodeMsg.NodeEnterStart, list_param);
        }

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onEnterStartState(mNode);
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onEnterStartState(mNode);
        }
    }
Ejemplo n.º 2
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        EbLog.Note("CNodeStateStop.enter() NodeType=" + mNode.getNodeType() + " NodeId=" + mNode.getNodeId());

        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Stop);

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            List <_tNodeParamPair> list_param = new List <_tNodeParamPair>();
            {
                _tNodeParamPair pp;
                pp.k = (byte)_eNodeParam.AllExit;
                pp.v = mNode._isSelectAllExits();
                list_param.Add(pp);
            }

            {
                _tNodeParamPair pp;
                pp.k = (byte)_eNodeParam.ExitId;
                pp.v = mNode.getExitId();
                list_param.Add(pp);
            }

            mNode.getNodeMgr()._opEnterState(mNode.getNodeId(), mNode.getNodeState(), list_param);
        }

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onEnterStopState(mNode);
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onEnterStopState(mNode);
        }

        // 广播BeforeEffect消息
        //mpEntity.sendMessage((int)MsgType.Entity, 2, mpEntity.getNodeId(), null);

        // 执行EffectXml中定义的效果
        _parseEffectXml();
        _doEffect();

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onDoEffect(mNode, mNode.getExitId());
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onDoEffect(mNode, mNode.getExitId());
        }

        mNode.postEvent("evSetNextState");
    }
Ejemplo n.º 3
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        if (mNode.getNodeMgr().EnableLog)
        {
            StringBuilder sb = new StringBuilder(512);
            sb.Append("EtPlayer et_guid=");
            sb.Append(mNode.getNodeMgr().EtPlayer.Guid);
            sb.Append(" NodeType=");
            sb.Append(mNode.getNodeType());
            sb.Append(" NodeId=");
            sb.Append(mNode.getNodeId());
            sb.Append(" Start");
            EbLog.Note(sb.ToString());
        }

        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Start);

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            mNode.getNodeMgr()._opEnterState(mNode.getNodeId(), mNode.getNodeState());
        }

        // 广播NodeEnterStart消息
        if (!mNode.getNodeSys().isClient())
        {
            List <object> list_param = new List <object>();
            list_param.Add(mNode.getNodeType());
            list_param.Add(mNode.getNodeId());
            mNode._getNodeServerListener().nodeSendMsg((int)_eNodeMsg.NodeEnterStart, list_param);
        }

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onEnterStartState(mNode);
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onEnterStartState(mNode);
        }
    }
Ejemplo n.º 4
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        if (mNode.getNodeMgr().EnableLog)
        {
            StringBuilder sb = new StringBuilder(512);
            sb.Append("EtPlayer et_guid=");
            sb.Append(mNode.getNodeMgr().EtPlayer.Guid);
            sb.Append(" NodeType=");
            sb.Append(mNode.getNodeType());
            sb.Append(" NodeId=");
            sb.Append(mNode.getNodeId());
            sb.Append(" Start");
            EbLog.Note(sb.ToString());
        }

        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Start);

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            mNode.getNodeMgr()._opEnterState(mNode.getNodeId(), mNode.getNodeState());
        }

        // 广播NodeEnterStart消息
        if (!mNode.getNodeSys().isClient())
        {
            List<object> list_param = new List<object>();
            list_param.Add(mNode.getNodeType());
            list_param.Add(mNode.getNodeId());
            mNode._getNodeServerListener().nodeSendMsg((int)_eNodeMsg.NodeEnterStart, list_param);
        }

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onEnterStartState(mNode);
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onEnterStartState(mNode);
        }
    }
Ejemplo n.º 5
0
 //-------------------------------------------------------------------------
 public void destroyScript(INodeClientScript s)
 {
 }
Ejemplo n.º 6
0
    //-------------------------------------------------------------------------
    public void create(int node_id, _eNodeState state, List <_tNodeParamPair> list_param,
                       INodeServerListener server_listener, INodeClientListener client_listener, CNodeSys node_sys, CNodeMgr node_mgr)
    {
        mNodeServerListener = server_listener;
        mNodeClientListener = client_listener;
        mNodeSys            = node_sys;
        mNodeMgr            = node_mgr;

        // 初始化NodeInfo
        mNodeId    = node_id;
        mNodeState = state;
        if (list_param != null)
        {
            foreach (var i in list_param)
            {
                if (i.k == (byte)_eNodeParam.PreNodeId || i.k == (byte)_eNodeParam.ExitId)
                {
                    mMapParam[i.k] = int.Parse(i.v.ToString());
                }
                else
                {
                    mMapParam[i.k] = i.v;
                }
            }
        }

        // 加载DefXml数据
        _loadDefXml();

        // 设置该Node的父Node
        string str_parent_node_id = getDefXml().GetValue("Parent").Value;

        if (str_parent_node_id != string.Empty && str_parent_node_id != "0")
        {
            int   parent_node_id = Convert.ToInt32(str_parent_node_id);
            CNode node_parent    = getNodeMgr().findNode(parent_node_id);
            if (node_parent != null)
            {
                mParentNode = node_parent;
                node_parent._addChildNode(this);
            }
        }

        // 从xml中解析所有trigger
        _parseTriggerXml();

        // 初始化脚本
        if (mNodeSys.isClient())
        {
            INodeClientScriptFactory factory = mNodeSys.getNodeClientScriptFactory(getNodeType());
            if (factory != null)
            {
                mNodeClientScript = factory.createScript(this);
            }
        }
        else
        {
            INodeServerScriptFactory factory = mNodeSys.getNodeServerScriptFactory(getNodeType());
            if (factory != null)
            {
                mNodeServerScript = factory.createScript(this, getEtPlayer());
            }
        }

        // 创建Fsm
        addState(new CNodeStateInit(this));
        addState(new CNodeStateStart(this));
        addState(new CNodeStateRun(this));
        addState(new CNodeStateStop(this));
        addState(new CNodeStateRelease(this));
        setupFsm();
    }
    //-------------------------------------------------------------------------
    public override void enter()
    {
        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Release);

        // 销毁cur node
        int   node_id      = mNode.getNodeId();
        int   next_node_id = mNode._getNextNodeId();
        CNode parent_node  = mNode.getParentNode();

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            mNode.getNodeMgr()._opDestroyNode(node_id);
        }

        // 创建NextNode
        if (!mNode.getNodeSys().isClient())
        {
            bool exit_all = mNode._isSelectAllExits();
            if (exit_all)
            {
                var groups = mNode.getDefXml().GetGroupArray("Exit");
                foreach (int i in groups.Keys)
                {
                    Property exit_successor_id = groups[i].GetValue("Successor");
                    if (exit_successor_id != null)
                    {
                        int e_id = int.Parse(exit_successor_id.Value);
                        if (e_id > 0)
                        {
                            mNode.getNodeMgr()._opCreateNode(e_id, _eNodeState.Init, mNode.getNodeId());
                        }
                    }
                }
            }
            else
            {
                if (parent_node != null && next_node_id == parent_node.getNodeId())
                {
                    // 不创建NextNode,通知父Node出口
                    int parent_exit_id = 0;
                    var groups         = mNode.getDefXml().GetGroupArray("Exit");
                    int exit_id        = mNode.getExitId();
                    foreach (int i in groups.Keys)
                    {
                        if (i == exit_id)
                        {
                            Property prop_parent_exit_id = groups[i].GetValue("ParentExit");
                            parent_exit_id = int.Parse(prop_parent_exit_id.Value);
                            break;
                        }
                    }
                    //EbLog.Note("parent_exit_id=" + parent_exit_id);
                    parent_node._notifyExit(parent_exit_id);
                }
                else if (next_node_id > 0)
                {
                    mNode.getNodeMgr()._opCreateNode(next_node_id, _eNodeState.Init, mNode.getNodeId());
                }
                else
                {
                    EbLog.Note("Not Create Next Node. next_node_id=" + next_node_id);
                }
            }

            if (parent_node != null)
            {
                parent_node._removeChildNode(mNode.getNodeId());
            }
        }
    }
Ejemplo n.º 8
0
 //-------------------------------------------------------------------------
 public void destroyScript(INodeClientScript s)
 {
 }
Ejemplo n.º 9
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        if (mNode.getNodeMgr().EnableLog)
        {
            StringBuilder sb = new StringBuilder(512);
            sb.Append("EtPlayer et_guid=");
            sb.Append(mNode.getNodeMgr().EtPlayer.Guid);
            sb.Append(" NodeType=");
            sb.Append(mNode.getNodeType());
            sb.Append(" NodeId=");
            sb.Append(mNode.getNodeId());
            sb.Append(" Run");
            EbLog.Note(sb.ToString());
        }

        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Run);

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            mNode.getNodeMgr()._opEnterState(mNode.getNodeId(), mNode.getNodeState());
        }

        // 决策是否需要创建子Node
        {
            CNodeMgr node_mgr = mNode.getNodeMgr();
            int node_id = mNode.getNodeId();
            EventDef node_def = mNode.getDefXml();
            if (mNode.hasChildNodeDef() && mNode._getChildNodeCount() == 0)
            {
                bool ok = false;

                var group = node_def.GetGroup("LinkedToChild");
                if (group != null)
                {
                    ok = true;

                    Property p_entity_def_uid = group.GetValue("UID");
                    int this_child_entity_id = int.Parse(p_entity_def_uid.Value);
                    if (this_child_entity_id != 0)
                    {
                        node_mgr._opCreateNode(this_child_entity_id, _eNodeState.Init, node_id);
                    }
                }

                if (!ok)
                {
                    var groups = node_def.GetGroupArray("LinkedToChild");
                    if (groups != null)
                    {
                        foreach (int i in groups.Keys)
                        {
                            Property p_entity_def_uid = groups[i].GetValue("UID");
                            int this_child_entity_id = int.Parse(p_entity_def_uid.Value);
                            if (this_child_entity_id != 0)
                            {
                                node_mgr._opCreateNode(this_child_entity_id, _eNodeState.Init, node_id);
                            }
                        }
                    }
                }
            }
        }

        // 广播NodeRun消息
        if (!mNode.getNodeSys().isClient())
        {
            List<object> list_param = new List<object>();
            list_param.Add(mNode.getNodeType());
            list_param.Add(mNode.getNodeId());
            mNode._getNodeServerListener().nodeSendMsg((int)_eNodeMsg.NodeEnterRun, list_param);
        }

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onEnterRunState(mNode);
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onEnterRunState(mNode);
        }
    }
Ejemplo n.º 10
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        if (mNode.getNodeMgr().EnableLog)
        {
            StringBuilder sb = new StringBuilder(512);
            sb.Append("EtPlayer et_guid=");
            sb.Append(mNode.getNodeMgr().EtPlayer.Guid);
            sb.Append(" NodeType=");
            sb.Append(mNode.getNodeType());
            sb.Append(" NodeId=");
            sb.Append(mNode.getNodeId());
            sb.Append(" Stop");
            EbLog.Note(sb.ToString());
        }

        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Stop);

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            List <_tNodeParamPair> list_param = new List <_tNodeParamPair>();
            {
                _tNodeParamPair pp;
                pp.k = (byte)_eNodeParam.AllExit;
                pp.v = mNode._isSelectAllExits();
                list_param.Add(pp);
            }

            {
                _tNodeParamPair pp;
                pp.k = (byte)_eNodeParam.ExitId;
                pp.v = mNode.getExitId();
                list_param.Add(pp);
            }

            mNode.getNodeMgr()._opEnterState(mNode.getNodeId(), mNode.getNodeState(), list_param);
        }

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onEnterStopState(mNode);
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onEnterStopState(mNode);
        }

        // 广播BeforeEffect消息
        //mpEntity.sendMessage((int)MsgType.Entity, 2, mpEntity.getNodeId(), null);

        // 执行EffectXml中定义的效果
        _parseEffectXml();
        _doEffect();

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onDoEffect(mNode, mNode.getExitId());
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onDoEffect(mNode, mNode.getExitId());
        }

        mNode.postEvent("evSetNextState");
    }
Ejemplo n.º 11
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        if (mNode.getNodeMgr().EnableLog)
        {
            StringBuilder sb = new StringBuilder(512);
            sb.Append("EtPlayer et_guid=");
            sb.Append(mNode.getNodeMgr().EtPlayer.Guid);
            sb.Append(" NodeType=");
            sb.Append(mNode.getNodeType());
            sb.Append(" NodeId=");
            sb.Append(mNode.getNodeId());
            sb.Append(" Run");
            EbLog.Note(sb.ToString());
        }

        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Run);

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            mNode.getNodeMgr()._opEnterState(mNode.getNodeId(), mNode.getNodeState());
        }

        // 决策是否需要创建子Node
        {
            CNodeMgr node_mgr = mNode.getNodeMgr();
            int      node_id  = mNode.getNodeId();
            EventDef node_def = mNode.getDefXml();
            if (mNode.hasChildNodeDef() && mNode._getChildNodeCount() == 0)
            {
                bool ok = false;

                var group = node_def.GetGroup("LinkedToChild");
                if (group != null)
                {
                    ok = true;

                    Property p_entity_def_uid     = group.GetValue("UID");
                    int      this_child_entity_id = int.Parse(p_entity_def_uid.Value);
                    if (this_child_entity_id != 0)
                    {
                        node_mgr._opCreateNode(this_child_entity_id, _eNodeState.Init, node_id);
                    }
                }

                if (!ok)
                {
                    var groups = node_def.GetGroupArray("LinkedToChild");
                    if (groups != null)
                    {
                        foreach (int i in groups.Keys)
                        {
                            Property p_entity_def_uid     = groups[i].GetValue("UID");
                            int      this_child_entity_id = int.Parse(p_entity_def_uid.Value);
                            if (this_child_entity_id != 0)
                            {
                                node_mgr._opCreateNode(this_child_entity_id, _eNodeState.Init, node_id);
                            }
                        }
                    }
                }
            }
        }

        // 广播NodeRun消息
        if (!mNode.getNodeSys().isClient())
        {
            List <object> list_param = new List <object>();
            list_param.Add(mNode.getNodeType());
            list_param.Add(mNode.getNodeId());
            mNode._getNodeServerListener().nodeSendMsg((int)_eNodeMsg.NodeEnterRun, list_param);
        }

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onEnterRunState(mNode);
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onEnterRunState(mNode);
        }
    }
Ejemplo n.º 12
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Release);

        // 销毁cur node
        int node_id = mNode.getNodeId();
        int next_node_id = mNode._getNextNodeId();
        CNode parent_node = mNode.getParentNode();

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            mNode.getNodeMgr()._opDestroyNode(node_id);
        }

        // 创建NextNode
        if (!mNode.getNodeSys().isClient())
        {
            bool exit_all = mNode._isSelectAllExits();
            if (exit_all)
            {
                var groups = mNode.getDefXml().GetGroupArray("Exit");
                foreach (int i in groups.Keys)
                {
                    Property exit_successor_id = groups[i].GetValue("Successor");
                    if (exit_successor_id != null)
                    {
                        int e_id = int.Parse(exit_successor_id.Value);
                        if (e_id > 0)
                        {
                            mNode.getNodeMgr()._opCreateNode(e_id, _eNodeState.Init, mNode.getNodeId());
                        }
                    }
                }
            }
            else
            {
                if (parent_node != null && next_node_id == parent_node.getNodeId())
                {
                    // 不创建NextNode,通知父Node出口
                    int parent_exit_id = 0;
                    var groups = mNode.getDefXml().GetGroupArray("Exit");
                    int exit_id = mNode.getExitId();
                    foreach (int i in groups.Keys)
                    {
                        if (i == exit_id)
                        {
                            Property prop_parent_exit_id = groups[i].GetValue("ParentExit");
                            parent_exit_id = int.Parse(prop_parent_exit_id.Value);
                            break;
                        }
                    }
                    //EbLog.Note("parent_exit_id=" + parent_exit_id);
                    parent_node._notifyExit(parent_exit_id);
                }
                else if (next_node_id > 0)
                {
                    mNode.getNodeMgr()._opCreateNode(next_node_id, _eNodeState.Init, mNode.getNodeId());
                }
                else
                {
                    EbLog.Note("Not Create Next Node. next_node_id=" + next_node_id);
                }
            }

            if (parent_node != null)
            {
                parent_node._removeChildNode(mNode.getNodeId());
            }
        }
    }
Ejemplo n.º 13
0
    //-------------------------------------------------------------------------
    public override void enter()
    {
        if (mNode.getNodeMgr().EnableLog)
        {
            StringBuilder sb = new StringBuilder(512);
            sb.Append("EtPlayer et_guid=");
            sb.Append(mNode.getNodeMgr().EtPlayer.Guid);
            sb.Append(" NodeType=");
            sb.Append(mNode.getNodeType());
            sb.Append(" NodeId=");
            sb.Append(mNode.getNodeId());
            sb.Append(" Stop");
            EbLog.Note(sb.ToString());
        }

        mNodeServerScript = mNode._getNodeServerScript();
        mNodeClientScript = mNode._getNodeClientScript();
        mNode._setNodeState(_eNodeState.Stop);

        // 生成NodeOp
        if (!mNode.getNodeSys().isClient())
        {
            List<_tNodeParamPair> list_param = new List<_tNodeParamPair>();
            {
                _tNodeParamPair pp;
                pp.k = (byte)_eNodeParam.AllExit;
                pp.v = mNode._isSelectAllExits();
                list_param.Add(pp);
            }

            {
                _tNodeParamPair pp;
                pp.k = (byte)_eNodeParam.ExitId;
                pp.v = mNode.getExitId();
                list_param.Add(pp);
            }

            mNode.getNodeMgr()._opEnterState(mNode.getNodeId(), mNode.getNodeState(), list_param);
        }

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onEnterStopState(mNode);
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onEnterStopState(mNode);
        }

        // 广播BeforeEffect消息
        //mpEntity.sendMessage((int)MsgType.Entity, 2, mpEntity.getNodeId(), null);

        // 执行EffectXml中定义的效果
        _parseEffectXml();
        _doEffect();

        // 执行脚本函数
        if (mNodeServerScript != null)
        {
            mNodeServerScript.onDoEffect(mNode, mNode.getExitId());
        }
        else if (mNodeClientScript != null)
        {
            mNodeClientScript.onDoEffect(mNode, mNode.getExitId());
        }

        mNode.postEvent("evSetNextState");
    }
Ejemplo n.º 14
0
    //-------------------------------------------------------------------------
    public void create(int node_id, _eNodeState state, List<_tNodeParamPair> list_param,
        INodeServerListener server_listener, INodeClientListener client_listener, CNodeSys node_sys, CNodeMgr node_mgr)
    {
        mNodeServerListener = server_listener;
        mNodeClientListener = client_listener;
        mNodeSys = node_sys;
        mNodeMgr = node_mgr;

        // 初始化NodeInfo
        mNodeId = node_id;
        mNodeState = state;
        if (list_param != null)
        {
            foreach (var i in list_param)
            {
                if (i.k == (byte)_eNodeParam.PreNodeId || i.k == (byte)_eNodeParam.ExitId)
                {
                    mMapParam[i.k] = int.Parse(i.v.ToString());
                }
                else
                {
                    mMapParam[i.k] = i.v;
                }
            }
        }

        // 加载DefXml数据
        _loadDefXml();

        // 设置该Node的父Node
        string str_parent_node_id = getDefXml().GetValue("Parent").Value;
        if (str_parent_node_id != string.Empty && str_parent_node_id != "0")
        {
            int parent_node_id = Convert.ToInt32(str_parent_node_id);
            CNode node_parent = getNodeMgr().findNode(parent_node_id);
            if (node_parent != null)
            {
                mParentNode = node_parent;
                node_parent._addChildNode(this);
            }
        }

        // 从xml中解析所有trigger
        _parseTriggerXml();

        // 初始化脚本
        if (mNodeSys.isClient())
        {
            INodeClientScriptFactory factory = mNodeSys.getNodeClientScriptFactory(getNodeType());
            if (factory != null)
            {
                mNodeClientScript = factory.createScript(this);
            }
        }
        else
        {
            INodeServerScriptFactory factory = mNodeSys.getNodeServerScriptFactory(getNodeType());
            if (factory != null)
            {
                mNodeServerScript = factory.createScript(this, getEtPlayer());
            }
        }

        // 创建Fsm
        addState(new CNodeStateInit(this));
        addState(new CNodeStateStart(this));
        addState(new CNodeStateRun(this));
        addState(new CNodeStateStop(this));
        addState(new CNodeStateRelease(this));
        setupFsm();
    }