47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
/*
|
|
* Copyright (c) 2014, Oculus VR, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD-style license found in the
|
|
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
|
|
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
|
|
*
|
|
* Modified work: Copyright (c) 2017, SLikeSoft UG (haftungsbeschränkt)
|
|
*
|
|
* This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
|
|
* license found in the license.txt file in the root directory of this source tree.
|
|
*/
|
|
|
|
#ifndef __FINITE_STATE_MACHINE_H
|
|
#define __FINITE_STATE_MACHINE_H
|
|
|
|
#include "slikenet/DS_List.h"
|
|
|
|
class State;
|
|
|
|
// Finite state machine
|
|
// Stores a stack of states
|
|
// The top of the stack is the current state. There is only one current state. The stack contains the state history.
|
|
// OnEnter, OnLeave, FSMAddRef, FSMRemoveRef of class State is called as appropriate.
|
|
class FSM
|
|
{
|
|
public:
|
|
FSM();
|
|
~FSM();
|
|
void Clear(void);
|
|
State *CurrentState(void) const;
|
|
State *GetState(const int index) const;
|
|
int GetStateIndex(State *state) const;
|
|
int GetStateHistorySize(void) const;
|
|
void RemoveState(const int index);
|
|
void AddState(State *state);
|
|
void ReplaceState(const int index, State *state);
|
|
void SetPriorState(const int index);
|
|
|
|
protected:
|
|
DataStructures::List<State*> stateHistory;
|
|
};
|
|
|
|
|
|
#endif
|