diff --git a/engine/breeze/ai/fsm.c b/engine/breeze/ai/fsm.c new file mode 100644 index 0000000..5740d90 --- /dev/null +++ b/engine/breeze/ai/fsm.c @@ -0,0 +1,8 @@ +#include "fsm.h" + +void bzFSMSetState(BzFSMState *state, const BzFSMState *newState, void *data) { + state->exit(data); + newState->enter(data); + *state = *newState; +} + diff --git a/engine/breeze/ai/fsm.h b/engine/breeze/ai/fsm.h new file mode 100644 index 0000000..92284c0 --- /dev/null +++ b/engine/breeze/ai/fsm.h @@ -0,0 +1,20 @@ +#ifndef BREEZE_FSM_H +#define BREEZE_FSM_H + +#include "../defines.h" + +#define BZ_FSM_STACK_SIZE 2 + +typedef void(*BzFSMFn)(void *data); + +typedef struct BzFSMState { + BzFSMFn enter; + BzFSMFn exit; + BzFSMFn update; +} BzFSMState; + +void bzFSMSetState(BzFSMState *state, const BzFSMState *newState, void *data); + + + +#endif //BREEZE_FSM_H