SDK: Add StateMachine (FSM)

Former-commit-id: 8029f7cce71809ff1f661982d39750c48c86431f
This commit is contained in:
Lynix
2016-03-19 12:21:07 +01:00
parent 83884015fc
commit 42874b90d9
3 changed files with 93 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
// Copyright (C) 2015 Jérôme Leclercq
// This file is part of the "Nazara Development Kit"
// For conditions of distribution and use, see copyright notice in Prerequesites.hpp
#include <NDK/StateMachine.hpp>
#include <utility>
namespace Ndk
{
inline void StateMachine::ChangeState(std::shared_ptr<State> state)
{
m_nextState = std::move(state);
}
inline bool StateMachine::Update(float elapsedTime)
{
if (m_nextState)
{
m_currentState->Leave(*this);
m_currentState = std::move(m_nextState);
m_currentState->Enter(*this);
}
return m_currentState->Update(*this, elapsedTime);
}
}