00001
00002 #ifndef INCLUDED_TailWagNode_h_
00003 #define INCLUDED_TailWagNode_h_
00004
00005 #include "Behaviors/StateNode.h"
00006 #include "Events/EventRouter.h"
00007 #include "Motion/TailWagMC.h"
00008
00009
00010 class TailWagNode : public StateNode {
00011 protected:
00012 SharedObject<TailWagMC> tail_mc;
00013 MotionManager::MC_ID tail_id;
00014
00015 public:
00016
00017 TailWagNode(std::string nodename="TailWagNode") :
00018 StateNode("TailWagNode",nodename), tail_mc(), tail_id(MotionManager::invalid_MC_ID) {}
00019
00020
00021 virtual void DoStart() {
00022 StateNode::DoStart();
00023 tail_id = motman->addPersistentMotion(tail_mc);
00024 erouter->addListener(this,EventBase::motmanEGID,tail_id,EventBase::statusETID);
00025 }
00026
00027
00028 virtual void DoStop() {
00029 motman->removeMotion(tail_id);
00030 tail_id = MotionManager::invalid_MC_ID;
00031 erouter->removeListener(this);
00032 StateNode::DoStop();
00033 }
00034
00035
00036 virtual void processEvent(const EventBase&) {
00037 erouter->postEvent(EventBase::stateMachineEGID,reinterpret_cast<unsigned int>(this),EventBase::statusETID,0,getName(),1);
00038 }
00039
00040
00041 SharedObject<TailWagMC>& getMC() { return tail_mc; }
00042
00043
00044 MotionManager::MC_ID& getMC_ID() { return tail_id; }
00045
00046
00047 };
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 #endif