feat: implemented game of life feat: implemented automatic stepping fix: operator< Cell Cell now sorts by y first, then x fix: equalized scroll x/y fix: removed unused code path fix: marked simulation::living as static since it's no longer forward declared tweak: decreased number of cells on random initialization feat: defined Toggle element feat: added debug information toggle to UI feat: implemented simulation multithreading feat: improved simulation frame delta controls feat: inverted direction of panel colours fix: removed leftover die colors feat: reorganized and cleaned up style namespace chore: increased button border width feat: added SDL3 submodule feat: added SDL3_ttf submodule feat: moved clay to vendor (rather than include) feat: replaced premake5 with CMake to vendor SDL3 chore: translated more C stuff to C++ in main.cpp fix: stepping being inconsistent while running feat: fixed incorrect behaviour on simulation and added benchmarking code feat: minor adjustments to UI layout feat: increased thread count for pool feat: improved simulation benchmarking feat: simulation tasks can now be subdivided into separate workloads for separate threads feat: improved task counting thread safety chore: massively increased random field fix: target delta time is now enforced feat: added toggle for locked framerate fix: replaced manual .lock()/.unlock() calls with std::scoped_lock fix: benchmarking code was off by a magnitude of 1 feat: separated cell state checking into separate function in case another algo is faster than .contains chore: some comments on variables in simulation.cpp feat: set task split to hardware_concurrency() feat: added basic culling to cell renderer feat: implemented simulation threading toggle chore: lowered random button's field size chore: reduced padding on panel containers chore: minor formatting adjustment feat: added README.md fix: inverted x scroll feat: converted project to template feat: added .clangd
31 lines
719 B
C
31 lines
719 B
C
#include "ui_data.h"
|
|
#include <stdint.h>
|
|
#include <string.h>
|
|
|
|
const size_t uiDataLength = UI_DATA_SIZE;
|
|
|
|
static size_t utilized = 9;
|
|
static char uiDataArena[UI_DATA_SIZE];
|
|
static char *uiDataWriter = uiDataArena;
|
|
|
|
Clay_String UiData_StoreString(char const *data, size_t amount) {
|
|
if (utilized + amount > uiDataLength) {
|
|
return CLAY_STRING("out of arena memory");
|
|
}
|
|
memcpy(uiDataWriter, data, amount);
|
|
Clay_String result = {
|
|
false, (int32_t)amount, uiDataWriter
|
|
};
|
|
uiDataWriter += amount;
|
|
utilized += amount;
|
|
return result;
|
|
}
|
|
Clay_String UiData_StoreClayStr(Clay_String string) {
|
|
return UiData_StoreString(string.chars, string.length);
|
|
}
|
|
|
|
void UiData_Clear() {
|
|
utilized = 0;
|
|
uiDataWriter = uiDataArena;
|
|
}
|