Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
3e6e3ec
cleanup and basic window
Thomas-Chqt Jan 28, 2026
7c8d00c
update ecs to use stl, enable tests
Thomas-Chqt Jan 30, 2026
50a725e
Refactor ECS: move Components/Entity to headers
Thomas-Chqt Feb 1, 2026
95fb9fc
add entity tests and fix bugs
Thomas-Chqt Feb 1, 2026
34d2633
Remove inline from name and drop commented class
Thomas-Chqt Feb 1, 2026
e40140d
refacord asset manager
Thomas-Chqt Feb 20, 2026
056d30f
introduce frame graph
Thomas-Chqt Mar 1, 2026
ecef709
add menu bar and viewport panel
Thomas-Chqt Mar 8, 2026
c774546
add basic rendering capability and entity inspector panel
Thomas-Chqt Mar 15, 2026
2871ac4
fix vulkan validation
Thomas-Chqt Mar 16, 2026
fb117ab
Remove ViewportFrameBuff and add GLFW teardown guard
Thomas-Chqt Mar 16, 2026
9d0962f
remove old files
Thomas-Chqt Mar 16, 2026
0bfc990
add scene graph panel
Thomas-Chqt Mar 18, 2026
cebace7
add project class and builtin cube
Thomas-Chqt Mar 23, 2026
0e8584c
add more component edit widgets
Thomas-Chqt Mar 25, 2026
670580a
Refactor scene and asset handling around descriptors
Thomas-Chqt Apr 1, 2026
85fd63f
Add viewport and editor camera abstractions
Thomas-Chqt Apr 7, 2026
1804896
introduce inputs, not yet used
Thomas-Chqt Apr 15, 2026
c447ea9
implement missing function and use input system
Thomas-Chqt Apr 15, 2026
c642000
add char Event
Thomas-Chqt Apr 16, 2026
5c35949
improve Input template and fix some build errors
Thomas-Chqt Apr 16, 2026
2a36a59
add editor camera controle
Thomas-Chqt Apr 16, 2026
c0a8181
introduce game class
Thomas-Chqt Apr 16, 2026
d600255
Build game descriptors from project scenes
Thomas-Chqt Apr 16, 2026
6b47947
Add scene and asset loaded-state range helpers
Thomas-Chqt Apr 17, 2026
b1016ff
Rename gameDescriptor and inline setActiveScene
Thomas-Chqt Apr 17, 2026
c8ecce6
Use ICamera providers and remove Viewport
Thomas-Chqt Apr 19, 2026
32babf0
improve ecs view to behave like a c++ view
Thomas-Chqt Apr 19, 2026
08a7df0
move event process check in mapper
Thomas-Chqt Apr 19, 2026
20f9dd9
Track Range2DInput keys separately
Thomas-Chqt Apr 19, 2026
aca79da
add yaml library
Thomas-Chqt Apr 19, 2026
de9d64a
make VAssetPath serializable
Thomas-Chqt Apr 19, 2026
0817c8d
Add YAML serialization for component variants
Thomas-Chqt Apr 19, 2026
c921e32
add tests for vasset path serialization
Thomas-Chqt Apr 19, 2026
3da2c6c
Add Scene::Descriptor YAML conversion and tests
Thomas-Chqt Apr 19, 2026
899019e
Add YAML conversion for Project
Thomas-Chqt Apr 19, 2026
0b10bc4
Add project properties panel
Thomas-Chqt Apr 19, 2026
1ab20b3
fix include
Thomas-Chqt Apr 19, 2026
f6c98ec
Persist ImGui layout in project files
Thomas-Chqt Apr 19, 2026
b0cd2d3
add droped file processing
Thomas-Chqt Apr 19, 2026
3434197
load imgui setting in loadProject and remove unwanted files
Thomas-Chqt Apr 19, 2026
5578e2d
reoder functions in editor.cpp
Thomas-Chqt Apr 19, 2026
5b3336e
add suport for user provided scripts
Thomas-Chqt Apr 22, 2026
b99a090
Make Editor accept project path argument
Thomas-Chqt Apr 22, 2026
db341d2
Use named inputs in InputContext
Thomas-Chqt Apr 23, 2026
2e86706
fix build error on linux/gcc-14
Thomas-Chqt Apr 24, 2026
6d9e79c
Add ScriptLibraryManager and refactor loading
Thomas-Chqt Apr 26, 2026
42c2f50
Skip Git LFS smudge during dependency fetch
Thomas-Chqt Apr 26, 2026
4713286
add type list api and input context serialization (#22)
Thomas-Chqt Apr 27, 2026
219643d
add ressource browser panel and start improving UI
Thomas-Chqt Apr 29, 2026
6348521
Enable MeshComponent editing in Entity inspector
Thomas-Chqt Apr 30, 2026
f8fc670
Change registered assets map to VAssetPath->AssetID
Thomas-Chqt Apr 30, 2026
11acde5
Enable reload only if script lib exists
Thomas-Chqt Apr 30, 2026
af26a98
regroup imgui in one file
Thomas-Chqt May 1, 2026
6c9fd3c
Add player movement, world transforms, and inputs
Thomas-Chqt May 3, 2026
4f1b558
Use deducing this for accessors
Thomas-Chqt May 3, 2026
7603497
Add menuFromPath and collapsing header helper
Thomas-Chqt May 3, 2026
80277c6
Rename jump_speed parameter to jump_height
Thomas-Chqt May 3, 2026
9b1643a
Add macOS codesigning for editor and tests
Thomas-Chqt May 3, 2026
919d867
Add GitHub Actions workflows for CI matrix
Thomas-Chqt May 3, 2026
a951f54
Replace ScriptLibraryManager with ScriptLibrary and update ABI to use
Thomas-Chqt May 4, 2026
dfdcfd7
Handle shared library extension in Project
Thomas-Chqt May 4, 2026
cefde7a
fix windows
Thomas-Chqt May 4, 2026
8321852
update readme
Thomas-Chqt May 4, 2026
a6c395d
fix actions
Thomas-Chqt May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 0 additions & 76 deletions .github/workflows/CI.yml

This file was deleted.

39 changes: 39 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Build Linux
run-name: ${{ github.event.pull_request && format('{0} -> {1} by {2} (PR {3})', github.head_ref, github.base_ref, github.actor, github.event.pull_request.number) || github.event_name == 'workflow_dispatch' && format('{0} by {1} [manual]', github.ref_name, github.actor) || format('{0} by {1}', github.ref_name, github.actor) }}

on:
pull_request:
workflow_dispatch:

jobs:
build:
strategy:
fail-fast: false
matrix:
build-type: [ Debug, Release ]

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gcc-14 g++-14 xorg-dev

- name: Generate
run: >
cmake -S ${{ github.workspace }} -B build
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
-DCMAKE_C_COMPILER=gcc-14
-DCMAKE_CXX_COMPILER=g++-14
-DGE_BUILD_VULKAN=ON
-DGE_BUILD_TESTS=ON
-DGE_BUILD_EXAMPLES=ON

- name: Build
run: cmake --build build --config ${{ matrix.build-type }} --parallel

- name: Test
run: ctest --test-dir build -C ${{ matrix.build-type }} --output-on-failure
33 changes: 33 additions & 0 deletions .github/workflows/macos-metal.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Build macOS - Metal
run-name: ${{ github.event.pull_request && format('{0} -> {1} by {2} (PR {3})', github.head_ref, github.base_ref, github.actor, github.event.pull_request.number) || github.event_name == 'workflow_dispatch' && format('{0} by {1} [manual]', github.ref_name, github.actor) || format('{0} by {1}', github.ref_name, github.actor) }}

on:
pull_request:
workflow_dispatch:

jobs:
build:
strategy:
fail-fast: false
matrix:
build-type: [ Debug, Release ]

runs-on: macos-latest

steps:
- uses: actions/checkout@v4

- name: Generate
run: >
cmake -S ${{ github.workspace }} -B build
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
-DGE_BUILD_METAL=ON
-DGE_BUILD_VULKAN=OFF
-DGE_BUILD_TESTS=ON
-DGE_BUILD_EXAMPLES=ON

- name: Build
run: cmake --build build --config ${{ matrix.build-type }} --parallel

- name: Test
run: ctest --test-dir build -C ${{ matrix.build-type }} --output-on-failure
33 changes: 33 additions & 0 deletions .github/workflows/macos-vulkan.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Build macOS - Vulkan
run-name: ${{ github.event.pull_request && format('{0} -> {1} by {2} (PR {3})', github.head_ref, github.base_ref, github.actor, github.event.pull_request.number) || github.event_name == 'workflow_dispatch' && format('{0} by {1} [manual]', github.ref_name, github.actor) || format('{0} by {1}', github.ref_name, github.actor) }}

on:
pull_request:
workflow_dispatch:

jobs:
build:
strategy:
fail-fast: false
matrix:
build-type: [ Debug, Release ]

runs-on: macos-latest

steps:
- uses: actions/checkout@v4

- name: Generate
run: >
cmake -S ${{ github.workspace }} -B build
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
-DGE_BUILD_METAL=OFF
-DGE_BUILD_VULKAN=ON
-DGE_BUILD_TESTS=ON
-DGE_BUILD_EXAMPLES=ON

- name: Build
run: cmake --build build --config ${{ matrix.build-type }} --parallel

- name: Test
run: ctest --test-dir build -C ${{ matrix.build-type }} --output-on-failure
33 changes: 33 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Build macOS
run-name: ${{ github.event.pull_request && format('{0} -> {1} by {2} (PR {3})', github.head_ref, github.base_ref, github.actor, github.event.pull_request.number) || github.event_name == 'workflow_dispatch' && format('{0} by {1} [manual]', github.ref_name, github.actor) || format('{0} by {1}', github.ref_name, github.actor) }}

on:
pull_request:
workflow_dispatch:

jobs:
build:
strategy:
fail-fast: false
matrix:
build-type: [ Debug, Release ]

runs-on: macos-latest

steps:
- uses: actions/checkout@v4

- name: Generate
run: >
cmake -S ${{ github.workspace }} -B build
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
-DGE_BUILD_METAL=ON
-DGE_BUILD_VULKAN=ON
-DGE_BUILD_TESTS=ON
-DGE_BUILD_EXAMPLES=ON

- name: Build
run: cmake --build build --config ${{ matrix.build-type }} --parallel

- name: Test
run: ctest --test-dir build -C ${{ matrix.build-type }} --output-on-failure
32 changes: 32 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Build Windows
run-name: ${{ github.event.pull_request && format('{0} -> {1} by {2} (PR {3})', github.head_ref, github.base_ref, github.actor, github.event.pull_request.number) || github.event_name == 'workflow_dispatch' && format('{0} by {1} [manual]', github.ref_name, github.actor) || format('{0} by {1}', github.ref_name, github.actor) }}

on:
pull_request:
workflow_dispatch:

jobs:
build:
strategy:
fail-fast: false
matrix:
build-type: [ Debug, Release ]

runs-on: windows-latest

steps:
- uses: actions/checkout@v4

- name: Generate
run: >
cmake -S ${{ github.workspace }} -B build
-DCMAKE_BUILD_TYPE=${{ matrix.build-type }}
-DGE_BUILD_VULKAN=ON
-DGE_BUILD_TESTS=ON
-DGE_BUILD_EXAMPLES=${{ matrix.build-examples }}

- name: Build
run: cmake --build build --config ${{ matrix.build-type }} --parallel

- name: Test
run: ctest --test-dir build -C ${{ matrix.build-type }} --output-on-failure
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ default.profraw
graph.drawio.svg
**/.DS_Store
examples/project1/project1_scriptLib*
__cmake_systeminformation
9 changes: 0 additions & 9 deletions .gitmodules

This file was deleted.

61 changes: 45 additions & 16 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,67 @@

cmake_minimum_required(VERSION 3.22)

include(FetchContent)
include(cmake/FetchDependencies.cmake)

enable_testing()
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)

