#include "../libsuicmez/libsuicmez.h" #include #include #include #include void* gc_alloc(const TypeInfo* type, size_t size); void gc_init(void); void gc_shutdown(void); // Helper for allocating arrays static void* suic_alloc_array(const TypeInfo* type, size_t elem_size, size_t len, void* init_data) { void* ptr = gc_alloc(type, elem_size * len); if (init_data) memcpy(ptr, init_data, elem_size * len); return ptr; } // Helper for allocating structs static void* suic_alloc_struct(const TypeInfo* type, size_t size, void* init_data) { void* ptr = gc_alloc(type, size); if (init_data) memcpy(ptr, init_data, size); return ptr; } int suic_main(void); int suic_main(void) { suic_ode_init(); void* world = suic_ode_world_create(); void* space = suic_ode_simple_space_create(NULL); suic_ode_world_set_gravity(world, 0.000000, -9.810000, 0.000000); void* body = suic_ode_body_create(world); suic_ode_body_set_box_mass(body, 1.000000, 1.000000, 1.000000, 1.000000); suic_ode_body_set_position(body, 0.000000, 5.000000, 0.000000); void* geom = suic_ode_create_box_geom(space, 1.000000, 1.000000, 1.000000); suic_ode_geom_set_body(geom, body); int i = 0; while ((i < 10)) { suic_ode_world_step(world, 0.016000); i = (i + 1); } suic_ode_geom_destroy(geom); suic_ode_body_destroy(body); suic_ode_space_destroy(space); suic_ode_world_destroy(world); suic_ode_close(); return 0; } int main(int argc, char* argv[]) { // Initialize GC gc_init(); // init globals // init event loop int result = suic_main(); // Shutdown GC gc_shutdown(); return result; }