#ifndef INCLUDED_TSmmm_h_ // このファイル INCLUDED_MyStateSync_h_ が定義されていなければ #define INCLUDED_TSmmm_h_ // このファイル INCLUDED_MyStateSync_h_ を定義する #include "Shared/ERS7Info.h" // AIBOの機種(ERS7)に関する部品ファイル #include "Shared/WorldState.h" // 状態を監視するための部品ファイル #include "StateHeader.h" // 状態と遷移に必要な部品ファイル #include "StartCommFromPC.h" // PCから合図を受信するための部品ファイル // クラス class TSmmm : public StateNode { protected: StateNode * start_node; // start_nodeは、クラス全体で使用するのでココに定義する StartCommFromPC fromPC; // PCからの合図を受け取るオブジェクト public: // コンストラクタ TSmmm() : StateNode("TSmmm"), start_node(NULL), fromPC() {} // デコンストラクタ ~TSmmm() { if(issetup) teardown(); } virtual void setup() { // 親クラスStateNodeのsetup()関数を呼ぶ StateNode::setup(); // 伏せノード作成 StateNode * lie_node = new SmallMotionSequenceNode("Lie","lielie.mot"); addNode(lie_node); // 座り姿勢ノード StateNode * hajime_node = new TinyMotionSequenceNode("Hajime","hajime.mot"); addNode(hajime_node); //前奏ノード StateNode * zenso_node = new LargeMotionSequenceNode("Zenso","zenso.mot"); addNode(zenso_node); //前奏ノード2 StateNode * zenso2_node = new LargeMotionSequenceNode("Zenso2","zensog2.mot"); addNode(zenso2_node); //間奏1ノード StateNode * kanso_node = new LargeMotionSequenceNode("Kanso","kansog.mot"); addNode(kanso_node); //間奏1ノード2 StateNode * madao2_node = new LargeMotionSequenceNode("Madao2","madao2g.mot"); addNode(madao2_node); //ンチャノード1-1 StateNode * tncha_node = new LargeMotionSequenceNode("TNcha","tncha.mot"); addNode(tncha_node); //ンチャノード1-2 StateNode * tncha2_node = new LargeMotionSequenceNode("TNcha2","tncha2.mot"); addNode(tncha2_node); //ンチャノード2-1 StateNode * tncha3_node = new LargeMotionSequenceNode("TNcha3","tncha.mot"); addNode(tncha3_node); //ンチャノード2-2 StateNode * tncha4_node = new LargeMotionSequenceNode("TNcha4","tncha2.mot"); addNode(tncha4_node); //ンチャノード3-1 StateNode * tncha5_node = new LargeMotionSequenceNode("TNcha5","tncha.mot"); addNode(tncha5_node); //ンチャノード3-2 StateNode * tncha6_node = new LargeMotionSequenceNode("TNcha6","tncha2.mot"); addNode(tncha6_node); //ンチャノード4-1 StateNode * tncha7_node = new LargeMotionSequenceNode("TNcha7","tncha.mot"); addNode(tncha7_node); //ンチャノード4-2 StateNode * tncha8_node = new LargeMotionSequenceNode("TNcha8","tncha2.mot"); addNode(tncha8_node); //最初ノード1-1 StateNode * tsaisyo1_node = new MediumMotionSequenceNode("TSaisyo1","tsaisyo1.mot"); addNode(tsaisyo1_node); //最初ノード1-2 StateNode * tsaisyo2_node = new MediumMotionSequenceNode("TSaisyo2","tsaisyo2.mot"); addNode(tsaisyo2_node); //最初ノード1-3 StateNode * tsaisyo3_node = new MediumMotionSequenceNode("TSaisyo3","tsaisyo1.mot"); addNode(tsaisyo3_node); //最初ノード2-1 StateNode * tsaisyo4_node = new MediumMotionSequenceNode("TSaisyo4","tsaisyo1.mot"); addNode(tsaisyo4_node); //最初ノード2-2 StateNode * tsaisyo5_node = new MediumMotionSequenceNode("TSaisyo5","tsaisyo2.mot"); addNode(tsaisyo5_node); //最初ノード2-3 StateNode * tsaisyo6_node = new MediumMotionSequenceNode("TSaisyo6","tsaisyo1.mot"); addNode(tsaisyo6_node); //最初ノード3-1 StateNode * tsaisyo7_node = new MediumMotionSequenceNode("TSaisyo7","tsaisyo1.mot"); addNode(tsaisyo7_node); //最初ノード3-2 StateNode * tsaisyo8_node = new MediumMotionSequenceNode("TSaisyo8","tsaisyo2.mot"); addNode(tsaisyo8_node); //最初ノード3-3 StateNode * tsaisyo9_node = new MediumMotionSequenceNode("TSaisyo9","tsaisyo1.mot"); addNode(tsaisyo9_node); //途中ノード1-1 StateNode * tocyuu1_node = new LargeMotionSequenceNode("Tocyuu1","tocyuu1.mot"); addNode(tocyuu1_node); //途中ノード1-2 StateNode * tocyuu2_node = new LargeMotionSequenceNode("Tocyuu2","tocyuu2.mot"); addNode(tocyuu2_node); //途中ノード1-3 StateNode * tocyuu3_node = new LargeMotionSequenceNode("Tocyuu3","tocyuu3.mot"); addNode(tocyuu3_node); //途中ノード2-1 StateNode * tocyuu4_node = new LargeMotionSequenceNode("Tocyuu4","tocyuu1.mot"); addNode(tocyuu4_node); //途中ノード2-2 StateNode * tocyuu5_node = new LargeMotionSequenceNode("Tocyuu5","tocyuu2.mot"); addNode(tocyuu5_node); //途中ノード2-3 StateNode * tocyuu6_node = new LargeMotionSequenceNode("Tocyuu6","tocyuu3.mot"); addNode(tocyuu6_node); //途中ノード3-1 StateNode * tocyuu7_node = new LargeMotionSequenceNode("Tocyuu7","tocyuu1.mot"); addNode(tocyuu7_node); //途中ノード3-2 StateNode * tocyuu8_node = new LargeMotionSequenceNode("Tocyuu8","tocyuu2.mot"); addNode(tocyuu8_node); //途中ノード3-3 StateNode * tocyuu9_node = new LargeMotionSequenceNode("Tocyuu9","tocyuu3.mot"); addNode(tocyuu9_node); //間奏2ノード1 StateNode * kawaru05_node = new MediumMotionSequenceNode("kawaru05","kawaru01.mot"); addNode(kawaru05_node); //間奏2ノード2 StateNode * kawaru06_node = new MediumMotionSequenceNode("kawaru06","kawaru02.mot"); addNode(kawaru06_node); //間奏2ノード3 StateNode * kawaru07_node = new MediumMotionSequenceNode("kawaru07","kawaru03.mot"); addNode(kawaru07_node); //間奏2ノード4 StateNode * kawaru09_node = new MediumMotionSequenceNode("kawaru09","kawaru10.mot"); addNode(kawaru09_node); //間奏2ノード5 StateNode * kawaru_node = new MediumMotionSequenceNode("Kawaru","kawaru.mot"); addNode(kawaru_node); //間奏2ノード6 StateNode * asobi_node = new LargeMotionSequenceNode("Asobi","asobi.mot"); addNode(asobi_node); //間奏2ノード7 StateNode * ashi1_node = new MediumMotionSequenceNode("Ashi1","ashi.mot"); addNode(ashi1_node); //間奏2ノード8 StateNode * asi1_node = new MediumMotionSequenceNode("Asi1","asi.mot"); addNode(asi1_node); //せくしーノード1-1 StateNode * sexy1_node = new MediumMotionSequenceNode("Sexy1","ma.mot"); addNode(sexy1_node); //せくしーノード1-2 StateNode * sexy2_node = new MediumMotionSequenceNode("Sexy2","ma.mot"); addNode(sexy2_node); //せくしーノード1-3 StateNode * sexy3_node = new MediumMotionSequenceNode("Sexy3","ma.mot"); addNode(sexy3_node); //せくしーノード2-1 StateNode * sexy4_node = new MediumMotionSequenceNode("Sexy4","ma2.mot"); addNode(sexy4_node); //せくしーノード2-2 StateNode * sexy5_node = new MediumMotionSequenceNode("Sexy5","ma2.mot"); addNode(sexy5_node); //せくしーノード1-3 StateNode * sexy6_node = new MediumMotionSequenceNode("Sexy6","ma.mot"); addNode(sexy6_node); //せくしーノード3-1 StateNode * sexy7_node = new MediumMotionSequenceNode("Sexy7","ma.mot"); addNode(sexy7_node); //せくしーノード3-2 StateNode * sexy8_node = new MediumMotionSequenceNode("Sexy8","ma.mot"); addNode(sexy8_node); //せくしーノード3-3 StateNode * sexy9_node = new MediumMotionSequenceNode("Sexy9","ma.mot"); addNode(sexy9_node); // 停止 WalkNode * stop_node = new WalkNode("Stop", 0,0,0); addNode(stop_node); // スタートは伏せ姿勢 start_node = lie_node; // PCからの合図(TextMessageEvent)による遷移(伏せ→座り) EventTrans * textTrans = new EventTrans(hajime_node,EventBase::textmsgEGID); lie_node->addTransition(textTrans); // 1番(座り→前奏→前奏2→んちゃ→んちゃ1→最初→6秒経過→最初2→6秒経過→途中→最後→ンチャ) hajime_node->addTransition(new CompletionTrans(zenso_node)); zenso_node->addTransition(new CompletionTrans(zenso2_node)); zenso2_node->addTransition(new CompletionTrans(tncha_node)); tncha_node->addTransition(new CompletionTrans(tncha2_node)); tncha2_node->addTransition(new CompletionTrans(tsaisyo1_node)); tsaisyo1_node->addTransition(new CompletionTrans(sexy1_node)); sexy1_node->addTransition(new CompletionTrans(tsaisyo2_node)); tsaisyo2_node->addTransition(new CompletionTrans(sexy2_node)); sexy2_node->addTransition(new CompletionTrans(tocyuu1_node)); tocyuu1_node->addTransition(new CompletionTrans(tocyuu2_node)); tocyuu2_node->addTransition(new CompletionTrans(tocyuu3_node)); tocyuu3_node->addTransition(new CompletionTrans(tsaisyo3_node)); tsaisyo3_node->addTransition(new CompletionTrans(sexy3_node)); sexy3_node->addTransition(new CompletionTrans(tncha3_node)); // 2番(んちゃ1→最初→6秒経過→最初2→6秒経過→途中→最後→ンチャ) tncha3_node->addTransition(new CompletionTrans(tncha4_node)); tncha4_node->addTransition(new CompletionTrans(tsaisyo4_node)); tsaisyo4_node->addTransition(new CompletionTrans(sexy4_node)); sexy4_node->addTransition(new CompletionTrans(tsaisyo5_node)); tsaisyo5_node->addTransition(new CompletionTrans(sexy5_node)); sexy5_node->addTransition(new CompletionTrans(tocyuu4_node)); tocyuu4_node->addTransition(new CompletionTrans(tocyuu5_node)); tocyuu5_node->addTransition(new CompletionTrans(tocyuu6_node)); tocyuu6_node->addTransition(new CompletionTrans(tsaisyo6_node)); tsaisyo6_node->addTransition(new CompletionTrans(sexy6_node)); sexy6_node->addTransition(new CompletionTrans(tncha5_node)); // ンチャ〜間奏1〜ンチャ(ンチャ2→間奏1→ンチャ) tncha5_node->addTransition(new CompletionTrans(tncha6_node)); tncha6_node->addTransition(new CompletionTrans(kanso_node)); kanso_node->addTransition(new CompletionTrans(madao2_node)); madao2_node->addTransition(new CompletionTrans(tncha7_node)); tncha7_node->addTransition(new CompletionTrans(tncha8_node)); // 3番(最初→6秒経過→最初2→6秒経過→途中→最後→ンチャ) tncha8_node->addTransition(new CompletionTrans(tsaisyo7_node)); tsaisyo7_node->addTransition(new CompletionTrans(sexy7_node)); sexy7_node->addTransition(new CompletionTrans(tsaisyo8_node)); tsaisyo8_node->addTransition(new CompletionTrans(sexy8_node)); sexy8_node->addTransition(new CompletionTrans(tocyuu7_node)); tocyuu7_node->addTransition(new CompletionTrans(tocyuu8_node)); tocyuu8_node->addTransition(new CompletionTrans(tocyuu9_node)); tocyuu9_node->addTransition(new CompletionTrans(tsaisyo9_node)); tsaisyo9_node->addTransition(new CompletionTrans(sexy9_node)); sexy9_node->addTransition(new CompletionTrans(kawaru05_node)); // ンチャ〜間奏2(ンチャ2→間奏2) kawaru05_node->addTransition(new CompletionTrans(kawaru06_node)); kawaru06_node->addTransition(new CompletionTrans(kawaru07_node)); kawaru07_node->addTransition(new CompletionTrans(kawaru09_node)); kawaru09_node->addTransition(new CompletionTrans(kawaru_node)); kawaru_node->addTransition(new CompletionTrans(asobi_node)); asobi_node->addTransition(new CompletionTrans(ashi1_node)); ashi1_node->addTransition(new CompletionTrans(asi1_node)); asi1_node->addTransition(new CompletionTrans(stop_node)); } virtual void DoStart() { StateNode::DoStart(); start_node->DoStart(); fromPC.DoStart(); // fromPCオブジェクトをスタート } virtual void DoStop() { StateNode::DoStop(); fromPC.DoStop(); // fromPCオブジェクトをストップ } virtual void teardown() { StateNode::teardown(); } private: // コンパイル時の警告を避けるためのダミー関数 TSmmm(const TSmmm&); TSmmm operator=(const TSmmm&); }; #endif