From 3256cc50c136ebe65555abb216ab19590d8007c9 Mon Sep 17 00:00:00 2001 From: jaburns Date: Wed, 14 Oct 2020 10:36:26 -0600 Subject: [PATCH] Added api for dynamic surfaces --- src/engine/surface_load.c | 2 +- src/libsm64.c | 16 ++++++++++++++-- src/libsm64.h | 25 +++++++++++++++++++++---- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/engine/surface_load.c b/src/engine/surface_load.c index 1918dad..250233b 100644 --- a/src/engine/surface_load.c +++ b/src/engine/surface_load.c @@ -313,7 +313,7 @@ static void load_area_terrain(s16 index, s16 *data, s8 *surfaceRooms, s16 *macro // } -void surface_load_for_libsm64( const struct SM64Surface *surfaceArray, size_t numSurfaces ) +void surface_load_for_libsm64( const struct SM64Surface *surfaceArray, uint32_t numSurfaces ) { while( s_surface_node_list ) { diff --git a/src/libsm64.c b/src/libsm64.c index e55e550..b457722 100644 --- a/src/libsm64.c +++ b/src/libsm64.c @@ -97,7 +97,7 @@ void sm64_global_init( uint8_t *rom, uint8_t *outTexture, SM64DebugPrintFunction D_80339D10.targetAnim = NULL; } -void sm64_load_surfaces( uint16_t terrainType, const struct SM64Surface *surfaceArray, size_t numSurfaces ) +void sm64_load_surfaces( uint16_t terrainType, const struct SM64Surface *surfaceArray, uint32_t numSurfaces ) { surface_load_for_libsm64( surfaceArray, numSurfaces ); gCurrentArea->terrainType = terrainType; @@ -141,7 +141,7 @@ static void update_objects( void ) //update_mario_platform(); } -void sm64_mario_tick( const struct SM64MarioInputs *inputs, struct SM64MarioState *outState, struct SM64MarioGeometryBuffers *outBuffers ) +void sm64_mario_tick( const struct SM64MarioInputs *inputs, struct SM64MarioState *outState, struct SM64MarioGeometryBuffers *outBuffers ) { update_button( inputs->buttonA, A_BUTTON ); update_button( inputs->buttonB, B_BUTTON ); @@ -170,4 +170,16 @@ void sm64_mario_tick( const struct SM64MarioInputs *inputs, struct SM64MarioStat void sm64_global_terminate( void ) { // TODO free +} + +uint32_t sm64_load_surface_object( const struct SM64SurfaceObject *surfaceObject ) +{ +} + +void sm64_move_object( uint32_t id, const struct SM64ObjectTransform *transform ) +{ +} + +void sm64_unload_object( uint32_t id ) +{ } \ No newline at end of file diff --git a/src/libsm64.h b/src/libsm64.h index 4b3c7a3..8750238 100644 --- a/src/libsm64.h +++ b/src/libsm64.h @@ -19,6 +19,19 @@ struct SM64MarioInputs uint8_t buttonA, buttonB, buttonZ; }; +struct SM64ObjectTransform +{ + float position[3]; + float eulerRotation[3]; +}; + +struct SM64SurfaceObject +{ + struct SM64ObjectTransform transform; + uint32_t surfaceCount; + struct SM64Surface surfaces[]; +}; + struct SM64MarioState { float position[3]; @@ -38,14 +51,18 @@ struct SM64MarioGeometryBuffers typedef void (*SM64DebugPrintFunctionPtr)( const char * ); -static const size_t SM64_TEXTURE_WIDTH = 64 * 11; -static const size_t SM64_TEXTURE_HEIGHT = 64; -static const size_t SM64_GEO_MAX_TRIANGLES = 1024; +static const uint32_t SM64_TEXTURE_WIDTH = 64 * 11; +static const uint32_t SM64_TEXTURE_HEIGHT = 64; +static const uint32_t SM64_GEO_MAX_TRIANGLES = 1024; extern void sm64_global_init( uint8_t *rom, uint8_t *outTexture, SM64DebugPrintFunctionPtr debugPrintFunction ); -extern void sm64_load_surfaces( uint16_t terrainType, const struct SM64Surface *surfaceArray, size_t numSurfaces ); +extern void sm64_load_surfaces( uint16_t terrainType, const struct SM64Surface *surfaceArray, uint32_t numSurfaces ); extern void sm64_mario_reset( int16_t marioX, int16_t marioY, int16_t marioZ ); extern void sm64_mario_tick( const struct SM64MarioInputs *inputs, struct SM64MarioState *outState, struct SM64MarioGeometryBuffers *outBuffers ); extern void sm64_global_terminate( void ); +extern uint32_t sm64_load_surface_object( const struct SM64SurfaceObject *surfaceObject ); +extern void sm64_move_object( uint32_t id, const struct SM64ObjectTransform *transform ); +extern void sm64_unload_object( uint32_t id ); + #endif//__LIB_SM64_H \ No newline at end of file