diff options
| -rw-r--r-- | CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/CMakeLists.txt | 73 | ||||
| -rw-r--r-- | src/api/daw.h | 39 | ||||
| -rw-r--r-- | src/btree.c (renamed from src/utils/src/btree.c) | 2 | ||||
| -rw-r--r-- | src/core/CMakeLists.txt | 18 | ||||
| -rw-r--r-- | src/core/include/engine/core/platform.h | 44 | ||||
| -rw-r--r-- | src/ctrl/CMakeLists.txt | 7 | ||||
| -rw-r--r-- | src/daw.c (renamed from src/core/src/loop.c) | 22 | ||||
| -rw-r--r-- | src/dltools.c (renamed from src/core/src/dltools.c) | 4 | ||||
| -rw-r--r-- | src/fov.c (renamed from src/utils/src/fov.c) | 4 | ||||
| -rw-r--r-- | src/gl.c (renamed from src/rendering/src/gl.c) | 10 | ||||
| -rw-r--r-- | src/hashmap.c (renamed from src/utils/src/hashmap.c) | 2 | ||||
| -rw-r--r-- | src/include/daw/daw.h (renamed from src/core/include/engine/engine.h) | 40 | ||||
| -rw-r--r-- | src/include/daw/dltools.h (renamed from src/core/include/engine/core/dltools.h) | 0 | ||||
| -rw-r--r-- | src/include/daw/input.h (renamed from src/ctrl/include/engine/ctrl/input.h) | 4 | ||||
| -rw-r--r-- | src/include/daw/keycodes.h (renamed from src/ctrl/include/engine/ctrl/keycodes.h) | 4 | ||||
| -rw-r--r-- | src/include/daw/logging.h (renamed from src/core/include/engine/core/logging.h) | 2 | ||||
| -rw-r--r-- | src/include/daw/memory.h (renamed from src/core/include/engine/core/memory.h) | 2 | ||||
| -rw-r--r-- | src/include/daw/model.h (renamed from src/resources/include/engine/resources/model.h) | 4 | ||||
| -rw-r--r-- | src/include/daw/platform.h (renamed from src/rendering/include/engine/rendering/platform.h) | 5 | ||||
| -rw-r--r-- | src/include/daw/platform_glfw.h (renamed from src/rendering/include/engine/rendering/platform_glfw.h) | 6 | ||||
| -rw-r--r-- | src/include/daw/rendering.h (renamed from src/rendering/include/engine/rendering/rendering.h) | 44 | ||||
| -rw-r--r-- | src/include/daw/resources.h (renamed from src/resources/include/engine/resources.h) | 8 | ||||
| -rw-r--r-- | src/include/daw/scancodes.h (renamed from src/ctrl/include/engine/ctrl/scancodes.h) | 0 | ||||
| -rw-r--r-- | src/include/daw/state.h (renamed from src/core/include/engine/core/state.h) | 4 | ||||
| -rw-r--r-- | src/include/daw/texture.h (renamed from src/resources/include/engine/resources/texture.h) | 6 | ||||
| -rw-r--r-- | src/include/daw/types.h (renamed from src/core/include/engine/core/types.h) | 0 | ||||
| -rw-r--r-- | src/include/daw/utils.h (renamed from src/utils/include/engine/utils.h) | 2 | ||||
| -rw-r--r-- | src/include/daw/utils/btree.h (renamed from src/utils/include/engine/utils/btree.h) | 0 | ||||
| -rw-r--r-- | src/include/daw/utils/fov.h (renamed from src/utils/include/engine/utils/fov.h) | 2 | ||||
| -rw-r--r-- | src/include/daw/utils/hashmap.h (renamed from src/utils/include/engine/utils/hashmap.h) | 6 | ||||
| -rw-r--r-- | src/include/daw/utils/list.h (renamed from src/utils/include/engine/utils/list.h) | 0 | ||||
| -rw-r--r-- | src/include/daw/utils/stack.h (renamed from src/utils/include/engine/utils/stack.h) | 2 | ||||
| -rw-r--r-- | src/include/daw/window.h (renamed from src/rendering/include/engine/rendering/window.h) | 8 | ||||
| -rw-r--r-- | src/input.c (renamed from src/ctrl/src/input.c) | 9 | ||||
| -rw-r--r-- | src/logging.c (renamed from src/core/src/logging.c) | 4 | ||||
| -rw-r--r-- | src/memory.c (renamed from src/core/src/memory.c) | 4 | ||||
| -rw-r--r-- | src/misc.c (renamed from src/utils/src/misc.c) | 4 | ||||
| -rw-r--r-- | src/model.c (renamed from src/resources/src/model.c) | 8 | ||||
| -rw-r--r-- | src/platform_glfw.c (renamed from src/rendering/src/platform_glfw.c) | 4 | ||||
| -rw-r--r-- | src/rendering.c (renamed from src/rendering/src/rendering.c) | 6 | ||||
| -rw-r--r-- | src/rendering/CMakeLists.txt | 33 | ||||
| -rw-r--r-- | src/resources.c (renamed from src/resources/src/resources.c) | 9 | ||||
| -rw-r--r-- | src/resources/CMakeLists.txt | 19 | ||||
| -rw-r--r-- | src/stack.c (renamed from src/utils/src/stack.c) | 4 | ||||
| -rw-r--r-- | src/state.c (renamed from src/core/src/state.c) | 8 | ||||
| -rw-r--r-- | src/textures.c (renamed from src/resources/src/textures.c) | 4 | ||||
| -rw-r--r-- | src/utils/CMakeLists.txt | 11 | ||||
| -rw-r--r-- | src/window.c (renamed from src/rendering/src/window.c) | 15 | ||||
| -rw-r--r-- | tools/cmake/DawAddState.cmake | 8 |
50 files changed, 244 insertions, 282 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 96d25e0..183a5a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -162,7 +162,7 @@ add_subdirectory(src) # Configuration files configure_file(${CMAKE_CURRENT_LIST_DIR}/tools/cmake/configure.h.in - ${CMAKE_BINARY_DIR}/include/engine/configure.h) + ${CMAKE_BINARY_DIR}/include/daw/configure.h) configure_file(${CMAKE_CURRENT_LIST_DIR}/tools/cmake/list_of_states.h.in ${CMAKE_BINARY_DIR}/include/states/list_of_states.h) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8b9cc1d..2e915f8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,25 +1,71 @@ # Set global include dirs set(DAW_INCLUDE_DIRS - ${CMAKE_CURRENT_LIST_DIR}/core/include - ${CMAKE_CURRENT_LIST_DIR}/ctrl/include + ${CMAKE_CURRENT_LIST_DIR}/include ${CMAKE_CURRENT_LIST_DIR}/rendering/include - ${CMAKE_CURRENT_LIST_DIR}/resources/include - ${CMAKE_CURRENT_LIST_DIR}/utils/include ${CMAKE_BINARY_DIR}/include ) -# Add the engine modules -add_subdirectory(core) -add_subdirectory(ctrl) -add_subdirectory(rendering) -add_subdirectory(resources) -add_subdirectory(utils) +add_custom_command( + OUTPUT ${GLAD_HEADER} + COMMAND + glad + --api gl:core=4.6 + --out-path ${CMAKE_BINARY_DIR} + --reproducible + c + --header-only + --mx + ) + # DAW Engine compilation spec add_library(${PROJECT_NAME} + # User facing API + api/daw.h + + # Types and (internal) interfaces + include/daw/platform.h + include/daw/types.h + + # Utility algorithms & datastructures + include/daw/utils.h + include/daw/utils/list.h + btree.c include/daw/utils/btree.h + fov.c include/daw/utils/fov.h + hashmap.c include/daw/utils/hashmap.h + misc.c + stack.c include/daw/utils/stack.h + + # Core functionality + daw.c include/daw/daw.h + dltools.c include/daw/dltools.h + logging.c include/daw/logging.h + memory.c include/daw/memory.h + state.c include/daw/state.h + + # Peripheral IO + input.c include/daw/input.h + include/daw/keycodes.h + include/daw/scancodes.h + + # The rendering & presentation mess + gl.c + platform_glfw.c include/daw/platform_glfw.h + rendering.c include/daw/rendering.h + textures.c include/daw/texture.h + window.c include/daw/window.h + + # Resource handling + model.c include/daw/model.h + resources.c include/daw/resources.h + + # Autogenerated header ${GLAD_HEADER} ) +set_property(SOURCE src/window.c APPEND PROPERTY OBJECT_DEPENDS ${GLAD_HEADER}) +set_property(SOURCE src/rendering.c APPEND PROPERTY OBJECT_DEPENDS ${GLAD_HEADER}) + set_target_properties(${PROJECT_NAME} PROPERTIES LINKER_LANGUAGE C C_STANDARD 99 @@ -27,19 +73,14 @@ set_target_properties(${PROJECT_NAME} PROPERTIES target_include_directories(${PROJECT_NAME} PUBLIC include - # TODO include stb (??) ${CMAKE_BINARY_DIR}/include ) target_link_libraries(${PROJECT_NAME} glfw OpenGL::GL + assimp cglm - daw_core - daw_rendering - daw_ctrl - daw_resources - daw_utils $<$<NOT:$<PLATFORM_ID:Windows>>:m> $<$<BOOL:${DAW_BUILD_HOTRELOAD}>:dl> $<$<AND:$<NOT:$<C_COMPILER_ID:MSVC>>,$<BOOL:${DAW_BUILD_UBSAN}>>:ubsan> diff --git a/src/api/daw.h b/src/api/daw.h new file mode 100644 index 0000000..25ec177 --- /dev/null +++ b/src/api/daw.h @@ -0,0 +1,39 @@ +#ifndef API_DAW_H +#define API_DAW_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <daw/types.h> +#include <daw/window.h> +#include <daw/platform.h> + + +/* Essential functions */ +Instance* engine_init(const char* windowtitle, i32 windowWidth, i32 windowHeight, + const u32 flags, + const usize initial_memory); + +i32 engine_run(Instance* p, StateType initial_state, void* state_arg); + +void engine_stop(Instance* p); + +/* Utility functions */ +void engine_fps_max(Instance* p, u16 cap); + +void render_set_zoom(f32 new_zoom); +void render_adjust_zoom(f32 diff); +void render_add_unit(RenderUnit* u); + +/* move this */ +void delay(uint64_t ms); + +// file operations +usize f_get_sz(FILE* f); + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/src/utils/src/btree.c b/src/btree.c index 9411072..e4cd0a6 100644 --- a/src/utils/src/btree.c +++ b/src/btree.c @@ -1,4 +1,4 @@ -#include <engine/utils/btree.h> +#include <daw/utils/btree.h> #include <stdbool.h> #include <stdio.h> diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt deleted file mode 100644 index a979cad..0000000 --- a/src/core/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -add_library(daw_core - src/dltools.c - src/logging.c - src/loop.c - src/memory.c - src/state.c - ${GLAD_HEADER} - ) - -#set_property(SOURCE src/loop.c APPEND PROPERTY OBJECT_DEPENDS ${GLAD_HEADER}) - -target_compile_options(daw_core PUBLIC ${BUILD_OPTS}) -target_include_directories(daw_core PRIVATE ${DAW_INCLUDE_DIRS}) -target_link_libraries(daw_core PRIVATE cglm) - -target_compile_definitions(daw_core PUBLIC - $<$<BOOL:${DAW_BUILD_HOTRELOAD}>:DAW_BUILD_HOTRELOAD> -) diff --git a/src/core/include/engine/core/platform.h b/src/core/include/engine/core/platform.h deleted file mode 100644 index de39f71..0000000 --- a/src/core/include/engine/core/platform.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef ENGINE_CORE_PLATFORM_H -#define ENGINE_CORE_PLATFORM_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <cglm/ivec2.h> - -#include <engine/core/types.h> -#include <engine/core/memory.h> -#include <engine/rendering/window.h> -#include <engine/resources.h> - -#define NUM_GLOBAL_BINDINGS 1 - -/* Defines the internally used state of the engine. - * A single instance is created during `engine_init`, and used as a global - * variable (yeah, im sorry). Due to this design flaw the engine as a whole is - * not quite thread safe. - */ -typedef struct Instance { - - Window* window; - bool quit; - - u64 frame; - u16 fps_target; - - /* TODO: Move input ctx/bindings to window */ - /* TODO: Move cam to window->renderer */ - Camera *cam; - - /* Global resources that live from engine_init to engine_free */ - Resources* resources; - - memory* mem; - -} Instance; - -#ifdef __cplusplus -} -#endif -#endif diff --git a/src/ctrl/CMakeLists.txt b/src/ctrl/CMakeLists.txt deleted file mode 100644 index f37fa6a..0000000 --- a/src/ctrl/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -add_library(daw_ctrl - src/input.c - ) - -target_compile_options(daw_ctrl PUBLIC ${BUILD_OPTS}) -target_include_directories(daw_ctrl PRIVATE ${DAW_INCLUDE_DIRS} ${GLFW_INCLUDE_DIR}) -target_link_libraries(daw_ctrl PRIVATE cglm glfw) diff --git a/src/core/src/loop.c b/src/daw.c index 4e9df36..b632466 100644 --- a/src/core/src/loop.c +++ b/src/daw.c @@ -22,19 +22,19 @@ #endif -#include <engine/configure.h> +#include <daw/configure.h> -#include <engine/core/state.h> -#include <engine/engine.h> -#include <engine/utils/btree.h> -#include <engine/utils/hashmap.h> -#include <engine/utils/list.h> +#include <daw/state.h> +#include <daw/daw.h> +#include <daw/utils/btree.h> +#include <daw/utils/hashmap.h> +#include <daw/utils/list.h> -#include <engine/resources.h> +#include <daw/resources.h> -#include <engine/rendering/window.h> -#include <engine/rendering/rendering.h> -#include <engine/rendering/platform_glfw.h> +#include <daw/window.h> +#include <daw/rendering.h> +#include <daw/platform_glfw.h> #define DEFAULT_NUM_PROCS 8 @@ -116,7 +116,7 @@ Instance* engine_init(const char* windowtitle, i32 windowWidth, i32 windowHeight Resources* resources = calloc(1, sizeof(Resources)); // TODO: Initialize them :) - w = Window_new(windowtitle, + w = Window_new(&Platform_GLFW, windowtitle, WINDOW_FRAMEWORK_GLFW, WINDOW_RENDERER_OPENGL, (ivec2){windowsize[0], windowsize[1]}, flags); diff --git a/src/core/src/dltools.c b/src/dltools.c index d27c4ff..6a0653a 100644 --- a/src/core/src/dltools.c +++ b/src/dltools.c @@ -7,8 +7,8 @@ #include <dlfcn.h> #endif -#include <engine/core/dltools.h> -#include <engine/core/logging.h> +#include <daw/dltools.h> +#include <daw/logging.h> bool dynamic_library_close(void* shared_library) { #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) diff --git a/src/utils/src/fov.c b/src/fov.c index 90df5af..d7c6746 100644 --- a/src/utils/src/fov.c +++ b/src/fov.c @@ -1,5 +1,5 @@ -#include <engine/utils/fov.h> -#include <engine/utils.h> +#include <daw/utils/fov.h> +#include <daw/utils.h> #include <math.h> #include <stdint.h> diff --git a/src/rendering/src/gl.c b/src/gl.c index 920518f..9dce5e5 100644 --- a/src/rendering/src/gl.c +++ b/src/gl.c @@ -4,12 +4,12 @@ #include <glad/gl.h> -#include <engine/core/types.h> -#include <engine/core/logging.h> +#include <daw/types.h> +#include <daw/logging.h> -#include <engine/rendering/rendering.h> -#include <engine/core/platform.h> -#include <engine/engine.h> +#include <daw/rendering.h> +#include <daw/platform.h> +#include <daw/daw.h> extern Instance* GLOBAL_PLATFORM; diff --git a/src/utils/src/hashmap.c b/src/hashmap.c index f7784d5..653b615 100644 --- a/src/utils/src/hashmap.c +++ b/src/hashmap.c @@ -1,4 +1,4 @@ -#include <engine/utils/hashmap.h> +#include <daw/utils/hashmap.h> /* Currently, this is a "works, but very poorly" placeholder implementation. * Should be avoided in practice */ diff --git a/src/core/include/engine/engine.h b/src/include/daw/daw.h index aa4eff6..acbbcd9 100644 --- a/src/core/include/engine/engine.h +++ b/src/include/daw/daw.h @@ -7,26 +7,42 @@ extern "C" { #include <stdbool.h> -/* TODO: Cleanup the includes, ideally this header file should only include all - * "public-facing" headers. - */ +#include <cglm/ivec2.h> -#include <engine/core/types.h> -#include <engine/core/logging.h> -#include <engine/core/memory.h> -#include <engine/core/state.h> -#include <engine/ctrl/input.h> -#include <engine/utils/stack.h> +#include <daw/types.h> +#include <daw/logging.h> +#include <daw/memory.h> +#include <daw/state.h> +#include <daw/input.h> +#include <daw/utils/stack.h> +#include <daw/window.h> +#include <daw/resources.h> typedef struct { u32 texture_id; i32 x, y, w, h; } RenderUnit; -#include <engine/rendering/window.h> -#include <engine/core/platform.h> +#include <daw/window.h> -#include <cglm/ivec2.h> +typedef struct Instance { + + Window* window; + bool quit; + + u64 frame; + u16 fps_target; + + /* TODO: Move input ctx/bindings to window */ + /* TODO: Move cam to window->renderer */ + Camera *cam; + + /* Global resources that live from engine_init to engine_free */ + Resources* resources; + + memory* mem; + +} Instance; /* Essential functions */ Instance* engine_init(const char* windowtitle, i32 windowWidth, i32 windowHeight, diff --git a/src/core/include/engine/core/dltools.h b/src/include/daw/dltools.h index d9c74ee..d9c74ee 100644 --- a/src/core/include/engine/core/dltools.h +++ b/src/include/daw/dltools.h diff --git a/src/ctrl/include/engine/ctrl/input.h b/src/include/daw/input.h index 18a6797..9fbcd15 100644 --- a/src/ctrl/include/engine/ctrl/input.h +++ b/src/include/daw/input.h @@ -6,8 +6,8 @@ extern "C" { #endif #include <cglm/ivec2.h> -#include <engine/core/types.h> -#include <engine/ctrl/keycodes.h> +#include <daw/types.h> +#include <daw/keycodes.h> typedef void input_callback_t(void*); typedef i32 scancode_t; diff --git a/src/ctrl/include/engine/ctrl/keycodes.h b/src/include/daw/keycodes.h index 4fff38e..869809f 100644 --- a/src/ctrl/include/engine/ctrl/keycodes.h +++ b/src/include/daw/keycodes.h @@ -14,8 +14,8 @@ extern "C" { // // We want to reserve the following bytes marked with X for the KEYCODE // 0000 0000 0000 0000 XXXX XXXX XXXX XXXX -#define KEY_MOD(x) 1 << (32-4 + x) -#define ACTION(x) (1 << (32-8)) + x +#define KEY_MOD(x) (1 << (32-4 + x)) +#define ACTION(x) ((1 << (32-8)) + x) typedef enum { KEY_SPACE = ' ', diff --git a/src/core/include/engine/core/logging.h b/src/include/daw/logging.h index cd55442..65ca827 100644 --- a/src/core/include/engine/core/logging.h +++ b/src/include/daw/logging.h @@ -11,7 +11,7 @@ extern "C" { #include <stdlib.h> #include <string.h> -#include <engine/core/types.h> +#include <daw/types.h> #if defined __linux__ || defined __APPLE__ #define TERM_COLOR_RESET "\033[0m" diff --git a/src/core/include/engine/core/memory.h b/src/include/daw/memory.h index d04d58e..bc10fe2 100644 --- a/src/core/include/engine/core/memory.h +++ b/src/include/daw/memory.h @@ -5,7 +5,7 @@ extern "C" { #endif -#include <engine/core/types.h> +#include <daw/types.h> typedef struct memory { void* data; diff --git a/src/resources/include/engine/resources/model.h b/src/include/daw/model.h index a2fb29c..a78c4b8 100644 --- a/src/resources/include/engine/resources/model.h +++ b/src/include/daw/model.h @@ -5,7 +5,7 @@ extern "C" { #endif -#include <engine/core/types.h> +#include <daw/types.h> typedef enum { Model_error, @@ -21,7 +21,7 @@ typedef struct { unsigned m_uiNumIndices; } Model; -#include <engine/resources.h> +#include <daw/resources.h> Model load_model(const Asset_ModelSpec *restrict ms); #ifdef __cplusplus diff --git a/src/rendering/include/engine/rendering/platform.h b/src/include/daw/platform.h index ea51c47..c837c63 100644 --- a/src/rendering/include/engine/rendering/platform.h +++ b/src/include/daw/platform.h @@ -7,10 +7,9 @@ extern "C" { #include <cglm/ivec2.h> -#include <engine/core/types.h> +#include <daw/types.h> // TODO: We only need the window once all the garbage in Instance is cleaned up. -#include <engine/core/platform.h> -#include <engine/rendering/window.h> +#include <daw/window.h> #define DAW_WINDOW_VSYNC (1 << 0) #define DAW_WINDOW_FULLSCREEN (1 << 1) diff --git a/src/rendering/include/engine/rendering/platform_glfw.h b/src/include/daw/platform_glfw.h index 949968d..1136a9f 100644 --- a/src/rendering/include/engine/rendering/platform_glfw.h +++ b/src/include/daw/platform_glfw.h @@ -7,9 +7,9 @@ extern "C" { #include <cglm/ivec2.h> -#include <engine/core/types.h> -#include <engine/rendering/platform.h> -#include <engine/rendering/window.h> +#include <daw/types.h> +#include <daw/platform.h> +#include <daw/window.h> Window* window_init_glfw(const char *restrict windowtitle, ivec2 windowsize, const u32 flags); void window_destroy_glfw(Window *restrict w); diff --git a/src/rendering/include/engine/rendering/rendering.h b/src/include/daw/rendering.h index a996257..0da97f5 100644 --- a/src/rendering/include/engine/rendering/rendering.h +++ b/src/include/daw/rendering.h @@ -5,8 +5,8 @@ extern "C" { #endif -#include <engine/core/types.h> -#include <engine/rendering/window.h> +#include <daw/types.h> +#include <daw/window.h> #include <cglm/ivec2.h> @@ -63,35 +63,35 @@ typedef enum { ShaderBufferFlag_none = 0x00, // First 3 bytes describe the access frequency. - ShaderBuffer_AccessFrequency_stream = 0b0000000000001, // 1 - ShaderBuffer_AccessFrequency_static = 0b0000000000010, // 2 - ShaderBuffer_AccessFrequency_dynamic = 0b0000000000011, // 3 + ShaderBuffer_AccessFrequency_stream = 1, // 1 + ShaderBuffer_AccessFrequency_static = 2, // 2 + ShaderBuffer_AccessFrequency_dynamic = 3, // 3 // Next 3 bytes describe the access type. - ShaderBuffer_AccessType_draw = 0b0000000001000, // 8 - ShaderBuffer_AccessType_read = 0b0000000010000, // 16 - ShaderBuffer_AccessType_copy = 0b0000000011000, // 24 + ShaderBuffer_AccessType_draw = 1 << 3, // 8 + ShaderBuffer_AccessType_read = 2 << 3, // 16 + ShaderBuffer_AccessType_copy = 3 << 3, // 24 // Next 3 bytes describe the buffer type - ShaderBuffer_Type_vertexData = 0b0000001000000, // 64 - ShaderBuffer_Type_vertexPosition = 0b0000010000000, // 128 - ShaderBuffer_Type_vertexIndex = 0b0000011000000, // 192 + ShaderBuffer_Type_vertexData = 1 << 6, // 64 + ShaderBuffer_Type_vertexPosition = 2 << 6, // 128 + ShaderBuffer_Type_vertexIndex = 3 << 6, // 192 // Next 4 bytes are designated for the data type - ShaderBuffer_DataType_nil = 0b0001000000000, // 512 + ShaderBuffer_DataType_nil = 1 << 9, // 512 - ShaderBuffer_DataType_f32 = 0b0010000000000, // 1024 - ShaderBuffer_DataType_f64 = 0b0011000000000, // 1536 + ShaderBuffer_DataType_f32 = 2 << 9, // 1024 + ShaderBuffer_DataType_f64 = 3 << 9, // 1536 - ShaderBuffer_DataType_i8 = 0b0100000000000, // 2048 - ShaderBuffer_DataType_i16 = 0b0101000000000, // 2560 - ShaderBuffer_DataType_i32 = 0b0110000000000, // 3072 - ShaderBuffer_DataType_i64 = 0b0111000000000, // 3584 + ShaderBuffer_DataType_i8 = 4 << 9, // 2048 + ShaderBuffer_DataType_i16 = 5 << 9, // 2560 + ShaderBuffer_DataType_i32 = 6 << 9, // 3072 + ShaderBuffer_DataType_i64 = 7 << 9, // 3584 - ShaderBuffer_DataType_u8 = 0b1000000000000, // 4096 - ShaderBuffer_DataType_u16 = 0b1001000000000, // 4608 - ShaderBuffer_DataType_u32 = 0b1010000000000, // 5120 - ShaderBuffer_DataType_u64 = 0b1011000000000, // 5632 + ShaderBuffer_DataType_u8 = 8 << 9, // 4096 + ShaderBuffer_DataType_u16 = 9 << 9, // 4608 + ShaderBuffer_DataType_u32 = 10 << 9, // 5120 + ShaderBuffer_DataType_u64 = 11 << 9, // 5632 } ShaderBufferFlag; typedef struct { diff --git a/src/resources/include/engine/resources.h b/src/include/daw/resources.h index d967403..90f3b16 100644 --- a/src/resources/include/engine/resources.h +++ b/src/include/daw/resources.h @@ -5,8 +5,8 @@ extern "C" { #endif -#include <engine/core/types.h> -#include <engine/rendering/rendering.h> +#include <daw/types.h> +#include <daw/rendering.h> // TODO /* We need some "global resources", available to all states. @@ -85,7 +85,7 @@ typedef union { Asset_ModelSpec model; } asset_t; -#include <engine/resources/model.h> +#include <daw/model.h> // The resource spec typedef struct { @@ -130,7 +130,7 @@ i32 resources_load(Resources *resources); * to `engine_run` */ isize resource_make_global(isize resource_id); -#include <engine/resources/texture.h> +#include <daw/texture.h> #ifdef __cplusplus } diff --git a/src/ctrl/include/engine/ctrl/scancodes.h b/src/include/daw/scancodes.h index 5b18833..5b18833 100644 --- a/src/ctrl/include/engine/ctrl/scancodes.h +++ b/src/include/daw/scancodes.h diff --git a/src/core/include/engine/core/state.h b/src/include/daw/state.h index a6a5e84..f98d5ff 100644 --- a/src/core/include/engine/core/state.h +++ b/src/include/daw/state.h @@ -5,7 +5,7 @@ extern "C" { #endif -#include <engine/core/memory.h> +#include <daw/memory.h> typedef enum StateType { STATE_null, @@ -25,7 +25,7 @@ StateType State_update(StateType type, f64 dt, memory* mem); /* Reloads shared object file associated with state */ #ifdef DAW_BUILD_HOTRELOAD -#include <engine/ctrl/input.h> +#include <daw/input.h> bool State_reload(StateType type, i_ctx** ctx, usize ctx_len); bool state_refresh_input_ctx(void* lib, i_ctx** ctx, usize ctx_len); diff --git a/src/resources/include/engine/resources/texture.h b/src/include/daw/texture.h index 9f533d6..5904fc1 100644 --- a/src/resources/include/engine/resources/texture.h +++ b/src/include/daw/texture.h @@ -5,9 +5,9 @@ extern "C" { #endif -#include <engine/core/types.h> -#include <engine/resources.h> -#include <engine/rendering/rendering.h> +#include <daw/types.h> +#include <daw/resources.h> +#include <daw/rendering.h> Texture load_texture(const Asset_TextureSpec *restrict ts); diff --git a/src/core/include/engine/core/types.h b/src/include/daw/types.h index a7d794d..a7d794d 100644 --- a/src/core/include/engine/core/types.h +++ b/src/include/daw/types.h diff --git a/src/utils/include/engine/utils.h b/src/include/daw/utils.h index 5096aa4..5f735e9 100644 --- a/src/utils/include/engine/utils.h +++ b/src/include/daw/utils.h @@ -5,7 +5,7 @@ extern "C" { #endif -#include <engine/core/types.h> +#include <daw/types.h> #include <cglm/ivec2.h> #define MIN(a, b) ((a < b) ? (a) : (b)) diff --git a/src/utils/include/engine/utils/btree.h b/src/include/daw/utils/btree.h index 1dd2023..1dd2023 100644 --- a/src/utils/include/engine/utils/btree.h +++ b/src/include/daw/utils/btree.h diff --git a/src/utils/include/engine/utils/fov.h b/src/include/daw/utils/fov.h index be64a9e..74ccee8 100644 --- a/src/utils/include/engine/utils/fov.h +++ b/src/include/daw/utils/fov.h @@ -5,7 +5,7 @@ extern "C" { #endif -#include <engine/core/types.h> +#include <daw/types.h> #include <stdbool.h> #include <cglm/ivec2.h> diff --git a/src/utils/include/engine/utils/hashmap.h b/src/include/daw/utils/hashmap.h index 0113ce5..15ec5f0 100644 --- a/src/utils/include/engine/utils/hashmap.h +++ b/src/include/daw/utils/hashmap.h @@ -7,9 +7,9 @@ extern "C" { #include <stdlib.h> -#include <engine/core/types.h> -#include <engine/core/memory.h> -#include <engine/utils/list.h> +#include <daw/types.h> +#include <daw/memory.h> +#include <daw/utils/list.h> usize lolhash(const usize s, usize v); diff --git a/src/utils/include/engine/utils/list.h b/src/include/daw/utils/list.h index 04dda04..04dda04 100644 --- a/src/utils/include/engine/utils/list.h +++ b/src/include/daw/utils/list.h diff --git a/src/utils/include/engine/utils/stack.h b/src/include/daw/utils/stack.h index b4caf5f..004e686 100644 --- a/src/utils/include/engine/utils/stack.h +++ b/src/include/daw/utils/stack.h @@ -5,7 +5,7 @@ extern "C" { #endif -#include <engine/core/types.h> +#include <daw/types.h> typedef struct { usize head; /* current number of elements */ diff --git a/src/rendering/include/engine/rendering/window.h b/src/include/daw/window.h index a964b38..2924448 100644 --- a/src/rendering/include/engine/rendering/window.h +++ b/src/include/daw/window.h @@ -7,8 +7,8 @@ extern "C" { #include <cglm/ivec2.h> -#include <engine/core/types.h> -#include <engine/ctrl/input.h> +#include <daw/types.h> +#include <daw/input.h> #ifndef ENGINE_RENDERING_WINDOW_H_EXCLUDE_EXTERNS extern u64 (*get_time)(void); @@ -43,7 +43,9 @@ typedef struct { i_ctx** bindings; } Window; -Window* Window_new(const char *restrict title, Window_framework framework, Window_renderer renderer, ivec2 size, u32 flags); +#include <daw/platform.h> + +Window* Window_new(const struct Platform *p, const char *restrict title, Window_framework framework, Window_renderer renderer, ivec2 size, u32 flags); void get_mousepos(double *x, double *y); diff --git a/src/ctrl/src/input.c b/src/input.c index 52d5ce4..b33a1fa 100644 --- a/src/ctrl/src/input.c +++ b/src/input.c @@ -4,10 +4,11 @@ #undef GLFW_INCLUDE_NONE #include <GLFW/glfw3.h> -#include <engine/core/dltools.h> -#include <engine/core/logging.h> -#include <engine/core/platform.h> -#include <engine/ctrl/input.h> +#include <daw/daw.h> +#include <daw/dltools.h> +#include <daw/logging.h> +#include <daw/platform.h> +#include <daw/input.h> extern input_callback_t* callbacks[128]; extern usize callbacks_len; diff --git a/src/core/src/logging.c b/src/logging.c index 94782ac..c5eec18 100644 --- a/src/core/src/logging.c +++ b/src/logging.c @@ -1,5 +1,5 @@ -#include <engine/core/logging.h> -#include <engine/core/types.h> +#include <daw/logging.h> +#include <daw/types.h> #include <stdlib.h> char* itoa(i32 x) { diff --git a/src/core/src/memory.c b/src/memory.c index 7a51a0d..8dc14eb 100644 --- a/src/core/src/memory.c +++ b/src/memory.c @@ -2,8 +2,8 @@ #include <stdlib.h> #include <string.h> -#include <engine/core/logging.h> -#include <engine/core/memory.h> +#include <daw/logging.h> +#include <daw/memory.h> memory* memory_new(usize max_size) { memory* m = malloc(sizeof(memory)); diff --git a/src/utils/src/misc.c b/src/misc.c index 063efbf..16c0cfb 100644 --- a/src/utils/src/misc.c +++ b/src/misc.c @@ -3,8 +3,8 @@ #include <string.h> -#include <engine/core/logging.h> -#include <engine/utils.h> +#include <daw/logging.h> +#include <daw/utils.h> /* These should all be in some external facing module "tools" */ diff --git a/src/resources/src/model.c b/src/model.c index 7244e63..172c409 100644 --- a/src/resources/src/model.c +++ b/src/model.c @@ -1,6 +1,6 @@ -#include <engine/engine.h> -#include <engine/core/logging.h> -#include <engine/resources/model.h> +#include <daw/daw.h> +#include <daw/logging.h> +#include <daw/model.h> #include <assimp/cimport.h> #include <assimp/scene.h> #include <assimp/postprocess.h> @@ -58,7 +58,7 @@ Model load_model(const Asset_ModelSpec *restrict ms) { aiReleaseImport(scene); { - Model m = {}; + Model m = {0}; m.format = format; // TODO add index array diff --git a/src/rendering/src/platform_glfw.c b/src/platform_glfw.c index 47638e2..211df47 100644 --- a/src/rendering/src/platform_glfw.c +++ b/src/platform_glfw.c @@ -9,9 +9,9 @@ #undef GLFW_INCLUDE_NONE #include <GLFW/glfw3.h> -#include <engine/core/logging.h> +#include <daw/logging.h> -#include <engine/rendering/platform.h> +#include <daw/platform.h> static void window_resize_callback(GLFWwindow *restrict window, int width, int height); static void framebuffer_resize_callback(GLFWwindow *restrict window, int width, int height); diff --git a/src/rendering/src/rendering.c b/src/rendering.c index 8932cfc..54dc7b4 100644 --- a/src/rendering/src/rendering.c +++ b/src/rendering.c @@ -8,9 +8,9 @@ #include <cglm/mat4.h> -#include <engine/engine.h> -#include <engine/utils.h> -#include <engine/rendering/rendering.h> +#include <daw/daw.h> +#include <daw/utils.h> +#include <daw/rendering.h> /* Extern globals */ diff --git a/src/rendering/CMakeLists.txt b/src/rendering/CMakeLists.txt deleted file mode 100644 index f3f4710..0000000 --- a/src/rendering/CMakeLists.txt +++ /dev/null @@ -1,33 +0,0 @@ -add_library(daw_rendering - src/gl.c - src/rendering.c - src/window.c - src/platform_glfw.c - ${GLAD_HEADER} - ) - -add_custom_command( - OUTPUT ${GLAD_HEADER} - COMMAND - glad - --api gl:core=4.6 - --out-path ${CMAKE_BINARY_DIR} - --reproducible - c - --header-only - --mx - ) - -set_property(SOURCE src/window.c APPEND PROPERTY OBJECT_DEPENDS ${GLAD_HEADER}) -set_property(SOURCE src/rendering.c APPEND PROPERTY OBJECT_DEPENDS ${GLAD_HEADER}) - -target_compile_options(daw_rendering PUBLIC ${BUILD_OPTS}) -target_include_directories(daw_rendering PRIVATE - ${DAW_INCLUDE_DIRS} - ${GLFW_INCLUDE_DIR} -) -target_link_libraries(daw_rendering PRIVATE - OpenGL::GL - cglm - glfw -) diff --git a/src/resources/src/resources.c b/src/resources.c index 6e35a4f..49b20e0 100644 --- a/src/resources/src/resources.c +++ b/src/resources.c @@ -1,9 +1,10 @@ #include <string.h> -#include <engine/core/types.h> -#include <engine/core/logging.h> -#include <engine/core/platform.h> -#include <engine/resources.h> +#include <daw/types.h> +#include <daw/daw.h> +#include <daw/logging.h> +#include <daw/platform.h> +#include <daw/resources.h> extern Instance* GLOBAL_PLATFORM; diff --git a/src/resources/CMakeLists.txt b/src/resources/CMakeLists.txt deleted file mode 100644 index 4d3ee22..0000000 --- a/src/resources/CMakeLists.txt +++ /dev/null @@ -1,19 +0,0 @@ -## Uncomment the following to fetch and build assimp. -#FetchContent_Declare(assimp -# GIT_REPOSITORY https://github.com/assimp/assimp.git -# GIT_TAG v5.3.1 -#) -#FetchContent_MakeAvailable(assimp) - -add_library(daw_resources - src/resources.c - src/textures.c - src/model.c - ) - -target_compile_options(daw_resources PUBLIC ${BUILD_OPTS}) -target_include_directories(daw_resources PRIVATE ${DAW_INCLUDE_DIRS} stb) -target_link_libraries(daw_resources PRIVATE - assimp - cglm - ) diff --git a/src/utils/src/stack.c b/src/stack.c index a7cb16d..f0023c4 100644 --- a/src/utils/src/stack.c +++ b/src/stack.c @@ -1,5 +1,5 @@ -#include <engine/core/logging.h> -#include <engine/utils/stack.h> +#include <daw/logging.h> +#include <daw/utils/stack.h> #include <stdlib.h> Stack stack_new_ex(const usize element_size, const usize size) { diff --git a/src/core/src/state.c b/src/state.c index a206cbb..08d9f37 100644 --- a/src/core/src/state.c +++ b/src/state.c @@ -1,9 +1,9 @@ #include <string.h> -#include <engine/core/dltools.h> -#include <engine/core/logging.h> -#include <engine/core/state.h> -#include <engine/ctrl/input.h> +#include <daw/dltools.h> +#include <daw/logging.h> +#include <daw/state.h> +#include <daw/input.h> //typedef void state_init_t(void*,void*); //typedef void* (state_free_t(void*)); diff --git a/src/resources/src/textures.c b/src/textures.c index 913c931..5b23e7a 100644 --- a/src/resources/src/textures.c +++ b/src/textures.c @@ -1,5 +1,5 @@ -#include <engine/core/logging.h> -#include <engine/resources.h> +#include <daw/logging.h> +#include <daw/resources.h> #include <stb/stb_image.h> /* Uses stb_image to load an image, and passes it to the renderer for diff --git a/src/utils/CMakeLists.txt b/src/utils/CMakeLists.txt deleted file mode 100644 index 6acdba1..0000000 --- a/src/utils/CMakeLists.txt +++ /dev/null @@ -1,11 +0,0 @@ -add_library(daw_utils - src/btree.c - src/fov.c - src/hashmap.c - src/misc.c - src/stack.c - ) - -target_compile_options(daw_utils PUBLIC ${BUILD_OPTS}) -target_include_directories(daw_utils PRIVATE ${DAW_INCLUDE_DIRS}) -target_link_libraries(daw_utils PRIVATE cglm) diff --git a/src/rendering/src/window.c b/src/window.c index d761543..ea42678 100644 --- a/src/rendering/src/window.c +++ b/src/window.c @@ -1,17 +1,15 @@ #include <time.h> /* TODO: REMOVE THIS INCLUSION */ -#include <engine/engine.h> +#include <daw/daw.h> -#include <engine/core/types.h> -#include <engine/core/logging.h> +#include <daw/types.h> +#include <daw/logging.h> #define ENGINE_RENDERING_WINDOW_H_EXCLUDE_EXTERNS -#include <engine/rendering/window.h> +#include <daw/window.h> #undef ENGINE_RENDERING_WINDOW_H_EXCLUDE_EXTERNS -#include <engine/rendering/platform_glfw.h> - #include <glad/gl.h> #undef GLFW_INCLUDE_NONE @@ -40,7 +38,8 @@ u64 (*get_time)(void) = platform_get_time_usec; #define DAW_WINDOW_RESIZEABLE (1 << 2) // Wrapper to get a specific window and set up related structures. -Window* Window_new(const char *restrict title, Window_framework framework, Window_renderer renderer, ivec2 size, u32 flags) { +// What the fuck is this doing here. +Window* Window_new(const struct Platform* p, const char *restrict title, Window_framework framework, Window_renderer renderer, ivec2 size, u32 flags) { Window* w = NULL; switch (framework) { @@ -49,7 +48,7 @@ Window* Window_new(const char *restrict title, Window_framework framework, Windo case WINDOW_RENDERER_OPENGL: /* For now, pass instance as NULL, fix it once all the necessary bs is * out of struct Instance */ - w = Platform_GLFW.window_init(title, size, flags); + w = p->window_init(title, size, flags); w->bindings = NULL; w->bindings_sz = 0; diff --git a/tools/cmake/DawAddState.cmake b/tools/cmake/DawAddState.cmake index 213b77b..902e814 100644 --- a/tools/cmake/DawAddState.cmake +++ b/tools/cmake/DawAddState.cmake @@ -15,7 +15,7 @@ # Then call `daw_add_state(${STATENAME}) for each of your states. macro(daw_add_state STATENAME) # Add state include directory to the engines target - set_property(TARGET daw_core + set_property(TARGET daw APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/state_${STATENAME}/include) @@ -54,7 +54,7 @@ macro(daw_add_state STATENAME) add_library(${STATENAME} OBJECT ${STATE_SOURCES}) # The game-state source is withing the core module - set_property(TARGET daw_core + set_property(TARGET daw APPEND PROPERTY INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/state_${STATENAME}/include ) @@ -64,10 +64,6 @@ macro(daw_add_state STATENAME) cglm ) - set_property(TARGET daw_core - APPEND PROPERTY LINK_LIBRARIES - ${STATENAME}) - set_property(TARGET daw APPEND PROPERTY LINK_LIBRARIES ${STATENAME}) |
