73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
// vim:fileencoding=utf-8:foldmethod=marker
|
|
|
|
#include "entity_id.h"
|
|
#include "prop_table.hpp"
|
|
#include "wapp/wapp.h"
|
|
#include <stdio.h>
|
|
|
|
struct Pos {
|
|
f32 x;
|
|
f32 y;
|
|
f32 z;
|
|
};
|
|
|
|
void print_positions(PropTable<Pos> *positions);
|
|
void print_index(PropTable<Pos> *positions);
|
|
void print_values(PropTable<Pos> *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<Pos> positions = {&arena, 8};
|
|
|
|
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<Pos> *positions) {
|
|
print_index(positions);
|
|
print_values(positions);
|
|
}
|
|
|
|
void print_index(PropTable<Pos> *positions) {
|
|
printf("==========INDEX==========\n");
|
|
for (u64 i = 0; i < wapp_array_count(positions->index); ++i) {
|
|
printf("%lu: %d\n", i, positions->index[i]);
|
|
}
|
|
}
|
|
|
|
void print_values(PropTable<Pos> *positions) {
|
|
printf("==========VALUES==========\n");
|
|
for (u64 i = 0; i < wapp_array_count(positions->values); ++i) {
|
|
printf("%lu: (%f, %f, %f)\n", i, positions->values[i].x, positions->values[i].y, positions->values[i].z);
|
|
}
|
|
printf("\n");
|
|
}
|