set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build using shared libraries" FORCE)
project(Game-Engine)

option(GE_BUILD_TESTS "Build test executable" OFF)
option(GE_BUILD_EXAMPLES "Build example scripts" OFF)
option(BUILD_SHARED_LIBS "Build using shared libraries" OFF)

if (APPLE)
option(GE_BUILD_METAL "Build with metal enable" ON)
option(GE_BUILD_OPENGL "Build with OpenGL enable" ON)
else()
option(GE_BUILD_OPENGL "Build with OpenGL enable" ON)
option(GE_BUILD_METAL "Build the metal backend" ON)
endif()
option(GE_BUILD_VULKAN "Build the vulkan backend" ON)
option(GE_BUILD_TESTS "Build test executable" OFF)
option(GE_BUILD_EXAMPLES "Build examples" OFF)
option(GE_INSTALL "Enable the install command" ON)

enable_language(CXX)

fetch_dependencies()

if (NOT GE_BUILD_METAL AND NOT GE_BUILD_OPENGL)
message(FATAL_ERROR "One graphic api must be enable")
add_library(Game-Engine ${GE_LIB_TYPE})

set_target_properties(Game-Engine PROPERTIES
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN YES
)

target_compile_features(Game-Engine PUBLIC cxx_std_23)
target_compile_definitions(Game-Engine PRIVATE GE_DLL_EXPORT)
target_compile_definitions(Game-Engine PUBLIC "GE_SHARED_LIBRARY_EXTENSION=\"${CMAKE_SHARED_LIBRARY_SUFFIX}\"")

