commit 74715034a20b9bcec737ddf52a7d1e0c538f0960
Author: Samdal <samdal@protonmail.com>
Date: Wed, 7 May 2025 17:40:27 +0200
squashed from gs_project_example
Diffstat:
26 files changed, 2106 insertions(+), 0 deletions(-)
diff --git a/.gitattributes b/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/.github/workflows/build_linux.yml b/.github/workflows/build_linux.yml
@@ -0,0 +1,23 @@
+# This is a basic workflow to help you get started with Actions
+
+name: CI
+
+# Controls when the workflow will run
+on:
+ # Triggers the workflow on push or pull request events but only for the main branch
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # Build for ubuntu latest
+ build_ubuntu:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@main
+ - name: build
+ run: bash ./proc/linux/gcc.sh
diff --git a/.gitignore b/.gitignore
@@ -0,0 +1,7 @@
+
+bin/vc140.pdb
+bin/App.exe
+bin/App.ilk
+bin/App.pdb
+bin/main.obj
+bin/App
diff --git a/.gitmodules b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "third_party/include/gs"]
+ path = third_party/include/gs
+ url = https://github.com/MrFrenik/gunslinger
diff --git a/LICENSE b/LICENSE
@@ -0,0 +1,29 @@
+BSD 3-Clause License
+
+Copyright (c) 2021, John Jackson
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/README.md b/README.md
@@ -0,0 +1,93 @@
+# Gunslinger Project Template
+
+This is a minimum and premade configuration that you need in order to get started with gunslinger. It provides all the necessary dependencies and the bash/batch scripts for compiling it on Windows, Mac and Linux.
+
+You can also check the main **Gunslinger** repository here, where you'll find documentation on how to get started:
+[Gunlinger repository](https://github.com/MrFrenik/gunslinger)
+
+And you can also find a complete list of examples for you to learn from and test on your machine here:
+[Gunslinger examples](https://github.com/MrFrenik/gs_examples)
+
+## Cloning instructions:
+- Use the following command to clone the repo and init the gunslinger submodule
+```bash
+git clone --recursive https://github.com/MrFrenik/gs_project_template
+```
+
+## Updating GS instructions (updates gunslinger submodule and rebases to main branch):
+```bash
+git submodule update --remote --rebase --recursive
+```
+
+## Build Instructions:
+
+### Windows
+## MSVC:
+- From start menu, open `{x86|x64} Native Tools for {VS Version Here}`
+- cd to `root dir` where you downloaded project template
+- To compile the project, run:
+```bash
+proc\win\cl.bat
+```
+- To execute the program, run:
+```bash
+bin\App.exe
+```
+### MINGW:
+- From `root dir`, open `git bash`
+- To compile, run:
+```bash
+bash ./proc/win/mingw.sh
+```
+- To execute the program, run:
+```bash
+./bin/App.exe
+```
+
+### Linux
+
+## Before Compiling:
+- Make sure the following development libraries are installed:
+```bash
+sudo apt install git gcc mesa-common-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev
+```
+- For Mesa and OpenGL, need to export the following:
+```bash
+export MESA_GL_VERSION_OVERRIDE=3.3
+```
+- Credit to https://github.com/Samdal
+
+## GCC:
+- Open terminal
+- cd to `root dir` where you downloaded project template
+- To compile the project, run:
+```bash
+bash ./proc/linux/gcc.sh
+```
+- To execute the program, run:
+```bash
+./bin/App
+```
+
+### OSX
+## GCC:
+- Open terminal
+- cd to `root dir` where you downloaded project template
+- To compile the project, run:
+```bash
+bash ./proc/osx/gcc.sh
+```
+- To execute the program, run:
+```bash
+./bin/App
+```
+
+### HTML5
+## Emscripten:
+- Open terminal
+- cd to `root dir` where you downloaded project template
+- To compile the project, run:
+```bash
+bash ./proc/osx/emcc.sh
+```
+- This will generate the appropriate .html, .js, and .wsm files to load in a browser.
diff --git a/proc/html5/emcc.sh b/proc/html5/emcc.sh
@@ -0,0 +1,33 @@
+#!bin/sh
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -w -s WASM=1 -s USE_WEBGL2=1 -s ASYNCIFY=1 -O1
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/ # Gunslinger includes
+)
+
+# Source files
+src=(
+ ../source/*.c
+)
+
+libs=(
+)
+
+# Build
+emcc ${inc[*]} ${src[*]} ${flags[*]} -o $proj_name.html
+
+cd ..
+
+
+
diff --git a/proc/linux/gcc.sh b/proc/linux/gcc.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w -ldl -lGL -lX11 -pthread -lXi
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+# Build
+gcc -O3 ${inc[*]} ${src[*]} ${flags[*]} -lm -o ${proj_name}
+
+cd ..
diff --git a/proc/linux/gcc_dbg.sh b/proc/linux/gcc_dbg.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w -ldl -lGL -lX11 -pthread -lXi
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+# Build
+echo gcc -O0 ${inc[*]} ${src[*]} ${flags[*]} -lm -o ${proj_name}
+gcc -O3 ${inc[*]} ${src[*]} ${flags[*]} -lm -o ${proj_name}
+
+cd ..
diff --git a/proc/linux/gcc_rdbg.sh b/proc/linux/gcc_rdbg.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w -ldl -lGL -lX11 -pthread -lXi
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+# Build
+echo gcc -O1 ${inc[*]} ${src[*]} ${flags[*]} -lm -o ${proj_name}
+gcc -O3 ${inc[*]} ${src[*]} ${flags[*]} -lm -o ${proj_name}
+
+cd ..
diff --git a/proc/linux/gcc_rel.sh b/proc/linux/gcc_rel.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w -ldl -lGL -lX11 -pthread -lXi
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+# Build
+echo gcc -O3 ${inc[*]} ${src[*]} ${flags[*]} -lm -o ${proj_name}
+gcc -O3 ${inc[*]} ${src[*]} ${flags[*]} -lm -o ${proj_name}
+
+cd ..
diff --git a/proc/osx/gcc.sh b/proc/osx/gcc.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=c99 -x objective-c -O0 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+fworks=(
+ -framework OpenGL
+ -framework CoreFoundation
+ -framework CoreVideo
+ -framework IOKit
+ -framework Cocoa
+ -framework Carbon
+)
+
+# Build
+gcc ${flags[*]} ${fworks[*]} ${inc[*]} ${src[*]} -o ${proj_name}
+
+cd ..
+
+
+
diff --git a/proc/osx/gcc_dbg.sh b/proc/osx/gcc_dbg.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=c99 -x objective-c -O0 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+fworks=(
+ -framework OpenGL
+ -framework CoreFoundation
+ -framework CoreVideo
+ -framework IOKit
+ -framework Cocoa
+ -framework Carbon
+)
+
+# Build
+echo gcc ${flags[*]} ${fworks[*]} ${inc[*]} ${src[*]} -o ${proj_name}
+gcc ${flags[*]} ${fworks[*]} ${inc[*]} ${src[*]} -o ${proj_name}
+
+cd ..
+
+
+
diff --git a/proc/osx/gcc_rdbg.sh b/proc/osx/gcc_rdbg.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=c99 -x objective-c -O1 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+fworks=(
+ -framework OpenGL
+ -framework CoreFoundation
+ -framework CoreVideo
+ -framework IOKit
+ -framework Cocoa
+ -framework Carbon
+)
+
+# Build
+echo gcc ${flags[*]} ${fworks[*]} ${inc[*]} ${src[*]} -o ${proj_name}
+gcc ${flags[*]} ${fworks[*]} ${inc[*]} ${src[*]} -o ${proj_name}
+
+cd ..
+
+
+
diff --git a/proc/osx/gcc_rel.sh b/proc/osx/gcc_rel.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=c99 -x objective-c -O3 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+fworks=(
+ -framework OpenGL
+ -framework CoreFoundation
+ -framework CoreVideo
+ -framework IOKit
+ -framework Cocoa
+ -framework Carbon
+)
+
+# Build
+echo gcc ${flags[*]} ${fworks[*]} ${inc[*]} ${src[*]} -o ${proj_name}
+gcc ${flags[*]} ${fworks[*]} ${inc[*]} ${src[*]} -o ${proj_name}
+
+cd ..
+
+
+
diff --git a/proc/scons/SConstruct b/proc/scons/SConstruct
@@ -0,0 +1,155 @@
+#!/usr/bin/env python
+import os
+import sys
+
+# Try to detect the host platform automatically.
+# This is used if no `platform` argument is passed
+if sys.platform.startswith("linux"):
+ host_platform = "linux"
+elif sys.platform == "darwin":
+ host_platform = "osx"
+elif sys.platform == "win32" or sys.platform == "msys":
+ host_platform = "windows"
+else:
+ raise ValueError(
+ "Could not detect platform automatically, please specify with "
+ "platform=<platform>"
+ )
+
+env = Environment(ENV=os.environ)
+
+is64 = sys.maxsize > 2 ** 32
+if (env["TARGET_ARCH"] == "amd64"
+ or env["TARGET_ARCH"] == "emt64"
+ or env["TARGET_ARCH"] == "x86_64"
+ or env["TARGET_ARCH"] == "arm64-v8a"):
+ is64 = True
+
+opts = Variables([], ARGUMENTS)
+
+opts.Add(
+ EnumVariable(
+ "platform",
+ "Target platform",
+ host_platform,
+ allowed_values=("linux", "osx", "windows"),
+ ignorecase=2,
+ )
+)
+
+opts.Add(
+ EnumVariable(
+ "target",
+ "Compilation target",
+ "release",
+ allowed_values=("debug", "release"),
+ ignorecase=2,
+ )
+)
+opts.Add(
+ PathVariable("target_path", "The path where the app will be installed", "../../bin/")
+)
+
+opts.Add(
+ PathVariable("source_path", "The path where the source files lay", "../../source/")
+)
+
+opts.Add(
+ PathVariable("include_path", "Where your includes are", "../../third_party/include")
+)
+
+opts.Add(
+ PathVariable("target_name", "The name of the app", "App", PathVariable.PathAccept)
+)
+
+opts.Add(
+ EnumVariable("bits", "Target platform bits", "64" if is64 else "32", ("32", "64"))
+)
+
+opts.Add(
+ EnumVariable(
+ "OpenGL",
+ "If using OpenGL as backend",
+ "false",
+ allowed_values=("false", "true"),
+ ignorecase=2,
+ )
+)
+
+# Create bin folder if it does not exist, it will throw an error
+# if any of the paths above is not an actual path. Since the project
+# template does not actually have the bin folder, it won't work if you use
+# the default unless you create it manually.
+#
+# feel free to remove this if you don't want the bin folder
+os.system("mkdir -p ../../bin/")
+
+# update options
+opts.Update(env)
+
+
+if host_platform == "windows":
+ env.Append(ENV=os.environ)
+ if env["bits"] == "64":
+ env = Environment(TARGET_ARCH="amd64")
+ elif env["bits"] == "32":
+ env = Environment(TARGET_ARCH="x86")
+ opts.Update(env)
+
+env.Append(CPPPATH=env['include_path'])
+
+if env["platform"] == "linux":
+ if env["target"] == "debug":
+ env.Append(CCFLAGS=["-fPIC", "-g3", "-Og", "-std=gnu99"])
+ else:
+ env.Append(CCFLAGS=["-fPIC", "-O3", "-std=gnu99"])
+ env.Append(LINKFLAGS=["-s"])
+
+ env.Append(LINKFLAGS=["-ldl", "-lX11", "-lXi", "-lm", "-pthread"])
+ if env["OpenGL"] == "true":
+ env.Append(CCFLAGS=["-lGL"])
+
+elif env["platform"] == "osx":
+ if env["target"] == "debug":
+ env.Append(CCFLAGS=["-g", "-O2", "-arch", "x86_64", "-std=gnu99", "-objective-c"])
+ else:
+ env.Append(CCFLAGS=["-g", "-O3", "-arch", "x86_64", "-std=gnu99", "-objective-c"])
+
+ env.Append(LINKFLAGS=["-arch", "x86_64", "-framework", "CoreFoundation", "-framework",
+ "CoreVide", "-framework", "IOKit", "-framework", "Cocoa", "-framework", "Carbon"])
+ if env["OpenGL"] == "true":
+ env.Append(CCFLAGS=["-framework", "OpenGL"])
+
+elif env["platform"] == "windows":
+ env.Append(CPPDEFINES=["WIN32", "_WIN32", "_WINDOWS", "_CRT_SECURE_NO_WARNINGS"])
+ if env["target"] == "debug":
+ env.Append(CPPDEFINES=["_DEBUG"])
+ env.Append(CCFLAGS=["-MD", "-std=gnu99"])
+ env.Append(LINKFLAGS=["-DEBUG"])
+ else:
+ env.Append(CPPDEFINES=["NDEBUG"])
+ env.Append(CCFLAGS=["-O2", "-MD", "-std=gnu99"])
+
+ if env["bits"] == "32" and host_platform == "windows":
+ env.Append(LINKFLAGS=["kernel32.lib", "user32.lib", "shell32.lib", "vcruntime.lib", "msvcrt.lib", "gdi32.lib", "Advapi32.lib", "winmm.lib"])
+ if env["OpenGL"] == "true":
+ env.Append(LINKFLAGS=["opengl32.lib"])
+ else:
+ env.Append(LINKFLAGS=["-mwindows", "-lkernel32", "-luser32", "-lshell32", "-lgdi32", "-lAdvapi32", "-lwinmm"])
+ if env["OpenGL"] == "true":
+ env.Append(LINKFLAGS=["-lopengl32"])
+
+
+# Source Files
+sources = Glob(f"{env['source_path']}/*.c")
+sources += Glob(f"{env['source_path']}/*/*.c")
+sources += Glob(f"{env['source_path']}/*.cpp")
+sources += Glob(f"{env['source_path']}/*/*.cpp")
+
+app = env.Program(
+ target=f"{env['target_path']}{env['platform']}/{env['target_name']}", source=sources
+)
+Default(app)
+
+# Generates help for the -h scons option.
+Help(opts.GenerateHelpText(env))
diff --git a/proc/sublime_text/gs_project.sublime-project b/proc/sublime_text/gs_project.sublime-project
@@ -0,0 +1,63 @@
+{
+ "folders":
+ [
+ {
+ "path": "./../../../gs_project_template"
+ }
+ ],
+ "build_systems":
+ [
+ {
+ "name": "GS: Build Debug (GCC/MINGW)",
+ "osx": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/osx/gcc_dbg.sh"],
+ "shell": true
+ },
+ "linux": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/linux/gcc_dbg.sh"],
+ "shell": true
+ },
+ "windows": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/win/mingw_dbg.sh"],
+ "shell": true
+ }
+ },
+ {
+ "name": "GS: Build Release (GCC/MINGW)",
+ "osx": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/osx/gcc_rel.sh"],
+ "shell": true
+ },
+ "linux": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/linux/gcc_rel.sh"],
+ "shell": true
+ },
+ "windows": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/win/mingw_rel.sh"],
+ "shell": true
+ }
+ },
+ {
+ "name": "GS: Build Rel-Debug (GCC/MINGW)",
+ "osx": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/osx/gcc_rdbg.sh"],
+ "shell": true
+ },
+ "linux": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/linux/gcc_rdbg.sh"],
+ "shell": true
+ },
+ "windows": {
+ "cmd": ["echo Building... && cd $folder && bash ./proc/win/mingw_rdbg.sh"],
+ "shell": true
+ }
+ },
+ {
+ "name": "GS: Run",
+ "osx": {
+ "cmd": ["cd $folder && ./bin/App"],
+ "shell": true
+ }
+ }
+ ]
+}
diff --git a/proc/sublime_text/gs_project.sublime-workspace b/proc/sublime_text/gs_project.sublime-workspace
@@ -0,0 +1,1112 @@
+{
+ "auto_complete":
+ {
+ "selected_items":
+ [
+ [
+ "gs_physics_stackal",
+ "gs_physics_stack_allocator_t"
+ ],
+ [
+ "gs_Gfxtpipe",
+ "gs_gfxt_pipeline_t"
+ ],
+ [
+ "gs_gfxtrawpip",
+ "gs_gfxt_raw_pipeline_func_desc_t"
+ ],
+ [
+ "MOVEMEN",
+ "ANALOG_HAND_MOVEMENT_QUARTZ"
+ ],
+ [
+ "MOVMENT",
+ "ANALOG_HAND_MOVEMENT_QUARTZ"
+ ],
+ [
+ "GSGRPAH",
+ "GS_GRAPHICS_PRIMITIVE_TRIANGLES"
+ ],
+ [
+ "GS_GRAPHICS_SHAD",
+ "GS_GRAPHICS_SHADER_STAGE_FRAGMENT"
+ ],
+ [
+ "GS_SHAD",
+ "GS_SHADERPROGRAM_GEOMETRY"
+ ],
+ [
+ "GS_SHADER",
+ "GS_SHADERPROGRAM_FRAGMENT"
+ ],
+ [
+ "gsrsou",
+ "gs_resource_cache_get_ptr"
+ ],
+ [
+ "gs_resour",
+ "gs_declare_resource_type"
+ ],
+ [
+ "gs_face_cul",
+ "gs_face_culling_disabled"
+ ],
+ [
+ "gs_window",
+ "gs_winding_order_ccw"
+ ],
+ [
+ "openglimediated",
+ "__get_opengl_immediate_data"
+ ],
+ [
+ "vertex_",
+ "vertex_3fv"
+ ],
+ [
+ "gs_slothand",
+ "gs_slot_array_invalid_handle"
+ ],
+ [
+ "glfwframebuffersi",
+ "glfw_frame_buffer_size"
+ ],
+ [
+ "ENJONDI",
+ "ENJON_DIR"
+ ],
+ [
+ "Roboto-Medium",
+ "Roboto-MediumItalic_14"
+ ],
+ [
+ "format",
+ "texture_format"
+ ],
+ [
+ "gs_asset_sub",
+ "gs_asset_subsystem_get_raw"
+ ],
+ [
+ "render_te",
+ "gui_render_test"
+ ],
+ [
+ "gs_component_data_ind",
+ "gs_component_data_index_pool_gs_rotation_component_system"
+ ],
+ [
+ "gs_component_data_poollist",
+ "gs_component_data_pool_list"
+ ],
+ [
+ "gs_component_datapoli",
+ "gs_component_data_pool_list"
+ ],
+ [
+ "gs_componentdatast",
+ "gs_component_data_storage"
+ ],
+ [
+ "gscomp",
+ "gs_component"
+ ],
+ [
+ "gscomponentd",
+ "gs_component_data_storage"
+ ],
+ [
+ "gscomponentdat",
+ "gs_component_data_storage_ptr"
+ ],
+ [
+ "gs_componetndat",
+ "gs_component_data_storage_ptr"
+ ],
+ [
+ "deseri",
+ "deserialized_texture"
+ ],
+ [
+ "transform_c",
+ "transform_component_system_ctor"
+ ],
+ [
+ "mat4_tra",
+ "__mat4_translate_impl"
+ ],
+ [
+ "lexer_require",
+ "lexer_require_token_type"
+ ],
+ [
+ "object_seri",
+ "object_serialize_pod_type"
+ ],
+ [
+ "data_ch",
+ "data_chunk"
+ ],
+ [
+ "data_c",
+ "data_chunk"
+ ],
+ [
+ "if",
+ "ifmain\tif __name__ == '__main__'"
+ ],
+ [
+ "GetPRoxy",
+ "GetProxyData"
+ ],
+ [
+ "HealthCompoe",
+ "HealthComponentProxy"
+ ],
+ [
+ "Healthcompr",
+ "HealthComponentProxy"
+ ],
+ [
+ "Healthc",
+ "HealthComponentProxy"
+ ],
+ [
+ "mRegenra",
+ "mRegenRate"
+ ],
+ [
+ "Haelthcom",
+ "HealthComponentProxy"
+ ],
+ [
+ "mregenra",
+ "mRegenRate_InstanceData"
+ ],
+ [
+ "mregenrate",
+ "mRegenRate"
+ ],
+ [
+ "mRegenr",
+ "mRegenRate"
+ ],
+ [
+ "attribute",
+ "attributes"
+ ],
+ [
+ "mPosion",
+ "mPosition_InstanceData"
+ ],
+ [
+ "mHelath",
+ "mHealth_InstanceData"
+ ],
+ [
+ "HealthCompon",
+ "HealthComponent_InstanceData"
+ ],
+ [
+ "mEntityInst",
+ "mEntityID_InstanceData"
+ ],
+ [
+ "Healthcom",
+ "HealthComponent"
+ ],
+ [
+ "Healthcompo",
+ "HealthComponent_InstanceData"
+ ],
+ [
+ "uno",
+ "unordered_map\tstandard header (since c++11)"
+ ],
+ [
+ "tfi",
+ "tfidfVectors"
+ ],
+ [
+ "tf",
+ "tfidfVectors"
+ ],
+ [
+ "orin",
+ "originalDocs"
+ ],
+ [
+ "WFCLAS",
+ "WF_CLASS_NAME_WatchFace"
+ ]
+ ]
+ },
+ "buffers":
+ [
+ ],
+ "build_system": "",
+ "build_system_choices":
+ [
+ [
+ [
+ [
+ "Packages/C++ & C Single File Builder - Minghang Yang/C Builder-Minghang Yang.sublime-build",
+ ""
+ ],
+ [
+ "Packages/C++ & C Single File Builder - Minghang Yang/C Builder-Minghang Yang.sublime-build",
+ "Run"
+ ],
+ [
+ "Packages/C++ & C Single File Builder - Minghang Yang/C Builder-Minghang Yang.sublime-build",
+ "Build and Run"
+ ]
+ ],
+ [
+ "Packages/C++ & C Single File Builder - Minghang Yang/C Builder-Minghang Yang.sublime-build",
+ "Build and Run"
+ ]
+ ],
+ [
+ [
+ [
+ "Packages/C++/C++ Single File.sublime-build",
+ ""
+ ],
+ [
+ "Packages/C++/C++ Single File.sublime-build",
+ "Run"
+ ]
+ ],
+ [
+ "Packages/C++/C++ Single File.sublime-build",
+ ""
+ ]
+ ],
+ [
+ [
+ [
+ "Packages/C++11/C++11.sublime-build",
+ ""
+ ],
+ [
+ "Packages/C++11/C++11.sublime-build",
+ "Run"
+ ]
+ ],
+ [
+ "Packages/C++11/C++11.sublime-build",
+ ""
+ ]
+ ]
+ ],
+ "build_varint": "",
+ "command_palette":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ [
+ "pack",
+ "Package Control: List Packages"
+ ],
+ [
+ "package",
+ "Package Control: Install Package"
+ ],
+ [
+ "package con",
+ "Package Control: Install Package"
+ ]
+ ],
+ "width": 0.0
+ },
+ "console":
+ {
+ "height": 136.0,
+ "history":
+ [
+ ]
+ },
+ "distraction_free":
+ {
+ "menu_visible": true,
+ "show_minimap": false,
+ "show_open_files": false,
+ "show_tabs": false,
+ "side_bar_visible": false,
+ "status_bar_visible": false
+ },
+ "expanded_folders":
+ [
+ "/Users/127885/Documents/gs_projects/gs_project_template"
+ ],
+ "file_history":
+ [
+ "/Users/127885/Documents/gs_projects/physics_api_test/third_party/include/gs/util/gs_idraw.h",
+ "/Users/127885/Documents/gs_projects/physics_api_test/third_party/include/gs/util/gs_physics.h",
+ "/Users/127885/Documents/Work/WatchFaces/fossil-engine/UDroid/app/src/main/cpp/core/fs_complication.h",
+ "/Users/127885/Documents/Work/WatchFaces/fossil-engine/UDroid/app/src/main/cpp/gs_wear_os_platform.h",
+ "/Users/127885/Documents/Work/WatchFaces/fossil-engine/UDroid/app/src/main/cpp/fs_watchface.c",
+ "/Users/127885/Documents/Work/WatchFaces/fossil-engine/UDroid/app/src/main/cpp/fs_entity.c",
+ "/Users/127885/Documents/Work/WatchFaces/fossil-engine/UDroid/app/src/main/cpp/fs_complication.h",
+ "/Users/127885/Documents/Work/WatchFaces/fossil-engine/UDroid/app/src/main/cpp/fs_complication.c",
+ "/Users/127885/Documents/Work/WatchFaces/fossil-engine/UDroid/app/src/main/cpp/fs_entity.h",
+ "/Users/127885/Downloads/gs_project_template-main/third_party/include/tinyobj/tinyobj.h",
+ "/Users/127885/Downloads/gs_project_template-main/assets/ribbon.gltf",
+ "/Users/127885/Downloads/gs_project_template-main/assets/ribbon.glb",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/util/gs_gfxt.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/util/gs_idraw.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/24_test/source/main.c",
+ "/Users/127885/Documents/gs_projects/EP01_SandSim/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/24_udroid/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/24_udroid/external/nanovgXC/src/nanovg.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/24_udroid/external/nanovgXC/src/nanovg.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/24_udroid/external/nanovgXC/src/nanovg_sw.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/impl/gs_platform_impl.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/external/cgltf/cgltf.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/24_udroid/external/nanovgXC/src/fontstash.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/24_udroid/proc/osx/gcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/gs.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/impl/gs_graphics_impl.h",
+ "/Users/127885/Documents/gs_projects/test_example/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/14_immediate_draw/source/main.c",
+ "/Users/127885/Documents/gs_projects/analog_hand_example/proc/osx/gcc.sh",
+ "/Users/127885/Documents/gs_projects/analog_hand_example/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/analog_hand_example/third_party/include/gs/gs.h",
+ "/Users/127885/Documents/gs_projects/analog_hand_example/test.bin",
+ "/Users/127885/Documents/gs_projects/gs_examples/23_marching_cubes/source/tinycthread/source/tinycthread.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/13_imgui/src/gs_imgui.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/10_non_interleave_instancing/proc/osx/gcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/01_gs_cpp/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/16_nuklear_gui/source/gs_nuklear.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/23_marching_cubes/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/23_marching_cubes/source/data.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/10_non_interleave_instancing/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/21_stencil_test/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/20_uniforms_advanced/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/18_flecs/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/16_nuklear_gui/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/15_meta_class/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/14_immediate_draw/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/10_non_interleave_instancing/proc/html5/emcc.sh",
+ "/Users/127885/Documents/Development/opengl-canvas-wasm/main.cpp",
+ "/Users/127885/Documents/gs_projects/gs_examples/22_emscripten/proc/emsc/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/22_emscripten/source/platform_impl_emsc.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/22_emscripten/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/19_uniform_buffers/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/00_hello_gs/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/02_simple_triangle/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/03_uniforms/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/04_simple_texture/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/05_containers/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/06_non_interleaved_data/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/07_instancing/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/09_frame_buffer/proc/html5/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/22_emscripten/source/platform_emsc_impl.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/22_emscripten/proc/osx/emcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/21_stencil_test/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/04_simple_texture/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_raycast/third_party/include/gs/util/gs_idraw.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/06_non_interleaved_data/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/03_uniforms/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/02_simple_triangle/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/13_imgui/src/impl.cpp",
+ "/Users/127885/Documents/gs_projects/gs_examples/12_asset_manager/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/19_uniform_blocks/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/18_flecs/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/18_flecs/proc/osx/gcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/09_frame_buffer/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/18_flecs/external/flecs/flecs.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/18_flecs/proc/linux/gcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/07_instancing/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/15_meta_class/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/11_compute_shader/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/00_hello_gs/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/simple_texture/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/uniforms/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/asset_manager/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/simple_triangle/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/imgui/src/gs_imgui.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/imgui/external/imgui/imgui.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/containers/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/frame_buffer/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/nuklear_gui/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/imgui/src/main.cpp",
+ "/Users/127885/Documents/gs_projects/gs_examples/hello_gs/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/external/glfw/win32_joystick.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/hello_gs/proc/osx/gcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/immediate_draw/source/main.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/gs_cpp/src/main.cpp",
+ "/Users/127885/Documents/gs_projects/gs_examples/nuklear_gui/source/gs_nuklear.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/imgui/proc/osx/gpp.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/gs_cpp/proc/osx/gpp.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/external/glfw/cocoa_init.m",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/external/glfw/cocoa_joystick.m",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/external/glfw/cocoa_monitor.m",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/external/glfw/cocoa_window.m",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/external/glfw/nsgl_context.m",
+ "/Users/127885/Documents/gs_projects/gs_examples/gs_cpp/output.txt",
+ "/Users/127885/Documents/gs_projects/gs_examples/nuklear_gui/external/Nuklear/src/nuklear.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/nuklear_gui/external/Nuklear/nuklear.h",
+ "/Users/127885/Documents/gs_projects/gs_examples/nuklear_gui/source/impl.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/nuklear_gui/external/Nuklear/src/nuklear_edit.c",
+ "/Users/127885/Documents/gs_projects/gs_examples/nuklear_gui/proc/osx/gcc.sh",
+ "/Users/127885/Documents/gs_projects/gs_examples/third_party/include/gs/util/gs_meta.h",
+ "/Users/127885/Documents/gs_projects/rewind/assets/anims/idle/idle_meta.json",
+ "/Users/127885/Documents/gs_projects/rewind/third_party/gs/gs.h",
+ "/Users/127885/Documents/gs_projects/rewind/third_party/gs/util/gs_asset.h",
+ "/Users/127885/Documents/gs_projects/rewind/proc/linux/gcc.sh",
+ "/Users/127885/Documents/gs_projects/rewind/proc/osx/gcc.sh",
+ "/Users/127885/Documents/Random/gunslinger/third_party/include/stb/stb_vorbis.c",
+ "/Users/127885/Documents/Random/gunslinger/source/graphics/gs_graphics.c",
+ "/Users/127885/Documents/Random/gunslinger/source/graphics/opengl/gs_graphics_opengl.c",
+ "/Users/127885/Documents/Random/gunslinger/include/gs.h",
+ "/Users/127885/Documents/Random/gunslinger/include/graphics/gs_graphics.h",
+ "/Users/127885/Documents/Random/gunslinger/include/platform/gs_platform.h",
+ "/Users/127885/Documents/Random/gunslinger/examples/hello_gs/proc/osx/compile_osx_gcc.sh",
+ "/Users/127885/Documents/Random/gunslinger/source/base/gs_engine.c",
+ "/Users/127885/Documents/Random/gunslinger/source/audio/gs_audio.c",
+ "/Users/127885/Documents/Random/gunslinger/source/audio/miniaudio/gs_miniaudio.c",
+ "/Users/127885/Documents/Random/gunslinger/include/common/gs_types.h",
+ "/Users/127885/Documents/Random/gunslinger/examples/pong/source/main.c",
+ "/Users/127885/Documents/Random/gunslinger/include/serialize/gs_byte_buffer.h"
+ ],
+ "find":
+ {
+ "height": 54.0
+ },
+ "find_in_files":
+ {
+ "height": 239.0,
+ "where_history":
+ [
+ ]
+ },
+ "find_state":
+ {
+ "case_sensitive": false,
+ "find_history":
+ [
+ ],
+ "highlight": true,
+ "in_selection": false,
+ "preserve_case": false,
+ "regex": false,
+ "replace_history":
+ [
+ ],
+ "reverse": false,
+ "show_context": true,
+ "use_buffer2": true,
+ "whole_word": false,
+ "wrap": true
+ },
+ "groups":
+ [
+ {
+ "sheets":
+ [
+ ]
+ }
+ ],
+ "incremental_find":
+ {
+ "height": 24.0
+ },
+ "input":
+ {
+ "height": 66.0
+ },
+ "layout":
+ {
+ "cells":
+ [
+ [
+ 0,
+ 0,
+ 1,
+ 1
+ ]
+ ],
+ "cols":
+ [
+ 0.0,
+ 1.0
+ ],
+ "rows":
+ [
+ 0.0,
+ 1.0
+ ]
+ },
+ "menu_visible": true,
+ "output.exec":
+ {
+ "height": 49.0
+ },
+ "output.find_results":
+ {
+ "height": 0.0
+ },
+ "pinned_build_system": "Packages/User/c_build_mac.sublime-build",
+ "project": "gs_project.sublime-project",
+ "replace":
+ {
+ "height": 44.0
+ },
+ "save_all_on_build": true,
+ "select_file":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ [
+ "gs.h",
+ "third_party/include/gs/gs.h"
+ ],
+ [
+ "physics.h",
+ "third_party/include/gs/util/gs_physics.h"
+ ],
+ [
+ "main.c",
+ "source/main.c"
+ ],
+ [
+ "phy",
+ "third_party/include/gs/util/gs_physics.h"
+ ],
+ [
+ "smmian.c",
+ "source/sm_main.c"
+ ],
+ [
+ "enity.h",
+ "source/sm_entity.h"
+ ],
+ [
+ "smcomponenth",
+ "source/sm_component.h"
+ ],
+ [
+ "gsidraw.h",
+ "app/src/main/cpp/third_party/gs/util/gs_idraw.h"
+ ],
+ [
+ "gsplatformimpl",
+ "app/src/main/cpp/third_party/gs/impl/gs_platform_impl.h"
+ ],
+ [
+ "platformipml",
+ "app/src/main/cpp/third_party/gs/impl/gs_platform_impl.h"
+ ],
+ [
+ "platformimpl",
+ "app/src/main/cpp/third_party/gs/impl/gs_platform_impl.h"
+ ],
+ [
+ "gs_gfxt",
+ "util/gs_gfxt.h"
+ ],
+ [
+ "gltf",
+ "gs_project_template-main/third_party/include/gs/external/cgltf/cgltf.h"
+ ],
+ [
+ "tinyobj",
+ "third_party/include/tinyobj/tinyobj.h"
+ ],
+ [
+ "gf",
+ "third_party/include/gs/util/gs_gfxt.h"
+ ],
+ [
+ "cgltf",
+ "third_party/include/gs/external/cgltf/cgltf.h"
+ ],
+ [
+ "platformipl",
+ "third_party/include/gs/impl/gs_platform_impl.h"
+ ],
+ [
+ "nanovg",
+ "24_udroid/external/nanovgXC/src/nanovg.c"
+ ],
+ [
+ "nanovg.c",
+ "24_udroid/external/nanovgXC/src/nanovg.c"
+ ],
+ [
+ "gsi",
+ "third_party/include/gs/util/gs_idraw.h"
+ ],
+ [
+ "nvg.h",
+ "24_udroid/external/nanovgXC/src/nanovg.h"
+ ],
+ [
+ "nanovg.h",
+ "24_udroid/external/nanovgXC/src/nanovg.h"
+ ],
+ [
+ "nanovgsw",
+ "24_udroid/external/nanovgXC/src/nanovg_sw.h"
+ ],
+ [
+ "nvgsw",
+ "24_udroid/external/nanovgXC/src/nanovg_sw.h"
+ ],
+ [
+ "nvg",
+ "24_udroid/external/nanovgXC/src/nanovg.h"
+ ],
+ [
+ "idraw.h",
+ "third_party/include/gs/util/gs_idraw.h"
+ ],
+ [
+ "graphicsimpl",
+ "third_party/include/gs/impl/gs_graphics_impl.h"
+ ],
+ [
+ "platformim",
+ "third_party/include/gs/impl/gs_platform_impl.h"
+ ],
+ [
+ "gsidraw",
+ "third_party/include/gs/util/gs_idraw.h"
+ ],
+ [
+ "audioimpl",
+ "third_party/include/gs/impl/gs_audio_impl.h"
+ ],
+ [
+ "gs",
+ "third_party/include/gs/util/gs_idraw.h"
+ ],
+ [
+ "graphicsi",
+ "third_party/include/gs/impl/gs_graphics_impl.h"
+ ],
+ [
+ "gsidarw",
+ "third_party/include/gs/util/gs_idraw.h"
+ ],
+ [
+ "asset.h",
+ "third_party/include/gs/util/gs_asset.h"
+ ],
+ [
+ "gas",
+ "third_party/include/gs/util/gs_asset.h"
+ ],
+ [
+ "gsasset.h",
+ "third_party/include/gs/util/gs_asset.h"
+ ],
+ [
+ "tiny",
+ "23_marching_cubes/source/tinycthread/source/tinycthread.h"
+ ],
+ [
+ "graphicsimp",
+ "third_party/include/gs/impl/gs_graphics_impl.h"
+ ],
+ [
+ "simpletexture.c",
+ "04_simple_texture/source/main.c"
+ ],
+ [
+ "flecsmain.c",
+ "18_flecs/source/main.c"
+ ],
+ [
+ "unif.c",
+ "03_uniforms/source/main.c"
+ ],
+ [
+ "gsnuk",
+ "16_nuklear_gui/source/gs_nuklear.h"
+ ],
+ [
+ "gsigui.h",
+ "13_imgui/src/gs_imgui.h"
+ ],
+ [
+ "graphics.h",
+ "third_party/include/gs/impl/gs_graphics_impl.h"
+ ],
+ [
+ "uniform.c",
+ "03_uniforms/source/main.c"
+ ],
+ [
+ "idraw",
+ "third_party/include/gs/util/gs_idraw.h"
+ ],
+ [
+ "grpahicsimp",
+ "third_party/include/gs/impl/gs_graphics_impl.h"
+ ],
+ [
+ "impl",
+ "13_imgui/src/impl.cpp"
+ ],
+ [
+ "assetmanager.c",
+ "12_asset_manager/source/main.c"
+ ],
+ [
+ "felcsmain.c",
+ "18_flecs/source/main.c"
+ ],
+ [
+ "felcs.c",
+ "18_flecs/external/flecs/flecs.c"
+ ],
+ [
+ "flecsg",
+ "18_flecs/proc/osx/gcc.sh"
+ ],
+ [
+ "flecsgcc",
+ "18_flecs/proc/linux/gcc.sh"
+ ],
+ [
+ "09framebufer.c",
+ "09_frame_buffer/source/main.c"
+ ],
+ [
+ "uniforms.c",
+ "03_uniforms/source/main.c"
+ ],
+ [
+ "compute.c",
+ "11_compute_shader/source/main.c"
+ ],
+ [
+ "metamain.c",
+ "15_meta_class/source/main.c"
+ ],
+ [
+ "gsgrpahicsimp",
+ "third_party/include/gs/impl/gs_graphics_impl.h"
+ ],
+ [
+ "flecs.c",
+ "18_flecs/external/flecs/flecs.c"
+ ],
+ [
+ "triangle.c",
+ "simple_triangle/source/main.c"
+ ],
+ [
+ "assetmanger.c",
+ "asset_manager/source/main.c"
+ ],
+ [
+ "framebuffer.c",
+ "frame_buffer/source/main.c"
+ ],
+ [
+ "gs.",
+ "third_party/include/gs/gs.h"
+ ],
+ [
+ "conatiners.c",
+ "containers/source/main.c"
+ ],
+ [
+ "imgui.h",
+ "imgui/external/imgui/imgui.h"
+ ],
+ [
+ "gsimgui.h",
+ "imgui/src/gs_imgui.h"
+ ],
+ [
+ "imgui.cp",
+ "imgui/src/main.cpp"
+ ],
+ [
+ "win32jo",
+ "third_party/include/gs/external/glfw/win32_joystick.c"
+ ],
+ [
+ "immediatedraw.c",
+ "immediate_draw/source/main.c"
+ ],
+ [
+ "nsglcon.m",
+ "third_party/include/gs/external/glfw/nsgl_context.m"
+ ],
+ [
+ "cocawin",
+ "third_party/include/gs/external/glfw/cocoa_window.m"
+ ],
+ [
+ "mo",
+ "third_party/include/gs/external/glfw/cocoa_monitor.m"
+ ],
+ [
+ "cocoa_jo.m",
+ "third_party/include/gs/external/glfw/cocoa_joystick.m"
+ ],
+ [
+ "out",
+ "gs_cpp/output.txt"
+ ],
+ [
+ "cocai",
+ "third_party/include/gs/external/glfw/cocoa_init.m"
+ ],
+ [
+ "nuklear.h",
+ "nuklear_gui/external/Nuklear/nuklear.h"
+ ],
+ [
+ "src/nuklear.h",
+ "nuklear_gui/external/Nuklear/src/nuklear.h"
+ ],
+ [
+ "src/nuke",
+ "nuklear_gui/external/Nuklear/src/nuklear_edit.c"
+ ],
+ [
+ "gsnu",
+ "nuklear_gui/source/gs_nuklear.h"
+ ],
+ [
+ "nuk",
+ "nuklear_gui/external/Nuklear/nuklear.h"
+ ],
+ [
+ "gs_nu",
+ "nuklear_gui/source/gs_nuklear.h"
+ ],
+ [
+ "mai.c",
+ "containers/source/main.c"
+ ],
+ [
+ "gsmeta.h",
+ "third_party/include/gs/util/gs_meta.h"
+ ],
+ [
+ "meta.h",
+ "third_party/include/gs/util/gs_meta.h"
+ ],
+ [
+ "meta",
+ "third_party/include/gs/util/gs_meta.h"
+ ],
+ [
+ "gsa",
+ "third_party/gs/util/gs_asset.h"
+ ],
+ [
+ "gcc",
+ "proc/osx/gcc.sh"
+ ],
+ [
+ "gladimpl",
+ "external/glad/glad_impl.h"
+ ],
+ [
+ "procosx",
+ "proc/osx/compile_osx_gcc.sh"
+ ],
+ [
+ "graphics.c",
+ "source/graphics/gs_graphics.c"
+ ],
+ [
+ "grpahics.h",
+ "include/graphics/gs_graphics.h"
+ ],
+ [
+ "opengl",
+ "source/graphics/opengl/gs_graphics_opengl.c"
+ ],
+ [
+ "opengl.c",
+ "source/graphics/opengl/gs_graphics_opengl.c"
+ ],
+ [
+ "immediate.c",
+ "examples/simple_immediate_rend/source/main.c"
+ ],
+ [
+ "simpletriangle.c",
+ "examples/simple_triangle/source/main.c"
+ ],
+ [
+ "simpletri.c",
+ "examples/simple_triangle/source/main.c"
+ ],
+ [
+ "simpletr",
+ "examples/simple_triangle/source/main.c"
+ ],
+ [
+ "engine.c",
+ "source/base/gs_engine.c"
+ ],
+ [
+ "types.h",
+ "include/common/gs_types.h"
+ ],
+ [
+ "ut",
+ "include/common/gs_util.h"
+ ],
+ [
+ "audio.c",
+ "source/audio/gs_audio.c"
+ ],
+ [
+ "miniaudio.c",
+ "source/audio/miniaudio/gs_miniaudio.c"
+ ],
+ [
+ "vorbis.c",
+ "third_party/include/stb/stb_vorbis.c"
+ ],
+ [
+ "vor",
+ "third_party/include/stb/stb_vorbis.c"
+ ],
+ [
+ "containers.h",
+ "include/common/gs_containers.h"
+ ],
+ [
+ "platform.c",
+ "source/platform/gs_platform.c"
+ ],
+ [
+ "glfw.c",
+ "source/platform/glfw/gs_platform_glfw.c"
+ ],
+ [
+ "hellgs.c",
+ "examples/hello_gs/source/main.c"
+ ],
+ [
+ "engine.h",
+ "include/base/gs_engine.h"
+ ],
+ [
+ "math.h",
+ "include/math/gs_math.h"
+ ],
+ [
+ "bytebuffer.h",
+ "include/serialize/gs_byte_buffer.h"
+ ],
+ [
+ "simpelconta.c",
+ "examples/simple_containers/source/main.c"
+ ],
+ [
+ "containers",
+ "include/common/gs_containers.h"
+ ],
+ [
+ "platform.h",
+ "include/platform/gs_platform.h"
+ ],
+ [
+ "bytebuffer.c",
+ "source/serialize/gs_byte_buffer.c"
+ ],
+ [
+ "util.h",
+ "include/common/gs_util.h"
+ ],
+ [
+ "pong.c",
+ "examples/pong/source/main.c"
+ ],
+ [
+ "material.c",
+ "source/graphics/gs_material.c"
+ ],
+ [
+ "opeg",
+ "source/graphics/opengl/gs_graphics_opengl.c"
+ ],
+ [
+ "simpleim.c",
+ "examples/simple_immediate_rend/source/main.c"
+ ],
+ [
+ "miniaudi.c",
+ "source/audio/miniaudio/gs_miniaudio.c"
+ ],
+ [
+ "minaudio.c",
+ "source/audio/miniaudio/gs_miniaudio.c"
+ ],
+ [
+ "maaudio.c",
+ "source/audio/miniaudio/gs_miniaudio.c"
+ ],
+ [
+ "audio.h",
+ "include/audio/gs_audio.h"
+ ],
+ [
+ "simpleconat.c",
+ "examples/simple_containers/source/main.c"
+ ],
+ [
+ "customquadbatch.c",
+ "examples/custom_quad_batch/source/main.c"
+ ],
+ [
+ "quadbatch.c",
+ "source/graphics/gs_quad_batch.c"
+ ],
+ [
+ "quadbatch.h",
+ "include/graphics/gs_quad_batch.h"
+ ]
+ ],
+ "width": 0.0
+ },
+ "select_project":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 0.0
+ },
+ "select_symbol":
+ {
+ "height": 354.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 635.0
+ },
+ "selected_group": 0,
+ "settings":
+ {
+ },
+ "show_minimap": false,
+ "show_open_files": false,
+ "show_tabs": true,
+ "side_bar_visible": true,
+ "side_bar_width": 163.0,
+ "status_bar_visible": true,
+ "template_settings":
+ {
+ }
+}
diff --git a/proc/win/cl.bat b/proc/win/cl.bat
@@ -0,0 +1,35 @@
+@echo off
+rmdir /Q /S bin
+mkdir bin
+pushd bin
+
+rem Name
+set name=App
+
+rem Include directories
+set inc=/I ..\third_party\include\
+
+rem Source files
+set src_main=..\source\*.c
+
+rem All source together
+set src_all=%src_main%
+
+rem OS Libraries
+set os_libs= opengl32.lib kernel32.lib user32.lib ^
+shell32.lib vcruntime.lib msvcrt.lib gdi32.lib Winmm.lib Advapi32.lib
+
+rem Link options
+set l_options=/EHsc /link /SUBSYSTEM:CONSOLE /NODEFAULTLIB:msvcrt.lib
+
+rem Compile Release
+rem cl /MP /FS /Ox /W0 /Fe%name%.exe %src_all% %inc% ^
+rem /EHsc /link /SUBSYSTEM:CONSOLE /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:LIBCMT ^
+rem %os_libs%
+
+rem Compile Debug
+cl /w /MP -Zi /DEBUG:FULL /Fe%name%.exe %src_all% %inc% ^
+/EHsc /link /SUBSYSTEM:CONSOLE /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:LIBCMT ^
+%os_libs%
+
+popd
diff --git a/proc/win/mingw.sh b/proc/win/mingw.sh
@@ -0,0 +1,40 @@
+#!bin/sh
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/ # Gunslinger includes
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+libs=(
+ -lopengl32
+ -lkernel32
+ -luser32
+ -lshell32
+ -lgdi32
+ -lWinmm
+ -lAdvapi32
+)
+
+# Build
+gcc -O0 ${inc[*]} ${src[*]} ${flags[*]} ${libs[*]} -lm -o ${proj_name}
+
+cd ..
+
+
+
diff --git a/proc/win/mingw_cross_platform.sh b/proc/win/mingw_cross_platform.sh
@@ -0,0 +1,39 @@
+#!bin/bash
+
+# Make sure you have mingw-w64 installed for this to work.
+# It should be available in most linux package managers and with brew(MacOS).
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/ # Gunslinger includes
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+libs=(
+ -lopengl32
+ -lkernel32
+ -luser32
+ -lshell32
+ -lgdi32
+ -lwinmm
+)
+
+# Build
+x86_64-w64-mingw32-gcc -O0 ${inc[*]} ${src[*]} ${flags[*]} ${libs[*]} -lm -o ${proj_name}
+
+cd ..
diff --git a/proc/win/mingw_dbg.sh b/proc/win/mingw_dbg.sh
@@ -0,0 +1,41 @@
+#!bin/sh
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/ # Gunslinger includes
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+libs=(
+ -lopengl32
+ -lkernel32
+ -luser32
+ -lshell32
+ -lgdi32
+ -lWinmm
+ -lAdvapi32
+)
+
+# Build
+echo gcc -O0 ${inc[*]} ${src[*]} ${flags[*]} ${libs[*]} -lm -o ${proj_name}
+gcc -O0 ${inc[*]} ${src[*]} ${flags[*]} ${libs[*]} -lm -o ${proj_name}
+
+cd ..
+
+
+
diff --git a/proc/win/mingw_rdbg.sh b/proc/win/mingw_rdbg.sh
@@ -0,0 +1,41 @@
+#!bin/sh
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/ # Gunslinger includes
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+libs=(
+ -lopengl32
+ -lkernel32
+ -luser32
+ -lshell32
+ -lgdi32
+ -lWinmm
+ -lAdvapi32
+)
+
+# Build
+echo gcc -O1 ${inc[*]} ${src[*]} ${flags[*]} ${libs[*]} -lm -o ${proj_name}
+gcc -O1 ${inc[*]} ${src[*]} ${flags[*]} ${libs[*]} -lm -o ${proj_name}
+
+cd ..
+
+
+
diff --git a/proc/win/mingw_rel.sh b/proc/win/mingw_rel.sh
@@ -0,0 +1,41 @@
+#!bin/sh
+
+rm -rf bin
+mkdir bin
+cd bin
+
+proj_name=App
+proj_root_dir=$(pwd)/../
+
+flags=(
+ -std=gnu99 -w
+)
+
+# Include directories
+inc=(
+ -I ../third_party/include/ # Gunslinger includes
+)
+
+# Source files
+src=(
+ ../source/main.c
+)
+
+libs=(
+ -lopengl32
+ -lkernel32
+ -luser32
+ -lshell32
+ -lgdi32
+ -lWinmm
+ -lAdvapi32
+)
+
+# Build
+echo gcc -O3 ${inc[*]} ${src[*]} ${flags[*]} ${libs[*]} -lm -o ${proj_name}
+gcc -O3 ${inc[*]} ${src[*]} ${flags[*]} ${libs[*]} -lm -o ${proj_name}
+
+cd ..
+
+
+
diff --git a/source/main.c b/source/main.c
@@ -0,0 +1,78 @@
+#define GS_IMPL
+#include <gs/gs.h>
+
+#define GS_IMMEDIATE_DRAW_IMPL
+#include <gs/util/gs_idraw.h>
+
+#define GS_GUI_IMPL
+#include <gs/util/gs_gui.h>
+
+typedef struct app_t
+{
+ gs_command_buffer_t cb;
+ gs_immediate_draw_t gsi;
+ gs_gui_context_t gui;
+} app_t;
+
+void app_init()
+{
+ app_t* app = gs_user_data(app_t);
+ app->cb = gs_command_buffer_new();
+ app->gsi = gs_immediate_draw_new(gs_platform_main_window());
+ gs_gui_init(&app->gui, gs_platform_main_window());
+}
+
+void app_update()
+{
+ app_t* app = gs_user_data(app_t);
+ gs_command_buffer_t* cb = &app->cb;
+ gs_immediate_draw_t* gsi = &app->gsi;
+ gs_gui_context_t* gui = &app->gui;
+
+ gs_vec2 fbs = gs_platform_framebuffer_sizev(gs_platform_main_window());
+ const float t = gs_platform_elapsed_time() * 0.0001f;
+
+ if (gs_platform_key_pressed(GS_KEYCODE_ESC)) {
+ gs_quit();
+ }
+
+ gsi_camera3D(gsi, fbs.x, fbs.y);
+ gsi_rotatev(gsi, gs_deg2rad(90.f), GS_ZAXIS); gsi_rotatev(gsi, t, GS_YAXIS);
+ gsi_sphere(gsi, 0.f, 0.f, 0.f, 1.f, 50, 150, 200, 50, GS_GRAPHICS_PRIMITIVE_LINES);
+ gsi_camera2D(gsi, fbs.x, fbs.y);
+ gsi_text(gsi, fbs.x * 0.5f - 70.f, fbs.y * 0.5f, "Hello, Gunslinger.", NULL, false, 255, 255, 255, 255);
+ gsi_renderpass_submit(gsi, cb, fbs.x, fbs.y, gs_color(10, 10, 10, 255));
+
+ // Render gui
+ gs_gui_begin(gui, NULL);
+ if (gs_gui_window_begin(gui, "App", gs_gui_rect(100, 100, 200, 200))) {
+ gs_gui_layout_row(gui, 1, (int[]){-1}, 0);
+ gs_gui_text(gui, "Hello, Gunslinger.");
+ gs_gui_window_end(gui);
+ }
+ gs_gui_end(gui);
+ gs_gui_render(gui, cb);
+
+ // Submit command buffer for GPU
+ gs_graphics_command_buffer_submit(cb);
+}
+
+void app_shutdown()
+{
+ app_t* app = gs_user_data(app_t);
+ gs_immediate_draw_free(&app->gsi);
+ gs_command_buffer_free(&app->cb);
+ gs_gui_free(&app->gui);
+}
+
+gs_app_desc_t gs_main(int32_t argc, char** argv)
+{
+ return (gs_app_desc_t) {
+ .user_data = gs_malloc_init(app_t),
+ .window_width = 800,
+ .window_height = 600,
+ .init = app_init,
+ .update = app_update,
+ .shutdown = app_shutdown
+ };
+}
diff --git a/third_party/include/gs b/third_party/include/gs
@@ -0,0 +1 @@
+Subproject commit 4d533f52c5e5e307d17827a0ebd9db997e9d60fe