#ifndef INCLUDED_Smmm_h_ // このファイル INCLUDED_MyStateSync_h_ が定義されていなければ #define INCLUDED_Smmm_h_ // このファイル INCLUDED_MyStateSync_h_ を定義する #include "Shared/ERS7Info.h" // AIBOの機種(ERS7)に関する部品ファイル #include "Shared/WorldState.h" // 状態を監視するための部品ファイル #include "StateHeader.h" // 状態と遷移に必要な部品ファイル #include "StartCommFromPC.h" // PCから合図を受信するための部品ファイル // クラス class Smmm : public StateNode { protected: StateNode * start_node; // start_nodeは、クラス全体で使用するのでココに定義する StartCommFromPC fromPC; // PCからの合図を受け取るオブジェクト public: // コンストラクタ Smmm() : StateNode("Smmm"), start_node(NULL), fromPC() {} // デコンストラクタ ~Smmm() { 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","zenso2.mot"); addNode(zenso2_node); //間奏1ノード StateNode * kanso_node = new LargeMotionSequenceNode("Kanso","kanso2.mot"); addNode(kanso_node); //間奏1ノード2 StateNode * madao2_node = new LargeMotionSequenceNode("Madao2","madao2.mot"); addNode(madao2_node); //ンチャノード1-1 StateNode * ncha_node = new LargeMotionSequenceNode("Ncha","ncha.mot"); addNode(ncha_node); //ンチャノード1-2 StateNode * ncha2_node = new LargeMotionSequenceNode("Ncha2","ncha2.mot"); addNode(ncha2_node); //ンチャノード2-1 StateNode * ncha3_node = new LargeMotionSequenceNode("Ncha3","ncha.mot"); addNode(ncha3_node); //ンチャノード2-2 StateNode * ncha4_node = new LargeMotionSequenceNode("Ncha4","ncha2.mot"); addNode(ncha4_node); //ンチャノード3-1 StateNode * ncha5_node = new LargeMotionSequenceNode("Ncha5","ncha.mot"); addNode(ncha5_node); //ンチャノード3-2 StateNode * ncha6_node = new LargeMotionSequenceNode("Ncha6","ncha2.mot"); addNode(ncha6_node); //ンチャノード4-1 StateNode * ncha7_node = new LargeMotionSequenceNode("Ncha7","ncha.mot"); addNode(ncha7_node); //ンチャノード4-2 StateNode * ncha8_node = new LargeMotionSequenceNode("Ncha8","ncha2.mot"); addNode(ncha8_node); //最初ノード1-1 StateNode * saisyo1_node = new MediumMotionSequenceNode("Saisyo1","saisyo1.mot"); addNode(saisyo1_node); //最初ノード1-2 StateNode * saisyo2_node = new MediumMotionSequenceNode("Saisyo2","saisyo2.mot"); addNode(saisyo2_node); //最初ノード1-3 StateNode * saisyo3_node = new MediumMotionSequenceNode("Saisyo3","saisyo1.mot"); addNode(saisyo3_node); //最初ノード2-1 StateNode * saisyo4_node = new MediumMotionSequenceNode("Saisyo4","saisyo1.mot"); addNode(saisyo4_node); //最初ノード2-2 StateNode * saisyo5_node = new MediumMotionSequenceNode("Saisyo5","saisyo2.mot"); addNode(saisyo5_node); //最初ノード2-3 StateNode * saisyo6_node = new MediumMotionSequenceNode("Saisyo6","saisyo1.mot"); addNode(saisyo6_node); //最初ノード3-1 StateNode * saisyo7_node = new MediumMotionSequenceNode("Saisyo7","saisyo1.mot"); addNode(saisyo7_node); //最初ノード3-2 StateNode * saisyo8_node = new MediumMotionSequenceNode("Saisyo8","saisyo2.mot"); addNode(saisyo8_node); //最初ノード3-3 StateNode * saisyo9_node = new MediumMotionSequenceNode("Saisyo9","saisyo1.mot"); addNode(saisyo9_node); //途中ノード1-1 StateNode * tocyuu1_node = new LargeMotionSequenceNode("Tocyuu1","tocyuu4.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","tocyuu5.mot"); addNode(tocyuu3_node); //途中ノード2-1 StateNode * tocyuu4_node = new LargeMotionSequenceNode("Tocyuu4","tocyuu4.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","tocyuu5.mot"); addNode(tocyuu6_node); //途中ノード3-1 StateNode * tocyuu7_node = new LargeMotionSequenceNode("Tocyuu7","tocyuu4.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","tocyuu5.mot"); addNode(tocyuu9_node); //間奏2ノード1 StateNode * kawaru05_node = new MediumMotionSequenceNode("kawaru05","kawaru05.mot"); addNode(kawaru05_node); //間奏2ノード2 StateNode * kawaru06_node = new MediumMotionSequenceNode("kawaru06","kawaru06.mot"); addNode(kawaru06_node); //間奏2ノード3 StateNode * kawaru07_node = new MediumMotionSequenceNode("kawaru07","kawaru07.mot"); addNode(kawaru07_node); //間奏2ノード4 StateNode * kawaru09_node = new MediumMotionSequenceNode("kawaru09","kawaru09.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","ashi1.mot"); addNode(ashi1_node); //間奏2ノード8 StateNode * asi1_node = new MediumMotionSequenceNode("Asi1","asi1.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(ncha_node)); ncha_node->addTransition(new CompletionTrans(ncha2_node)); ncha2_node->addTransition(new CompletionTrans(saisyo1_node)); saisyo1_node->addTransition(new CompletionTrans(sexy1_node)); sexy1_node->addTransition(new CompletionTrans(saisyo2_node)); saisyo2_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(saisyo3_node)); saisyo3_node->addTransition(new CompletionTrans(sexy3_node)); sexy3_node->addTransition(new CompletionTrans(ncha3_node)); // 2番(んちゃ1→最初→6秒経過→最初2→6秒経過→途中→最後→ンチャ) ncha3_node->addTransition(new CompletionTrans(ncha4_node)); ncha4_node->addTransition(new CompletionTrans(saisyo4_node)); saisyo4_node->addTransition(new CompletionTrans(sexy4_node)); sexy4_node->addTransition(new CompletionTrans(saisyo5_node)); saisyo5_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(saisyo6_node)); saisyo6_node->addTransition(new CompletionTrans(sexy6_node)); sexy6_node->addTransition(new CompletionTrans(ncha5_node)); // ンチャ〜間奏1〜ンチャ(ンチャ2→間奏1→ンチャ) ncha5_node->addTransition(new CompletionTrans(ncha6_node)); ncha6_node->addTransition(new CompletionTrans(kanso_node)); kanso_node->addTransition(new CompletionTrans(madao2_node)); madao2_node->addTransition(new CompletionTrans(ncha7_node)); ncha7_node->addTransition(new CompletionTrans(ncha8_node)); // 3番(最初→6秒経過→最初2→6秒経過→途中→最後→ンチャ) ncha8_node->addTransition(new CompletionTrans(saisyo7_node)); saisyo7_node->addTransition(new CompletionTrans(sexy7_node)); sexy7_node->addTransition(new CompletionTrans(saisyo8_node)); saisyo8_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(saisyo9_node)); saisyo9_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: // コンパイル時の警告を避けるためのダミー関数 Smmm(const Smmm&); Smmm operator=(const Smmm&); }; #endif