This commit is contained in:
2026-06-06 20:18:55 +01:00
parent 8e1602d1cf
commit 977607b280
2 changed files with 12 additions and 12 deletions
+2 -2
View File
@@ -61,8 +61,8 @@ void print_positions(PropTable<Pos> *positions) {
void print_index(PropTable<Pos> *positions) { void print_index(PropTable<Pos> *positions) {
printf("==========INDEX==========\n"); printf("==========INDEX==========\n");
for (u64 i = 0; i < wapp_array_count(positions->index); ++i) { for (u64 i = 0; i < wapp_array_count(positions->lookup); ++i) {
printf("%" PRIu64 ": %d\n", i, positions->index[i]); printf("%" PRIu64 ": %d\n", i, positions->lookup[i]);
} }
} }
+10 -10
View File
@@ -9,11 +9,11 @@
template<typename T> template<typename T>
struct PropTable { struct PropTable {
PropTable(const Allocator *allocator, u64 capacity) { PropTable(const Allocator *allocator, u64 capacity) {
index = wapp_array_alloc_capacity(i32, allocator, capacity, ARRAY_INIT_FILLED); lookup = wapp_array_alloc_capacity(i32, allocator, capacity, ARRAY_INIT_FILLED);
values = wapp_array_alloc_capacity(Value, allocator, capacity, ARRAY_INIT_NONE); values = wapp_array_alloc_capacity(Value, allocator, capacity, ARRAY_INIT_NONE);
for (u64 i = 0; i < wapp_array_count(index); ++i) { for (u64 i = 0; i < wapp_array_count(lookup); ++i) {
index[i] = -1; lookup[i] = -1;
} }
} }
@@ -22,15 +22,15 @@ struct PropTable {
i32 idx = (i32)wapp_array_count(values); i32 idx = (i32)wapp_array_count(values);
Value v = {prop, id.index}; Value v = {prop, id.index};
wapp_array_set(i32, index, id.index, &idx); wapp_array_set(i32, lookup, id.index, &idx);
wapp_array_append_capped(Value, values, &v); wapp_array_append_capped(Value, values, &v);
} }
void remove_prop(EntityID id) { void remove_prop(EntityID id) {
if (IS_INVALID_ID(id) || *wapp_array_get(i32, index, id.index) == -1) { return; } if (IS_INVALID_ID(id) || *wapp_array_get(i32, lookup, id.index) == -1) { return; }
// Get indices for swapping // Get indices for swapping
i32 idx1 = *wapp_array_get(i32, index, id.index); i32 idx1 = *wapp_array_get(i32, lookup, id.index);
i32 idx2 = ((i32)wapp_array_count(values)) - 1; i32 idx2 = ((i32)wapp_array_count(values)) - 1;
// Swap values // Swap values
@@ -38,18 +38,18 @@ struct PropTable {
wapp_array_pop(Value, values); wapp_array_pop(Value, values);
// Update index // Update index
index[id.index] = -1; lookup[id.index] = -1;
index[values[idx1].index_location] = idx1; lookup[values[idx1].index] = idx1;
} }
struct Value { struct Value {
T value; T value;
u32 index_location; u32 index;
}; };
typedef Value *ValueArray; typedef Value *ValueArray;
I32Array index; I32Array lookup;
ValueArray values; ValueArray values;
}; };