disable steamsdk codebase

main
Dominik Madarász 2024-08-07 14:31:07 +02:00
parent abd6bd3c68
commit 6997e7e14f
9 changed files with 1437 additions and 1858 deletions

View File

@ -1830,12 +1830,6 @@ typedef struct skinned_t {
float scale;
} skinned_t;
guiskin_t gui_skinned(const char *asefile, float scale);
bool steam_init(unsigned app_id);
void steam_tick();
void steam_trophy(const char *trophy_id, bool redeem);
void steam_screenshot();
void steam_destroy();
int ui_steam();
void* thread( int (*thread_func)(void* user_data), void* user_data );
void thread_destroy( void *thd );
int argc();

File diff suppressed because it is too large Load Diff

View File

@ -2414,6 +2414,7 @@ typedef struct {
intptr_t SteamClient();
#ifndef STEAM_API
#define STEAM_API(X) \
X(bool,SteamAPI_Init,()) \
X(void,SteamAPI_Shutdown,()) \
@ -3113,3 +3114,4 @@ X(void*,SteamInternal_CreateInterface,(const char *ver)) \
X(bool,SteamAPI_IsSteamRunning,()) \
X(bool,SteamAPI_InitSafe,()) \
X(void,SteamAPI_RunCallbacks,())
#endif

View File

@ -152,8 +152,6 @@
{{FILE:v4k_sprite.c}}
{{FILE:v4k_steam.c}}
{{FILE:v4k_system.c}}
{{FILE:v4k_time.c}}

View File

@ -147,8 +147,6 @@ extern "C" {
{{FILE:v4k_sprite.h}}
{{FILE:v4k_gui.h}}
{{FILE:v4k_steam.h}}
{{FILE:v4k_system.h}}
{{FILE:v4k_time.h}}

View File

@ -225,6 +225,7 @@ static char *ui_filter = 0;
//#define LM_DEBUG_INTERPOLATION
{{FILE:3rd_lightmapper.h}}
#define STEAM_API() //@hack
{{FILE:3rd_sdk_steam.h}}
#endif // V4K_3RD

View File

@ -1,12 +1,12 @@
/* game framework (3rd libs)
* - rlyeh, public domain
*/
#ifdef V4K_3RD
#define GLAD_GL_IMPLEMENTATION // glad
#endif
#line 1 "3rd_glad.h"
/* game framework (3rd libs)
* - rlyeh, public domain
*/
#ifdef V4K_3RD
#define GLAD_GL_IMPLEMENTATION // glad
#endif
#line 1 "3rd_glad.h"
#ifndef __EMSCRIPTEN__
#ifndef _GNU_SOURCE // juicy linux headers
@ -11687,8 +11687,8 @@ int gladLoadGL( GLADloadfunc load) {
#endif /* GLAD_GL_IMPLEMENTATION */
#endif /* __EMSCRIPTEN__ */
#line 0
#line 1 "3rd_icon_md.h"
#line 0
#line 1 "3rd_icon_md.h"
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://github.com/google/material-design-icons/raw/master/font/MaterialIcons-Regular.codepoints
// for use with https://github.com/google/material-design-icons/blob/master/font/MaterialIcons-Regular.ttf
@ -13935,104 +13935,104 @@ int gladLoadGL( GLADloadfunc load) {
#define ICON_MD_ZOOM_OUT "\xee\xa4\x80" // U+e900
#define ICON_MD_ZOOM_OUT_MAP "\xee\x95\xab" // U+e56b
#endif // ICON_MD_H
#line 0
#ifdef V4K_3RD
//-----------------------------------------------------------------------------
// 3rd party libs
#define ARCHIVE_C // archive.c
#define BASE64_C // base64.c
#define COMPRESS_C // compress.c
#define ENET_IMPLEMENTATION // enet
#define GJK_C // gjk
#define _GLFW_IMPLEMENTATION // glfw337
#define GLFW_INCLUDE_NONE // glfw337
#define HTTPS_IMPLEMENTATION // https
#define JO_MPEG_COMPONENTS 3 // jo_mpeg
#define JSON5_C // json5
#define LUA_IMPL // lua544
#define LUA_USE_POPEN 1 // for lite editor
#define MINIAUDIO_IMPLEMENTATION // miniaudio
#define MA_NO_FLAC // miniaudio
#define NK_GLFW_GL3_IMPLEMENTATION // nuklear
#define NK_IMPLEMENTATION // nuklear
#define NK_INCLUDE_DEFAULT_ALLOCATOR // nuklear
#define NK_INCLUDE_DEFAULT_FONT // nuklear
#define NK_INCLUDE_FIXED_TYPES // nuklear
#define NK_INCLUDE_FONT_BAKING // nuklear
#define NK_INCLUDE_STANDARD_IO // nuklear
#define NK_INCLUDE_STANDARD_VARARGS // nuklear
#define NK_INCLUDE_VERTEX_BUFFER_OUTPUT // nuklear
#define NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS 64 // nuklear
#define NK_KEYSTATE_BASED_INPUT // nuklear
#define PL_MPEG_IMPLEMENTATION // pl_mpeg
#define STB_IMAGE_IMPLEMENTATION // stbi
#define STB_IMAGE_WRITE_IMPLEMENTATION // stbi_write
#define STB_SPRINTF_IMPLEMENTATION // stb_sprintf
#define STB_SPRINTF_NOUNALIGNED // stb_sprintf
#define STS_MIXER_IMPLEMENTATION // sts_mixer
#define SIMPLEX_C // simplex
#define SWRAP_IMPLEMENTATION // swrap
#define SWRAP_STATIC // swrap
#define THREAD_IMPLEMENTATION // thread
#define TFD_IMPLEMENTATION // tinyfiledialogs
#define BQ_PLATFORM_IMPLEMENTATION // websocket
#define BQ_WEBSOCKET_IMPLEMENTATION // websocket
#define XML_C // xml
#ifdef __APPLE__
#define MA_NO_RUNTIME_LINKING // miniaudio osx
#define _GLFW_COCOA // glfw osx
#elif defined _WIN32
#define _GLFW_WIN32 // glfw win32
#else
#define _GLFW_X11 // glfw linux, also _GLFW_OSMESA or _GLFW_WAYLAND
#endif
#if defined __TINYC__ && defined _WIN32
#define MAPVK_VSC_TO_VK 1
#define MAPVK_VK_TO_VSC 0
#define IPV6_V6ONLY 27
#define _WIN32_WINNT_VISTA 0
#define _WIN32_WINNT_WINXP 0
#define _WIN32_WINNT_WIN7 0
#endif
#ifdef __TINYC__
#define STBI_NO_SIMD
// no uint128_t (3rd_https.h)
char* strtok_s(
char* str,
const char* delimiters,
char** context
);
#endif
#if defined __clang__ && defined _WIN32
int execv(const char *path, char *const argv[]);
#elif (is(tcc) /*|| defined __clang__*/) && defined _WIN32
int execv(const char *path, char *const argv[]);
errno_t strerror_s(
char *buffer,
size_t sizeInBytes,
int errnum
);
typedef int socklen_t;
#if is(tcc)
#define restrict
const char *inet_ntop(int af, const void *restrict src,
char *restrict dst, socklen_t size);
int inet_pton(int af, const char *restrict src, void *restrict dst);
#endif
errno_t fopen_s(
FILE** pFile,
const char *filename,
const char *mode
);
#endif
//---
#line 1 "3rd_glfw3.h"
#line 0
#ifdef V4K_3RD
//-----------------------------------------------------------------------------
// 3rd party libs
#define ARCHIVE_C // archive.c
#define BASE64_C // base64.c
#define COMPRESS_C // compress.c
#define ENET_IMPLEMENTATION // enet
#define GJK_C // gjk
#define _GLFW_IMPLEMENTATION // glfw337
#define GLFW_INCLUDE_NONE // glfw337
#define HTTPS_IMPLEMENTATION // https
#define JO_MPEG_COMPONENTS 3 // jo_mpeg
#define JSON5_C // json5
#define LUA_IMPL // lua544
#define LUA_USE_POPEN 1 // for lite editor
#define MINIAUDIO_IMPLEMENTATION // miniaudio
#define MA_NO_FLAC // miniaudio
#define NK_GLFW_GL3_IMPLEMENTATION // nuklear
#define NK_IMPLEMENTATION // nuklear
#define NK_INCLUDE_DEFAULT_ALLOCATOR // nuklear
#define NK_INCLUDE_DEFAULT_FONT // nuklear
#define NK_INCLUDE_FIXED_TYPES // nuklear
#define NK_INCLUDE_FONT_BAKING // nuklear
#define NK_INCLUDE_STANDARD_IO // nuklear
#define NK_INCLUDE_STANDARD_VARARGS // nuklear
#define NK_INCLUDE_VERTEX_BUFFER_OUTPUT // nuklear
#define NK_MAX_LAYOUT_ROW_TEMPLATE_COLUMNS 64 // nuklear
#define NK_KEYSTATE_BASED_INPUT // nuklear
#define PL_MPEG_IMPLEMENTATION // pl_mpeg
#define STB_IMAGE_IMPLEMENTATION // stbi
#define STB_IMAGE_WRITE_IMPLEMENTATION // stbi_write
#define STB_SPRINTF_IMPLEMENTATION // stb_sprintf
#define STB_SPRINTF_NOUNALIGNED // stb_sprintf
#define STS_MIXER_IMPLEMENTATION // sts_mixer
#define SIMPLEX_C // simplex
#define SWRAP_IMPLEMENTATION // swrap
#define SWRAP_STATIC // swrap
#define THREAD_IMPLEMENTATION // thread
#define TFD_IMPLEMENTATION // tinyfiledialogs
#define BQ_PLATFORM_IMPLEMENTATION // websocket
#define BQ_WEBSOCKET_IMPLEMENTATION // websocket
#define XML_C // xml
#ifdef __APPLE__
#define MA_NO_RUNTIME_LINKING // miniaudio osx
#define _GLFW_COCOA // glfw osx
#elif defined _WIN32
#define _GLFW_WIN32 // glfw win32
#else
#define _GLFW_X11 // glfw linux, also _GLFW_OSMESA or _GLFW_WAYLAND
#endif
#if defined __TINYC__ && defined _WIN32
#define MAPVK_VSC_TO_VK 1
#define MAPVK_VK_TO_VSC 0
#define IPV6_V6ONLY 27
#define _WIN32_WINNT_VISTA 0
#define _WIN32_WINNT_WINXP 0
#define _WIN32_WINNT_WIN7 0
#endif
#ifdef __TINYC__
#define STBI_NO_SIMD
// no uint128_t (3rd_https.h)
char* strtok_s(
char* str,
const char* delimiters,
char** context
);
#endif
#if defined __clang__ && defined _WIN32
int execv(const char *path, char *const argv[]);
#elif (is(tcc) /*|| defined __clang__*/) && defined _WIN32
int execv(const char *path, char *const argv[]);
errno_t strerror_s(
char *buffer,
size_t sizeInBytes,
int errnum
);
typedef int socklen_t;
#if is(tcc)
#define restrict
const char *inet_ntop(int af, const void *restrict src,
char *restrict dst, socklen_t size);
int inet_pton(int af, const char *restrict src, void *restrict dst);
#endif
errno_t fopen_s(
FILE** pFile,
const char *filename,
const char *mode
);
#endif
//---
#line 1 "3rd_glfw3.h"
#ifndef __EMSCRIPTEN__
// forked from https://github.com/SasLuca/glfw-single-header (CC0-1.0 licensed)
@ -53227,10 +53227,10 @@ uint32_t _glfwKeySym2Unicode(unsigned int keysym)
#endif
#endif /* __EMSCRIPTEN__ */
#line 0
#undef timeGetTime
//---
#line 1 "3rd_swrap.h"
#line 0
#undef timeGetTime
//---
#line 1 "3rd_swrap.h"
// https://github.com/BareRose/swrap/blob/master/swrap.h
/*
@ -53521,9 +53521,9 @@ SWDEF int swrapMultiSelect (int* socks, size_t socks_size, double timeout) {
#endif //SWRAP_IMPLEMENTATION
#endif //SWRAP_H
#line 0
//---
#line 1 "3rd_jo_mp1.h"
#line 0
//---
#line 1 "3rd_jo_mp1.h"
/* public domain Simple, Minimalistic MPEG Layer 1 decoder - http://jonolick.com
*
* Revision History:
@ -53931,10 +53931,10 @@ bool jo_read_mp1(const void *input, int inputSize, short **output_, int *outputS
#endif // JO_MP1_HEADER_FILE_ONLY
#line 0
#define get_bits stb_vorbis_get_bits
#define error stb_vorbis_error
#line 1 "3rd_stb_vorbis.h"
#line 0
#define get_bits stb_vorbis_get_bits
#define error stb_vorbis_error
#line 1 "3rd_stb_vorbis.h"
// Ogg Vorbis audio decoder - v1.22 - public domain
// http://nothings.org/stb_vorbis/
//
@ -59519,10 +59519,10 @@ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
*/
#line 0
#undef error
#undef DEBUG
#line 1 "3rd_sts_mixer.h"
#line 0
#undef error
#undef DEBUG
#line 1 "3rd_sts_mixer.h"
///////////////////////////////////////////////////////////////////////////////
// sts_mixer.h - v0.02
// written 2016 by Sebastian Steinhauer
@ -60058,8 +60058,8 @@ int main(int argc, char *argv[]) {
For more information, please refer to <http://unlicense.org/>
*/
#line 0
#line 1 "3rd_miniaudio.h"
#line 0
#line 1 "3rd_miniaudio.h"
/*
Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file.
miniaudio - v0.11.18 - 2023-08-07
@ -152597,14 +152597,14 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#line 0
//---
#undef L
#undef C
#undef R
#define error l_error
#define panic l_panic
#line 1 "3rd_lua.h"
#line 0
//---
#undef L
#undef C
#undef R
#define error l_error
#define panic l_panic
#line 1 "3rd_lua.h"
/*
minilua.h -- Lua in a single header
Project URL: https://github.com/edubart/minilua
@ -181845,12 +181845,12 @@ int main (int argc, char **argv) {
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
#line 0
#undef cast
#undef G
//---
#define LUAFFI_C
#line 1 "3rd_luaffi.h"
#line 0
#undef cast
#undef G
//---
#define LUAFFI_C
#line 1 "3rd_luaffi.h"
#ifndef LUAFFI_H
#define LUAFFI_H
@ -194367,9 +194367,9 @@ int luaopen_ffi(lua_State* L)
#endif
#line 0
//---
#line 1 "3rd_stb_image.h"
#line 0
//---
#line 1 "3rd_stb_image.h"
/* stb_image - v2.28 - public domain image loader - http://nothings.org/stb
no warranty implied; use at your own risk
@ -202357,8 +202357,8 @@ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
*/
#line 0
#line 1 "3rd_stb_image_write.h"
#line 0
#line 1 "3rd_stb_image_write.h"
/* stb_image_write - v1.16 - public domain - http://nothings.org/stb
writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015
no warranty implied; use at your own risk
@ -204083,14 +204083,14 @@ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
*/
#line 0
//---
#undef freelist
#define STBTT_malloc(x,u) ((void)(u),MALLOC(x))
#define STBTT_free(x,u) ((void)(u),FREE(x))
#define NK_ASSERT ASSERT
#define NK_DTOA(s,n) strcpy(s, va("%f", n)) // override cos built-in nk_dtoa() will freeze while parsing UINT_MAX otherwise
#line 1 "3rd_nuklear.h"
#line 0
//---
#undef freelist
#define STBTT_malloc(x,u) ((void)(u),MALLOC(x))
#define STBTT_free(x,u) ((void)(u),FREE(x))
#define NK_ASSERT ASSERT
#define NK_DTOA(s,n) strcpy(s, va("%f", n)) // override cos built-in nk_dtoa() will freeze while parsing UINT_MAX otherwise
#line 1 "3rd_nuklear.h"
/*
/// # Nuklear
/// ![](https://cloud.githubusercontent.com/assets/8057201/11761525/ae06f0ca-a0c6-11e5-819d-5610b25f6ef4.gif)
@ -234461,8 +234461,8 @@ nk_tooltipfv(struct nk_context *ctx, const char *fmt, va_list args)
/// in libraries and brought me to create some of my own. Finally Apoorva Joshi
/// for his single header file packer.
*/
#line 0
#line 1 "3rd_nuklear_glfw_gl3.h"
#line 0
#line 1 "3rd_nuklear_glfw_gl3.h"
/*
* Nuklear - 1.32.0 - public domain
@ -235015,9 +235015,9 @@ void nk_glfw3_shutdown(struct nk_glfw* glfw)
#endif
#endif
#line 0
static char *ui_filter = 0;
#line 1 "3rd_nuklear_filebrowser.h"
#line 0
static char *ui_filter = 0;
#line 1 "3rd_nuklear_filebrowser.h"
// file browser for nuklear, based on https://github.com/vurtun/nuklear/blob/master/example/file_browser.c (public domain)
// - rlyeh, public domain
//
@ -235501,16 +235501,16 @@ static struct nk_image icon_load_rect(unsigned id, unsigned w, unsigned h, unsig
}
nk_end();
*/
#line 0
//---
#ifdef ENABLE_ASSIMP
//{{FILE/*:*/3rd_assimp.h}}
//#include "3rd_assimp/cimport.h"
//#include "3rd_assimp/scene.h"
//#include "3rd_assimp/postprocess.h"
//#pragma comment(lib, "3rd/3rd_assimp/x64/assimp")
#endif
#line 1 "3rd_json5.h"
#line 0
//---
#ifdef ENABLE_ASSIMP
//{{FILE/*:*/3rd_assimp.h}}
//#include "3rd_assimp/cimport.h"
//#include "3rd_assimp/scene.h"
//#include "3rd_assimp/postprocess.h"
//#pragma comment(lib, "3rd/3rd_assimp/x64/assimp")
#endif
#line 1 "3rd_json5.h"
// JSON5 + SJSON parser module
//
// License:
@ -235951,8 +235951,8 @@ int main() {
#endif
#endif // JSON5_C
#line 0
#line 1 "3rd_gjk.h"
#line 0
#line 1 "3rd_gjk.h"
// GJK distance algorithm. original code by @vurtun and @randygaul, public domain.
// [src] https://gist.github.com/vurtun/29727217c269a2fbf4c0ed9a1d11cb40
// - rlyeh, public domain.
@ -236560,8 +236560,8 @@ gjk_result gjk_quad(float a_radius, float b_radius) {
}
#endif
#line 0
#line 1 "3rd_compress.h"
#line 0
#line 1 "3rd_compress.h"
// compress.c de/compressors into a single-file header
// - rlyeh, public domain
//
@ -247401,8 +247401,8 @@ unsigned file_decode(FILE* in, FILE* out, FILE *logfile) { // multi decoder
}
#endif // COMPRESS_C
#line 0
#line 1 "3rd_archive.h"
#line 0
#line 1 "3rd_archive.h"
// archive.c pak/zip/tar/dir archivers
// - rlyeh, public domain
@ -249027,11 +249027,11 @@ int main( int argc, char **argv ) {
#define main main__
#endif //DIR_DEMO
#endif //DIR_C
#line 0
#if is(win32)
#include <mmsystem.h> // timeapi.h
#endif
#line 1 "3rd_thread.h"
#line 0
#if is(win32)
#include <mmsystem.h> // timeapi.h
#endif
#line 1 "3rd_thread.h"
/*
------------------------------------------------------------------------------
Licensing information can be found at the end of the file.
@ -250760,8 +250760,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
*/
#line 0
#line 1 "3rd_plmpeg.h"
#line 0
#line 1 "3rd_plmpeg.h"
/*
PL_MPEG - MPEG1 Video decoder, MP2 Audio decoder, MPEG-PS demuxer
@ -255026,8 +255026,8 @@ void plm_audio_matrix_transform(int s[32][3], int ss, float *d, int dp) {
#endif // PL_MPEG_IMPLEMENTATION
#line 0
#line 1 "3rd_jo_mpeg.h"
#line 0
#line 1 "3rd_jo_mpeg.h"
/* public domain Simple, Minimalistic, No Allocations MPEG writer - http://jonolick.com
*
* Latest revisions:
@ -255292,10 +255292,10 @@ void jo_write_mpeg(FILE *fp, const unsigned char *bgrx, int width, int height, i
fwrite("\x00\x00\x01\xb7", 4, 1, fp); // End of Sequence
}
#endif
#line 0
//#define _RTL_RUN_ONCE _RTL_RUN_ONCE2 // __MINGW64__
#undef I
#line 1 "3rd_https.h"
#line 0
//#define _RTL_RUN_ONCE _RTL_RUN_ONCE2 // __MINGW64__
#undef I
#line 1 "3rd_https.h"
/*
------------------------------------------------------------------------------
Licensing information can be found at the end of the file.
@ -302275,10 +302275,10 @@ int main() {
https_release(h);
}
#endif
#line 0
#undef F2
#undef F3
#line 1 "3rd_enet.h"
#line 0
#undef F2
#undef F3
#line 1 "3rd_enet.h"
/**
* include/enet.h - a Single-Header auto-generated variant of enet.h library.
*
@ -308389,9 +308389,9 @@ extern "C" {
#endif // ENET_IMPLEMENTATION
#endif // ENET_INCLUDE_H
#line 0
#define tls_init tls_init2
#line 1 "3rd_bq_websocket.h"
#line 0
#define tls_init tls_init2
#line 1 "3rd_bq_websocket.h"
/*
------------------------------------------------------------------------------
This software is available under 2 licenses -- choose whichever you prefer.
@ -314753,8 +314753,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#endif // BQ_PLATFORM_IMPLEMENTATION
#line 0
#line 1 "3rd_simplex.h"
#line 0
#line 1 "3rd_simplex.h"
/** 1D, 2D, 3D and 4D float Perlin Simplex noise */
/** Original code, stefan gustavson (PD). */
@ -315236,8 +315236,8 @@ float snoise4(float x, float y, float z, float w) {
#undef G4
#endif
#line 0
#line 1 "3rd_tfd.h"
#line 0
#line 1 "3rd_tfd.h"
/* If you are using a C++ compiler to compile tinyfiledialogs.c (maybe renamed with an extension ".cpp")
then comment out << extern "C" >> bellow in this header file) */
@ -323296,8 +323296,8 @@ tinyfd_messageBox("The selected hexcolor is",
#endif
#endif // TFD_IMPLEMENTATION
#line 0
#line 1 "3rd_stb_sprintf.h"
#line 0
#line 1 "3rd_stb_sprintf.h"
// stb_sprintf - v1.10 - public domain snprintf() implementation
// originally by Jeff Roberts / RAD Game Tools, 2015/10/20
// http://github.com/nothings/stb
@ -325204,9 +325204,9 @@ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
------------------------------------------------------------------------------
*/
#line 0
#define g g2
#line 1 "3rd_xml.h"
#line 0
#define g g2
#line 1 "3rd_xml.h"
// original xml.h/xml.c files by tor andersson, public domain
#ifndef xml_h
@ -325735,9 +325735,9 @@ struct xml *xml_parse(char *s, int preserve_white, char **errorp)
}
#endif
#line 0
#undef g
#line 1 "3rd_polychop.h"
#line 0
#undef g
#line 1 "3rd_polychop.h"
/* Progressive Mesh type Polygon Reduction Algorithm
*
* 1998: Original version by Stan Melax (c) 1998
@ -326147,18 +326147,18 @@ API void ProgressiveMesh(int vert_n, int vert_stride, const float *v, int tri_n,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#line 0
#define expr expr2 // 3rd_lua.h
#define EVAL_EXTEND_CONSTANTS \
for( int vk = input_enum(id), *once = &vk; once; once = 0) \
if( vk >= 0 ) push(ev, vk);
#define EVAL_EXTEND_FUNCTIONS \
/**/ if(!strcmp(id, "input") && nargs ==1) push(ev, input(pop(ev))); \
else if(!strcmp(id, "down") && nargs ==1) push(ev, input_down(pop(ev))); \
else if(!strcmp(id, "held") && nargs ==1) push(ev, input_held(pop(ev))); \
else if(!strcmp(id, "up") && nargs ==1) push(ev, input_up(pop(ev))); \
else if(!strcmp(id, "idle") && nargs ==1) push(ev, input_idle(pop(ev)));
#line 1 "3rd_eval.h"
#line 0
#define expr expr2 // 3rd_lua.h
#define EVAL_EXTEND_CONSTANTS \
for( int vk = input_enum(id), *once = &vk; once; once = 0) \
if( vk >= 0 ) push(ev, vk);
#define EVAL_EXTEND_FUNCTIONS \
/**/ if(!strcmp(id, "input") && nargs ==1) push(ev, input(pop(ev))); \
else if(!strcmp(id, "down") && nargs ==1) push(ev, input_down(pop(ev))); \
else if(!strcmp(id, "held") && nargs ==1) push(ev, input_held(pop(ev))); \
else if(!strcmp(id, "up") && nargs ==1) push(ev, input_up(pop(ev))); \
else if(!strcmp(id, "idle") && nargs ==1) push(ev, input_idle(pop(ev)));
#line 1 "3rd_eval.h"
/* A mathematical expression evaluator.
* It uses a recursive descent parser internally.
* Author: Werner Stoop
@ -326667,8 +326667,8 @@ int main() {
assert(~puts("Ok") );
}
#endif
#line 0
#line 1 "3rd_luadebugger.h"
#line 0
#line 1 "3rd_luadebugger.h"
/*
Copyright (c) 2023 Scott Lembcke and Howling Moon Software
@ -328147,8 +328147,8 @@ int dbg_pcall(lua_State *lua, int nargs, int nresults, int msgh){
return err;
}
#line 0
#line 1 "3rd_base64.h"
#line 0
#line 1 "3rd_base64.h"
// base64 de/encoder. Based on code by Jon Mayo - November 13, 2003 (PUBLIC DOMAIN).
// - rlyeh, public domain
@ -328289,10 +328289,10 @@ array(char) base64_decode(const char *inp, unsigned inlen) { // array_free() aft
}
#endif // array_resize
#endif // BASE64_C
#line 0
#if ENABLE_RPMALLOC
#line 1 "3rd_rpmalloc.h"
#line 0
#if ENABLE_RPMALLOC
#line 1 "3rd_rpmalloc.h"
/* rpmalloc.h - Memory allocator - Public Domain - 2016 Mattias Jansson
*
* This library provides a cross-platform lock free thread caching malloc implementation in C11.
@ -328666,8 +328666,8 @@ rpmalloc_get_heap_for_ptr(void* ptr);
#ifdef __cplusplus
}
#endif
#line 0
#line 1 "3rd_rpmalloc.c"
#line 0
#line 1 "3rd_rpmalloc.c"
/* rpmalloc.c - Memory allocator - Public Domain - 2016-2020 Mattias Jansson
*
* This library provides a cross-platform lock free thread caching malloc implementation in C11.
@ -332297,29 +332297,29 @@ void
rpmalloc_linker_reference(void) {
(void)sizeof(_rpmalloc_initialized);
}
#line 0
//{{FILE: 3rd_rpmalloci.c}}
#define SYS_MEM_INIT() rpmalloc_initialize()
#define SYS_MEM_REALLOC rprealloc
#define SYS_MEM_SIZE rpmalloc_usable_size
#endif
//#define SQLITE_OMIT_LOAD_EXTENSION
//#define SQLITE_CORE 1
//#define SQLITE_DEBUG 1
//#define Token SQToken
//#define Table SQTable
//#define rehash sqlite3__rehash
//#undef NB
//{ {FILE:3rd_sqlite3.c}}
//#undef Token
//#undef Table
//#undef rehash
//#undef NB
//#undef threadid
// editor
#line 1 "3rd_icon_mdi.h"
#line 0
//{{FILE: 3rd_rpmalloci.c}}
#define SYS_MEM_INIT() rpmalloc_initialize()
#define SYS_MEM_REALLOC rprealloc
#define SYS_MEM_SIZE rpmalloc_usable_size
#endif
//#define SQLITE_OMIT_LOAD_EXTENSION
//#define SQLITE_CORE 1
//#define SQLITE_DEBUG 1
//#define Token SQToken
//#define Table SQTable
//#define rehash sqlite3__rehash
//#undef NB
//{ {FILE:3rd_sqlite3.c}}
//#undef Token
//#undef Table
//#undef rehash
//#undef NB
//#undef threadid
// editor
#line 1 "3rd_icon_mdi.h"
// Generated by https://github.com/juliettef/IconFontCppHeaders script GenerateIconFontCppHeaders.py for languages C and C++
// from https://raw.githubusercontent.com/Templarian/MaterialDesign-Webfont/master/css/materialdesignicons.css
// for use with https://github.com/Templarian/MaterialDesign-Webfont/raw/master/fonts/materialdesignicons-webfont.ttf
@ -339698,11 +339698,11 @@ rpmalloc_linker_reference(void) {
#define ICON_MDI_ZODIAC_TAURUS "\xf3\xb0\xaa\x87" // U+F0A87
#define ICON_MDI_ZODIAC_VIRGO "\xf3\xb0\xaa\x88" // U+F0A88
#define ICON_MDI_BLANK "\xef\x9a\x8c" // U+F68C
#line 0
// editor_script
#define GLEQ_IMPLEMENTATION
#define GlyphSet GlyphSet_ // linux
#line 1 "3rd_lite_sys_gleq.h"
#line 0
// editor_script
#define GLEQ_IMPLEMENTATION
#define GlyphSet GlyphSet_ // linux
#line 1 "3rd_lite_sys_gleq.h"
/*
* GLEQ - A basic event queue for GLFW 3
* Copyright © Camilla Löwy <elmindreda@glfw.org>
@ -340127,8 +340127,8 @@ GLEQDEF void gleqFreeEvent(GLEQevent* event)
#endif /* GLEQ_IMPLEMENTATION */
#endif /* GLEQ_HEADER_FILE */
#line 0
#line 1 "3rd_lite_sys.h"
#line 0
#line 1 "3rd_lite_sys.h"
// lite editor, platform details
// - rlyeh, public domain
@ -340404,8 +340404,8 @@ bottom:;
return rc;
}
#line 0
#line 1 "3rd_lite.h"
#line 0
#line 1 "3rd_lite.h"
// Copyright (c) 2020 rxi
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
@ -341559,11 +341559,11 @@ void lt_tick(struct lua_State *L) {
"end)"
);
}
#line 0
#define LIGHTMAPPER_IMPLEMENTATION
//#define LM_DEBUG_INTERPOLATION
#line 1 "3rd_lightmapper.h"
#line 0
#define LIGHTMAPPER_IMPLEMENTATION
//#define LM_DEBUG_INTERPOLATION
#line 1 "3rd_lightmapper.h"
/***********************************************************
* A single header file OpenGL lightmapping library *
* https://github.com/ands/lightmapper *
@ -343345,9 +343345,10 @@ lm_bool lmImageSaveTGAf(const char *filename, const float *image, int w, int h,
}
#endif // LIGHTMAPPER_IMPLEMENTATION
#line 0
#line 1 "3rd_sdk_steam.h"
#line 0
#define STEAM_API() //@hack
#line 1 "3rd_sdk_steam.h"
/***************************************************************/
/* */
/* Only after agreeing to Valves non-disclosure and/or license */
@ -345764,6 +345765,7 @@ typedef struct {
intptr_t SteamClient();
#ifndef STEAM_API
#define STEAM_API(X) \
X(bool,SteamAPI_Init,()) \
X(void,SteamAPI_Shutdown,()) \
@ -346463,6 +346465,7 @@ X(void*,SteamInternal_CreateInterface,(const char *ver)) \
X(bool,SteamAPI_IsSteamRunning,()) \
X(bool,SteamAPI_InitSafe,()) \
X(void,SteamAPI_RunCallbacks,())
#line 0
#endif // V4K_3RD
#endif
#line 0
#endif // V4K_3RD

View File

@ -1,116 +1,116 @@
/* game framework.
* - rlyeh, public domain
*
* ## V4K License
*
* This software is available under 3 licenses. Choose whichever you prefer.
* ------------------------------------------------------------------------------
* ALTERNATIVE A - Public Domain (https://unlicense.org/)
* ------------------------------------------------------------------------------
* This is free and unencumbered software released into the public domain.
*
* Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
* software, either in source code form or as a compiled binary, for any purpose,
* commercial or non-commercial, and by any means.
*
* In jurisdictions that recognize copyright laws, the author or authors of this
* software dedicate any and all copyright interest in the software to the public
* domain. We make this dedication for the benefit of the public at large and to
* the detriment of our heirs and successors. We intend this dedication to be an
* overt act of relinquishment in perpetuity of all present and future rights to
* this software under copyright law.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ------------------------------------------------------------------------------
* ALTERNATIVE B - 0-BSD License (https://opensource.org/licenses/FPL-1.0.0)
* ------------------------------------------------------------------------------
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* ------------------------------------------------------------------------------
* ALTERNATIVE C - MIT-0 (No Attribution clause)
* ------------------------------------------------------------------------------
* Permission is hereby granted, free of charge, to any person obtaining a copy of this
* software and associated documentation files (the "Software"), to deal in the Software
* without restriction, including without limitation the rights to use, copy, modify,
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* ## License: Contributed Code ------------------------------------------------
*
* Dear Contributor,
*
* In order to ensure this project remains completely free and unencumbered by
* anyone's copyright monopoly, it is advisable that you dedicate your code-base
* contributions to the three licensing terms above. This removes any possible
* ambiguity as to what terms somebody might have thought they were contributing
* under, in case of a future dispute. These concerns are not unique to public
* domain software. Most large, established open-source projects have a
* Contributor License Agreement (CLA) process, of varying degrees of formality.
*
* Please add yourself to the list below before contributing.
* Thanks.
*
* --
*
* "I dedicate any and all copyright interest in this software to the three
* licensing terms listed above. I make this dedication for the benefit of the
* public at large and to the detriment of my heirs and successors. I intend
* this dedication to be an overt act of relinquishment in perpetuity of all
* present and future rights to this software under copyright law."
*
* Author (name) I agree (YES/NO) Files/Features (optional)
* ------------------------------------------------------------------------------
* @r-lyeh YES Initial codebase
* @zak@v4.games YES N/A
* ------------------------------------------------------------------------------
*/
#ifndef V4K_H
#include "v4k.h"
#endif
#if is(win32) // hack to boost exit time. there are no critical systems that need to shutdown properly on Windows,
#define atexit(...) // however Linux needs proper atexit() to deinitialize 3rd_miniaudio.h; likely OSX as well.
#endif
#ifndef V4K_3RD
#define V4K_3RD
#include "v4k"
#endif
//-----------------------------------------------------------------------------
// C files
#line 1 "v4k_begin.c"
/* game framework.
* - rlyeh, public domain
*
* ## V4K License
*
* This software is available under 3 licenses. Choose whichever you prefer.
* ------------------------------------------------------------------------------
* ALTERNATIVE A - Public Domain (https://unlicense.org/)
* ------------------------------------------------------------------------------
* This is free and unencumbered software released into the public domain.
*
* Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
* software, either in source code form or as a compiled binary, for any purpose,
* commercial or non-commercial, and by any means.
*
* In jurisdictions that recognize copyright laws, the author or authors of this
* software dedicate any and all copyright interest in the software to the public
* domain. We make this dedication for the benefit of the public at large and to
* the detriment of our heirs and successors. We intend this dedication to be an
* overt act of relinquishment in perpetuity of all present and future rights to
* this software under copyright law.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ------------------------------------------------------------------------------
* ALTERNATIVE B - 0-BSD License (https://opensource.org/licenses/FPL-1.0.0)
* ------------------------------------------------------------------------------
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* ------------------------------------------------------------------------------
* ALTERNATIVE C - MIT-0 (No Attribution clause)
* ------------------------------------------------------------------------------
* Permission is hereby granted, free of charge, to any person obtaining a copy of this
* software and associated documentation files (the "Software"), to deal in the Software
* without restriction, including without limitation the rights to use, copy, modify,
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* ## License: Contributed Code ------------------------------------------------
*
* Dear Contributor,
*
* In order to ensure this project remains completely free and unencumbered by
* anyone's copyright monopoly, it is advisable that you dedicate your code-base
* contributions to the three licensing terms above. This removes any possible
* ambiguity as to what terms somebody might have thought they were contributing
* under, in case of a future dispute. These concerns are not unique to public
* domain software. Most large, established open-source projects have a
* Contributor License Agreement (CLA) process, of varying degrees of formality.
*
* Please add yourself to the list below before contributing.
* Thanks.
*
* --
*
* "I dedicate any and all copyright interest in this software to the three
* licensing terms listed above. I make this dedication for the benefit of the
* public at large and to the detriment of my heirs and successors. I intend
* this dedication to be an overt act of relinquishment in perpetuity of all
* present and future rights to this software under copyright law."
*
* Author (name) I agree (YES/NO) Files/Features (optional)
* ------------------------------------------------------------------------------
* @r-lyeh YES Initial codebase
* @zak@v4.games YES N/A
* ------------------------------------------------------------------------------
*/
#ifndef V4K_H
#include "v4k.h"
#endif
#if is(win32) // hack to boost exit time. there are no critical systems that need to shutdown properly on Windows,
#define atexit(...) // however Linux needs proper atexit() to deinitialize 3rd_miniaudio.h; likely OSX as well.
#endif
#ifndef V4K_3RD
#define V4K_3RD
#include "v4k"
#endif
//-----------------------------------------------------------------------------
// C files
#line 1 "v4k_begin.c"
#define do_threadlock(mutexptr) \
for( int init_ = !!(mutexptr) || (thread_mutex_init( (mutexptr) = CALLOC(1, sizeof(thread_mutex_t)) ), 1); init_; init_ = 0) \
for( int lock_ = (thread_mutex_lock( mutexptr ), 1); lock_; lock_ = (thread_mutex_unlock( mutexptr ), 0) )
#define AS_NKCOLOR(color) \
((struct nk_color){ ((color>>0))&255,((color>>8))&255,((color>>16))&255,((color>>24))&255 })
#line 0
#line 1 "v4k_ds.c"
#line 0
#line 1 "v4k_ds.c"
// -----------------------------------------------------------------------------
// sort/less
@ -498,9 +498,9 @@ void (set_free)(set* m) {
set zero = {0};
*m = zero;
}
#line 0
#line 1 "v4k_string.c"
#line 0
#line 1 "v4k_string.c"
#include <stdarg.h>
#ifndef STACK_ALLOC_SIZE
@ -1084,9 +1084,9 @@ int main() {
assert(~puts("Ok"));
}
*/
#line 0
#line 1 "v4k_compat.c"
#line 0
#line 1 "v4k_compat.c"
//-----------------------------------------------------------------------------
// compat (unix & stdio.h)
@ -1203,9 +1203,9 @@ const char *pathfile_from_handle(FILE *fp) {
void v4k_init();
static void v4k_pre_init();
static void v4k_post_init(float);
#line 0
#line 1 "v4k_ui.c"
#line 0
#line 1 "v4k_ui.c"
// ----------------------------------------------------------------------------------------
// ui extensions first
@ -4094,10 +4094,10 @@ int ui_demo(int do_windows) {
}
return 0;
}
#line 0
#line 1 "v4k_audio.c"
#line 0
#line 1 "v4k_audio.c"
// @fixme: really shutdown audio & related threads before quitting. ma_dr_wav crashes.
@ -4713,9 +4713,9 @@ int ui_audio() {
return changed;
}
#line 0
#line 1 "v4k_collide.c"
#line 0
#line 1 "v4k_collide.c"
/* poly */
poly poly_alloc(int cnt) {
poly p = {0};
@ -6141,9 +6141,9 @@ void collide_demo() { // debug draw collisions // @fixme: fix leaks: poly_free()
ddraw_line(gjk.p0, gjk.p1);
}
}
#line 0
#line 1 "v4k_cook.c"
#line 0
#line 1 "v4k_cook.c"
// data pipeline
// - rlyeh, public domain.
// ----------------------------------------------------------------------------
@ -7007,9 +7007,9 @@ bool have_tools() {
static bool found; do_once found = file_exist(COOK_INI);
return ifdef(retail, false, found);
}
#line 0
#line 1 "v4k_data.c"
#line 0
#line 1 "v4k_data.c"
static array(json5) roots;
static array(char*) sources;
@ -7236,9 +7236,9 @@ bool data_tests() {
return true;
}
#line 0
#line 1 "v4k_extend.c"
#line 0
#line 1 "v4k_extend.c"
// dll ------------------------------------------------------------------------
/* deprecated
@ -7543,9 +7543,9 @@ bool script_pop() {
L = array_count(Ls) && (array_pop(Ls), array_count(Ls)) ? *array_back(Ls) : NULL;
return !!array_count(Ls);
}
#line 0
#line 1 "v4k_file.c"
#line 0
#line 1 "v4k_file.c"
// -----------------------------------------------------------------------------
// file
@ -8699,9 +8699,9 @@ bool ini_write(const char *filename, const char *section, const char *key, const
return file_append(filename, s, strlen(s));
}
#line 0
#line 1 "v4k_font.c"
#line 0
#line 1 "v4k_font.c"
// font framework. original code by Vassvik (UNLICENSED)
// - rlyeh, public domain.
//
@ -11231,9 +11231,9 @@ void *font_colorize(const char *text, const char *comma_types, const char *comma
return col;
}
#line 0
#line 1 "v4k_gui.c"
#line 0
#line 1 "v4k_gui.c"
// ----------------------------------------------------------------------------
// game ui (utils)
@ -11718,9 +11718,9 @@ guiskin_t gui_skinned(const char *asefile, float scale) {
skin.free = skinned_free;
return skin;
}
#line 0
#line 1 "v4k_input.c"
#line 0
#line 1 "v4k_input.c"
// input framework
// - rlyeh, public domain
//
@ -12483,9 +12483,9 @@ int ui_gamepads() {
return 0;
}
#line 0
#line 1 "v4k_math.c"
#line 0
#line 1 "v4k_math.c"
// -----------------------------------------------------------------------------
// math framework: rand, ease, vec2, vec3, vec4, quat, mat2, mat33, mat34, mat4
// - rlyeh, public domain
@ -13375,9 +13375,9 @@ AUTORUN {
STRUCT( vec3, float, y );
STRUCT( vec3, float, z, "Up" );
}
#line 0
#line 1 "v4k_memory.c"
#line 0
#line 1 "v4k_memory.c"
size_t dlmalloc_usable_size(void*); // __ANDROID_API__
#if is(bsd) || is(osx) // bsd or osx
@ -13479,9 +13479,9 @@ void* forget( void *ptr ) {
}
return ptr;
}
#line 0
#line 1 "v4k_network.c"
#line 0
#line 1 "v4k_network.c"
#if is(tcc) && is(win32) // @fixme: https lib is broken with tcc. replaced with InternetReadFile() api for now
@ -13776,9 +13776,9 @@ static void network_init() {
tcp_init();
}
}
#line 0
#line 1 "v4k_track.c"
#line 0
#line 1 "v4k_track.c"
static __thread int track__sock = -1;
//~ Lifecycle methods
@ -13913,9 +13913,9 @@ int track_event_props(char const *event_id, char const *user_id, const track_pro
#undef TRACK__APPEND_SAFE
#undef TRACK__APPEND_SAFE_EX
#line 0
#line 1 "v4k_netsync.c"
#line 0
#line 1 "v4k_netsync.c"
typedef void* (*rpc_function)();
typedef struct rpc_call {
@ -14601,9 +14601,9 @@ void network_rpc_send(unsigned id, const char *cmdline) {
*(uint32_t*)&msg[4] = id;
server_broadcast_bin(msg, sz);
}
#line 0
#line 1 "v4k_pack.c"
#line 0
#line 1 "v4k_pack.c"
// -----------------------------------------------------------------------------
// semantic versioning in a single byte (octal)
// - rlyeh, public domain.
@ -16974,9 +16974,9 @@ AUTORUN {
puts("");
}
#endif
#line 0
#line 1 "v4k_reflect.c"
#line 0
#line 1 "v4k_reflect.c"
// C reflection: enums, functions, structs, members and anotations.
// - rlyeh, public domain
//
@ -17168,9 +17168,9 @@ AUTOTEST {
//reflect_dump("*");
}
#line 0
#line 1 "v4k_render.c"
#line 0
#line 1 "v4k_render.c"
// -----------------------------------------------------------------------------
// opengl
@ -21727,9 +21727,9 @@ void lightmap_bake(lightmap_t *lm, int bounces, void (*drawscene)(lightmap_t *lm
}
}
#line 0
#line 1 "v4k_renderdd.c"
#line 0
#line 1 "v4k_renderdd.c"
static const char *dd_vs = "//" FILELINE "\n"
"in vec3 att_position;\n"
"uniform mat4 u_MVP;\n"
@ -22693,9 +22693,9 @@ int gizmo(vec3 *pos, vec3 *rot, vec3 *sca) {
return modified;
}
#line 0
#line 1 "v4k_scene.c"
#line 0
#line 1 "v4k_scene.c"
//
// @todo: remove explicit GL code from here
@ -23270,9 +23270,9 @@ void scene_render(int flags) {
glBindVertexArray(0);
}
}
#line 0
#line 1 "v4k_sprite.c"
#line 0
#line 1 "v4k_sprite.c"
// ----------------------------------------------------------------------------
// sprites
@ -24804,206 +24804,9 @@ AUTORUN {
STRUCT(sprite_t, unsigned, play);
EXTEND_T(sprite, ctor,edit,draw,tick);
}
#line 0
#line 1 "v4k_steam.c"
// ----------------------------------------------------------------------------
// steam framework
// - rlyeh, public domain
//
// hints:
// - steam must be running in background
// - steamworks dll must be close to executable (may be "steam_api64.dll", "libsteam_api.dylib" or "libsteam_api.so")
// - family mode should be off (achievements not displayed otherwise)
//
// [src] https://steamdb.info/app/480/
// [src] https://steamdb.info/app/480/stats/
// [src] https://partner.steamgames.com/doc/
// [src] dumpbin /exports steam_api64.dll
#line 0
#ifndef STEAM_APPID
#define STEAM_APPID 480
#endif
#ifndef STEAM_DLL
#define STEAM_DLL ifdef(win32, "steam_api64.dll", "libsteam_api" ifdef(osx, ".dylib", ".so"))
#endif
#define STEAM_API_DECL(ret,name,args) API ret (*name) args;
#define STEAM_API_DEFN(ret,name,args) ret (*name) args;
#define STEAM_API_LOAD(ret,name,args) name = dll(STEAM_DLL, #name); if(!name) PRINTF("Cannot load `" STEAM_DLL "@%s`\n", #name);
STEAM_API(STEAM_API_DECL);
STEAM_API(STEAM_API_DEFN);
struct steam_t {
intptr_t iclient;
intptr_t iapps;
intptr_t ifriends;
intptr_t ihtmlsurface;
intptr_t imatchmaking;
intptr_t imatchmakingservers;
intptr_t inetworking;
intptr_t iremoteplay;
intptr_t iremotestorage;
intptr_t iscreenshots;
intptr_t iuser;
intptr_t iuserstats;
intptr_t iutils;
uint64_t steamid;
int num_friends;
bool running, overlay;
bool logged, behindnat;
char status[256], username[256], language[32];
} steam = {0};
static
void steam_message_cb(int severity, const char *message) {
/**/ if( severity == 0 ) printf("%s", message);
else if( severity == 1 ) printf("Warning: %s", message);
else printf("Unknown severity %d: %s", severity, message);
}
bool steam_init(unsigned app_id) {
struct steam_t z = {0};
steam = z;
app_id = app_id ? app_id : STEAM_APPID;
// Steam installed?
#if is(win32)
HKEY hSteamProcess;
if( RegOpenKeyExA(HKEY_CURRENT_USER,"Software\\Valve\\Steam\\ActiveProcess", 0, KEY_READ, &hSteamProcess) ) {
return !strcpy(steam.status, "Err: steam not installed");
}
RegCloseKey(hSteamProcess);
#endif
// dll present?
if( !file_exist(STEAM_DLL) ) {
return !strcpy(steam.status, "Err: " STEAM_DLL " not found");
}
// Load symbols
STEAM_API(STEAM_API_LOAD);
if( !SteamAPI_Init ) SteamAPI_Init = SteamAPI_InitSafe;
// Initialize
char *app_id_str = va("%d", app_id);
//if( !file_exist("steam_appid.txt") ) file_write("steam_appid.txt", app_id_str, strlen(app_id_str));
#if is(win32)
if( !getenv("SteamAppId") ) SetEnvironmentVariableA("SteamAppId", app_id_str);
#endif
int started = SteamAPI_Init && SteamAPI_Init();
if( !started ) {
return !strcpy(steam.status, "Err: steam not running");
}
if( SteamAPI_RestartAppIfNecessary(app_id) )
exit(0); // restarting app thru Steam client if needed
// Create interfaces
steam.iclient = (intptr_t)SteamInternal_CreateInterface("SteamClient020");
if( !steam.iclient ) {
return !strcpy(steam.status, "Err: incompatible dll");
}
HSteamPipe hpipe = SteamAPI_ISteamClient_CreateSteamPipe(steam.iclient);
HSteamUser huser = SteamAPI_ISteamClient_ConnectToGlobalUser(steam.iclient, hpipe);
steam.iapps = (intptr_t)SteamAPI_ISteamClient_GetISteamApps(steam.iclient, huser, hpipe, "STEAMAPPS_INTERFACE_VERSION008");
steam.ifriends = (intptr_t)SteamAPI_ISteamClient_GetISteamFriends(steam.iclient, huser, hpipe, "SteamFriends017"); // 015
steam.ihtmlsurface = (intptr_t)SteamAPI_ISteamClient_GetISteamHTMLSurface(steam.iclient, huser, hpipe, "STEAMHTMLSURFACE_INTERFACE_VERSION_005");
steam.imatchmaking = (intptr_t)SteamAPI_ISteamClient_GetISteamMatchmaking(steam.iclient, huser, hpipe, "SteamMatchMaking009");
steam.imatchmakingservers = (intptr_t)SteamAPI_ISteamClient_GetISteamMatchmakingServers(steam.iclient, huser, hpipe, "SteamMatchMakingServers002");
steam.inetworking = (intptr_t)SteamAPI_ISteamClient_GetISteamNetworking(steam.iclient, huser, hpipe, "SteamNetworking006");
//steam.iremoteplay = (intptr_t)SteamAPI_ISteamClient_GetISteamRemotePlay(steam.iclient, huser, hpipe, "STEAMREMOTEPLAY_INTERFACE_VERSION001");
steam.iremotestorage = (intptr_t)SteamAPI_ISteamClient_GetISteamRemoteStorage(steam.iclient, huser, hpipe, "STEAMREMOTESTORAGE_INTERFACE_VERSION014");
steam.iscreenshots = (intptr_t)SteamAPI_ISteamClient_GetISteamScreenshots(steam.iclient, huser, hpipe, "STEAMSCREENSHOTS_INTERFACE_VERSION003");
steam.iuser = (intptr_t)SteamAPI_ISteamClient_GetISteamUser(steam.iclient, huser, hpipe, "SteamUser021"); // 019
steam.iuserstats = (intptr_t)SteamAPI_ISteamClient_GetISteamUserStats(steam.iclient, huser, hpipe, "STEAMUSERSTATS_INTERFACE_VERSION012");
steam.iutils = (intptr_t)SteamAPI_ISteamClient_GetISteamUtils(steam.iclient, hpipe, "SteamUtils010");
SteamAPI_ISteamClient_SetWarningMessageHook(steam.iclient, steam_message_cb);
// Retrieve some vars
steam.running = SteamAPI_IsSteamRunning();
steam.steamid = SteamAPI_ISteamUser_GetSteamID(steam.iuser);
steam.logged = SteamAPI_ISteamUser_BLoggedOn(steam.iuser);
steam.behindnat = SteamAPI_ISteamUser_BIsBehindNAT(steam.iuser);
steam.num_friends = SteamAPI_ISteamFriends_GetFriendCount(steam.ifriends, k_EFriendFlagAll);
strncpy(steam.username, SteamAPI_ISteamFriends_GetPersonaName(steam.ifriends), sizeof(steam.username));
strncpy(steam.language, SteamAPI_ISteamUtils_GetSteamUILanguage(steam.iutils), sizeof(steam.language)); // SteamAPI_ISteamApps_GetCurrentGameLanguage(steam.iapps)
if(steam.logged)
SteamAPI_ISteamUserStats_RequestCurrentStats(steam.iuserstats);
ASSERT(steam.iapps);
ASSERT(steam.ifriends);
ASSERT(steam.ihtmlsurface);
ASSERT(steam.imatchmaking);
ASSERT(steam.imatchmakingservers);
ASSERT(steam.inetworking);
// ASSERT(steam.iremoteplay);
ASSERT(steam.iremotestorage);
ASSERT(steam.iscreenshots);
ASSERT(steam.iuser);
ASSERT(steam.iuserstats);
ASSERT(steam.iutils);
strcpy(steam.status, "Ok");
return true;
}
void steam_tick() {
if( steam.iclient ) {
SteamAPI_RunCallbacks();
steam.overlay = SteamAPI_ISteamUtils_IsOverlayEnabled(steam.iutils);
}
}
void steam_trophy(const char *trophy_id, bool redeem) {
if( steam.iclient && steam.logged ) {
if( redeem )
SteamAPI_ISteamUserStats_SetAchievement(steam.iuserstats, trophy_id);
else
SteamAPI_ISteamUserStats_ClearAchievement(steam.iuserstats, trophy_id);
SteamAPI_ISteamUserStats_StoreStats(steam.iuserstats);
}
}
void steam_screenshot() {
if( steam.iclient ) {
SteamAPI_ISteamScreenshots_TriggerScreenshot(steam.iscreenshots);
}
}
void steam_destroy() {
if( steam.iclient ) {
steam.iclient = 0;
SteamAPI_Shutdown();
}
}
int ui_steam() {
ui_disable();
ui_label2("Status", steam.status);
ui_label2("Username", steam.username);
ui_label2("Language", steam.language);
ui_label2("Friends", va("%d", steam.num_friends));
ui_label2("SteamID", va("%llu", steam.steamid));
ui_bool("Overlay?", &steam.overlay);
ui_enable();
return 0;
}
#line 0
#line 1 "v4k_system.c"
#line 1 "v4k_system.c"
#if (is(tcc) && is(linux)) || (is(gcc) && !is(mingw)) // || is(clang)
int __argc; char **__argv;
#if !is(ems)
@ -25977,9 +25780,9 @@ int (test)(const char *file, int line, const char *expr, bool result) {
test_oks += result, test_errors += !result;
return (result || (tty_color(RED), fprintf(stderr, "(Test `%s` failed %s:%d)\n", expr, file, line), tty_color(0), 0) );
}
#line 0
#line 1 "v4k_time.c"
#line 0
#line 1 "v4k_time.c"
// ----------------------------------------------------------------------------
// time
@ -26620,9 +26423,9 @@ void curve_destroy(curve_t *c) {
array_free(c->points);
array_free(c->indices);
}
#line 0
#line 1 "v4k_profile.c"
#line 0
#line 1 "v4k_profile.c"
#if ENABLE_PROFILER
profiler_t profiler;
int profiler_enabled = 1;
@ -26678,9 +26481,9 @@ void (ui_profiler)() {
}
}
#endif
#line 0
#line 1 "v4k_video.c"
#line 0
#line 1 "v4k_video.c"
// tip: convert video to x265/mp4. note: higher crf to increase compression (default crf is 28)
// ffmpeg -i {{infile}} -c:v libx265 -crf 24 -c:a copy {{outfile}}
@ -26910,9 +26713,9 @@ void record_frame() {
}
}
}
#line 0
#line 1 "v4k_window.c"
#line 0
#line 1 "v4k_window.c"
//-----------------------------------------------------------------------------
// capture tests
static
@ -28038,9 +27841,9 @@ double window_scale() { // ok? @testme
#endif
return maxi(xscale, yscale);
}
#line 0
#line 1 "v4k_obj.c"
#line 0
#line 1 "v4k_obj.c"
// -----------------------------------------------------------------------------
// factory of handle ids, based on code by randy gaul (PD/Zlib licensed)
// - rlyeh, public domain
@ -29050,9 +28853,9 @@ void *obj_make(const char *str) {
return ptr; // returns partial construction as well. @todo: just return `ret` for a more strict built/failed policy
}
#line 0
#line 1 "v4k_ai.c"
#line 0
#line 1 "v4k_ai.c"
// AI framework
// - rlyeh, public domain.
//
@ -29888,9 +29691,9 @@ int ui_bt(bt_t *b) {
}
return 0;
}
#line 0
#line 1 "v4k_editor0.c"
#line 0
#line 1 "v4k_editor0.c"
// editing:
// nope > functions: add/rem property
@ -30281,9 +30084,9 @@ int ui_engine() {
return 0;
}
#line 0
#line 1 "v4k_main.c"
#line 0
#line 1 "v4k_main.c"
// ----------------------------------------------------------------------------
static void v4k_pre_init() {
@ -30382,10 +30185,10 @@ void v4k_init() {
atexit(v4k_quit);
}
}
#line 0
// editor is last in place, so it can use all internals from above headers
#line 1 "v4k_editor.c"
#line 0
// editor is last in place, so it can use all internals from above headers
#line 1 "v4k_editor.c"
// ## Editor long-term plan
// - editor = tree of nodes. levels and objects are nodes, and their widgets are also nodes
// - you can perform actions on nodes, with or without descendants, top-bottom or bottom-top
@ -31199,8 +31002,8 @@ void editor_gizmos(int dim) {
ddraw_ontop_pop();
if(dim == 2) ddraw_pop_2d();
}
#line 0
#line 1 "v4k_editor_scene.h"
#line 0
#line 1 "v4k_editor_scene.h"
#define SCENE_ICON ICON_MDI_FILE_TREE
#define SCENE_TITLE "Scene " SCENE_ICON
@ -31381,8 +31184,8 @@ int editor_scene(int window_mode) {
AUTORUN {
array_push(editor.subeditors, editor_scene);
}
#line 0
#line 1 "v4k_editor_browser.h"
#line 0
#line 1 "v4k_editor_browser.h"
#define BROWSER_ICON ICON_MD_FOLDER_SPECIAL
#define BROWSER_TITLE "Browser " BROWSER_ICON
@ -31404,8 +31207,8 @@ int editor_browser(int window_mode) {
AUTORUN {
array_push(editor.subeditors, editor_browser);
}
#line 0
#line 1 "v4k_editor_timeline.h"
#line 0
#line 1 "v4k_editor_timeline.h"
#define TIMELINE_ICON ICON_MDI_CHART_TIMELINE
#define TIMELINE_TITLE "Timeline " TIMELINE_ICON
@ -31578,8 +31381,8 @@ int editor_timeline(int window_mode) {
AUTORUN {
array_push(editor.subeditors, editor_timeline);
}
#line 0
#line 1 "v4k_editor_console.h"
#line 0
#line 1 "v4k_editor_console.h"
#define CONSOLE_ICON ICON_MDI_CONSOLE
#define CONSOLE_TITLE "Console " CONSOLE_ICON
@ -31636,8 +31439,8 @@ int editor_console(int window_mode) {
AUTORUN {
array_push(editor.subeditors, editor_console);
}
#line 0
#line 1 "v4k_editor_nodes.h"
#line 0
#line 1 "v4k_editor_nodes.h"
#define NODES_ICON ICON_MDI_GRAPH
#define NODES_TITLE "Nodes " NODES_ICON
@ -32519,8 +32322,8 @@ int editor_nodes(int window_mode) {
AUTORUN {
array_push(editor.subeditors, editor_nodes);
}
#line 0
#line 1 "v4k_editor_script.h"
#line 0
#line 1 "v4k_editor_script.h"
int ui_texture_fit(texture_t t, struct nk_rect bounds) {
// allocate complete window space
@ -32600,9 +32403,9 @@ int editor_scripted(int window_mode) {
AUTORUN {
array_push(editor.subeditors, editor_scripted);
}
#line 0
#line 1 "v4k_end.c"
#line 0
#line 1 "v4k_end.c"
// Enable more performant GPUs on laptops. Does this work into a dll?
// int NvOptimusEnablement = 1;
// int AmdPowerXpressRequestHighPerformance = 1;
@ -32639,4 +32442,4 @@ ifdef(retail, AUTORUN {
if (!freopen(null_stream, "a", stdout)) PANIC("cannot recreate standard streams");
if (!freopen(null_stream, "a", stderr)) PANIC("cannot recreate standard streams");
} )
#line 0
#line 0

View File

@ -1,101 +1,101 @@
/* game framework.
* - rlyeh, public domain
*
* ## V4K License
*
* This software is available under 3 licenses. Choose whichever you prefer.
* ------------------------------------------------------------------------------
* ALTERNATIVE A - Public Domain (https://unlicense.org/)
* ------------------------------------------------------------------------------
* This is free and unencumbered software released into the public domain.
*
* Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
* software, either in source code form or as a compiled binary, for any purpose,
* commercial or non-commercial, and by any means.
*
* In jurisdictions that recognize copyright laws, the author or authors of this
* software dedicate any and all copyright interest in the software to the public
* domain. We make this dedication for the benefit of the public at large and to
* the detriment of our heirs and successors. We intend this dedication to be an
* overt act of relinquishment in perpetuity of all present and future rights to
* this software under copyright law.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ------------------------------------------------------------------------------
* ALTERNATIVE B - 0-BSD License (https://opensource.org/licenses/FPL-1.0.0)
* ------------------------------------------------------------------------------
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* ------------------------------------------------------------------------------
* ALTERNATIVE C - MIT-0 (No Attribution clause)
* ------------------------------------------------------------------------------
* Permission is hereby granted, free of charge, to any person obtaining a copy of this
* software and associated documentation files (the "Software"), to deal in the Software
* without restriction, including without limitation the rights to use, copy, modify,
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* ## License: Contributed Code ------------------------------------------------
*
* Dear Contributor,
*
* In order to ensure this project remains completely free and unencumbered by
* anyone's copyright monopoly, it is advisable that you dedicate your code-base
* contributions to the three licensing terms above. This removes any possible
* ambiguity as to what terms somebody might have thought they were contributing
* under, in case of a future dispute. These concerns are not unique to public
* domain software. Most large, established open-source projects have a
* Contributor License Agreement (CLA) process, of varying degrees of formality.
*
* Please add yourself to the list below before contributing.
* Thanks.
*
* --
*
* "I dedicate any and all copyright interest in this software to the three
* licensing terms listed above. I make this dedication for the benefit of the
* public at large and to the detriment of my heirs and successors. I intend
* this dedication to be an overt act of relinquishment in perpetuity of all
* present and future rights to this software under copyright law."
*
* Author (name) I agree (YES/NO) Files/Features (optional)
* ------------------------------------------------------------------------------
* @r-lyeh YES Initial codebase
* @zak@v4.games YES N/A
* ------------------------------------------------------------------------------
*/
#ifndef V4K_H
#define V4K_H
#ifdef __cplusplus
extern "C" {
#endif
//-----------------------------------------------------------------------------
// Headers
#line 1 "v4k_config.h"
/* game framework.
* - rlyeh, public domain
*
* ## V4K License
*
* This software is available under 3 licenses. Choose whichever you prefer.
* ------------------------------------------------------------------------------
* ALTERNATIVE A - Public Domain (https://unlicense.org/)
* ------------------------------------------------------------------------------
* This is free and unencumbered software released into the public domain.
*
* Anyone is free to copy, modify, publish, use, compile, sell, or distribute this
* software, either in source code form or as a compiled binary, for any purpose,
* commercial or non-commercial, and by any means.
*
* In jurisdictions that recognize copyright laws, the author or authors of this
* software dedicate any and all copyright interest in the software to the public
* domain. We make this dedication for the benefit of the public at large and to
* the detriment of our heirs and successors. We intend this dedication to be an
* overt act of relinquishment in perpetuity of all present and future rights to
* this software under copyright law.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
* ------------------------------------------------------------------------------
* ALTERNATIVE B - 0-BSD License (https://opensource.org/licenses/FPL-1.0.0)
* ------------------------------------------------------------------------------
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
* OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
* ------------------------------------------------------------------------------
* ALTERNATIVE C - MIT-0 (No Attribution clause)
* ------------------------------------------------------------------------------
* Permission is hereby granted, free of charge, to any person obtaining a copy of this
* software and associated documentation files (the "Software"), to deal in the Software
* without restriction, including without limitation the rights to use, copy, modify,
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* ## License: Contributed Code ------------------------------------------------
*
* Dear Contributor,
*
* In order to ensure this project remains completely free and unencumbered by
* anyone's copyright monopoly, it is advisable that you dedicate your code-base
* contributions to the three licensing terms above. This removes any possible
* ambiguity as to what terms somebody might have thought they were contributing
* under, in case of a future dispute. These concerns are not unique to public
* domain software. Most large, established open-source projects have a
* Contributor License Agreement (CLA) process, of varying degrees of formality.
*
* Please add yourself to the list below before contributing.
* Thanks.
*
* --
*
* "I dedicate any and all copyright interest in this software to the three
* licensing terms listed above. I make this dedication for the benefit of the
* public at large and to the detriment of my heirs and successors. I intend
* this dedication to be an overt act of relinquishment in perpetuity of all
* present and future rights to this software under copyright law."
*
* Author (name) I agree (YES/NO) Files/Features (optional)
* ------------------------------------------------------------------------------
* @r-lyeh YES Initial codebase
* @zak@v4.games YES N/A
* ------------------------------------------------------------------------------
*/
#ifndef V4K_H
#define V4K_H
#ifdef __cplusplus
extern "C" {
#endif
//-----------------------------------------------------------------------------
// Headers
#line 1 "v4k_config.h"
// -----------------------------------------------------------------------------
// config directives
@ -511,9 +511,9 @@ typedef char bool; ///-
#pragma comment(lib, "m")
#pragma comment(lib, "pthread")
#endif
#line 0
#line 1 "v4k_ds.h"
#line 0
#line 1 "v4k_ds.h"
// data structures and utils: array, set, map, hash, sort.
// - rlyeh, public domain
@ -950,9 +950,9 @@ API int (map_count)(map *m);
API void (map_gc)(map *m); // only if using MAP_DONT_ERASE
API bool (map_sort)(map* m);
API void (map_clear)(map* m);
#line 0
#line 1 "v4k_math.h"
#line 0
#line 1 "v4k_math.h"
// -----------------------------------------------------------------------------
// math framework: rand, ease, vec2, vec3, vec4, quat, mat2, mat33, mat34, mat4
// - rlyeh, public domain
@ -1232,9 +1232,9 @@ API void printq( quat q );
API void print33( float *m );
API void print34( float *m );
API void print44( float *m );
#line 0
#line 1 "v4k_obj.h"
#line 0
#line 1 "v4k_obj.h"
// -----------------------------------------------------------------------------
// factory of handle ids
@ -1599,10 +1599,10 @@ typedef enum OBJTYPE_BUILTINS {
OBJTYPE_vec2i = 9,
OBJTYPE_vec3i = 10,
} OBJTYPE_BUILTINS;
#line 0
#line 1 "v4k_ai.h"
#line 0
#line 1 "v4k_ai.h"
// AI framework
// - rlyeh, public domain.
//
@ -1685,9 +1685,9 @@ API void swarm_update_acceleration_only(swarm_t *self); // acc
API void swarm_update_acceleration_and_velocity_only(swarm_t *self, float delta); // acc,vel
API int ui_swarm(swarm_t *self);
#line 0
#line 1 "v4k_audio.h"
#line 0
#line 1 "v4k_audio.h"
// -----------------------------------------------------------------------------
// audio framework
// - rlyeh, public domain
@ -1748,9 +1748,9 @@ enum AUDIO_FLAGS {
};
API int audio_queue( const void *samples, int num_samples, int flags );
#line 0
#line 1 "v4k_collide.h"
#line 0
#line 1 "v4k_collide.h"
// -----------------------------------------------------------------------------
// original code by @vurtun (PD) and @barerose (CC0).
// [src] https://gist.github.com/vurtun/95f088e4889da2474ad1ce82d7911fee
@ -1909,9 +1909,9 @@ API poly pyramid(vec3 from, vec3 to, float size); // poly_free() required
API poly diamond(vec3 from, vec3 to, float size); // poly_free() required
API void collide_demo(); // debug draw collisions
#line 0
#line 1 "v4k_cook.h"
#line 0
#line 1 "v4k_cook.h"
// -----------------------------------------------------------------------------
// asset pipeline framework
// - rlyeh, public domain.
@ -1945,9 +1945,9 @@ API int cook_progress(); // [0..100]
// utils
API bool have_tools();
#line 0
#line 1 "v4k_data.h"
#line 0
#line 1 "v4k_data.h"
// -----------------------------------------------------------------------------
// data framework (json5, xml, compression) @todo:kvdb
// - rlyeh, public domain
@ -1984,9 +1984,9 @@ API array(char) xml_blob(char *key);
API void xml_pop();
API bool data_tests();
#line 0
#line 1 "v4k_extend.h"
#line 0
#line 1 "v4k_extend.h"
// dll ------------------------------------------------------------------------
/// !!! `filename` must contain extension
@ -2021,9 +2021,9 @@ API void script_call(const char *lua_function);
API bool script_tests();
API bool script_pop();
#line 0
#line 1 "v4k_file.h"
#line 0
#line 1 "v4k_file.h"
// -----------------------------------------------------------------------------
// files, cache and virtual filesystem (registered directories and/or compressed zip archives).
// - rlyeh, public domain.
@ -2122,9 +2122,9 @@ 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);
#line 0
#line 1 "v4k_font.h"
#line 0
#line 1 "v4k_font.h"
// -----------------------------------------------------------------------------
// font framework
// - rlyeh, public domain
@ -2227,9 +2227,9 @@ API vec2 font_highlight(const char *text, const void *colors);
// ui
API void ui_font();
#line 0
#line 1 "v4k_input.h"
#line 0
#line 1 "v4k_input.h"
// -----------------------------------------------------------------------------
// input framework
// - rlyeh, public domain
@ -2354,9 +2354,9 @@ enum INPUT_ALIASES {
KEY_ALT = KEY_LALT,
KEY_CTRL = KEY_LCTRL,
};
#line 0
#line 1 "v4k_memory.h"
#line 0
#line 1 "v4k_memory.h"
// -----------------------------------------------------------------------------
// memory framework
// - rlyeh, public domain
@ -2394,9 +2394,9 @@ API void* forget( void *ptr );
static FORCE_INLINE void *(REALLOC_)(void *p, size_t n) { return n ? WATCH(xrealloc(p,n),n) : xrealloc(FORGET(p),0); } ///-
static FORCE_INLINE void *(CALLOC_)(size_t m, size_t n) { return n *= m, memset(REALLOC(0,n),0,n); } ///-
static FORCE_INLINE char *(STRDUP_)(const char *s) { size_t n = strlen(s)+1; return ((char*)memcpy(REALLOC(0,n), s, n)); } ///-
#line 0
#line 1 "v4k_network.h"
#line 0
#line 1 "v4k_network.h"
// -----------------------------------------------------------------------------
// network framework
// - rlyeh, public domain
@ -2446,9 +2446,9 @@ API int tcp_close(int);
API int tcp_debug(int); // toggle traffic monitoring on/off for given socket
//API int tcp_printf(int, const char *fmt, ...); // printf message in remote end
//API int tcp_crypt(int,uint64_t); // set shared secret
#line 0
#line 1 "v4k_track.h"
#line 0
#line 1 "v4k_track.h"
#ifndef TRACK_SEND_BUFSIZE
#define TRACK_SEND_BUFSIZE 576
#endif
@ -2507,9 +2507,9 @@ typedef struct track_prop {
/// user_id: Identifier for the user.
/// props: Array of key-value pairs. Terminates when key is set to NULL.
API int track_event_props(char const *event_id, char const *user_id, const track_prop *props);
#line 0
#line 1 "v4k_netsync.h"
#line 0
#line 1 "v4k_netsync.h"
// high-level, socket-less networking api. inspired by Quake, MPI and RenderBuckets theories.
// - rlyeh, public domain
//
@ -2593,9 +2593,9 @@ API int64_t client_join(const char *ip, int port);
#define LOCALHOST_IPV4 "127.0.0.1"
#define LOCALHOST_IPV6 "::1"
#line 0
#line 1 "v4k_pack.h"
#line 0
#line 1 "v4k_pack.h"
// ----------------------------------------------------------------------------
// compression api
@ -2985,9 +2985,9 @@ 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, ...);
#line 0
#line 1 "v4k_profile.h"
#line 0
#line 1 "v4k_profile.h"
// -----------------------------------------------------------------------------
// profiler & stats (@fixme: threadsafe)
@ -3017,9 +3017,9 @@ typedef map(char *, struct profile_t) profiler_t; ///-
extern API profiler_t profiler; ///-
extern API int profiler_enabled; ///-
#endif
#line 0
#line 1 "v4k_reflect.h"
#line 0
#line 1 "v4k_reflect.h"
// C reflection: enums, functions, structs, members and anotations.
// - rlyeh, public domain
//
@ -3084,9 +3084,9 @@ API void function_inscribe(const char *F,void *func,const char *in
API const char* symbol_naked(const char *s);
API int ui_reflect(const char *mask); // *, model* or NULL
#line 0
#line 1 "v4k_render.h"
#line 0
#line 1 "v4k_render.h"
// -----------------------------------------------------------------------------
// naive rendering framework
// - rlyeh, public domain
@ -3858,9 +3858,9 @@ API int ui_fxs();
API void* screenshot(int components); // 3 RGB, 4 RGBA, -3 BGR, -4 BGRA
API void* screenshot_async(int components); // 3 RGB, 4 RGBA, -3 BGR, -4 BGRA
#line 0
#line 1 "v4k_renderdd.h"
#line 0
#line 1 "v4k_renderdd.h"
// -----------------------------------------------------------------------------
// debugdraw framework
// - rlyeh, public domain.
@ -3932,9 +3932,9 @@ 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();
#line 0
#line 1 "v4k_scene.h"
#line 0
#line 1 "v4k_scene.h"
// -----------------------------------------------------------------------------
// scene framework
// - rlyeh, public domain
@ -4078,9 +4078,9 @@ 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);
#line 0
#line 1 "v4k_string.h"
#line 0
#line 1 "v4k_string.h"
// string framework
// - rlyeh, public domain
@ -4192,9 +4192,9 @@ API char* kit_translate2( const char *id, const char *langcode_iso639_1 ); // pe
API void kit_locale( const char *langcode_iso639_1 ); // set current locale: enUS, ptBR, esES, ...
API char* kit_translate( const char *id ); // perform a translation, given current locale
#line 0
#line 1 "v4k_sprite.h"
#line 0
#line 1 "v4k_sprite.h"
// -----------------------------------------------------------------------------
// sprites
@ -4356,8 +4356,8 @@ 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);
#line 0
#line 1 "v4k_gui.h"
#line 0
#line 1 "v4k_gui.h"
// ----------------------------------------------------------------------------
// game ui
@ -4423,22 +4423,9 @@ typedef struct skinned_t {
// - "_press"
//
API guiskin_t gui_skinned(const char *asefile, float scale);
#line 0
#line 1 "v4k_steam.h"
// ----------------------------------------------------------------------------
// steam framework
#line 0
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();
#line 0
#line 1 "v4k_system.h"
#line 1 "v4k_system.h"
// -----------------------------------------------------------------------------
// system framework utils
// - rlyeh, public domain.
@ -4524,9 +4511,9 @@ API int (test)(const char *file, int line, const char *expr, bool result);
#undef test
#define test(expr) 0
#endif
#line 0
#line 1 "v4k_time.h"
#line 0
#line 1 "v4k_time.h"
// -----------------------------------------------------------------------------
// time framework utils
@ -4685,9 +4672,9 @@ 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);
#line 0
#line 1 "v4k_ui.h"
#line 0
#line 1 "v4k_ui.h"
// -----------------------------------------------------------------------------
// immediate ui framework
// - rlyeh, public domain
@ -4779,9 +4766,9 @@ API int ui_active(); // ui_is_active()?
API int ui_demo(int do_windows);
API void *ui_handle();
#line 0
#line 1 "v4k_video.h"
#line 0
#line 1 "v4k_video.h"
// -----------------------------------------------------------------------------
// video decoder (mpeg)
// - rlyeh, public domain
@ -4822,9 +4809,9 @@ API void video_destroy( video_t *v );
API bool record_start(const char *outfile_mp4);
API bool record_active();
API void record_stop(void);
#line 0
#line 1 "v4k_window.h"
#line 0
#line 1 "v4k_window.h"
// -----------------------------------------------------------------------------
// window framework
// - rlyeh, public domain
@ -4927,11 +4914,11 @@ API void window_cursor_shape(unsigned shape);
API const char *window_clipboard();
API void window_setclipboard(const char *text);
#line 0
// ----
#line 1 "v4k_editor.h"
#line 0
// ----
#line 1 "v4k_editor.h"
// -----------------------------------------------------------------------------
// in-game editor
// - rlyeh, public domain.
@ -5046,31 +5033,31 @@ API char** engine_gets(const char *key);
API int engine_send(const char *cmd, const char *optional_value);
API int ui_engine();
#line 0
// ----
#if is(cpp)
} // extern "C"
#endif
// expose glfw/glad apis
#if is(ems)
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <emscripten.h>
#include <emscripten/html5.h>
#define gladLoadGL(func) (glewExperimental = true, glewInit() == GLEW_OK) ///-
#else
#if is(win32) /*&& is(tcc)*/ // && ENABLE_DLL
#ifdef GLAD_API_CALL
#undef GLAD_API_CALL
#endif
#define GLAD_API_CALL extern API ///-
#endif
#ifndef GLAD_GL_H_
#include "v4k"
#endif
#endif
#endif // V4K_H
#line 0
// ----
#if is(cpp)
} // extern "C"
#endif
// expose glfw/glad apis
#if is(ems)
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <emscripten.h>
#include <emscripten/html5.h>
#define gladLoadGL(func) (glewExperimental = true, glewInit() == GLEW_OK) ///-
#else
#if is(win32) /*&& is(tcc)*/ // && ENABLE_DLL
#ifdef GLAD_API_CALL
#undef GLAD_API_CALL
#endif
#define GLAD_API_CALL extern API ///-
#endif
#ifndef GLAD_GL_H_
#include "v4k"
#endif
#endif
#endif // V4K_H