Fix static array. Add constant buffers. Beginning of textures.

This commit is contained in:
2024-06-26 13:42:13 +02:00
parent 3bbbc1d556
commit 1bf829d42f
8 changed files with 217 additions and 59 deletions

View File

@@ -1,29 +1,43 @@
Static_Array :: struct ($T : Type, $N : s64) {
Static_Array :: struct (T : Type, N : int) {
array : [N] T;
capacity : s64 = N;
count : s64;
count : int;
}
// operator [] :: (array : Static_Array($T, $N), index : int) -> T {
// assert(index < array.count);
// return array.array[index];
// }
// operator []= :: (array : *Static_Array($T, $N), index : int, value : T) {
// assert(index < array.count);
// array.array[index] = value;
// }
operator *[] :: (array : *Static_Array($T, $N), index : int) -> *T {
assert(index < array.count);
return *(array.array[index]);
operator *[] :: (sa : *Static_Array, index : int) -> *sa.T {
assert(index < sa.count);
return *sa.array[index];
}
array_add :: (array : *Static_Array($T, $N), item : T) {
assert(array.count + 1 < array.capacity);
array_add :: (sa : *Static_Array, item : sa.T) {
assert(sa.count + 1 < sa.N);
print("%\n", array[array.count]);
array[array.count] = item;
array.count += 1;
sa.array[sa.count] = item;
sa.count += 1;
}
array_add :: (sa : *Static_Array) -> *sa.T {
assert(sa.count + 1 < sa.N);
ptr := *sa.array[sa.count];
sa.count += 1;
return ptr;
}
pop :: (sa : *Static_Array) -> sa.T {
assert(sa.count > 0);
elem := sa.array[sa.count - 1];
sa.count -= 1;
return elem;
}
clear :: (sa : *Static_Array) {
sa.count = 0;
}
to_array :: (sa : *Static_Array) -> []sa.T {
array : []sa.T;
array.count = sa.count;
array.data = sa.array.data;
return array;
}