CSC8503_Advanced_Game_Technologies / CSC8503 / CSC8503Common / BehaviourSequence.h
BehaviourSequence.h
Raw
#pragma once
#include "BehaviourNodeWithChildren.h"

class BehaviourSequence : public BehaviourNodeWithChildren {
public:	
	BehaviourSequence(const std::string& nodeName) : BehaviourNodeWithChildren(nodeName) {}
	~BehaviourSequence() {}
	BehaviourState Execute(float dt) override {
		//std::cout << "Executing sequence " << name << "\n";
		for (auto& i : childNodes) {
			BehaviourState nodeState = i->Execute(dt);
			switch (nodeState) {
				case Success: continue;
				case Failure:
				case Ongoing: 
				{
					currentState = nodeState;
					return nodeState;
				}
			}
		}
		return Success;
	}
};