From 6c1a1fbb5382ce49fae7cba648f202f6ccfc6d0e Mon Sep 17 00:00:00 2001 From: Sara Date: Sat, 2 Dec 2023 16:54:15 +0100 Subject: [PATCH] portfolio prep --- .gitignore | 14 ++ CMakeLists.txt | 44 +++++ Inter-Regular.otf | Bin 0 -> 258992 bytes blur.png | Bin 0 -> 53088 bytes boid.png | Bin 0 -> 2585 bytes include/ecs.h | 124 +++++++++++++++ src/engine/adb.c | 313 ++++++++++++++++++++++++++++++++++++ src/engine/adb.h | 28 ++++ src/engine/engine.c | 206 ++++++++++++++++++++++++ src/engine/engine.h | 34 ++++ src/engine/ui.c | 380 ++++++++++++++++++++++++++++++++++++++++++++ src/engine/ui.h | 31 ++++ src/engine/vec.h | 149 +++++++++++++++++ src/sim/boid_c.c | 300 ++++++++++++++++++++++++++++++++++ src/sim/boid_c.h | 46 ++++++ src/sim/sim.c | 154 ++++++++++++++++++ 16 files changed, 1823 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 Inter-Regular.otf create mode 100644 blur.png create mode 100644 boid.png create mode 100644 include/ecs.h create mode 100644 src/engine/adb.c create mode 100644 src/engine/adb.h create mode 100644 src/engine/engine.c create mode 100644 src/engine/engine.h create mode 100644 src/engine/ui.c create mode 100644 src/engine/ui.h create mode 100644 src/engine/vec.h create mode 100644 src/sim/boid_c.c create mode 100644 src/sim/boid_c.h create mode 100644 src/sim/sim.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fa2cd35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# build dirs +xcode/ +kdev/ +[Dd]ebug/ +[Rr]elease/ +[Bb]uild/ +[Bb]in/ + +# build files +*.exe +*.out +*.o +*.a + diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..6610bff --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,44 @@ +cmake_minimum_required(VERSION 3.17) + +project(engine) +project(sim) + +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib") +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib") +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin") + +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG") + +find_package(SDL2 REQUIRED) +find_package(SDL2_image REQUIRED) +find_package(SDL2_ttf REQUIRED) + +include_directories(SDL2 PRIVATE "${CMAKE_SOURCE_DIR}/src/engine" "${CMAKE_SOURCE_DIR}/include") + +if(APPLE) + include_directories("/opt/homebrew/include/") + link_directories("/opt/homebrew/lib/" "./lib/") +else() + link_directories("./lib/") +endif() + +file( + GLOB_RECURSE + SIM_SRC + "${CMAKE_SOURCE_DIR}/src/sim/*.c" +) + +add_library(sim STATIC ${SIM_SRC}) +set_target_properties(sim PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) + +target_link_libraries(sim SDL2 SDL2_image SDL2_ttf ecs c m) + +file( + GLOB_RECURSE + ENGINE_SRC + "${CMAKE_SOURCE_DIR}/src/engine/*.c" +) + +add_executable(engine ${ENGINE_SRC}) +target_link_libraries(engine sim SDL2 SDL2_image SDL2_ttf ecs c m) diff --git a/Inter-Regular.otf b/Inter-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..84e6a61c3c0f11fc8c88c9e7a8f6ed7f7bbc43b3 GIT binary patch literal 258992 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