if(MSVC)
target_compile_options(Game-Engine PRIVATE /W4 /wd4251)
else()
target_compile_options(Game-Engine PRIVATE -Wall -Wextra -Wpedantic)
target_compile_options(Game-Engine PRIVATE $<$<CXX_COMPILER_ID:GNU>:-Wno-missing-field-initializers>)
endif()

project(Game-Engine)
enable_language(CXX)
file(GLOB_RECURSE GE_SRC "include/*.hpp" "include/*.inl" "src/*.cpp" "src/*.hpp")
target_sources(Game-Engine PRIVATE ${GE_SRC} ${GFX_INC})

target_include_directories(Game-Engine
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include"
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}")

# target_precompile_headers(Graphics PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/pch.hpp")

target_link_libraries(Game-Engine PUBLIC Graphics glfw glm::glm imgui stb_image dlLoad assimp::assimp yaml-cpp)

add_subdirectory("shaders")

add_dependencies(Game-Engine flat_color_shader)
target_compile_definitions(Game-Engine PRIVATE "SHADER_DIR=\"${SHADER_DIR}\"")

add_subdirectory("dependencies")
add_subdirectory("engine")
add_subdirectory("editor")

if(GE_BUILD_EXAMPLES)
add_subdirectory("examples/project1")
endif()

if (GE_BUILD_TESTS)
enable_testing() # need to be in the top level cmakelists
add_subdirectory("tests")
endif()
endif()
Loading
Loading