// vim:fileencoding=utf-8:foldmethod=marker #include "entity_id.h" #include "prop_table.hpp" #include "wapp/wapp.h" #include #include struct Pos { f32 x; f32 y; f32 z; }; void print_positions(PropTable *positions); void print_index(PropTable *positions); void print_values(PropTable *positions); i32 main(void) { Allocator arena = wapp_mem_arena_allocator_init(MiB(64)); EntityID id1 = {1}; EntityID id2 = {2}; EntityID id3 = {3}; EntityID id4 = {4}; EntityID id5 = {5}; PropTable positions = {&arena, 8}; PropTable numbers = {&arena, 8}; numbers.add_prop(id5, 1); print_positions(&positions); positions.add_prop(id3, Pos{1.0f, 2.0f, 3.0f}); print_positions(&positions); positions.add_prop(id5, Pos{10.0f, 20.0f, 30.0f}); print_positions(&positions); positions.add_prop(id1, Pos{100.0f, 200.0f, 300.0f}); print_positions(&positions); positions.add_prop(id4, Pos{1000.0f, 2000.0f, 3000.0f}); print_positions(&positions); positions.remove_prop(id5); print_positions(&positions); positions.add_prop(id2, Pos{10000.0f, 20000.0f, 30000.0f}); print_positions(&positions); wapp_mem_arena_allocator_destroy(&arena); return 0; } void print_positions(PropTable *positions) { print_index(positions); print_values(positions); } void print_index(PropTable *positions) { printf("==========INDEX==========\n"); for (u64 i = 0; i < wapp_array_count(positions->lookup); ++i) { printf("%" PRIu64 ": %d\n", i, positions->lookup[i]); } } void print_values(PropTable *positions) { printf("==========VALUES==========\n"); for (u64 i = 0; i < wapp_array_count(positions->values); ++i) { printf("%" PRIu64 ": (%f, %f, %f)\n", i, positions->values[i].value.x, positions->values[i].value.y, positions->values[i].value.z); } printf("\n"); }