-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 J>wTt%eg>tMGE@Kn literal 0 HcmV?d00001 diff --git a/blur.png b/blur.png new file mode 100644 index 0000000000000000000000000000000000000000..cf6bbfe6a44216e5e0da167639755eb8ea03b890 GIT binary patch literal 53088 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 literal 0 HcmV?d00001 diff --git a/boid.png b/boid.png new file mode 100644 index 0000000000000000000000000000000000000000..3a999ea214f14a497faab6b350cd843e961b3dce GIT binary patch literal 2585 zcmV+!3g-2RP)jIK?t!SVdzqdpt&CFR{1qjPaN` z7KJt@S(MdK%dkow$WvoYiVa{`MPv5N9nlz*#gschV{ytxh;?y8)VM;8$3~;^h%v^V zK7D%Eh(LB`-CP&W0{WgN{H;Y`k^qoU^pL^|Mb8>op_u~v{l2vJQr9NUvN2t~di8I> zl)yRXJZdB4Dg2^VtL;FA#faJ_@=Y6uxE1;giDOjcLsely9_VLHtWflth!uJ&a6BIC z5H`=7bI$hm_C8^Iq%0yC%nQSC?egWz-|Dh%5^vwW{WW#qi|ERgD_u-Gm9rYk3#F`+vTSp6 z^FZbMQ;j4oles9@p;Coy=_n$5$exTDG&Z^AR8@^ZG2yFiV2aI-zAj5cCm( zQrqczrj&o4^gPd35F~65NqB-~&VFEbPzKC*c#EX29yX0v%hC}@t~tYtbL z$4{+0wG8uUCWA@7*yJ)4=mZ!VON_xE$)Je&V{(F6cuSB+F%@iWZN2yI-@pHz31N)k z(}ySwheKX07Qvww7RGvizu)J@ViA-!QwAnNhSKbo+hjUlCutWT$~k7`6`eQk+O=!H zBpDVX`aXZg$tG^olC-L%Ww!J@&*z+v0N1Z@&d20>=rE2E$6r{GF9qOTQ^j_vpzPzF zPDf^#2@$n-Z$bf-kEDWf4J2XGYPDWd7#1VqXWuwrt$;M*Iv;DsmCNO-4#Q$Z{L%WU zE(Jz{GHgTiQlN8JkV+29xZ~qv?)yrKK56*AkIxZ6`>~0w)g;8*tq=lT+-x@A8?=XpiW`2aPbHNx|}uQ}(#)N8VgV`kPe zEbyCfrq(hnvh))g*YEd@tz}sFzMq~dOd5#W+uI*aPZBDK^v#|vYqi=NYg#HG(pzj? ztyb$>)K3|a{`1DE)KI#F$yA}oIR~fWTt}QLG`U%38lKTDER!&{eN`@(UzW?|m!{+y z^H`j0HMZ%<6Baybs#dEH;~6aaTf0mnUGdhfTR$fKtrOb2V$zbLYX@f%+CA24wf>U% zj2b2;50L<^lZaN2-Mo481?D>v=$x4bgMsk*F8WTJY;BBXl0~u!91Lmeinnjy{(<5e zG<4i8!CS?NNP7FaaJvJVX!707*c+7m?C-oYs z$ATc}WAc=~@1x%}5Q1_hIyyR%oebv?wRLZSrpS0v7N(JP#Zsx%b%93=lF5TIjYk!$ zk$9|Ht^Q8Ihmsf7bWgp?D^LB(9@CLhBjKq!`<$Gds7{7+hJXGc{yB3<{e;zdZB`sX~>Y&QQerxFd4bk=?1mr00E7c-ewqsFZ6Qyz;>Kr*cp z35LVrR3Y`L$2K=N5AtdhV~iDx#i`RsPYtt?R-?w04cu~CjT&*9Ziz9wX*FuZww%`& zcf2JR(rVNQg5ZtO)BB8qBerNa!ccD-y zJXbxS*h$##HPkeFS_$;@kUWre1t>}MN`BHS?|CNc3Q$oH1TRLTQIgO2Xfy&HXX83q zSAc?QwOT)`#%3@W%$>oISF)~vDs60R9LVm$9vvNNeLc?k6QhX3SSTRCjlG_XA_hw`~i`e%lIQsL^PEe{3@e z5g+UJK*_oSP@+B_Esrsrbp;?)DwSS}Vlga6qY*EaN-u5O1|jPT$Wpytf28YuhrwV# za@@EnvaWy(Rjbv9y&3a)MEI8lw&Y&O?QrBb)uZrfHR5$$%H zl}e>k%J=~rk>k~P6D#9~<3j^S*L zFlS;hENsSb#s#_uo1%#jvmv!&Eu>_DAYa-~wgLcjwNXSC1b* zzDUV4?|Aa$$;IX6<%1&Zw)l@WICwpmO;bvp;OHFI9KSxiB7I|uBv_>{N({rzQ(zy&^Ie}8`&eM%m5 zXy&ct&2?Z(@}TQjE=%5A2ec$l`ocvlrVr2(^gf({h11ME(#vZGC+d48ygRm6hKXkM{1P+wHQ^X!Onhc;%SEvqRY^00000NkvXXu0mjf@tg9d literal 0 HcmV?d00001 diff --git a/include/ecs.h b/include/ecs.h new file mode 100644 index 0000000..07dbd7d --- /dev/null +++ b/include/ecs.h @@ -0,0 +1,124 @@ +#ifndef ecs_h +#define ecs_h + +#include +#include +#include + + +#if __cplusplus +extern "C" { +#endif + +typedef unsigned long long ecsEntityId; +typedef unsigned long long ecsComponentMask; + +typedef void (*ecsSystemFn)(ecsEntityId*, ecsComponentMask*, size_t, float); + +#define noentity ((ecsEntityId)0x0) +#define nocomponent ((ecsComponentMask)0x0) +#define anycomponent ((ecsComponentMask)~0x0) + +typedef enum ECSqueryComparison { + ECS_NOQUERY = 0x0, + ECS_QUERY_ANY, + ECS_QUERY_ALL, +} ecsQueryComparison; + +typedef struct ecsComponentQuery { + ecsQueryComparison comparison; + ecsComponentMask mask; +} ecsComponentQuery; + +void ecsInit(void); + +/** + * \brief Allocates a component list for a component type of stride bytes. + * \param stride The number of bytes to allocate for each component. + */ +ecsComponentMask ecsMakeComponentType(size_t stride); +#define ecsRegisterComponent(__type) ecsMakeComponentType(sizeof(__type)) + +/** + * \brief Get a pointer to a component attached to entity. + * \param entity The entity to find a component of. + * \param component The component type to find. + * \returns A pointer to a component if found. + * \returns NULL if entity does not contain the given component. + */ +void* ecsGetComponentPtr(ecsEntityId entity, ecsComponentMask component); + +/** + * \brief Assigns a new entity id. + * \param components A component query referencing the components to add to the new object. + * \returns The id used to reference the newly created entity. + * \returns NULL if allocation failed + */ +ecsEntityId ecsCreateEntity(ecsComponentMask components); + +/** + * \brief Gets the component mask for an entity. + * \param entity the entity to get the mask for. + * \returns the ecsComponentMask for entity. + */ +ecsEntityId ecsGetComponentMask(ecsEntityId entity); + +/** + * \brief Destroys an entity and all associated components + * \param entity The id of the entity to destroy. + */ +void ecsDestroyEntity(ecsEntityId entity); + +/** + * \brief Attaches one or more components. + * \param entity The entity to attach the new components to. + * \param components Bitmask of the componentId's to attach. + */ +void ecsAttachComponents(ecsEntityId entity, ecsComponentMask components); + +/** + * \brief Detaches one or more components. + * \param entity The entity to detach components from. + * \param components Bitmask of the components to detach. + */ +void ecsDetachComponents(ecsEntityId entity, ecsComponentMask components); + +/** + * \brief Enables a function to act as a system for entities matching the given query. + * \param func The function to call when query is met. + * \param components The required components to run this system. + * \param comparison The type of requirement components represent. one of { ECS_QUERY_ANY ; ECS_QUERY_ALL }. + * \note + * When comparison=ECS_QUERY_ALL the system will run only when all of the masked components are present on an entity. + * \note + * When comparison=ECS_QUERY_ANY the system will run for all entities where any of the masked components are present. + */ +void ecsEnableSystem(ecsSystemFn func, ecsComponentMask components, ecsQueryComparison comparison, int maxThreads, int executionOrder); + +/** + * \brief Disables a function acting as a system. + * \param func Pointer to the function to disable. + */ +void ecsDisableSystem(ecsSystemFn func); + +/** + * \brief Run currently enabled systems. + * \note Implicitly calls ecsRunTasks after completion. + */ +void ecsRunSystems(float deltaTime); + +/** + * \brief Run queued tasks. + */ +void ecsRunTasks(void); + +/** + * \brief Terminate the ECS and clean up allocated resources. + */ +void ecsTerminate(void); + +#if __cplusplus +} +#endif + +#endif /* ecs_h */ diff --git a/src/engine/adb.c b/src/engine/adb.c new file mode 100644 index 0000000..c525ef1 --- /dev/null +++ b/src/engine/adb.c @@ -0,0 +1,313 @@ +#include "adb.h" +#include +#include +#include +#include +#include +#include + +typedef struct asset_t { + char* filename; + size_t extention_offset; + void* instance; + asset_handle_t handle; +} asset_t; + +typedef struct file_handler_t { + uint64_t ext_hash; + char* extention; + asset_load_fn load; + asset_free_fn free; +} file_handler_t; + +int adb_init = 0; + +asset_t* adb_assets_first; +size_t adb_assets_last; +size_t adb_assets_size; + +file_handler_t* adb_handlers_first; +size_t adb_handlers_last; +size_t adb_handlers_size; + +static inline uint64_t str_hash(const char* str); +static inline void unload_asset(asset_t* asset); +static inline size_t file_extention_offset(const char* filename); +static inline void free_asset_t(asset_t*); + + +// +// MODULE LIFETIME +// + +int init_asset_database(size_t max_asset_bytes) +{ + assert(adb_init == 0); + adb_assets_size = max_asset_bytes; + adb_handlers_size = 5; + + adb_assets_last = 0; + adb_assets_first = malloc(adb_assets_size * sizeof(asset_t)); + + adb_handlers_last = 0; + adb_handlers_first = malloc(adb_handlers_size * sizeof(file_handler_t)); + + adb_init = 1; + + return 0; +} + +int close_asset_database() +{ + for(size_t i = 0; i < adb_assets_last; ++i) + { + free_asset_t(&adb_assets_first[i]); + } + for(size_t i = 0; i < adb_handlers_last; ++i) + { + free(adb_handlers_first[i].extention); + } + free(adb_assets_first); + free(adb_handlers_first); + + return 0; +} + + +// +// FILE HANDLERS +// + +void sort_file_handlers() +{ + size_t swaps = 0; + file_handler_t tmp; + do + { + swaps = 0; + for(size_t i = 1; i < adb_handlers_last; ++i) + { + if(adb_handlers_first[i-1].ext_hash > adb_handlers_first[i].ext_hash) + { + memcpy(&tmp, &adb_handlers_first[i-1], sizeof(file_handler_t)); + memcpy(&adb_handlers_first[i-1], &adb_handlers_first[i], sizeof(file_handler_t)); + memcpy(&adb_handlers_first[i], &tmp, sizeof(file_handler_t)); + ++swaps; + } + } + } while(swaps > 0); +} + +void destroy_file_handler(file_handler_t* handler) +{ + free(handler->extention); + free(handler); +} + +file_handler_t* get_file_handler(const char* extention) +{ + if(adb_handlers_last == 0) + return NULL; + + uint64_t hash = str_hash(extention); + long int l = 0, r = adb_handlers_last-1, m; + file_handler_t* current; + while(l <= r) + { + m = floorf((float)(l+r)/2.f); + current = &adb_handlers_first[m]; + if(current->ext_hash < hash) + l = m + 1; + else if(current->ext_hash > hash) + r = m - 1; + else if(current->ext_hash == hash) + return current; + } + return NULL; +} + +int register_file_handler(const char* file_extention, asset_load_fn loadfn, asset_free_fn freefn) +{ + file_handler_t* existing = get_file_handler(file_extention); + if(existing == NULL) + { + if(adb_handlers_last + 1 >= adb_handlers_size) + { + adb_handlers_first = realloc(adb_handlers_first, adb_handlers_size * 2); + } + file_handler_t* new = (adb_handlers_first+adb_handlers_last); + new->load = loadfn; + new->free = freefn; + new->extention = malloc(strlen(file_extention)); + strcpy(new->extention, file_extention); + new->ext_hash = str_hash(file_extention); + ++adb_handlers_last; + } + else + { + if(loadfn != NULL) + existing->load = loadfn; + if(loadfn != NULL) + existing->free = freefn; + } + + sort_file_handlers(); + + return 0; +} + + +// +// ASSETS +// + +void sort_assets() +{ + size_t swaps = 0; + asset_t tmp; + do + { + swaps = 0; + for(size_t i = 0; i < adb_assets_last; ++i) + { + if(adb_assets_first[i-1].handle > adb_assets_first[i].handle) + { + memcpy(&tmp, &adb_assets_first[i-1], sizeof(asset_t)); + memcpy(&adb_assets_first[i-1], &adb_assets_first[i], sizeof(asset_t)); + memcpy(&adb_assets_first[i], &tmp, sizeof(asset_t)); + ++swaps; + } + } + } while(swaps > 0); +} + +asset_t* get_asset_t(asset_handle_t handle) +{ + if(adb_assets_last == 0) + return NULL; + + asset_t* current; + long int l = 0, r = adb_assets_last-1, m; + while(l <= r) + { + m = floorf((float)(l+r)/2.f); + current = &adb_assets_first[m]; + + if(current->handle < handle) + l = m + 1; + else if(current->handle > handle) + r = m - 1; + else if(current->handle == handle) + return current; + } + return NULL; +} + +void* get_asset(asset_handle_t handle) +{ + asset_t* asset = get_asset_t(handle); + if(asset == NULL) + return NULL; + else + return asset->instance; +} + +int try_get_asset(asset_handle_t handle, void** o_ptr) +{ + void* asset = get_asset(handle); + if(o_ptr != NULL) + memcpy(o_ptr, &asset, sizeof(void*)); + return asset != NULL; +} + +asset_handle_t load_asset(const char* file) +{ + char* filename = realpath(file, NULL); + if(filename == NULL) + return 0; + + asset_handle_t handle = str_hash(filename); + + if(try_get_asset(handle, NULL)) + return handle; + + size_t ext_offset = file_extention_offset(filename); + file_handler_t* handler = get_file_handler(filename + ext_offset); + + adb_assets_first[adb_assets_last] = (asset_t){ + .filename = filename, + .extention_offset = ext_offset, + .instance = handler->load(filename), + .handle = handle + }; + + ++adb_assets_last; + + sort_assets(); + return handle; +} + +void free_asset_t(asset_t* asset) +{ + file_handler_t* handler = get_file_handler(asset->filename + asset->extention_offset); + assert(handler != NULL); + + handler->free(asset->instance); + free(asset->filename); +} + +void free_asset(asset_handle_t handle) +{ + asset_t* asset = get_asset_t(handle); + + if(asset == NULL) + return; + + free_asset_t(asset); +} + + +// +// FILES +// + +asset_handle_t get_file_handle(const char* filename) +{ + char* real_path = realpath(filename, NULL); + asset_handle_t handle = str_hash(real_path); + free(real_path); + return try_get_asset(handle, NULL) ? handle : 0; +} + +size_t file_extention_offset(const char* filename) +{ + const char* cptr = filename + strlen(filename); + while(cptr != filename) + { + if(*cptr == '.') + return cptr - filename; + --cptr; + } + + return 0; +} + +uint64_t str_hash(const char* str) +{ + static const int shift = (8 * sizeof(uint64_t) - 4); + static const uint64_t upper4mask = (uint64_t)0xF << shift; + uint64_t hash = 0; + uint64_t upperfour; + size_t len = 0; + + for(const char* c = str; *c != '\0'; ++c) + { + upperfour = hash & upper4mask; + hash = ((hash << 4) ^ (*c)); + if(upperfour != 0) + hash ^= (upperfour >> shift); + ++len; + } + + return hash ^ len; +} diff --git a/src/engine/adb.h b/src/engine/adb.h new file mode 100644 index 0000000..1938cd4 --- /dev/null +++ b/src/engine/adb.h @@ -0,0 +1,28 @@ +#ifndef adb_h +#define adb_h + +#include +#include + +typedef uint64_t asset_handle_t; + +typedef void* (*asset_load_fn)(const char*); +typedef void (*asset_free_fn)(void*); + +typedef struct asset_t asset_t; +typedef struct file_handler_t file_handler_t; + +extern int init_asset_database(size_t max_asset); +extern asset_handle_t get_file_handle(const char* filename); +extern int asset_is_loaded(asset_handle_t handle); +extern void* get_asset(asset_handle_t handle); +#define get_asset_as(__TYPE, handle) ((__TYPE*)get_asset(handle)) +extern int try_get_asset(asset_handle_t handle, void** o_ptr); +extern asset_handle_t load_asset(const char* file); +extern void free_asset(asset_handle_t handle); +extern size_t set_asset_memory(size_t max_bytes); +extern int close_asset_database(); +extern int register_file_handler(const char* file_extention, asset_load_fn loadfn, asset_free_fn freefn); + + +#endif /* adb_h */ diff --git a/src/engine/engine.c b/src/engine/engine.c new file mode 100644 index 0000000..c3c870d --- /dev/null +++ b/src/engine/engine.c @@ -0,0 +1,206 @@ +#include "engine.h" + +#include +#include +#include +#include +#include +#include +#include "adb.h" +#include "ui.h" + +SDL_Window* window; +SDL_Renderer* renderer; +int engine_wants_to_quit; +float frame_start_time; +float last_frame_time; +short is_render_frame; +float target_frame_time; +float render_frame_time; + +void system_window_clear(ecsEntityId* entities, ecsComponentMask* components, size_t size, float delta_time); +void system_window_display(ecsEntityId* entities, ecsComponentMask* components, size_t size, float delta_time); + +void engine_init(); +void engine_run(); +void engine_handle_event(SDL_Event* event); +void engine_clean(); + +void* asset_load_sdl_image(const char* filename) +{ + SDL_Surface* surf = IMG_Load(filename); + SDL_Texture* tex = SDL_CreateTextureFromSurface(renderer, surf); + SDL_FreeSurface(surf); + return tex; +} + +void asset_free_sdl_image(void* instance) +{ + SDL_Texture* tex = instance; + if(tex != NULL) + { + SDL_DestroyTexture(tex); + } +} + +void* asset_load_ttf_font(const char* filename) +{ + TTF_Font* font = TTF_OpenFont(filename, 50); + return font; +} + +void asset_free_ttf_font(void* instance) +{ + TTF_Font* font = instance; + if(instance != NULL) + { + TTF_CloseFont(font); + } +} + +int main(int argc, char* argv[]) +{ + engine_init(); + engine_run(); + engine_clean(); +} + +void engine_init() +{ + // set the frame start time here to ensure there will be time passed when engine_run is called + frame_start_time = (float)clock() / CLOCKS_PER_SEC; + engine_wants_to_quit = 0; + // init asset database for 100 assets + init_asset_database(100); + + // register default image file handlers + register_file_handler(".png", &asset_load_sdl_image, &asset_free_sdl_image); + register_file_handler(".jpg", &asset_load_sdl_image, &asset_free_sdl_image); + // default font file handlers + register_file_handler(".ttf", &asset_load_ttf_font, &asset_free_ttf_font); + register_file_handler(".otf", &asset_load_ttf_font, &asset_free_ttf_font); + + // load default init settings + engine_init_t init_settings; + default_engine_init_settings(&init_settings); + // allow sim to adjust init settings as needed + sim_config(&init_settings); + target_frame_time = 1.f/(float)init_settings.target_framerate; + + // init sdl, create window and create renderer from window + SDL_Init(init_settings.sdl_init_flags); + TTF_Init(); + IMG_Init(IMG_INIT_JPG | IMG_INIT_PNG); + window = SDL_CreateWindow("BOIDS!!", + SDL_WINDOWPOS_CENTERED, + SDL_WINDOWPOS_CENTERED, + init_settings.window_width, + init_settings.window_height, + init_settings.window_init_flags); + if(window == NULL) + { + exit(1); + } + + renderer = SDL_CreateRenderer(window, init_settings.renderer_index, + init_settings.renderer_init_flags); + + if(renderer == NULL) + { + exit(2); + } + + // initialize runtime object database + ecsInit(); + + // initialize imgui renderer + uiInit(renderer); + + // enable screen refresh system + ecsEnableSystem(&system_window_clear, nocomponent, ECS_NOQUERY, 0, -100); + + // initialize sim + sim_init(); + + ecsEnableSystem(&system_window_display, nocomponent, ECS_NOQUERY, 0, 10000); + // run created tasks + ecsRunTasks(); +} + +void engine_run() +{ + SDL_Event evt; + float actual_time; + + while(!engine_wants_to_quit) + { + last_frame_time = frame_start_time; + frame_start_time = (float)clock() / CLOCKS_PER_SEC; + + ecsRunSystems(frame_start_time - last_frame_time); + + while(SDL_PollEvent(&evt)) + { + engine_handle_event(&evt); + } + } +} + +void engine_handle_event(SDL_Event* event) +{ + switch(event->type) + { + default: break; + case SDL_QUIT: + engine_wants_to_quit = 1; + break; + } +} + +void engine_clean() +{ + // quit sim, ui asset database, ecs + sim_quit(); + uiTerminate(); + close_asset_database(); + ecsTerminate(); + // delete renderer and window, quit sdl + SDL_DestroyRenderer(renderer); + SDL_DestroyWindow(window); + SDL_Quit(); +} + +void system_window_clear(ecsEntityId* entities, ecsComponentMask* components, size_t size, float delta_time) +{ + render_frame_time += delta_time; + is_render_frame = render_frame_time >= target_frame_time; + + if(is_render_frame) + { + render_frame_time = 0; + // clear screen all black + SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); + SDL_RenderClear(renderer); + } +} +void system_window_display(ecsEntityId* entities, ecsComponentMask* components, size_t size, float delta_time) +{ + if(is_render_frame) + { + // swap buffer + SDL_RenderPresent(renderer); + } +} + +void default_engine_init_settings(engine_init_t* init_settings) +{ + (*init_settings) = (engine_init_t){ + .window_width = 640, .window_height = 420, + .window_init_flags = SDL_WINDOW_SHOWN, + .sdl_init_flags = SDL_INIT_VIDEO, + .renderer_init_flags = SDL_RENDERER_ACCELERATED, + .renderer_index = -1, + .target_framerate = 60 + }; +} + diff --git a/src/engine/engine.h b/src/engine/engine.h new file mode 100644 index 0000000..998ec6b --- /dev/null +++ b/src/engine/engine.h @@ -0,0 +1,34 @@ +#ifndef _engine_h +#define _engine_h + +#include + +typedef struct engine_init_t { + int window_width, window_height; + uint32_t window_init_flags; + uint32_t sdl_init_flags; + uint32_t renderer_init_flags; + int renderer_index; + int target_framerate; +} engine_init_t; + +extern short is_render_frame; + +extern void default_engine_init_settings(engine_init_t*); + +extern void sim_config(engine_init_t*); +extern void sim_init(); +extern void sim_quit(); + +extern struct SDL_Renderer* renderer; + +#if defined(DEBUG) +#define E_LOG(...)\ +fprintf(stdout, "%s:%d: ", __FILE__, __LINE__);\ +fprintf(stdout, __VA_ARGS__);\ +fprintf(stdout, "\n") +#elif defined(NDEBUG) +#define E_LOG(...) +#endif + +#endif /* !_engine_h */ diff --git a/src/engine/ui.c b/src/engine/ui.c new file mode 100644 index 0000000..88df0aa --- /dev/null +++ b/src/engine/ui.c @@ -0,0 +1,380 @@ +#include "ui.h" +#include +#include + +SDL_Renderer* uiTarget; +typedef struct ui_selection_t { + uintptr_t item; + short keepSelected; + enum { + UI_SELECT_DEFAULT, + UI_SELECT_TEXT + } selectKind; + union { + struct { + long start, end; + } text_select; + }; +} ui_selection_t; + +ui_selection_t uiSelection; + +uint32_t uiCurrentMouseState; +uint32_t uiLastMouseState; +int uiMouseX, uiMouseY; + +SDL_Rect uiCurrentWindow; +int uiIndentLevel; +int uiSingleLineHeight = 30; +int uiLineSpacing = 5; +int uiWindowPadding = 10; +int uiTotalHeight; +int uiRenderSameLine; + +SDL_Rect uiNextLineRect; + +struct ui_style_t { + TTF_Font* font; + int indentPixels; +} uiStyle; + +void uiAddPixels(int n); + +void uiUpdateMouseState() +{ + uiLastMouseState = uiCurrentMouseState; + uiCurrentMouseState = SDL_GetMouseState(&uiMouseX, &uiMouseY); +} + +int uiCanSelect(void* ptr) +{ + intptr_t item = (intptr_t)ptr; + + return uiSelection.item == item || uiSelection.item == 0; +} + +void uiSelect(void* ptr, short keepActive) +{ + uiSelection.item = (intptr_t)ptr; + uiSelection.keepSelected = keepActive; +} + +short uiIsSelected(void* ptr) +{ + return uiSelection.item == (intptr_t)ptr; +} + +void uiInit(SDL_Renderer* target) +{ + uiTarget = target; + uiSelection.item = 0; + memset(&uiStyle, 0, sizeof(struct ui_style_t)); + uiUpdateMouseState(); + uiStyle.indentPixels = 10; +} + +void uiTerminate() +{ + +} + +void uiSetFont(TTF_Font* font) +{ + uiStyle.font = font; +} + +// check if a mouse button was pressed on this ui frame +static inline +short uiMouseButtonPressed(uint32_t buttonMask) +{ + return + (buttonMask & uiCurrentMouseState) != 0 && // button is down + (buttonMask & uiLastMouseState) == 0; // button was down +} + +// check if a mouse button was released on this ui frame +static inline +short uiMouseButtonReleased(uint32_t buttonMask) +{ + return + (buttonMask & uiLastMouseState) != 0 && // button was down + (buttonMask & uiCurrentMouseState) == 0; // button is up +} + +// check if a mouse button is currently pressed +static inline +short uiMouseButtonDown(uint32_t buttonMask) +{ + return uiCurrentMouseState & buttonMask; +} + +// change the SDL render target +void uiSetTarget(SDL_Renderer* renderer) +{ + uiTarget = renderer; +} + +// begin a new frame +void uiBeginFrame() +{ + if(uiSelection.keepSelected == 0) + uiSelection.item = 0; + uiUpdateMouseState(); +} + +// push any number of lines +void uiSkipLines(int n) +{ + while(n-- >= 0) + { + uiNextLine(); + } +} + +// push a new line +void uiNextLine() +{ + if(uiRenderSameLine > 0) + { + uiRenderSameLine--; + uiNextLineRect.x += uiNextLineRect.w; + } + else + { + uiAddPixels(uiSingleLineHeight + uiLineSpacing); + } +} + +// push the next line down by a number of pixels +void uiAddPixels(int px) +{ + uiTotalHeight += px; + uiNextLineRect = uiCurrentWindow; + uiNextLineRect.h = uiSingleLineHeight; + uiNextLineRect.y += uiTotalHeight; + uiNextLineRect.w -= uiIndentLevel * uiStyle.indentPixels * 2; + uiNextLineRect.x += uiIndentLevel * uiStyle.indentPixels; +} + +// draw the next n elements on the same line +void uiSameLine(int n) +{ + if(n > 1) + { + uiRenderSameLine += n-1; + + uiNextLineRect.w /= n; + } +} + +// start a window fitting within the given rectangle +int uiBeginWindow(SDL_Rect* rect, int* isActive) +{ + uiTotalHeight = 0; + uiIndentLevel = 0; + memcpy(&uiCurrentWindow, rect, sizeof(SDL_Rect)); + + if(*isActive) + { + SDL_SetRenderDrawColor(uiTarget, 20, 20, 20, 255); + SDL_RenderFillRect(uiTarget, rect); + } + + uiNextLineRect = uiCurrentWindow; + uiNextLineRect.h = uiSingleLineHeight; + int toggled = uiButton(); + + uiCurrentWindow.x += uiWindowPadding; + uiCurrentWindow.y += uiWindowPadding; + uiCurrentWindow.w -= uiWindowPadding*2; + uiCurrentWindow.h -= uiWindowPadding*2; + + uiNextLineRect.x = uiCurrentWindow.x; + uiNextLineRect.w = uiCurrentWindow.w; + uiNextLineRect.y = uiCurrentWindow.y + uiTotalHeight; + uiNextLineRect.h = uiSingleLineHeight; + + if(toggled) + { + int last = *isActive; + *isActive = !(*isActive); + return last; + } + + return (*isActive); +} + +// check if point (x,y) is in r +int uiInArea(SDL_Rect* r, int x, int y) +{ + int x_min = r->x, x_max = r->x + r->w; + int y_min = r->y, y_max = r->y + r->h; + return (x >= x_min && x < x_max && y >= y_min && y < y_max); +} + +void uiDrawText(const char* text, SDL_Rect dstrect, SDL_Color colour) +{ + int height = TTF_FontHeight(uiStyle.font); + double fontToLineHeight = (double)height/(double)uiSingleLineHeight; + + SDL_Rect srcrect = { 0, 0, dstrect.w * fontToLineHeight, dstrect.h * fontToLineHeight }; + SDL_Surface* surface = TTF_RenderText_Solid_Wrapped(uiStyle.font, text, colour, srcrect.w); + + dstrect.w = surface->w / fontToLineHeight; + + if(surface == NULL) + { + SDL_Log("Failed to render text to surface:\n%s", SDL_GetError()); + return; + } + + SDL_Texture* tex = SDL_CreateTextureFromSurface(uiTarget, surface); + SDL_FreeSurface(surface); + + if(tex == NULL) + return; + + SDL_RenderCopy(uiTarget, tex, &srcrect, &dstrect); + + SDL_DestroyTexture(tex); +} + +// draw an interactive slider with a min, max and step +int uiSlider(float* value, float min, float max, float step) +{ + const int SLIDER_WIDTH = 10; + const int LINE_THICKNESS = 5; + + float startValue = *value; + int valueChanged = 0; + float valuePercentage = ((*value)-min) / (max - min); + + SDL_Rect position = uiNextLineRect; + position.x += SLIDER_WIDTH/2; + position.w -= SLIDER_WIDTH; + + SDL_Rect lineRect = { + position.x, position.y + uiSingleLineHeight/2, + position.w, LINE_THICKNESS + }; + + SDL_Color sliderColor = {230, 230, 230, 255}; + + if(uiMouseButtonPressed(SDL_BUTTON_LEFT)) + { + if(uiCanSelect(value) && uiInArea(&position, uiMouseX, uiMouseY)) + { + uiSelect(value, 1); + } + } + else if(uiIsSelected(value) && !uiMouseButtonDown(SDL_BUTTON_LEFT)) + { + uiSelection.keepSelected = 0; + } + + if(uiIsSelected(value)) + { + valuePercentage = (float)(uiMouseX - position.x) / (float)(position.w); + + if(valuePercentage < 0) + valuePercentage = 0; + else if(valuePercentage > 1) + valuePercentage = 1; + + (*value) = valuePercentage * (max - min); + (*value) = roundf((*value) * (1.f/step)) * step + min; + valuePercentage = ((*value) - min) / (max-min); + + + if(*value != startValue) + { + valueChanged = 1; + } + } + + SDL_Rect sliderRect = { + position.x + valuePercentage * position.w - SLIDER_WIDTH/2, position.y, + SLIDER_WIDTH, uiSingleLineHeight + }; + + SDL_SetRenderDrawColor(uiTarget, 100, 100, 100, 255); + SDL_RenderFillRect(uiTarget, &lineRect); + + if(valuePercentage >= 0 && valuePercentage <= 1) + { + SDL_SetRenderDrawColor(uiTarget, sliderColor.r, sliderColor.g, sliderColor.b, sliderColor.a); + SDL_RenderFillRect(uiTarget, &sliderRect); + } + + uiNextLine(); + + return valueChanged; +} + +// draw a clickable button +int uiButton() +{ + SDL_Rect position = uiNextLineRect; + short clicked = 0; + + if(uiMouseButtonPressed(SDL_BUTTON_LEFT)) + { + if(uiCanSelect(0) && uiInArea(&position, uiMouseX, uiMouseY)) + { + uiSelect(0, 0); + clicked = 1; + } + } + + SDL_SetRenderDrawColor(uiTarget, 100, 100, 100, 255); + SDL_RenderFillRect(uiTarget, &position); + + uiNextLine(); + + return clicked; +} + +void uiLabel(const char* label) +{ + SDL_Colour white = {255, 255, 255, 255}; + uiDrawText(label, uiNextLineRect, white); + uiNextLine(); +} + +void uiLabelNext(const char* label, float ratio) +{ + int y = uiNextLineRect.y; + uiNextLineRect.w = uiCurrentWindow.w * ratio; + uiLabel(label); + uiTotalHeight -= uiSingleLineHeight + uiLineSpacing; + uiNextLineRect.y = y; + uiNextLineRect.x += uiCurrentWindow.w * ratio; + uiNextLineRect.w = uiCurrentWindow.w * (1-ratio); + uiNextLineRect.h = uiSingleLineHeight; +} + +void uiHeader(const char* label) +{ + uiSubIndent(); + uiAddPixels(uiSingleLineHeight/2); + uiLabel(label); + uiAddIndent(); +} + +void uiSetIndent(int n) +{ + uiIndentLevel = n; + uiIndentLevel = uiIndentLevel >= 0 ? uiIndentLevel : 0; + // force update of next line rect + uiAddPixels(0); +} + +void uiAddIndent() +{ + uiSetIndent(uiIndentLevel + 1); +} + +void uiSubIndent() +{ + uiSetIndent(uiIndentLevel - 1); +} diff --git a/src/engine/ui.h b/src/engine/ui.h new file mode 100644 index 0000000..ec665d8 --- /dev/null +++ b/src/engine/ui.h @@ -0,0 +1,31 @@ +#ifndef ui_h +#define ui_h + +#include +#include + +extern void uiInit(SDL_Renderer* target); +extern void uiTerminate(); + +extern void uiSetTarget(SDL_Renderer* renderer); + +extern void uiSetFont(TTF_Font* font); + +extern void uiBeginFrame(); + +extern int uiBeginWindow(SDL_Rect* rect, int* isActive); + +extern void uiSkipLines(int n); +extern void uiNextLine(); +extern void uiSameLine(int n); + +extern int uiSlider(float* value, float min, float max, float step); +extern int uiButton(); +extern void uiLabel(const char* label); +extern void uiLabelNext(const char* label, float ratio); +extern void uiHeader(const char* label); +extern void uiAddIndent(); +extern void uiSubIndent(); +extern void uiSetIndent(int n); + +#endif /* ui_h */ diff --git a/src/engine/vec.h b/src/engine/vec.h new file mode 100644 index 0000000..600b155 --- /dev/null +++ b/src/engine/vec.h @@ -0,0 +1,149 @@ +#ifndef vec_h +#define vec_h + +#include +#include + +typedef struct fvec { + float x, y; +} fvec; + +static inline void vadd(fvec* r, fvec* a, fvec* b) +{ r->x = a->x + b->x; r->y = a->y + b->y; } + +static inline void vsub(fvec* r, fvec* a, fvec* b) +{ r->x = a->x - b->x; r->y = a->y - b->y; } + +static inline void vmul(fvec* r, fvec* a, fvec* b) +{ r->x = a->x * b->x; r->y = a->y * b->y; } + +static inline void vmulf(fvec* r, fvec* a, float b) +{ r->x = a->x * b; r->y = a->y * b; } + +static inline void vdiv(fvec* r, fvec* a, fvec* b) +{ r->x = a->x / b->x; r->y = a->y / b->y; } + +static inline float vmag(fvec* a) +{ return sqrt(fabsf(a->x*a->x) + fabsf(a->y*a->y)); } + +static inline void vnor(fvec* r, fvec* a) +{ + float m = vmag(a); + if(m == 0) + { + *r = (fvec){0.f, 0.f}; + } + else + { + r->x = a->x / m; + r->y = a->y / m; + } +} + +static inline void vabs(fvec* r, fvec* a) +{ + r->x = fabsf(a->x); + r->y = fabsf(a->y); +} + +static inline float vdist(fvec* a, fvec* b) +{ + fvec diff; + vsub(&diff, a, b); + vabs(&diff, &diff); + float m = vmag(&diff); + return isnan(m) ? 0 : m; +} + +static inline void vmovetowards(fvec* r, fvec* from, fvec* to, float max_delta) +{ + fvec diff, dir; + + if(max_delta == 0 || isnan(max_delta)) + { + memmove(r, from, sizeof(fvec)); + return; + } + + vsub(&diff, to, from); + + float diffm = vmag(&diff); + + if(diffm == 0 || isnan(diffm)) + { + memmove(r, from, sizeof(fvec)); + return; + } + + vmulf(&dir, &diff, 1.f/diffm * max_delta); + + float dirm = vmag(&dir); + + if(dirm >= diffm) + { + memmove(r, from, sizeof(fvec)); + } + else + { + vadd(r, from, &dir); + } +} + +static inline void vlerp(fvec* r, fvec* from, fvec* to, float t) +{ + fvec dir; + vsub(&dir, to, from); + vnor(&dir, &dir); + vmulf(&dir, &dir, t); + vadd(r, from, &dir); +} + +static inline void vmin(fvec* r, fvec* a, float min) +{ + float m = vmag(a); + if(m < min) + { + vmulf(r, a, (1.f/m)*min); + } + else + { + *r = *a; + } +} + +static inline void vmax(fvec* r, fvec* a, float max) +{ + float m = vmag(a); + if(m > max) + vmulf(r, a, (1.f/m)*max); + else + *r = *a; +} + +static inline void vclamp(fvec* r, fvec* a, float min, float max) +{ + float m = vmag(a); + if(m > max) + vmulf(r, a, (1.f/m)*max); + else if(m < min) + vmulf(r, a, (1.f/m)*min); + else + *r = *a; +} + +static inline float vdot(fvec* a, fvec* b) +{ + return(a->x * b->x + a->y * b->y); +} + +static inline float vang(fvec* a, fvec* b) +{ + return atan2f(a->y, a->x) - atan2f(b->y, b->x); +} + +#define VUP ((fvec){0.f, 1.f}) +#define VDOWN ((fvec){0.f, -1.f}) +#define VLEFT ((fvec){-1.f, 0.f}) +#define VRIGHT ((fvec){1.f, 0.f}) + +#endif /* vec_h */ diff --git a/src/sim/boid_c.c b/src/sim/boid_c.c new file mode 100644 index 0000000..081c1d6 --- /dev/null +++ b/src/sim/boid_c.c @@ -0,0 +1,300 @@ +#include "boid_c.h" +#include +#include +#include + +ecsComponentMask boid_component; + +float boid_acceleration = 75.f; +float boid_max_velocity = 50.f; + +SDL_Texture* boid_texture; + +behaviour_t alignment = { + .range = 10.f, + .force = .8f +}; +behaviour_t separation = { + .range = 4.f, + .force = 50.0f +}; +behaviour_t cohesion = { + .range = 100.f, + .force = 0.5f +}; +behaviour_t wall_avoid = { + .range = 50.f, + .force = 100.f +}; +behaviour_t mouse_interact = { + .range = 70.f, + .force = -1000.f +}; + +SDL_Rect boid_available_area = {0,0,800, 800}; + +void system_boid_update_position(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + boid_c* boid; + fvec force, velocity; + float acceleration = boid_acceleration * delta_time; + int w, h; + + for(size_t i = 0; i < count; i++) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + + force = boid->force; + vmulf(&force, &force, boid_max_velocity); + vmax(&force, &force, boid_max_velocity); + vmovetowards(&boid->velocity, &boid->velocity, &force, acceleration); + + assert(!isnan(boid->position.x) && !isnan(boid->position.y)); + assert(!isnan(boid->velocity.x) && !isnan(boid->velocity.y)); + + boid->force = (fvec){ 0.f, 0.f }; + + vmulf(&velocity, &boid->velocity, delta_time); + vadd(&boid->position, &boid->position, &velocity); + + } +} + +void system_boid_update_near(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + float dist; + boid_c* boid, *other; + + float max_range = alignment.range; + max_range = separation.range > max_range ? separation.range : max_range; + max_range = cohesion.range > max_range ? cohesion.range : max_range; + + size_t hits = 0; + + for(size_t i = 0; i < count; ++i) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + hits = 0; + + memset(boid->near, noentity, sizeof(boid->near)); + for(size_t j = 0; j < count && hits < BOID_NEAR_COUNT; ++j) + { + other = ecsGetComponentPtr(entities[j], boid_component); + dist = vdist(&boid->position, &other->position); + + assert(!isnan(dist)); + if(dist < max_range) + { + boid->near[hits++] = entities[j]; + } + } + } +} + +void system_draw_boids(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + if(!is_render_frame) return; + + boid_c* boid; + + int tw, th; + SDL_QueryTexture(boid_texture, NULL, NULL, &tw, &th); + SDL_Rect srcrect = { + .x = 0, .y = 0, + .w = tw, .h = th + }; + SDL_FRect dstrect = { + .w = 5, .h = 5 + }; + int hw = dstrect.w / 2; + int hh = dstrect.h / 2; + + for(size_t i = 0; i < count; ++i) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + + dstrect.x = boid->position.x - hw; + dstrect.y = boid->position.y - hh; + SDL_RenderCopyExF(renderer, boid_texture, + &srcrect, &dstrect, + (double)vang(&boid->velocity, &VDOWN) * 57.2957795, + &(SDL_FPoint){hw,hh}, SDL_FLIP_NONE); + } +} + +void system_boids_cohesion(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + boid_c* boid, *other; + fvec avrg, force, diff; + float dist; + size_t hit_count; + + for(size_t i = 0; i < count; ++i) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + avrg = (fvec){ 0.f, 0.f }; + hit_count = 0; + + for(size_t j = 0; j < BOID_NEAR_COUNT && boid->near[j] != noentity; ++j) + { + other = ecsGetComponentPtr(boid->near[j], boid_component); + dist = vdist(&other->position, &boid->position); + if(dist < cohesion.range) + { + ++hit_count; + vsub(&diff, &other->position, &avrg); + vmulf(&diff, &diff, 1.f/(hit_count)); + vadd(&avrg, &avrg, &diff); + } + assert(!isnan(avrg.x) && !isnan(avrg.y)); + } + + vsub(&force, &avrg, &boid->position); + vmulf(&force, &force, cohesion.force); + vadd(&boid->force, &boid->force, &force); + + assert(!isnan(boid->force.x) && !isnan(boid->force.y)); + } +} + +void system_boids_separation(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + boid_c* boid, *other; + fvec avrg, force, diff; + float dist; + size_t hit_count; + + for(size_t i = 0; i < count; ++i) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + avrg = (fvec){ 0.f, 0.f }; + hit_count = 0; + + for(size_t j = 0; j < BOID_NEAR_COUNT && boid->near[j] != noentity; ++j) + { + other = ecsGetComponentPtr(boid->near[j], boid_component); + dist = vdist(&other->position, &boid->position); + if(dist < separation.range) + { + ++hit_count; + vsub(&diff, &other->position, &avrg); + vmulf(&diff, &diff, 1.f/(hit_count)); + vadd(&avrg, &avrg, &diff); + } + assert(!isnan(avrg.x) && !isnan(avrg.y)); + } + + vsub(&force, &avrg, &boid->position); + vmulf(&force, &force, separation.force); + vsub(&boid->force, &boid->force, &force); + assert(!isnan(boid->force.x) && !isnan(boid->force.y)); + } +} + +void system_boids_alignment(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + boid_c* boid, *other; + fvec avrg, diff; + float dist; + size_t hit_count; + + for(size_t i = 0; i < count; ++i) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + avrg = (fvec){ 0.f, 0.f }; + hit_count = 0; + + for(size_t j = 0; j < BOID_NEAR_COUNT && boid->near[j] != noentity; ++j) + { + other = ecsGetComponentPtr(boid->near[j], boid_component); + dist = vdist(&other->position, &boid->position); + + if(dist < alignment.range) + { + ++hit_count; + vsub(&diff, &other->velocity, &avrg); + vmulf(&diff, &diff, 1.f/(hit_count)); + vadd(&avrg, &avrg, &diff); + } + assert(!isnan(avrg.x) && !isnan(avrg.y)); + } + + vmulf(&avrg, &avrg, alignment.force); + vadd(&boid->force, &boid->force, &avrg); + assert(!isnan(boid->force.x) && !isnan(boid->force.y)); + } +} + +void system_boid_mouse(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + boid_c* boid; + fvec mouse, diff; + float m; + int imx, imy; + uint32_t mstate = SDL_GetMouseState(&imx, &imy); + mouse = (fvec){ (float)imx, (float)imy }; + if((mstate & SDL_BUTTON_LEFT) == 0) return; + + for(size_t i = 0; i < count; ++i) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + vsub(&diff, &mouse, &boid->position); + m = vmag(&diff); + if(m < mouse_interact.range) + { + vmulf(&diff, &diff, (1.f/m)*mouse_interact.force); + vadd(&boid->force, &boid->force, &diff); + } + } +} + +void system_boids_wrap(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + boid_c* boid; + int iw, ih; + float w, h; + SDL_GetRendererOutputSize(renderer, &iw, &ih); + w = (float)iw; h = (float)ih; + + for(size_t i = 0; i < count; ++i) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + if(boid->position.x >= w) boid->position.x -= w; + if(boid->position.x < 0) boid->position.x += w; + if(boid->position.y >= h) boid->position.y -= h; + if(boid->position.y < 0) boid->position.y += w; + } +} + +void system_boids_wall_avoid(ecsEntityId* entities, ecsComponentMask* components, size_t count, float delta_time) +{ + if(wall_avoid.force == 0.f) return; + + boid_c* boid; + fvec force; + + SDL_Rect limits = boid_available_area; + limits.x += wall_avoid.range; + limits.w -= wall_avoid.range*2; + limits.y += wall_avoid.range; + limits.h -= wall_avoid.range*2; + + for(size_t i = 0; i < count; ++i) + { + boid = ecsGetComponentPtr(entities[i], boid_component); + force = (fvec){ 0.f, 0.f }; + + if(boid->position.x >= limits.x + limits.w) + force.x = -1.f; + if(boid->position.x <= limits.x) + force.x = 1.f; + if(boid->position.y >= limits.y + limits.h) + force.y = -1.f; + if(boid->position.y <= limits.y) + force.y = 1.f; + + vnor(&force, &force); + vmulf(&force, &force, wall_avoid.force); + vadd(&boid->force, &boid->force, &force); + } +} diff --git a/src/sim/boid_c.h b/src/sim/boid_c.h new file mode 100644 index 0000000..89aad1e --- /dev/null +++ b/src/sim/boid_c.h @@ -0,0 +1,46 @@ +#ifndef boid_c_h +#define boid_c_h + +#include +#include +#include + +#ifndef BOID_NEAR_COUNT +#define BOID_NEAR_COUNT (100) +#endif + +extern ecsComponentMask boid_component; +typedef struct boid_c { + fvec position; + fvec velocity; + fvec force; + ecsEntityId near[BOID_NEAR_COUNT]; +} boid_c; + +typedef struct behaviour_t { + float force; + float range; +} behaviour_t; + +extern struct SDL_Texture* boid_texture; +extern float boid_acceleration; +extern float boid_max_velocity; + +extern behaviour_t alignment; +extern behaviour_t separation; +extern behaviour_t cohesion; +extern behaviour_t wall_avoid; +extern behaviour_t mouse_interact; +extern struct SDL_Rect boid_available_area; + +extern void system_boid_update_position(ecsEntityId*, ecsComponentMask*, size_t, float); +extern void system_boids_cohesion(ecsEntityId*, ecsComponentMask*, size_t, float); +extern void system_boids_separation(ecsEntityId*, ecsComponentMask*, size_t, float); +extern void system_boids_alignment(ecsEntityId*, ecsComponentMask*, size_t, float); +extern void system_boids_wall_avoid(ecsEntityId*, ecsComponentMask*, size_t, float); +extern void system_boids_wrap(ecsEntityId*, ecsComponentMask*, size_t, float); +extern void system_draw_boids(ecsEntityId*, ecsComponentMask*, size_t, float); +extern void system_boid_mouse(ecsEntityId*, ecsComponentMask*, size_t, float); +extern void system_boid_update_near(ecsEntityId*, ecsComponentMask*, size_t, float); + +#endif /* boid_c_h */ diff --git a/src/sim/sim.c b/src/sim/sim.c new file mode 100644 index 0000000..1f352f7 --- /dev/null +++ b/src/sim/sim.c @@ -0,0 +1,154 @@ +#include +#include +#include +#include +#include + +#define BOID_NEAR_COUNT (200) +#include "boid_c.h" + +int boid_spawn_num; + +void system_draw_gui(ecsEntityId* entities, ecsComponentMask* mask, size_t count, float delta_time) +{ + static int show_sliders = 1; + + int ww, wh; + SDL_GetRendererOutputSize(renderer, &ww, &wh); + + boid_available_area.w = ww; + boid_available_area.h = wh; + boid_available_area.x = 0; + + SDL_Rect rect = { + 0, 0, 500, wh + }; + + uiBeginFrame(); + + if(uiBeginWindow(&rect, &show_sliders)) + { + // set the area boids will stay in to exclude the area of the ui + boid_available_area.x = rect.w; + boid_available_area.w = ww - rect.w; + + // render velocity and acceleration sliders + uiLabelNext("speed", 0.25f); + uiSlider(&boid_max_velocity, 10.f, 100.f, 5.f); + uiLabelNext("acceleration", 0.25f); + uiSlider(&boid_acceleration, 10.f, 100.f, 5.f); + + // alignment parameters + uiHeader("alignment"); + + uiLabelNext("range", 0.25f); + uiSlider(&(alignment.range), 0.1f, 100.f, 1.f); + uiLabelNext("force", 0.25f); + uiSlider(&(alignment.force), 0.0f, 2.f, 0.01f); + + // cohesion parameters + uiHeader("cohesion"); + + uiLabelNext("range", 0.25f); + uiSlider(&(cohesion.range), 0.1f, 100.f, 1.f); + uiLabelNext("force", 0.25f); + uiSlider(&(cohesion.force), 0.0f, 2.f, .01f); + + // mouse interaction parameters + uiHeader("mouse"); + + uiLabelNext("range", 0.25f); + uiSlider(&(mouse_interact.range), 0.1f, 100.f, 1.f); + uiLabelNext("force", 0.25f); + uiSlider(&(mouse_interact.force), -200.f, 200.f, 10.f); + + + // separation range + uiHeader("separation"); + + uiSlider(&(separation.range), 0.1f, 100.f, 1.f); + } +} + +void sim_config(engine_init_t* config) +{ + config->window_width = 1700; + config->window_height = 1000; + config->window_init_flags |= SDL_WINDOW_RESIZABLE; + boid_spawn_num = 500; + config->target_framerate = 24; +} + +void spawn_boids() +{ + int w, h; + SDL_GetRendererOutputSize(renderer, &w, &h); + + fvec position = {9, 0}; + ecsEntityId entity; + boid_c* boid; + + for(int i = 0; i < boid_spawn_num; i++) + { + position = (fvec){rand() % w, rand() % h}; + if((entity = ecsCreateEntity(boid_component)) != noentity) + { + boid = ecsGetComponentPtr(entity, boid_component); + (*boid) = (boid_c){ + .position = position, + .velocity = {0,0}, + .force = {0,0} + }; + } + else + { + exit(2); + } + } +} + +void sim_init() +{ + // register boid_c as a component type + boid_component = ecsRegisterComponent(boid_c); + + // enable the functions that make boids boid + ecsEnableSystem(&system_boid_update_position, boid_component, ECS_QUERY_ALL, 8, 50); + ecsEnableSystem(&system_boid_update_near, boid_component, ECS_QUERY_ALL, 0, 100); + ecsEnableSystem(&system_draw_boids, boid_component, ECS_QUERY_ALL, 0, 200); + ecsEnableSystem(&system_boids_wall_avoid, boid_component, ECS_QUERY_ALL, 8, 300); + ecsEnableSystem(&system_boids_cohesion, boid_component, ECS_QUERY_ALL, 8, 400); + ecsEnableSystem(&system_boids_alignment, boid_component, ECS_QUERY_ALL, 8, 410); + ecsEnableSystem(&system_boids_separation, boid_component, ECS_QUERY_ALL, 8, 420); + ecsEnableSystem(&system_boid_mouse, boid_component, ECS_QUERY_ALL, 8, 430); + + // enable the gui system + ecsEnableSystem(&system_draw_gui, nocomponent, ECS_NOQUERY, 0, 500); + + int w, h; + SDL_GetRendererOutputSize(renderer, &w, &h); + + // load boid image + //asset_handle_t blur_asset = load_asset("blur.png"); + asset_handle_t arrow_asset = load_asset("boid.png"); + // set boid texture + boid_texture = get_asset(arrow_asset); + + // load and set font + asset_handle_t font_asset = load_asset("Inter-Regular.otf"); + uiSetFont(get_asset(font_asset)); + + // set the initially available area + boid_available_area = (SDL_Rect){ + .x = 0, .y = 0, + .w = w, .h = h + }; + + // spawn a bunch of boids + spawn_boids(); +} + +void sim_quit() +{ +} +