//-*-c++-*-
#ifndef INCLUDED_HeadNoddingBehavior_h_
#define INCLUDED_HeadNoddingBehavior_h_
 
#include "Behaviors/StateMachine.h"

#include "Events/EventRouter.h"
class HeadNoddingBehavior : public StateNode {
public:
  HeadNoddingBehavior() : StateNode("HeadNoddingBehavior") {}

  virtual void setup() {
    std::cout << getName() << " is setting up the state machine." << std::endl;

#statemachine

//States
startPos: HeadPointerNode[getMC()->setMaxSpeed(0, 0.2); getMC()->setMaxSpeed(1,0.2); getMC()->lookAtPoint(5000, 0, 400);]

downNod1: HeadPointerNode[getMC()->setMaxSpeed(0, 0.2); getMC()->setMaxSpeed(1,0.2); getMC()->lookAtPoint(500, 0, -100);]

upNod1  : HeadPointerNode[getMC()->setMaxSpeed(0, 0.2); getMC()->setMaxSpeed(1,0.2); getMC()->lookAtPoint(5000, 0, 400);]

downNod2: HeadPointerNode[getMC()->setMaxSpeed(0, 0.2); getMC()->setMaxSpeed(1,0.2); getMC()->lookAtPoint(500, 0, -100);]

upNod2  : HeadPointerNode[getMC()->setMaxSpeed(0, 0.2); getMC()->setMaxSpeed(1,0.2); getMC()->lookAtPoint(5000, 0, 400);]

//Transitions
startPos =C=> StateNode =T(2000)=> downNod1

downNod1 =C=> upNod1

upNod1   =C=> downNod2

downNod2 =C=> upNod2

#endstatemachine

  startnode = startPos;
  }

  virtual void DoStart() {
    std::cout << getName() << " is starting up." << std::endl;
  }
 
  virtual void DoStop() {
    std::cout << getName() << " is shutting down." << std::endl;
  }

private:  // Dummy methods to satisfy the compiler
  HeadNoddingBehavior(const HeadNoddingBehavior&);
  HeadNoddingBehavior& operator=(const HeadNoddingBehavior&);

};

#endif
