#ifndef __Herding_H_
#define __Herding_H_

#include "Behaviors/BehaviorBase.h"
#include "Events/EventRouter.h"

#include "Events/EventBase.h" 
#include "DualCoding/DualCoding.h"
#include "Behaviors/StateMachine.h"

#include "BuildBoundary.h"
#include "Manipulation.h"

using namespace DualCoding;

class Herding : public VisualRoutinesStateNode {
    

public:
	Herding() : VisualRoutinesStateNode("SheepHerding") {}
	virtual void setup() {
#statemachine
        startnode: StateNode
        
        buildlmap: HerdingBuildLMap()
		
        buildboundary: BuildBoundary()

        moveball: Manipulation()

        startnode =N=> buildlmap
        
        buildlmap =MAP=> buildboundary            		

        buildboundary =C=> moveball

#endstatemachine
	}
};

#endif
