From c4c2b7610d6d7f43699ad45f2eddb9da95b98214 Mon Sep 17 00:00:00 2001 From: Klemen Plestenjak Date: Wed, 10 Jan 2024 07:28:30 +0100 Subject: [PATCH] Very basic fsm --- engine/breeze/ai/fsm.c | 8 ++++++++ engine/breeze/ai/fsm.h | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 engine/breeze/ai/fsm.c create mode 100644 engine/breeze/ai/fsm.h 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