#include "arc/engine/state.h" #include #include void ARC_State_Create(ARC_State **state, ARC_State_UpdateFn updateFn, ARC_State_RenderFn renderFn, void *data, ARC_State_DestroyDataFn *destroyDataFn){ *state = (ARC_State *)malloc(sizeof(ARC_State)); (*state)->updateFn = updateFn; (*state)->renderFn = renderFn; (*state)->data = data; (*state)->destroyDataFn = NULL; if(destroyDataFn != NULL){ (*state)->destroyDataFn = (ARC_State_DestroyDataFn *)malloc(sizeof(ARC_State_DestroyDataFn)); *((*state)->destroyDataFn) = *destroyDataFn; } } void ARC_State_Destroy(ARC_State *state){ if(state->destroyDataFn != NULL){ (*(state->destroyDataFn))(state->data); } free(state); } void ARC_State_Update(void *data){ ((ARC_State *)data)->updateFn(((ARC_State *)data)->data); } void ARC_State_Render(void *data){ ((ARC_State *)data)->renderFn(((ARC_State *)data)->data); }