Our go-to framework for game development is fully hackable, FOSS!
🄳 macro ENABLE_FASTCALL_LUA
🄳 macro ENABLE_PROFILER
🄳 macro ENABLE_SELFIES
🄳 macro ENABLE_MEMORY_POISON
🄳 macro ENABLE_MEMORY_LEAKS
🄳 macro ENABLE_LINUX_CALLSTACKS
🄳 macro ENABLE_AUTOTESTS
🄳 macro ENABLE_COOK
🄵 API int less_64(uint64_t a,uint64_t b);
🄵 API int less_int(int a,int b);
🄵 API int less_ptr(void* a,void* b);
🄵 API int less_str(char* a,char* b);
🄵 API int less_64_ptr(const void* a,const void* b);
🄵 API int less_int_ptr(const void* a,const void* b);
🄵 API uint32_t unhash_32(uint32_t x);
🄵 API uint32_t hash_32(uint32_t x);
🄵 API uint64_t hash_64(uint64_t x);
🄵 API uint64_t hash_flt(double x);
🄵 API uint64_t hash_int(int key);
🄵 API uint64_t hash_ptr(const void* ptr);
🄵 API uint64_t hash_bin(const void* ptr,unsigned len);
🄵 API uint64_t hash_str(const char* str);
🄵 API uint64_t popcnt64(uint64_t x);
🄵 API void* vrealloc(void* p,size_t sz);
🄵 API size_t vlen(void* p);
🅂 struct set_item;
🅂 struct set;
🄵 API void set_init(set* m);
🄵 API void set_free(set* m);
🄵 API void set_insert(set* m,set_item* p,void* key,uint64_t keyhash,void* super);
🄵 API void set_erase(set* m,void* key,uint64_t keyhash);
🄵 API void* set_find(const set* m,void* key,uint64_t keyhash);
🄵 API int set_isempty(const set* m);
🄵 API int set_count(const set* m);
🄵 API void set_gc(set* m);
🄵 API void set_clear(set* m);
🅂 struct pair;
🅂 struct map;
🄵 API void map_init(map* m);
🄵 API void map_free(map* m);
🄵 API void map_insert(map* m,pair* p,void* key,void* value,uint64_t keyhash,void* super);
🄵 API void map_erase(map* m,void* key,uint64_t keyhash);
🄵 API void* map_find(map* m,void* key,uint64_t keyhash);
🄵 API int map_isempty(map* m);
🄵 API int map_count(map* m);
🄵 API void map_gc(map* m);
🄵 API bool map_sort(map* m);
🄵 API void map_clear(map* m);
🅂 union vec2i;
🅂 union vec3i;
🅂 union vec2;
🅂 union vec3;
🅂 union vec4;
🅂 union quat;
🅃 typedef float mat33[9];
🅃 typedef float mat34[12];
🅃 typedef float mat44[16];
🄵 API void randset(uint64_t state);
🄵 API uint64_t rand64(void);
🄵 API double randf(void);
🄵 API int randi(int mini,int maxi);
🄵 API float simplex1(float x);
🄵 API float simplex2(vec2 xy);
🄵 API float simplex3(vec3 xyz);
🄵 API float simplex4(vec4 xyzw);
🄵 API float deg(float radians);
🄵 API float rad(float degrees);
🄵 API int mini(int a,int b);
🄵 API int maxi(int a,int b);
🄵 API int absi(int a);
🄵 API int clampi(int v,int a,int b);
🄵 API float minf(float a,float b);
🄵 API float maxf(float a,float b);
🄵 API float absf(float a);
🄵 API float pmodf(float a,float b);
🄵 API float signf(float a);
🄵 API float clampf(float v,float a,float b);
🄵 API float mixf(float a,float b,float t);
🄵 API float slerpf(float a,float b,float t);
🄵 API float fractf(float a);
🄵 API vec2 ptr2(const float* a);
🄵 API vec2 neg2(vec2 a);
🄵 API vec2 add2(vec2 a,vec2 b);
🄵 API vec2 sub2(vec2 a,vec2 b);
🄵 API vec2 mul2(vec2 a,vec2 b);
🄵 API vec2 div2(vec2 a,vec2 b);
🄵 API vec2 inc2(vec2 a,float b);
🄵 API vec2 dec2(vec2 a,float b);
🄵 API vec2 scale2(vec2 a,float b);
🄵 API vec2 pmod2(vec2 a,float b);
🄵 API vec2 min2(vec2 a,vec2 b);
🄵 API vec2 max2(vec2 a,vec2 b);
🄵 API vec2 abs2(vec2 a);
🄵 API vec2 floor2(vec2 a);
🄵 API vec2 fract2(vec2 a);
🄵 API vec2 ceil2(vec2 a);
🄵 API float dot2(vec2 a,vec2 b);
🄵 API vec2 refl2(vec2 a,vec2 b);
🄵 API float cross2(vec2 a,vec2 b);
🄵 API float len2sq(vec2 a);
🄵 API float len2(vec2 a);
🄵 API vec2 norm2(vec2 a);
🄵 API int finite2(vec2 a);
🄵 API vec2 mix2(vec2 a,vec2 b,float t);
🄵 API vec2 clamp2(vec2 v,vec2 a,vec2 b);
🄵 API vec2 clamp2f(vec2 v,float a,float b);
🄵 API vec3 rnd3(void);
🄵 API vec3 ptr3(const float* a);
🄵 API vec3 vec23(vec2 a,float z);
🄵 API vec3 neg3(vec3 a);
🄵 API vec3 add3(vec3 a,vec3 b);
🄵 API vec3 sub3(vec3 a,vec3 b);
🄵 API vec3 mul3(vec3 a,vec3 b);
🄵 API vec3 div3(vec3 a,vec3 b);
🄵 API vec3 inc3(vec3 a,float b);
🄵 API vec3 dec3(vec3 a,float b);
🄵 API vec3 scale3(vec3 a,float b);
🄵 API vec3 pmod3(vec3 a,float b);
🄵 API vec3 min3(vec3 a,vec3 b);
🄵 API vec3 max3(vec3 a,vec3 b);
🄵 API vec3 abs3(vec3 a);
🄵 API vec3 floor3(vec3 a);
🄵 API vec3 fract3(vec3 a);
🄵 API vec3 ceil3(vec3 a);
🄵 API vec3 cross3(vec3 a,vec3 b);
🄵 API float dot3(vec3 a,vec3 b);
🄵 API vec3 refl3(vec3 a,vec3 b);
🄵 API float len3sq(vec3 a);
🄵 API float len3(vec3 a);
🄵 API vec3 norm3(vec3 a);
🄵 API vec3 norm3sq(vec3 a);
🄵 API int finite3(vec3 a);
🄵 API vec3 mix3(vec3 a,vec3 b,float t);
🄵 API vec3 clamp3(vec3 v,vec3 a,vec3 b);
🄵 API vec3 clamp3f(vec3 v,float a,float b);
🄵 API void ortho3(vec3* left,vec3* up,vec3 v);
🄵 API vec3 rotatex3(vec3 dir,float degrees);
🄵 API vec3 rotatey3(vec3 dir,float degrees);
🄵 API vec3 rotatez3(vec3 dir,float degrees);
🄵 API vec4 ptr4(const float* a);
🄵 API vec4 vec34(vec3 a,float w);
🄵 API vec4 neg4(vec4 a);
🄵 API vec4 add4(vec4 a,vec4 b);
🄵 API vec4 sub4(vec4 a,vec4 b);
🄵 API vec4 mul4(vec4 a,vec4 b);
🄵 API vec4 div4(vec4 a,vec4 b);
🄵 API vec4 inc4(vec4 a,float b);
🄵 API vec4 dec4(vec4 a,float b);
🄵 API vec4 scale4(vec4 a,float b);
🄵 API vec4 pmod4(vec4 a,float b);
🄵 API vec4 min4(vec4 a,vec4 b);
🄵 API vec4 max4(vec4 a,vec4 b);
🄵 API vec4 abs4(vec4 a);
🄵 API vec4 floor4(vec4 a);
🄵 API vec4 fract4(vec4 a);
🄵 API vec4 ceil4(vec4 a);
🄵 API float dot4(vec4 a,vec4 b);
🄵 API vec4 refl4(vec4 a,vec4 b);
🄵 API float len4sq(vec4 a);
🄵 API float len4(vec4 a);
🄵 API vec4 norm4(vec4 a);
🄵 API vec4 norm4sq(vec4 a);
🄵 API int finite4(vec4 a);
🄵 API vec4 mix4(vec4 a,vec4 b,float t);
🄵 API vec4 clamp4(vec4 v,vec4 a,vec4 b);
🄵 API vec4 clamp4f(vec4 v,float a,float b);
🄵 API quat idq();
🄵 API quat ptrq(const float* a);
🄵 API quat vec3q(vec3 a,float w);
🄵 API quat vec4q(vec4 a);
🄵 API quat negq(quat a);
🄵 API quat conjq(quat a);
🄵 API quat addq(quat a,quat b);
🄵 API quat subq(quat a,quat b);
🄵 API quat mulq(quat p,quat q);
🄵 API quat scaleq(quat a,float s);
🄵 API quat normq(quat a);
🄵 API float dotq(quat a,quat b);
🄵 API quat mixq(quat a,quat b,float t);
🄵 API quat slerpq(quat a,quat b,float s);
🄵 API quat rotationq(float deg,float x,float y,float z);
🄵 API quat mat44q(mat44 M);
🄵 API vec3 rotate3q_2(vec3 v,quat q);
🄵 API vec3 rotate3q(vec3 v,quat r);
🄵 API vec3 euler(quat q);
🄵 API quat eulerq(vec3 pyr_degrees);
🄵 API void scaling33(mat33 m,float x,float y,float z);
🄵 API void scale33(mat33 m,float x,float y,float z);
🄵 API void id33(mat33 m);
🄵 API void extract33(mat33 m,const mat44 m4);
🄵 API void copy33(mat33 m,const mat33 a);
🄵 API vec3 mulv33(mat33 m,vec3 v);
🄵 API void multiply33x2(mat33 m,const mat33 a,const mat33 b);
🄵 API void rotation33(mat33 m,float degrees,float x,float y,float z);
🄵 API void rotationq33(mat33 m,quat q);
🄵 API void rotate33(mat33 r,float degrees,float x,float y,float z);
🄵 API void compose33(mat33 m,quat r,vec3 s);
🄵 API void id34(mat34 m);
🄵 API void copy34(mat34 m,const mat34 a);
🄵 API void scale34(mat34 m,float s);
🄵 API void add34(mat34 m,mat34 n);
🄵 API void muladd34(mat34 m,mat34 n,float s);
🄵 API void add34x2(mat34 m,mat34 n,mat34 o);
🄵 API void lerp34(mat34 m,mat34 n,mat34 o,float alpha);
🄵 API void multiply34x2(mat34 m,const mat34 m0,const mat34 m1);
🄵 API void multiply34(mat34 m,const mat34 a);
🄵 API void multiply34x3(mat34 m,const mat34 a,const mat34 b,const mat34 c);
🄵 API void compose34(mat34 m,vec3 t,quat q,vec3 s);
🄵 API void invert34(mat34 m,const mat34 o);
🄵 API void id44(mat44 m);
🄵 API void identity44(mat44 m);
🄵 API void copy44(mat44 m,const mat44 a);
🄵 API void multiply44x2(mat44 m,const mat44 a,const mat44 b);
🄵 API void multiply44x3(mat44 m,const mat44 a,const mat44 b,const mat44 c);
🄵 API void multiply44(mat44 m,const mat44 a);
🄵 API void ortho44(mat44 m,float l,float r,float b,float t,float n,float f);
🄵 API void frustum44(mat44 m,float l,float r,float b,float t,float n,float f);
🄵 API void perspective44(mat44 m,float fovy_degrees,float aspect,float nearp,float farp);
🄵 API void lookat44(mat44 m,vec3 eye,vec3 center,vec3 up);
🄵 API void translation44(mat44 m,float x,float y,float z);
🄵 API void translate44(mat44 m,float x,float y,float z);
🄵 API void relocate44(mat44 m,float x,float y,float z);
🄵 API void rotationq44(mat44 m,quat q);
🄵 API void rotation44(mat44 m,float degrees,float x,float y,float z);
🄵 API void rotate44(mat44 m,float degrees,float x,float y,float z);
🄵 API void scaling44(mat44 m,float x,float y,float z);
🄵 API void scale44(mat44 m,float x,float y,float z);
🄵 API void transpose44(mat44 m,const mat44 a);
🄵 API float det44(const mat44 M);
🄵 API bool invert44(mat44 T,const mat44 M);
🄵 API void compose44(mat44 m,vec3 t,quat q,vec3 s);
🄵 API vec3 transformq(const quat q,const vec3 v);
🄵 API vec3 transform33(const mat33 m,vec3 p);
🄵 API vec3 transform344(const mat44 m,const vec3 p);
🄵 API vec4 transform444(const mat44 m,const vec4 p);
🄵 API bool unproject44(vec3* out,vec3 xyd,vec4 viewport,mat44 mvp);
🄵 API void print2i(vec2i v);
🄵 API void print3i(vec3i v);
🄵 API void print2(vec2 v);
🄵 API void print3(vec3 v);
🄵 API void print4(vec4 v);
🄵 API void printq(quat q);
🄵 API void print33(float* m);
🄵 API void print34(float* m);
🄵 API void print44(float* m);
🄵 API uintptr_t id_make(void* ptr);
🄵 API void* id_handle(uintptr_t id);
🄵 API void id_dispose(uintptr_t id);
🄵 API bool id_valid(uintptr_t id);
🅂 struct obj;
🅂 struct entity;
🄵 void* obj_malloc(unsigned sz);
🄵 void* obj_free(void* o);
🄵 API uintptr_t obj_header(const void* o);
🄵 API uintptr_t obj_id(const void* o);
🄵 API const char* obj_type(const void* o);
🄵 API unsigned obj_typeid(const void* o);
🄵 API int obj_sizeof(const void* o);
🄵 API int obj_size(const void* o);
🄵 API char* obj_data(void* o);
🄵 API const char* obj_datac(const void* o);
🄵 API void* obj_payload(const void* o);
🄵 API void* obj_zero(void* o);
🄵 API void* obj_ref(void* oo);
🄵 API void* obj_unref(void* oo);
🄵 API obj* obj_detach(void* c);
🄵 API obj* obj_attach(void* o,void* c);
🄵 API obj* obj_root(const void* o);
🄵 API obj* obj_parent(const void* o);
🄵 API array(obj*)* obj_children(const void* o);
🄵 API array(obj*)* obj_siblings(const void* o);
🄵 API int obj_dumptree(const void* o);
🄵 API void* obj_setmeta(void* o,const char* key,const char* value);
🄵 API const char* obj_meta(const void* o,const char* key);
🄵 API void* obj_setname(void* o,const char* name);
🄵 API const char* obj_name(const void* o);
🄵 API void* obj_swap(void* dst,void* src);
🄵 API void* obj_copy_fast(void* dst,const void* src);
🄵 API void* obj_copy(void* dst,const void* src);
🄵 API int obj_comp_fast(const void* a,const void* b);
🄵 API int obj_comp(const void* a,const void* b);
🄵 API int obj_lesser(const void* a,const void* b);
🄵 API int obj_greater(const void* a,const void* b);
🄵 API int obj_equal(const void* a,const void* b);
🄵 API uint64_t obj_hash(const void* o);
🄵 API bool obj_hexdump(const void* oo);
🄵 API int obj_print(const void* o);
🄵 API int obj_printf(const void* o,const char* text);
🄵 API int obj_console(const void* o);
🄵 API char* obj_saveini(const void* o);
🄵 API obj* obj_mergeini(void* o,const char* ini);
🄵 API obj* obj_loadini(void* o,const char* ini);
🄵 API char* obj_savejson(const void* o);
🄵 API obj* obj_mergejson(void* o,const char* json);
🄵 API obj* obj_loadjson(void* o,const char* json);
🄵 API char* obj_savebin(const void* o);
🄵 API obj* obj_mergebin(void* o,const char* sav);
🄵 API obj* obj_loadbin(void* o,const char* sav);
🄵 API char* obj_savempack(const void* o);
🄵 API obj* obj_mergempack(void* o,const char* sav);
🄵 API obj* obj_loadmpack(void* o,const char* sav);
🄵 API int obj_push(const void* o);
🄵 API int obj_pop(void* o);
🄵 API bool obj_addcomponent(entity* e,unsigned c,void* ptr);
🄵 API bool obj_hascomponent(entity* e,unsigned c);
🄵 API void* obj_getcomponent(entity* e,unsigned c);
🄵 API bool obj_delcomponent(entity* e,unsigned c);
🄵 API bool obj_usecomponent(entity* e,unsigned c);
🄵 API bool obj_offcomponent(entity* e,unsigned c);
🄵 API char* entity_save(entity* self);
🄵 API void* obj_clone(const void* src);
🄵 API void* obj_merge(void* dst,const void* src);
🄵 API void* obj_mutate(void* dst,const void* src);
🄵 API void* obj_make(const char* str);
🄴 enum OBJTYPE_BUILTINS;
🄵 API int pathfind_astar(int width,int height,const unsigned* map,vec2i src,vec2i dst,vec2i* path,size_t maxpath);
🅃 typedef bt_func;
🅂 struct bt_t;
🄵 API bt_t bt(const char* ini_file,unsigned flags);
🄵 API int bt_run(bt_t* b);
🄵 API void bt_addfun(const char* name,int (*func)());
🄵 API bt_func bt_findfun(const char* name);
🄵 API char* bt_funcname(bt_func fn);
🄵 API int ui_bt(bt_t* b);
🄴 enum SWARM_DISTANCE;
🅂 struct boid_t;
🅂 struct swarm_t;
🄵 API swarm_t swarm();
🄵 API void swarm_update(swarm_t* self,float delta);
🄵 API void swarm_update_acceleration_only(swarm_t* self);
🄵 API void swarm_update_acceleration_and_velocity_only(swarm_t* self,float delta);
🄵 API int ui_swarm(swarm_t* self);
🄵 API void midi_send(unsigned midi_msg);
🅂 struct audio_handle* audio_t;
🄵 API audio_t audio_clip(const char* pathfile);
🄵 API audio_t audio_stream(const char* pathfile);
🄵 API int audio_play(audio_t s,int flags);
🄵 API int audio_play_gain(audio_t a,int flags,float gain);
🄵 API int audio_play_gain_pitch(audio_t a,int flags,float gain,float pitch);
🄵 API int audio_play_gain_pitch_pan(audio_t a,int flags,float gain,float pitch,float pan);
🄵 API int audio_stop(audio_t a);
🄵 API void audio_loop(audio_t a,bool loop);
🄵 API bool audio_playing(audio_t a);
🄵 API float audio_volume_clip(float gain);
🄵 API float audio_volume_stream(float gain);
🄵 API float audio_volume_master(float gain);
🄵 API int audio_mute(int mute);
🄵 API int audio_muted();
🄵 API int ui_audio();
🄴 enum AUDIO_FLAGS;
🄵 API int audio_queue(const void* samples,int num_samples,int flags);
🅂 struct gjk_support;
🅂 struct gjk_vertex;
🅂 struct gjk_simplex;
🅂 struct gjk_result;
🄵 int gjk(gjk_simplex* s,const gjk_support* sup,vec3* dv);
🄵 gjk_result gjk_analyze(const gjk_simplex* s);
🄵 gjk_result gjk_quad(float a_radius,float b_radius);
🅂 struct line;
🅂 struct sphere;
🅂 struct aabb;
🅂 struct plane;
🅂 struct capsule;
🅂 struct ray;
🅂 struct triangle;
🅂 struct poly;
🅂 union frustum;
🅂 struct hit;
🄵 API float line_distance2_point(line l,vec3 p);
🄵 API vec3 line_closest_point(line l,vec3 p);
🄵 API float ray_test_plane(ray r,vec4 p4);
🄵 API float ray_test_triangle(ray r,triangle t);
🄵 API int ray_test_sphere(float* t0,float* t1,ray r,sphere s);
🄵 API int ray_test_aabb(float* t0,float* t1,ray r,aabb a);
🄵 API hit* ray_hit_plane(ray r,plane p);
🄵 API hit* ray_hit_triangle(ray r,triangle t);
🄵 API hit* ray_hit_sphere(ray r,sphere s);
🄵 API hit* ray_hit_aabb(ray r,aabb a);
🄵 API vec3 sphere_closest_point(sphere s,vec3 p);
🄵 API hit* sphere_hit_aabb(sphere s,aabb a);
🄵 API hit* sphere_hit_capsule(sphere s,capsule c);
🄵 API hit* sphere_hit_sphere(sphere a,sphere b);
🄵 API int sphere_test_aabb(sphere s,aabb a);
🄵 API int sphere_test_capsule(sphere s,capsule c);
🄵 API int sphere_test_poly(sphere s,poly p);
🄵 API int sphere_test_sphere(sphere a,sphere b);
🄵 API vec3 aabb_closest_point(aabb a,vec3 p);
🄵 API float aabb_distance2_point(aabb a,vec3 p);
🄵 API int aabb_contains_point(aabb a,vec3 p);
🄵 API hit* aabb_hit_aabb(aabb a,aabb b);
🄵 API hit* aabb_hit_capsule(aabb a,capsule c);
🄵 API hit* aabb_hit_sphere(aabb a,sphere s);
🄵 API int aabb_test_aabb(aabb a,aabb b);
🄵 API int aabb_test_capsule(aabb a,capsule c);
🄵 API int aabb_test_poly(aabb a,poly p);
🄵 API int aabb_test_sphere(aabb a,sphere s);
🄵 API float capsule_distance2_point(capsule c,vec3 p);
🄵 API vec3 capsule_closest_point(capsule c,vec3 p);
🄵 API hit* capsule_hit_aabb(capsule c,aabb a);
🄵 API hit* capsule_hit_capsule(capsule a,capsule b);
🄵 API hit* capsule_hit_sphere(capsule c,sphere s);
🄵 API int capsule_test_aabb(capsule c,aabb a);
🄵 API int capsule_test_capsule(capsule a,capsule b);
🄵 API int capsule_test_poly(capsule c,poly p);
🄵 API int capsule_test_sphere(capsule c,sphere s);
🄵 API int poly_test_sphere(poly p,sphere s);
🄵 API int poly_test_aabb(poly p,aabb a);
🄵 API int poly_test_capsule(poly p,capsule c);
🄵 API int poly_test_poly(poly a,poly b);
🄵 API int poly_test_sphere_transform(poly p,vec3 pos3,mat33 rot33,sphere s);
🄵 API int poly_test_aabb_transform(poly p,vec3 apos3,mat33 arot33,aabb a);
🄵 API int poly_test_capsule_transform(poly p,vec3 pos3,mat33 rot33,capsule c);
🄵 API int poly_test_poly_transform(poly a,vec3 apos3,mat33 arot33,poly b,vec3 bpos3,mat33 brot33);
🄵 API int poly_hit_sphere(struct gjk_result* res,poly p,sphere s);
🄵 API int poly_hit_aabb(struct gjk_result* res,poly p,aabb a);
🄵 API int poly_hit_capsule(struct gjk_result* res,poly p,capsule c);
🄵 API int poly_hit_poly(struct gjk_result* res,poly a,poly b);
🄵 API int poly_hit_sphere_transform(struct gjk_result* res,poly p,vec3 pos3,mat33 rot33,sphere s);
🄵 API int poly_hit_aabb_transform(struct gjk_result* res,poly p,vec3 pos3,mat33 rot33,aabb a);
🄵 API int poly_hit_capsule_transform(struct gjk_result* res,poly p,vec3 pos3,mat33 rot33,capsule c);
🄵 API int poly_hit_poly_transform(struct gjk_result* res,poly a,vec3 at3,mat33 ar33,poly b,vec3 bt3,mat33 br33);
🄵 API vec4 plane4(vec3 p,vec3 n);
🄵 API frustum frustum_build(mat44 projview);
🄵 API int frustum_test_sphere(frustum f,sphere s);
🄵 API int frustum_test_aabb(frustum f,aabb a);
🄵 API poly poly_alloc(int cnt);
🄵 API void poly_free(poly* p);
🄵 API poly pyramid(vec3 from,vec3 to,float size);
🄵 API poly diamond(vec3 from,vec3 to,float size);
🄵 API void collide_demo();
🄴 enum COOK_FLAGS;
🄵 API void cook_config(const char* path_to_cook_ini);
🄵 API bool cook_start(const char* path_to_cook_ini,const char* masks,int flags);
🄵 API void cook_stop();
🄵 API void cook_cancel();
🄵 API int cook_jobs();
🄵 API int cook_progress();
🄵 API bool have_tools();
🅂 union json_t;
🄵 API bool json_push(const char* json_content);
🄵 API const char* json_key(const char* keypath);
🄵 API json_t* json_find(const char* type_keypath);
🄵 API json_t json_get(const char* type_keypath);
🄵 API int json_count(const char* keypath);
🄵 API bool json_pop();
🄵 API int xml_push(const char* xml_content);
🄵 API const char* xml_string(char* key);
🄵 API unsigned xml_count(char* key);
🄵 API array(char) xml_blob(char* key);
🄵 API void xml_pop();
🄵 API bool data_tests();
🄵 API void* dll(const char* filename,const char* symbol);
🄴 enum {;
🄵 API void script_init();
🄵 API void* script_init_env(unsigned flags);
🄵 API bool script_push(void* env);
🄵 API void script_run(const char* script);
🄵 API void script_runfile(const char* pathfile);
🄵 API void script_bind_class(const char* objname,int num_methods,const char** c_names,void** c_functions);
🄵 API void script_bind_function(const char* c_name,void* c_function);
🄵 API void script_call(const char* lua_function);
🄵 API bool script_tests();
🄵 API bool script_pop();
🄵 API array(char*) file_list(const char* pathmasks);
🄵 API bool file_write(const char* file,const void* ptr,int len);
🄵 API bool file_append(const char* file,const void* ptr,int len);
🄵 API char* file_read(const char* filename);
🄵 API char* file_load(const char* filename,int* len);
🄵 API uint64_t file_size(const char* pathfile);
🄵 API bool file_directory(const char* pathfile);
🄵 API char* file_pathabs(const char* pathfile);
🄵 API char* file_path(const char* pathfile);
🄵 API char* file_name(const char* pathfile);
🄵 API char* file_base(const char* pathfile);
🄵 API char* file_ext(const char* pathfile);
🄵 API char* file_id(const char* pathfile);
🄵 API char* file_normalize(const char* pathfile);
🄵 API char* file_counter(const char* pathfile);
🄵 API uint64_t file_stamp(const char* pathfile);
🄵 API uint64_t file_stamp10(const char* pathfile);
🄵 API bool file_exist(const char* pathfile);
🄵 API bool file_delete(const char* pathfile);
🄵 API bool file_copy(const char* src,const char* dst);
🄵 API bool file_move(const char* src,const char* dst);
🄵 API FILE* file_temp();
🄵 API char* file_tempname();
🄵 API void* file_md5(const char* file);
🄵 API void* file_sha1(const char* file);
🄵 API void* file_crc32(const char* file);
🄵 API array(char*) file_zip_list(const char* zipfile);
🄵 API array(char) file_zip_extract(const char* zipfile,const char* filename);
🄵 API bool file_zip_append(const char* zipfile,const char* filename,int clevel);
🄵 API bool file_zip_appendmem(const char* zipfile,const char* entryname,const void* ptr,unsigned len,int clevel);
🄵 API void storage_mount(const char* folder);
🄵 API void storage_read();
🄵 API void storage_flush();
🄵 API bool vfs_mount(const char* mount_point);
🄵 API array(char*) vfs_list(const char* masks);
🄵 API char* vfs_read(const char* pathfile);
🄵 API char* vfs_load(const char* pathfile,int* size);
🄵 API int vfs_size(const char* pathfile);
🄵 API void vfs_reload();
🄵 API const char* vfs_resolve(const char* fuzzyname);
🄵 API FILE* vfs_handle(const char* pathfile);
🄵 API void* cache_insert(const char* key,void* value,int size);
🄵 API void* cache_lookup(const char* key,int* size);
🅃 typedef ini_t;
🄵 API ini_t ini(const char* filename);
🄵 API ini_t ini_from_mem(const char* data);
🄵 API void ini_destroy(ini_t);
🄵 API bool ini_write(const char* filename,const char* section,const char* key,const char* value);
🄴 enum FONT_FLAGS;
🅂 struct font_metrics_t;
🄵 API void font_face(const char* face_tag,const char* filename_ttf,float font_size,unsigned flags);
🄵 API void font_face_from_mem(const char* tag,const void* ttf_buffer,unsigned ttf_len,float font_size,unsigned flags);
🄵 API void font_scale(const char* face_tag,int scale_index,float value);
🄵 API void font_scales(const char* face_tag,float h1,float h2,float h3,float h4,float h5,float h6);
🄵 API void font_color(const char* color_tag,uint32_t color);
🄵 API vec2 font_xy();
🄵 API void font_goto(float x,float y);
🄵 API vec2 font_print(const char* text);
🄵 API vec2 font_clip(const char* text,vec4 rect);
🄵 API const char* font_wrap(const char* text,float max_width);
🄵 API vec2 font_rect(const char* text);
🄵 API font_metrics_t font_metrics(const char* text);
🄵 API void* font_colorize(const char* text,const char* comma_types,const char* comma_keywords);
🄵 API vec2 font_highlight(const char* text,const void* colors);
🄵 API void ui_font();
🄵 API int input_use(int controller_id);
🄵 API float input(int vk);
🄵 API vec2 input2(int vk);
🄵 API float input_diff(int vk);
🄵 API vec2 input_diff2(int vk);
🄵 API const char* input_string(int vk);
🄵 API float input_frame(int vk,int Nth_frame);
🄵 API vec2 input_frame2(int vk,int Nth_frame);
🄵 API int input_up(int vk);
🄵 API int input_down(int vk);
🄵 API int input_held(int vk);
🄵 API int input_idle(int vk);
🄵 API int input_click(int vk,int ms);
🄵 API int input_click2(int vk,int ms);
🄵 API int input_repeat(int vk,int ms);
🄵 API int input_chord2(int vk1,int vk2);
🄵 API int input_chord3(int vk1,int vk2,int vk3);
🄵 API int input_chord4(int vk1,int vk2,int vk3,int vk4);
🄵 API float input_filter_positive(float v);
🄵 API vec2 input_filter_positive2(vec2 v);
🄵 API vec2 input_filter_deadzone(vec2 v,float deadzone_treshold);
🄵 API vec2 input_filter_deadzone_4way(vec2 v,float deadzone_treshold);
🄴 enum TOUCH_BUTTONS;
🄵 API void input_touch_area(unsigned button,vec2 begin_coord_ndc,vec2 end_coord_ndc);
🄵 API vec2 input_touch(unsigned button,float sensitivity);
🄵 API vec2 input_touch_delta(unsigned button,float sensitivity);
🄵 API vec2 input_touch_delta_from_origin(unsigned button,float sensitivity);
🄵 API bool input_touch_active();
🄵 API void input_mappings(const char* filename);
🄵 API char input_keychar(unsigned code);
🄵 API int input_enum(const char* sym);
🄵 API int input_anykey();
🄵 API int input_eval(const char* expression);
🄵 API void input_send(int vk);
🄵 API array(char) save_input();
🄵 API bool load_input(array(char) replay);
🄵 API int ui_keyboard();
🄵 API int ui_mouse();
🄵 API int ui_gamepad(int id);
🄵 API int ui_gamepads();
🄴 enum INPUT_ENUMS;
🄴 enum INPUT_ALIASES;
🄵 API void* xrealloc(void* p,size_t sz);
🄵 API size_t xsize(void* p);
🄵 API char* xstats(void);
🄵 API void* stack(int bytes);
🄵 API void* watch(void* ptr,int sz);
🄵 API void* forget(void* ptr);
🄵 API array(char) download(const char* url);
🄵 API int download_file(FILE* out,const char* url);
🄵 API int portname(const char* service_name,unsigned retries);
🄵 API bool network_tests();
🄵 API int udp_bind(const char* address,const char* port);
🄵 API int udp_open(const char* address,const char* port);
🄵 API int udp_send(int,const void* buf,int len);
🄵 API int udp_sendto(int,const char* ip,const char* port,const void* buf,int len);
🄵 API int udp_recv(int,void* buf,int len);
🄵 API int udp_peek(int);
🄵 API int tcp_open(const char* address,const char* port);
🄵 API int tcp_bind(const char* interface_,const char* port,int queue);
🄵 API int tcp_peek(int,int (*callback)(int));
🄵 API int tcp_send(int,const void* buf,int len);
🄵 API int tcp_recv(int,void* buf,int len);
🄵 API char* tcp_host(int);
🄵 API char* tcp_port(int);
🄵 API int tcp_close(int);
🄵 API int tcp_debug(int);
🄵 API int track_init(char const* host,char const* port);
🄵 API int track_destroy(void);
🄵 API int track_event(char const* event_id,char const* user_id,char const* json_payload);
🄵 API int track_ident(char const* user_id,char const* traits);
🄵 API int track_group(char const* user_id,char const* group_id,char const* traits);
🅂 struct track_prop;
🄵 API int track_event_props(char const* event_id,char const* user_id,const track_prop* props);
🄴 enum {;
🄵 API void network_create(unsigned max_clients,const char* ip,const char* port,unsigned flags);
🄴 enum {;
🄴 enum {;
🄵 API void* network_buffer(void* ptr,unsigned sz,uint64_t flags,int64_t rank);
🄵 API char** network_sync(unsigned timeout_ms);
🄴 enum {;
🄵 API int network_event(const char* msg,int* errcode,char** errstr);
🄴 enum {;
🄴 enum {;
🄴 enum {;
🄴 enum {;
🄴 enum {;
🄴 enum {;
🄵 API int64_t network_get(uint64_t key);
🄵 API int64_t network_put(uint64_t key,int64_t value);
🄵 API void network_rpc(const char* signature,void* function);
🄵 API void network_rpc_send_to(int64_t rank,unsigned id,const char* cmdline);
🄵 API void network_rpc_send(unsigned id,const char* cmdline);
🄵 API bool server_bind(int max_clients,int port);
🄵 API char** server_poll(unsigned timeout_ms);
🄵 API char** client_poll(unsigned timeout_ms);
🄵 API void server_broadcast_bin_flags(const void* ptr,int len,uint64_t flags);
🄵 API void server_broadcast_bin(const void* ptr,int len);
🄵 API void server_broadcast_flags(const char* msg,uint64_t flags);
🄵 API void server_broadcast(const char* msg);
🄵 API void server_terminate();
🄵 API void server_send(int64_t handle,const char* msg);
🄵 API void server_send_bin(int64_t handle,const void* ptr,int len);
🄵 API void server_drop(int64_t handle);
🄵 API int64_t client_join(const char* ip,int port);
🄴 enum COMPRESS_FLAGS;
🄵 API unsigned zbounds(unsigned inlen,unsigned flags);
🄵 API unsigned zencode(void* out,unsigned outlen,const void* in,unsigned inlen,unsigned flags);
🄵 API unsigned zexcess(unsigned flags);
🄵 API unsigned zdecode(void* out,unsigned outlen,const void* in,unsigned inlen,unsigned flags);
🄵 API void* interleave(void* out,const void* list,int list_count,int sizeof_item,unsigned columns);
🄵 API unsigned cobs_bounds(unsigned len);
🄵 API unsigned cobs_encode(const void* in,unsigned inlen,void* out,unsigned outlen);
🄵 API unsigned cobs_decode(const void* in,unsigned inlen,void* out,unsigned outlen);
🄵 API unsigned base92_encode(const void* in,unsigned inlen,void* out,unsigned outlen);
🄵 API unsigned base92_decode(const void* in,unsigned inlen,void* out,unsigned outlen);
🄵 API unsigned base92_bounds(unsigned inlen);
🄵 API unsigned netstring_bounds(unsigned inlen);
🄵 API unsigned netstring_encode(const char* in,unsigned inlen,char* out,unsigned outlen);
🄵 API unsigned netstring_decode(const char* in,unsigned inlen,char* out,unsigned outlen);
🄵 API void delta8_encode(void* buffer,unsigned count);
🄵 API void delta8_decode(void* buffer,unsigned count);
🄵 API void delta16_encode(void* buffer,unsigned count);
🄵 API void delta16_decode(void* buffer,unsigned count);
🄵 API void delta32_encode(void* buffer,unsigned count);
🄵 API void delta32_decode(void* buffer,unsigned count);
🄵 API void delta64_encode(void* buffer,unsigned count);
🄵 API void delta64_decode(void* buffer,unsigned count);
🄵 API uint64_t zig64(int64_t value);
🄵 API int64_t zag64(uint64_t value);
🄵 API uint32_t enczig32u(int32_t n);
🄵 API uint64_t enczig64u(int64_t n);
🄵 API int32_t deczig32i(uint32_t n);
🄵 API int64_t deczig64i(uint64_t n);
🄵 API void* arc4(void* buffer,unsigned buflen,const void* pass,unsigned passlen);
🄵 API uint64_t crc64(uint64_t h,const void* ptr,uint64_t len);
🄵 API void entropy(void* buf,unsigned n);
🄵 API int semver(int major,int minor,int patch);
🄵 API int semvercmp(int v1,int v2);
🅂 struct byte2;
🅂 struct byte3;
🅂 struct byte4;
🅂 struct int2;
🅂 struct int3;
🅂 struct int4;
🅂 struct uint2;
🅂 struct uint3;
🅂 struct uint4;
🅂 struct float2;
🅂 struct float3;
🅂 struct float4;
🅂 struct double2;
🅂 struct double3;
🅂 struct double4;
🄵 API char* cc4str(unsigned cc);
🄵 API char* cc8str(uint64_t cc);
🄴 enum {;
🄵 API char* ftoa1(float v);
🄵 API char* ftoa2(vec2 v);
🄵 API char* ftoa3(vec3 v);
🄵 API char* ftoa4(vec4 v);
🄵 API float atof1(const char* s);
🄵 API vec2 atof2(const char* s);
🄵 API vec3 atof3(const char* s);
🄵 API vec4 atof4(const char* s);
🄵 API char* itoa1(int v);
🄵 API char* itoa2(vec2i v);
🄵 API char* itoa3(vec3i v);
🄵 API int atoi1(const char* s);
🄵 API vec2i atoi2(const char* s);
🄵 API vec3i atoi3(const char* s);
🄵 API int is_big();
🄵 API int is_little();
🄵 API uint16_t swap16(uint16_t x);
🄵 API uint32_t swap32(uint32_t x);
🄵 API uint64_t swap64(uint64_t x);
🄵 API float swap32f(float n);
🄵 API double swap64f(double n);
🄵 API void swapf(float* a,float* b);
🄵 API void swapf2(vec2* a,vec2* b);
🄵 API void swapf3(vec3* a,vec3* b);
🄵 API void swapf4(vec4* a,vec4* b);
🄵 API uint16_t lil16(uint16_t n);
🄵 API uint32_t lil32(uint32_t n);
🄵 API uint64_t lil64(uint64_t n);
🄵 API float lil32f(float n);
🄵 API double lil64f(double n);
🄵 API uint16_t big16(uint16_t n);
🄵 API uint32_t big32(uint32_t n);
🄵 API uint64_t big64(uint64_t n);
🄵 API float big32f(float n);
🄵 API double big64f(double n);
🄵 API uint16_t* lil16p(void* p,int sz);
🄵 API uint32_t* lil32p(void* p,int sz);
🄵 API uint64_t* lil64p(void* p,int sz);
🄵 API float* lil32pf(void* p,int sz);
🄵 API double* lil64pf(void* p,int sz);
🄵 API uint16_t* big16p(void* p,int sz);
🄵 API uint32_t* big32p(void* p,int sz);
🄵 API uint64_t* big64p(void* p,int sz);
🄵 API float* big32pf(void* p,int sz);
🄵 API double* big64pf(void* p,int sz);
🅃 typedef uint16_t half;
🄵 API float half_to_float(half value);
🄵 API half float_to_half(float value);
🄵 API void pack16i(uint8_t* buf,uint16_t i,int swap);
🄵 API void pack32i(uint8_t* buf,uint32_t i,int swap);
🄵 API void pack64i(uint8_t* buf,uint64_t i,int swap);
🄵 API int16_t unpack16i(const uint8_t* buf,int swap);
🄵 API int32_t unpack32i(const uint8_t* buf,int swap);
🄵 API int64_t unpack64i(const uint8_t* buf,int swap);
🄵 API uint64_t pack754(long double f,unsigned bits,unsigned expbits);
🄵 API long double unpack754(uint64_t i,unsigned bits,unsigned expbits);
🄵 API uint64_t pack64uv(uint8_t* buffer,uint64_t value);
🄵 API uint64_t unpack64uv(const uint8_t* buffer,uint64_t* value);
🄵 API uint64_t pack64iv(uint8_t* buffer,int64_t value_);
🄵 API uint64_t unpack64iv(const uint8_t* buffer,int64_t* value);
🄵 API int msgpack(const char* fmt,...);
🄵 API int msgunpack(const char* fmt,...);
🄵 API int msgpack_new(uint8_t* w,size_t l);
🄵 API int msgpack_nil();
🄵 API int msgpack_chr(bool n);
🄵 API int msgpack_uns(uint64_t n);
🄵 API int msgpack_int(int64_t n);
🄵 API int msgpack_str(const char* s);
🄵 API int msgpack_bin(const char* s,size_t n);
🄵 API int msgpack_flt(double g);
🄵 API int msgpack_ext(uint8_t key,void* val,size_t n);
🄵 API int msgpack_arr(uint32_t n);
🄵 API int msgpack_map(uint32_t n);
🄵 API int msgpack_eof();
🄵 API int msgpack_err();
🄵 API bool msgunpack_new(const void* opaque_or_FILE,size_t bytes);
🄵 API bool msgunpack_nil();
🄵 API bool msgunpack_chr(bool* chr);
🄵 API bool msgunpack_uns(uint64_t* uns);
🄵 API bool msgunpack_int(int64_t* sig);
🄵 API bool msgunpack_str(char** str);
🄵 API bool msgunpack_bin(void** bin,uint64_t* len);
🄵 API bool msgunpack_flt(float* flt);
🄵 API bool msgunpack_dbl(double* dbl);
🄵 API bool msgunpack_ext(uint8_t* key,void** val,uint64_t* len);
🄵 API bool msgunpack_arr(uint64_t* len);
🄵 API bool msgunpack_map(uint64_t* len);
🄵 API bool msgunpack_eof();
🄵 API bool msgunpack_err();
🄵 API int savef(FILE* file,const char* format,...);
🄵 API int saveb(unsigned char* buf,const char* format,...);
🄵 API int loadf(FILE* file,const char* format,...);
🄵 API int loadb(const unsigned char* buf,const char* format,...);
🄼 macro profile(section)
🄼 macro profile_incstat(name,accum)
🄼 macro profile_setstat(name,value)
🄵 API int profiler_enable(bool on);
🅂 struct reflect_t;
🄵 API unsigned enum_find(const char* E);
🄵 API void* function_find(const char* F);
🄵 API reflect_t member_find(const char* T,const char* M);
🄵 API void* member_findptr(void* obj,const char* T,const char* M);
🄵 API array(reflect_t)* members_find(const char* T);
🄵 API void type_inscribe(const char* TY,unsigned TYsz,const char* infos);
🄵 API void enum_inscribe(const char* E,unsigned Eval,const char* infos);
🄵 API void struct_inscribe(const char* T,unsigned Tsz,unsigned OBJTYPEid,const char* infos);
🄵 API void member_inscribe(const char* T,const char* M,unsigned Msz,const char* infos,const char* type,unsigned bytes);
🄵 API void function_inscribe(const char* F,void* func,const char* infos);
🄵 API const char* symbol_naked(const char* s);
🄵 API int ui_reflect(const char* mask);
🅃 typedef unsigned handle;
🅂 struct renderstate_t;
🄵 API renderstate_t renderstate();
🄵 API bool renderstate_compare(const renderstate_t* stateA,const renderstate_t* stateB);
🄵 API void renderstate_apply(const renderstate_t* state);
🄵 API unsigned rgba(uint8_t r,uint8_t g,uint8_t b,uint8_t a);
🄵 API unsigned bgra(uint8_t b,uint8_t g,uint8_t r,uint8_t a);
🄵 API unsigned rgbaf(float r,float g,float b,float a);
🄵 API unsigned bgraf(float b,float g,float r,float a);
🄵 API unsigned alpha(unsigned rgba);
🄵 API unsigned atorgba(const char* s);
🄵 API char* rgbatoa(unsigned rgba);
🄴 enum IMAGE_FLAGS;
🅂 struct image_t;
🄵 API image_t image(const char* pathfile,int flags);
🄵 API image_t image_from_mem(const void* ptr,int len,int flags);
🄵 API void image_destroy(image_t* img);
🄴 enum TEXTURE_FLAGS;
🅂 struct texture_t;
🄵 API texture_t texture_compressed(const char* filename,unsigned flags);
🄵 API texture_t texture_compressed_from_mem(const void* data,int len,unsigned flags);
🄵 API texture_t texture(const char* filename,int flags);
🄵 API texture_t texture_from_mem(const void* ptr,int len,int flags);
🄵 API texture_t texture_create(unsigned w,unsigned h,unsigned n,const void* pixels,int flags);
🄵 API texture_t texture_checker();
🄵 API void texture_destroy(texture_t* t);
🄵 API int texture_unit();
🄵 API unsigned texture_update(texture_t* t,unsigned w,unsigned h,unsigned n,const void* pixels,int flags);
🄵 API bool texture_rec_begin(texture_t* t,unsigned w,unsigned h);
🄵 API void texture_rec_end(texture_t* t);
🄵 API texture_t brdf_lut();
🅂 struct colormap_t;
🄵 API bool colormap(colormap_t* cm,const char* texture_name,bool load_as_srgb);
🄵 API void fullscreen_quad_rgb(texture_t texture_rgb);
🄵 API void fullscreen_quad_rgb_flipped(texture_t texture);
🄵 API void fullscreen_quad_ycbcr(texture_t texture_YCbCr[3]);
🄵 API void fullscreen_quad_ycbcr_flipped(texture_t texture_YCbCr[3]);
🅂 struct cubemap_t;
🄵 API cubemap_t cubemap(const image_t image,int flags);
🄵 API cubemap_t cubemap6(const image_t images[6],int flags);
🄵 API void cubemap_destroy(cubemap_t* c);
🄵 API cubemap_t* cubemap_get_active();
🄵 API unsigned fbo(unsigned texture_color,unsigned texture_depth,int wr_flags);
🄵 API void fbo_bind(unsigned id);
🄵 API void fbo_unbind();
🄵 API void fbo_destroy(unsigned id);
🅂 struct shadowmap_t;
🄵 API shadowmap_t shadowmap(int texture_width);
🄵 API void shadowmap_destroy(shadowmap_t* s);
🄵 API void shadowmap_set_shadowmatrix(shadowmap_t* s,vec3 aLightPos,vec3 aLightAt,vec3 aLightUp,const mat44 projection);
🄵 API void shadowmap_begin(shadowmap_t* s);
🄵 API void shadowmap_end(shadowmap_t* s);
🄵 API void shadowmatrix_proj(mat44 shm_proj,float aLightFov,float znear,float zfar);
🄵 API void shadowmatrix_ortho(mat44 shm_proj,float left,float right,float bottom,float top,float znear,float zfar);
🄵 API unsigned shader(const char* vs,const char* fs,const char* attribs,const char* fragcolor,const char* defines);
🄵 API unsigned shader_geom(const char* gs,const char* vs,const char* fs,const char* attribs,const char* fragcolor,const char* defines);
🄵 API unsigned shader_bind(unsigned program);
🄵 API int shader_uniform(const char* name);
🄵 API void shader_bool(const char* uniform,bool i);
🄵 API void shader_int(const char* uniform,int i);
🄵 API void shader_uint(const char* uniform,unsigned i);
🄵 API void shader_float(const char* uniform,float f);
🄵 API void shader_vec2(const char* uniform,vec2 v);
🄵 API void shader_vec3(const char* uniform,vec3 v);
🄵 API void shader_vec3v(const char* uniform,int count,vec3* v);
🄵 API void shader_vec4(const char* uniform,vec4 v);
🄵 API void shader_mat44(const char* uniform,mat44 m);
🄵 API void shader_texture(const char* sampler,texture_t texture);
🄵 API void shader_texture_unit(const char* sampler,unsigned texture,unsigned unit);
🄵 API void shader_colormap(const char* name,colormap_t cm);
🄵 API unsigned shader_get_active();
🄵 API void shader_destroy(unsigned shader);
🄵 API unsigned shader_properties(unsigned shader);
🄵 API char** shader_property(unsigned shader,unsigned property_no);
🄵 API void shader_apply_param(unsigned shader,unsigned param_no);
🄵 API void shader_apply_params(unsigned shader,const char* parameter_mask);
🄵 API int ui_shader(unsigned shader);
🄵 API int ui_shaders();
🄴 enum BUFFER_MODE;
🄵 API unsigned compute(const char* cs);
🄵 API void compute_dispatch(unsigned wx,unsigned wy,unsigned wz);
🄵 API void shader_image(texture_t t,unsigned unit,unsigned level,int layer,unsigned access);
🄵 API void shader_image_unit(unsigned texture,unsigned unit,unsigned level,int layer,unsigned texel_type,unsigned access);
🄵 API void write_barrier();
🄵 API void write_barrier_image();
🄴 enum SSBO_USAGE;
🄴 enum SSBO_ACCESS;
🄵 API unsigned ssbo_create(const void* data,int len,unsigned usage);
🄵 API void ssbo_destroy(unsigned ssbo);
🄵 API void ssbo_update(int offset,int len,const void* data);
🄵 API void ssbo_bind(unsigned ssbo,unsigned unit);
🄵 API void* ssbo_map(unsigned access);
🄵 API void ssbo_unmap();
🄵 API void ssbo_unbind();
🄴 enum MESH_FLAGS;
🅂 struct mesh_t;
🄵 API mesh_t mesh();
🄵 API void mesh_update(mesh_t* m,const char* format,int vertex_stride,int vertex_count,const void* interleaved_vertex_data,int index_count,const void* index_data,int flags);
🄵 API void mesh_render(mesh_t* m);
🄵 API void mesh_render_prim(mesh_t* sm,unsigned prim);
🄵 API void mesh_destroy(mesh_t* m);
🄵 API aabb mesh_bounds(mesh_t* m);
🄴 enum SKYBOX_FLAGS;
🅂 struct skybox_t;
🄵 API skybox_t skybox(const char* panorama_or_cubemap_folder,int flags);
🄵 API skybox_t skybox_pbr(const char* sky_map,const char* refl_map,const char* env_map);
🄵 API int skybox_render(skybox_t* sky,mat44 proj,mat44 view);
🄵 API void skybox_destroy(skybox_t* sky);
🄵 API void skybox_mie_calc_sh(skybox_t* sky,float sky_intensity);
🄵 API void skybox_sh_reset(skybox_t* sky);
🄵 API void skybox_sh_add_light(skybox_t* sky,vec3 light,vec3 dir,float strength);
🄵 API int skybox_push_state(skybox_t* sky,mat44 proj,mat44 view);
🄵 API int skybox_pop_state();
🄴 enum MATERIAL_ENUMS;
🅂 struct material_layer_t;
🅂 struct material_t;
🄴 enum {;
🅂 struct shadertoy_t;
🄵 API shadertoy_t shadertoy(const char* shaderfile,unsigned flags);
🄵 API shadertoy_t* shadertoy_render(shadertoy_t* s,float delta);
🄴 enum ANIM_FLAGS;
🅂 struct anim_t;
🄵 API anim_t clip(float minframe,float maxframe,float blendtime,unsigned flags);
🄵 API anim_t loop(float minframe,float maxframe,float blendtime,unsigned flags);
🄵 API array(anim_t) animlist(const char* filename);
🄴 enum MODEL_FLAGS;
🄴 enum SHADING_MODE;
🄴 enum RENDER_PASS;
🄴 enum MODEL_UNIFORMS;
🅂 struct model_t;
🄴 enum BILLBOARD_MODE;
🄵 API model_t model(const char* filename,int flags);
🄵 API model_t model_from_mem(const void* mem,int sz,int flags);
🄵 API float model_animate(model_t,float curframe);
🄵 API float model_animate_clip(model_t,float curframe,int minframe,int maxframe,bool loop);
🄵 API float model_animate_blends(model_t m,anim_t* primary,anim_t* secondary,float delta);
🄵 API aabb model_aabb(model_t,mat44 transform);
🄵 API void model_shading(model_t*, int shading);
🄵 API void model_skybox(model_t*, skybox_t sky,bool load_sh);
🄵 API void model_render(model_t,mat44 proj,mat44 view,mat44 model,int shader);
🄵 API void model_render_skeleton(model_t,mat44 model);
🄵 API void model_render_instanced(model_t,mat44 proj,mat44 view,mat44* models,int shader,unsigned count);
🄵 API void model_set_texture(model_t,texture_t t);
🄵 API bool model_get_bone_pose(model_t m,unsigned joint,mat34* out);
🄵 API void model_destroy(model_t);
🄵 API unsigned model_getpass();
🄵 API unsigned model_setpass(unsigned pass);
🄵 API vec3 pose(bool forward,float curframe,int minframe,int maxframe,bool loop,float* opt_retframe);
🅂 struct anims_t;
🄵 API anims_t animations(const char* pathfile,int flags);
🅂 struct lightmap_t;
🄵 API lightmap_t lightmap(int hmsize,float near,float far,vec3 color,int passes,float threshold,float distmod);
🄵 API void lightmap_setup(lightmap_t* lm,int w,int h);
🄵 API void lightmap_bake(lightmap_t* lm,int bounces,void (*drawscene)(lightmap_t* lm,model_t* m,float* view,float* proj,void* userdata),void (*progressupdate)(float progress),void* userdata);
🄵 API void lightmap_destroy(lightmap_t* lm);
🄵 API void viewport_color(unsigned color);
🄵 API void viewport_clear(bool color,bool depth);
🄵 API void viewport_clip(vec2 from,vec2 to);
🄵 API int fx_load(const char* file);
🄵 API int fx_load_from_mem(const char* nameid,const char* content);
🄵 API void fx_begin();
🄵 API void fx_begin_res(int w,int h);
🄵 API void fx_end();
🄵 API void fx_enable(int pass,int enabled);
🄵 API int fx_enabled(int pass);
🄵 API void fx_enable_all(int enabled);
🄵 API char* fx_name(int pass);
🄵 API int fx_find(const char* name);
🄵 API void fx_setparam(int pass,const char* name,float value);
🄵 API void fx_order(int pass,unsigned priority);
🄵 API unsigned fx_program(int pass);
🄵 API int ui_fx(int pass);
🄵 API int ui_fxs();
🄵 API void* screenshot(int components);
🄵 API void* screenshot_async(int components);
🄵 API void ddraw_color(unsigned rgb);
🄵 API void ddraw_color_push(unsigned rgb);
🄵 API void ddraw_color_pop();
🄵 API void ddraw_ontop(int enabled);
🄵 API void ddraw_ontop_push(int enabled);
🄵 API void ddraw_ontop_pop();
🄵 API void ddraw_push_2d();
🄵 API void ddraw_pop_2d();
🄵 API void ddraw_aabb(vec3 minbb,vec3 maxbb);
🄵 API void ddraw_aabb_corners(vec3 minbb,vec3 maxbb);
🄵 API void ddraw_arrow(vec3 begin,vec3 end);
🄵 API void ddraw_axis(float units);
🄵 API void ddraw_boid(vec3 pos,vec3 dir);
🄵 API void ddraw_bone(vec3 center,vec3 end);
🄵 API void ddraw_bounds(const vec3 points[8]);
🄵 API void ddraw_box(vec3 center,vec3 extents);
🄵 API void ddraw_capsule(vec3 from,vec3 to,float radius);
🄵 API void ddraw_circle(vec3 pos,vec3 n,float radius);
🄵 API void ddraw_ring(vec3 pos,vec3 n,float radius);
🄵 API void ddraw_cone(vec3 center,vec3 top,float radius);
🄵 API void ddraw_cube(vec3 center,float radius);
🄵 API void ddraw_cube33(vec3 center,vec3 radius,mat33 M);
🄵 API void ddraw_diamond(vec3 from,vec3 to,float size);
🄵 API void ddraw_frustum(float projview[16]);
🄵 API void ddraw_ground(float scale);
🄵 API void ddraw_grid(float scale);
🄵 API void ddraw_hexagon(vec3 pos,float radius);
🄵 API void ddraw_line(vec3 from,vec3 to);
🄵 API void ddraw_line_dashed(vec3 from,vec3 to);
🄵 API void ddraw_line_thin(vec3 from,vec3 to);
🄵 API void ddraw_normal(vec3 pos,vec3 n);
🄵 API void ddraw_pentagon(vec3 pos,float radius);
🄵 API void ddraw_plane(vec3 p,vec3 n,float scale);
🄵 API void ddraw_point(vec3 from);
🄵 API void ddraw_position(vec3 pos,float radius);
🄵 API void ddraw_position_dir(vec3 pos,vec3 dir,float radius);
🄵 API void ddraw_pyramid(vec3 center,float height,int segments);
🄵 API void ddraw_cylinder(vec3 center,float height,int segments);
🄵 API void ddraw_sphere(vec3 pos,float radius);
🄵 API void ddraw_square(vec3 pos,float radius);
🄵 API void ddraw_text(vec3 pos,float scale,const char* text);
🄵 API void ddraw_text2d(vec2 pos,const char* text);
🄵 API void ddraw_triangle(vec3 p1,vec3 p2,vec3 p3);
🄵 API void ddraw_prism(vec3 center,float radius,float height,vec3 normal,int segments);
🄵 API void ddraw_demo();
🄵 API void ddraw_flush();
🄵 API void ddraw_flush_projview(mat44 proj,mat44 view);
🄵 API int gizmo(vec3* pos,vec3* rot,vec3* sca);
🄵 API bool gizmo_active();
🄵 API bool gizmo_hover();
🅂 struct camera_t;
🄵 API camera_t camera();
🄵 API void camera_teleport(camera_t* cam,vec3 pos);
🄵 API void camera_moveby(camera_t* cam,vec3 inc);
🄵 API void camera_fov(camera_t* cam,float fov);
🄵 API void camera_fps(camera_t* cam,float yaw,float pitch);
🄵 API void camera_fps2(camera_t* cam,float yaw,float pitch,float roll);
🄵 API void camera_orbit(camera_t* cam,float yaw,float pitch,float inc_distance);
🄵 API void camera_lookat(camera_t* cam,vec3 target);
🄵 API void camera_enable(camera_t* cam);
🄵 API camera_t* camera_get_active();
🄵 API int ui_camera(camera_t* cam);
🄵 API void ddraw_camera(camera_t* cam);
🅂 struct object_t;
🄵 API object_t object();
🄵 API void object_rotate(object_t* obj,vec3 euler);
🄵 API void object_pivot(object_t* obj,vec3 euler);
🄵 API void object_teleport(object_t* obj,vec3 pos);
🄵 API void object_move(object_t* obj,vec3 inc);
🄵 API vec3 object_position(object_t* obj);
🄵 API void object_scale(object_t* obj,vec3 sca);
🄵 API void object_model(object_t* obj,model_t model);
🄵 API void object_anim(object_t* obj,anim_t anim,float speed);
🄵 API void object_diffuse(object_t* obj,texture_t tex);
🄵 API void object_diffuse_push(object_t* obj,texture_t tex);
🄵 API void object_diffuse_pop(object_t* obj);
🄵 API void object_billboard(object_t* obj,unsigned mode);
🄴 enum LIGHT_TYPE;
🄴 enum LIGHT_FLAGS;
🅂 struct light_t;
🄵 API light_t light();
🄵 API void light_type(light_t* l,char type);
🄵 API void light_diffuse(light_t* l,vec3 color);
🄵 API void light_specular(light_t* l,vec3 color);
🄵 API void light_ambient(light_t* l,vec3 color);
🄵 API void light_teleport(light_t* l,vec3 pos);
🄵 API void light_dir(light_t* l,vec3 dir);
🄵 API void light_power(light_t* l,float power);
🄵 API void light_falloff(light_t* l,float constant,float linear,float quadratic);
🄵 API void light_cone(light_t* l,float innerCone,float outerCone);
🄵 API void light_update(unsigned num_lights,light_t* lv);
🄴 enum SCENE_FLAGS;
🅂 struct scene_t;
🄵 API scene_t* scene_push();
🄵 API void scene_pop();
🄵 API scene_t* scene_get_active();
🄵 API int scene_merge(const char* source);
🄵 API void scene_render(int flags);
🄵 API object_t* scene_spawn();
🄵 API unsigned scene_count();
🄵 API object_t* scene_index(unsigned index);
🄵 API light_t* scene_spawn_light();
🄵 API unsigned scene_count_light();
🄵 API light_t* scene_index_light(unsigned index);
🄵 API char* tempvl(const char* fmt,va_list);
🄵 API char* tempva(const char* fmt,...);
🄵 API char* strcatf(char** s,const char* buf);
🄵 char* strtok_s(char* str,const char* delimiters,char** context);
🄵 API int strmatch(const char* s,const char* wildcard);
🄵 API int strmatchi(const char* s,const char* wildcard);
🄵 API int strcmp_qsort(const void* a,const void* b);
🄵 API int strcmpi_qsort(const void* a,const void* b);
🄵 API bool strbeg(const char* src,const char* sub);
🄵 API bool strend(const char* src,const char* sub);
🄵 API bool strbegi(const char* src,const char* sub);
🄵 API bool strendi(const char* src,const char* sub);
🄵 API const char* strstri(const char* src,const char* sub);
🄵 API char* strupper(const char* str);
🄵 API char* strlower(const char* str);
🄵 API char* strrepl(char** copy,const char* target,const char* replace);
🄵 API char* strswap(char* copy,const char* target,const char* replace);
🄵 API char* strcut(char* copy,const char* target);
🄵 API const char* strlerp(unsigned numpairs,const char** pairs,const char* str);
🄵 API size_t strlcat(char* dst,const char* src,size_t dstcap);
🄵 API size_t strlcpy(char* dst,const char* src,size_t dstcap);
🄵 API array(char*) strsplit(const char* string,const char* delimiters);
🄵 API char* strjoin(array(char*) list,const char* separator);
🄵 API char* string8(const wchar_t* str);
🄵 API array(uint32_t) string32(const char* utf8);
🄵 API const char* codepoint_to_utf8(unsigned cp);
🄵 API unsigned intern(const char* string);
🄵 API const char* quark(unsigned key);
🅂 struct quarks_db;
🄵 API unsigned quark_intern(quarks_db*, const char* string);
🄵 API const char* quark_string(quarks_db*, unsigned key);
🄵 API bool kit_load(const char* filename);
🄵 API bool kit_merge(const char* filename);
🄵 API void kit_insert(const char* id,const char* translation);
🄵 API void kit_clear();
🄵 API void kit_set(const char* variable,const char* value);
🄵 API void kit_reset();
🄵 API void kit_dump_state(FILE* fp);
🄵 API char* kit_translate2(const char* id,const char* langcode_iso639_1);
🄵 API void kit_locale(const char* langcode_iso639_1);
🄵 API char* kit_translate(const char* id);
🄴 enum SPRITE_FLAGS;
🄵 API void sprite(texture_t texture,float position[3],float rotation,unsigned color,unsigned flags);
🄵 API void sprite_rect(texture_t t,vec4 rect,vec4 pos,vec4 scaleoff,float tilt_deg,unsigned tint_rgba,unsigned flags);
🄵 API void sprite_sheet(texture_t texture,float sheet[3],float position[3],float rotation,float offset[2],float scale[2],unsigned rgba,unsigned flags);
🄵 API void sprite_flush();
🅂 struct tileset_t;
🄵 API tileset_t tileset(texture_t tex,unsigned tile_w,unsigned tile_h,unsigned cols,unsigned rows);
🄵 API int ui_tileset(tileset_t t);
🅂 struct tilemap_t;
🄵 API tilemap_t tilemap(const char* map,int blank_chr,int linefeed_chr);
🄵 API void tilemap_render(tilemap_t m,tileset_t style);
🄵 API void tilemap_render_ext(tilemap_t m,tileset_t style,float zindex,float xy_zoom[3],float tilt,unsigned tint,bool is_additive);
🅂 struct tiled_t;
🄵 API tiled_t tiled(const char* file_tmx);
🄵 API void tiled_render(tiled_t tmx,vec3 pos);
🄵 API void ui_tiled(tiled_t* t);
🅂 struct spine_t spine_t;
🄵 API spine_t* spine(const char* file_json,const char* file_atlas,unsigned flags);
🄵 API void spine_skin(spine_t* p,unsigned skin);
🄵 API void spine_render(spine_t* p,vec3 offset,unsigned flags);
🄵 API void spine_animate(spine_t* p,float delta);
🄵 API void ui_spine(spine_t* p);
🅂 struct atlas_frame_t;
🅂 struct atlas_anim_t;
🅂 struct atlas_slice_frame_t;
🅂 struct atlas_slice_t;
🅂 struct atlas_t;
🄵 API atlas_t atlas_create(const char* inifile,unsigned flags);
🄵 API int ui_atlas(atlas_t* a);
🄵 API int ui_atlas_frame(atlas_frame_t* f);
🄵 API void atlas_destroy(atlas_t* a);
🅂 struct sprite_t;
🄵 OBJTYPEDEF(sprite_t,10);
🄵 API void sprite_ctor(sprite_t* s);
🄵 API void sprite_dtor(sprite_t* s);
🄵 API void sprite_tick(sprite_t* s);
🄵 API void sprite_draw(sprite_t* s);
🄵 API void sprite_edit(sprite_t* s);
🄵 API sprite_t* sprite_new(const char* ase,int bindings[6]);
🄵 API void sprite_del(sprite_t* s);
🄵 API void sprite_setanim(sprite_t* s,unsigned name);
🅂 struct guiskin_t;
🄵 API void gui_pushskin(guiskin_t skin);
🄵 API void* gui_userdata();
🄵 API vec2 gui_getskinsize(const char* skin,const char* fallback);
🄵 API unsigned gui_getskincolor(const char* skin,const char* fallback);
🄵 API bool gui_ismouseinrect(const char* skin,const char* fallback,vec4 rect);
🄵 API vec4 gui_getscissorrect(const char* skin,const char* fallback,vec4 rect);
🄵 API void gui_panel_id(int id,vec4 rect,const char* skin);
🄵 API void gui_rect_id(int id,vec4 rect,const char* skin);
🄵 API void gui_label_id(int id,const char* skin,const char* text,vec4 rect);
🄵 API bool gui_button_id(int id,vec4 rect,const char* skin);
🄵 API bool gui_button_label_id(int id,const char* text,vec4 rect,const char* skin);
🄵 API bool gui_slider_id(int id,vec4 rect,const char* skin,float min,float max,float step,float* value);
🄵 API bool gui_slider_label_id(int id,const char* text,vec4 rect,const char* skin,float min,float max,float step,float* value);
🄵 API void gui_panel_end();
🄵 API void gui_popskin();
🅂 struct skinned_t;
🄵 API guiskin_t gui_skinned(const char* asefile,float scale);
🄵 API bool steam_init(unsigned app_id);
🄵 API void steam_tick();
🄵 API void steam_trophy(const char* trophy_id,bool redeem);
🄵 API void steam_screenshot();
🄵 API void steam_destroy();
🄵 API int ui_steam();
🄵 API void* thread(int (*thread_func)(void* user_data),void* user_data);
🄵 API void thread_destroy(void* thd);
🄵 API int argc();
🄵 API char* argv(int);
🄵 API void argvadd(const char* arg);
🄵 API int flag(const char* commalist);
🄵 API const char* option(const char* commalist,const char* defaults);
🄵 API int optioni(const char* commalist,int defaults);
🄵 API float optionf(const char* commalist,float defaults);
🄵 API void tty_attach();
🄵 API void tty_detach();
🄵 API void tty_color(unsigned color);
🄵 API void tty_reset();
🄵 API const char* app_exec(const char* command);
🄵 API int app_spawn(const char* command);
🄵 API int app_cores();
🄵 API int app_battery();
🄵 API const char* app_name();
🄵 API const char* app_path();
🄵 API const char* app_cache();
🄵 API const char* app_temp();
🄵 API const char* app_cmdline();
🄵 API void app_beep();
🄵 API void app_hang();
🄵 API void app_crash();
🄵 API void app_singleton(const char* guid);
🄵 API bool app_open(const char* folder_file_or_url);
🄵 API const char* app_loadfile();
🄵 API const char* app_savefile();
🄵 API char* callstack(int traces);
🄵 API int callstackf(FILE* fp,int traces);
🄵 API void die(const char* message);
🄵 API void alert(const char* message);
🄵 API void hexdump(const void* ptr,unsigned len);
🄵 API void hexdumpf(FILE* fp,const void* ptr,unsigned len,int width);
🄵 API void breakpoint();
🄵 API bool has_debugger();
🄵 API void trap_install(void);
🄵 API const char* trap_name(int signal);
🄵 API void trap_on_ignore(int signal);
🄵 API void trap_on_quit(int signal);
🄵 API void trap_on_abort(int signal);
🄵 API void trap_on_debug(int signal);
🄵 API int PANIC(const char* error,const char* file,int line);
🄵 API int PRINTF(const char* text,const char* stack,const char* file,int line,const char* function);
🄵 API int test(const char* file,int line,const char* expr,bool result);
🄵 API uint64_t date();
🄵 API uint64_t date_epoch();
🄵 API char* date_string();
🄵 API double time_hh();
🄵 API double time_mm();
🄵 API double time_ss();
🄵 API uint64_t time_ms();
🄵 API uint64_t time_us();
🄵 API uint64_t time_ns();
🄵 API void sleep_ss(double ss);
🄵 API void sleep_ms(double ms);
🄵 API void sleep_us(double us);
🄵 API void sleep_ns(double us);
🄵 API unsigned timer(unsigned ms,unsigned (*callback)(unsigned ms,void* arg),void* arg);
🄵 API void timer_destroy(unsigned timer_handle);
🅃 typedef vec3i guid;
🄵 API guid guid_create();
🄵 API float ease_zero(float t);
🄵 API float ease_one(float t);
🄵 API float ease_linear(float t);
🄵 API float ease_out_sine(float t);
🄵 API float ease_out_quad(float t);
🄵 API float ease_out_cubic(float t);
🄵 API float ease_out_quart(float t);
🄵 API float ease_out_quint(float t);
🄵 API float ease_out_expo(float t);
🄵 API float ease_out_circ(float t);
🄵 API float ease_out_back(float t);
🄵 API float ease_out_elastic(float t);
🄵 API float ease_out_bounce(float t);
🄵 API float ease_in_sine(float t);
🄵 API float ease_in_quad(float t);
🄵 API float ease_in_cubic(float t);
🄵 API float ease_in_quart(float t);
🄵 API float ease_in_quint(float t);
🄵 API float ease_in_expo(float t);
🄵 API float ease_in_circ(float t);
🄵 API float ease_in_back(float t);
🄵 API float ease_in_elastic(float t);
🄵 API float ease_in_bounce(float t);
🄵 API float ease_inout_sine(float t);
🄵 API float ease_inout_quad(float t);
🄵 API float ease_inout_cubic(float t);
🄵 API float ease_inout_quart(float t);
🄵 API float ease_inout_quint(float t);
🄵 API float ease_inout_expo(float t);
🄵 API float ease_inout_circ(float t);
🄵 API float ease_inout_back(float t);
🄵 API float ease_inout_elastic(float t);
🄵 API float ease_inout_bounce(float t);
🄵 API float ease_inout_perlin(float t);
🄴 enum EASE_FLAGS;
🄵 API float ease(float t01,unsigned fn);
🄵 API float ease_pong(float t01,unsigned fn);
🄵 API float ease_ping_pong(float t,unsigned fn1,unsigned fn2);
🄵 API float ease_pong_ping(float t,unsigned fn1,unsigned fn2);
🄵 API const char* ease_enum(unsigned fn);
🄵 API const char** ease_enums();
🅂 struct tween_keyframe_t;
🅂 struct tween_t;
🄵 API tween_t tween();
🄵 API void tween_setkey(tween_t* tw,float t,vec3 v,unsigned easing_mode);
🄵 API void tween_delkey(tween_t* tw,float t);
🄵 API float tween_update(tween_t* tw,float dt);
🄵 API void tween_reset(tween_t* tw);
🄵 API void tween_destroy(tween_t* tw);
🅂 struct curve_t;
🄵 API curve_t curve();
🄵 API void curve_add(curve_t* c,vec3 p);
🄵 API void curve_end(curve_t* c,int num_points);
🄵 API vec3 curve_eval(curve_t* c,float dt,unsigned* color);
🄵 API void curve_destroy(curve_t* c);
🄴 enum PANEL_FLAGS;
🄵 API int ui_notify(const char* title,const char* body);
🄵 API int ui_window(const char* title,int* enabled);
🄵 API int ui_panel(const char* title,int flags);
🄵 API int ui_collapse(const char* label,const char* id);
🄵 API int ui_collapseo(const char* label,const char* id);
🄵 API int ui_contextual();
🄵 API int ui_section(const char* title);
🄵 API int ui_int(const char* label,int* value);
🄵 API int ui_bool(const char* label,bool* value);
🄵 API int ui_short(const char* label,short* value);
🄵 API int ui_float(const char* label,float* value);
🄵 API int ui_float2(const char* label,float value[2]);
🄵 API int ui_float3(const char* label,float value[3]);
🄵 API int ui_float4(const char* label,float value[4]);
🄵 API int ui_mat33(const char* label,float mat33[9]);
🄵 API int ui_mat34(const char* label,float mat34[12]);
🄵 API int ui_mat44(const char* label,float mat44[16]);
🄵 API int ui_double(const char* label,double* value);
🄵 API int ui_buffer(const char* label,char* buffer,int buflen);
🄵 API int ui_string(const char* label,char** string);
🄵 API int ui_color3(const char* label,unsigned* color);
🄵 API int ui_color3f(const char* label,float color[3]);
🄵 API int ui_color4(const char* label,unsigned* color);
🄵 API int ui_color4f(const char* label,float color[4]);
🄵 API int ui_unsigned(const char* label,unsigned* value);
🄵 API int ui_unsigned2(const char* label,unsigned* value);
🄵 API int ui_unsigned3(const char* label,unsigned* value);
🄵 API int ui_button(const char* label);
🄵 API int ui_button_transparent(const char* label);
🄵 API int ui_buttons(int buttons,...);
🄵 API int ui_toolbar(const char* options);
🄵 API int ui_submenu(const char* options);
🄵 API int ui_browse(const char** outfile,bool* inlined);
🄵 API int ui_toggle(const char* label,bool* value);
🄵 API int ui_dialog(const char* title,const char* text,int choices,bool* show);
🄵 API int ui_list(const char* label,const char** items,int num_items,int* selector);
🄵 API int ui_radio(const char* label,const char** items,int num_items,int* selector);
🄵 API int ui_texture(const char* label,texture_t t);
🄵 API int ui_subtexture(const char* label,texture_t t,unsigned x,unsigned y,unsigned w,unsigned h);
🄵 API int ui_image(const char* label,handle id,unsigned w,unsigned h);
🄵 API int ui_subimage(const char* label,handle id,unsigned iw,unsigned ih,unsigned sx,unsigned sy,unsigned sw,unsigned sh);
🄵 API int ui_colormap(const char* label,colormap_t* cm);
🄵 API int ui_separator();
🄵 API int ui_bitmask8(const char* label,uint8_t* bits);
🄵 API int ui_bitmask16(const char* label,uint16_t* bits);
🄵 API int ui_console();
🄵 API int ui_clampf(const char* label,float* value,float minf,float maxf);
🄵 API int ui_label(const char* label);
🄵 API int ui_label2(const char* label,const char* caption);
🄵 API int ui_label2_bool(const char* label,bool enabled);
🄵 API int ui_label2_float(const char* label,float value);
🄵 API int ui_label2_toolbar(const char* label,const char* icons);
🄵 API int ui_slider(const char* label,float* value);
🄵 API int ui_slider2(const char* label,float* value,const char* caption);
🄵 API int ui_contextual_end(int close);
🄵 API int ui_collapse_clicked();
🄵 API int ui_collapse_end();
🄵 API int ui_panel_end();
🄵 API int ui_window_end();
🄵 API int ui_show(const char* panel_or_window_title,int enabled);
🄵 API int ui_dims(const char* panel_or_window_title,float width,float height);
🄵 API int ui_visible(const char* panel_or_window_title);
🄵 API vec2 ui_get_dims();
🄵 API int ui_enable();
🄵 API int ui_enabled();
🄵 API int ui_disable();
🄵 API int ui_has_menubar();
🄵 API int ui_menu(const char* items);
🄵 API int ui_menu_editbox(char* buf,int bufcap);
🄵 API int ui_item();
🄵 API int ui_popups();
🄵 API int ui_hover();
🄵 API int ui_active();
🄵 API int ui_demo(int do_windows);
🄵 API void* ui_handle();
🄴 enum VIDEO_FLAGS;
🅂 struct video_t video_t;
🄵 API video_t* video(const char* filename,int flags);
🄵 API texture_t* video_decode(video_t* v);
🄵 API texture_t* video_textures(video_t* v);
🄵 API int video_has_finished(video_t* v);
🄵 API double video_duration(video_t* v);
🄵 API int video_seek(video_t* v,double seek_to);
🄵 API double video_position(video_t* v);
🄵 API void video_pause(video_t* v,bool paused);
🄵 API bool video_is_paused(video_t* v);
🄵 API bool video_is_rgb(video_t* v);
🄵 API void video_destroy(video_t* v);
🄵 API bool record_start(const char* outfile_mp4);
🄵 API bool record_active();
🄵 API void record_stop(void);
🄴 enum WINDOW_FLAGS;
🄵 API bool window_create(float scale,unsigned flags);
🄵 API bool window_create_from_handle(void* handle,float scale,unsigned flags);
🄵 API void window_reload();
🄵 API int window_frame_begin();
🄵 API void window_frame_end();
🄵 API void window_frame_swap();
🄵 API int window_swap();
🄵 API void window_loop(void (*function)(void* loopArg),void* loopArg);
🄵 API void window_loop_exit();
🄵 API void window_title(const char* title);
🄵 API void window_color(unsigned color);
🄵 API vec2 window_canvas();
🄵 API void* window_handle();
🄵 API char* window_stats();
🄵 API uint64_t window_frame();
🄵 API int window_width();
🄵 API int window_height();
🄵 API double window_time();
🄵 API double window_delta();
🄵 API void window_focus();
🄵 API int window_has_focus();
🄵 API void window_fullscreen(int enabled);
🄵 API int window_has_fullscreen();
🄵 API void window_cursor(int visible);
🄵 API int window_has_cursor();
🄵 API void window_pause(int paused);
🄵 API int window_has_pause();
🄵 API void window_visible(int visible);
🄵 API int window_has_visible();
🄵 API void window_maximize(int enabled);
🄵 API int window_has_maximize();
🄵 API void window_transparent(int enabled);
🄵 API int window_has_transparent();
🄵 API void window_icon(const char* file_icon);
🄵 API int window_has_icon();
🄵 API void window_debug(int visible);
🄵 API int window_has_debug();
🄵 API double window_aspect();
🄵 API void window_aspect_lock(unsigned numer,unsigned denom);
🄵 API void window_aspect_unlock();
🄵 API double window_fps();
🄵 API double window_fps_target();
🄵 API void window_fps_lock(float fps);
🄵 API void window_fps_unlock();
🄵 API void window_screenshot(const char* outfile_png);
🄵 API int window_record(const char* outfile_mp4);
🄵 API vec2 window_dpi();
🄴 enum CURSOR_SHAPES;
🄵 API void window_cursor_shape(unsigned shape);
🄵 API const char* window_clipboard();
🄵 API void window_setclipboard(const char* text);
🅂 struct editor_bind_t;
🄵 API void editor_addbind(editor_bind_t bind);
🄵 API void editor_destroy_properties(void* o);
🄵 API void editor_load_on_boot(void);
🄵 API void editor_save_on_quit(void);
🄴 enum EDITOR_MODE;
🄵 API int editor_begin(const char* title,int mode);
🄵 API int editor_end(int mode);
🄵 API int editor_filter();
🄵 API void editor_select(const char* mask);
🄵 API void editor_unselect();
🄵 API void editor_select_aabb(aabb box);
🄵 API void editor_selectgroup(obj* first,obj* last);
🄵 API void* editor_first_selected();
🄵 API void* editor_last_selected();
🄵 API void editor_addtoworld(obj* o);
🄵 API void editor_watch(const void* o);
🄵 API void* editor_spawn(const char* ini);
🄵 API void editor_spawn1();
🄵 API void editor_destroy_selected();
🄵 API void editor_inspect(obj* o);
🄵 API vec3 editor_pick(float mouse_x,float mouse_y);
🄵 API char* editor_path(const char* path);
🄵 API void editor_setmouse(int x,int y);
🄵 API vec2 editor_glyph(int x,int y,const char* style,unsigned codepoint);
🄵 API vec2 editor_glyphs(int x,int y,const char* style,const char* utf8);
🄵 API void editor_gizmos(int dim);
🄵 API int editor_send(const char* cmd);
🄵 API const char* editor_recv(int jobid,double timeout_ss);
🄵 API void editor_pump();
🄵 API void editor_frame(void (*game)(unsigned,float,double));
🄵 API float* engine_getf(const char* key);
🄵 API int* engine_geti(const char* key);
🄵 API char** engine_gets(const char* key);
🄵 API int engine_send(const char* cmd,const char* optional_value);
🄵 API int ui_engine();