//-*-c++-*-
#ifndef Included_XWalkTest_h_
#define Included_XWalkTest_h_

#include "Behaviors/StateMachine.h"
#include "Motion/XWalkMC.h"
#include "Motion/MotionPtr.h"

// This behavior demonstrates how to smoothly chain XWalkNodes together
// by using a shared XWalkMC.

class XWalkTest : public StateNode {
public:

  class TalkToWalker : public StateNode {
  public:
    TalkToWalker() : StateNode("TalkToWalker") {}

    virtual void DoStart() {
      std::cout << "Sending WalkRequest signal" << std::endl;
      WalkRequest req(20,500,20,500,0,0);
      postStateSignal<WalkRequest>(req);
    }
  };

  XWalkTest() : StateNode("XWalkTest") {}

  virtual void setup() {
    MotionPtr<XWalkMC> walker;
    addMotion(walker);
    MotionManager::MC_ID walkID = walker->getID();
    std::cout << "setup:  walker is " << (void*)((walker.operator->()).operator->()) << ":id=" << walkID << std::endl;
		
#statemachine

  startnode: StateNode =T(3000)=> TalkToWalker() =S<WalkRequest>=> XWalkNode

#endstatemachine
      }
};

#endif
