Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
a651246
Move skybox to GameObjects
Daynlight Jul 2, 2026
8eb7e8e
rm SDF
Daynlight Jul 2, 2026
794db3b
Unfiorms per object
Daynlight Jul 2, 2026
668424e
Unfiorms per object
Daynlight Jul 2, 2026
ff4a4be
Tasks
Daynlight Jul 2, 2026
68894c5
Terrain and Water as GameObject
Daynlight Jul 3, 2026
0fd1829
GameData Backup
Daynlight Jul 3, 2026
159433d
Tasks
Daynlight Jul 3, 2026
9c35afc
Moutains
Daynlight Jul 3, 2026
594df71
Moutains
Daynlight Jul 3, 2026
88bc6d6
TextureSerialization
Daynlight Jul 5, 2026
cfdfe06
TextureSerialization
Daynlight Jul 5, 2026
f2cf53f
Seperate Script objects
Daynlight Jul 5, 2026
c340618
Separation of Projects
Daynlight Jul 7, 2026
4a8ffcd
Sepeation part 2
Daynlight Jul 7, 2026
c9f1c99
App uses Core to render
Daynlight Jul 7, 2026
d583446
App runs Core and Editor main calsses
Daynlight Jul 7, 2026
f50fd6f
Resource Templated class
Daynlight Jul 7, 2026
320b15c
Utils clean up, config is now in utils, changed namespaceses from UW …
Daynlight Jul 8, 2026
29a3486
move config.h
Daynlight Jul 8, 2026
5543b5b
DataSerializer don't create any ptr
Daynlight Jul 8, 2026
01be431
Prod testing
Daynlight Jul 8, 2026
f21d93b
App and AppDev separation, fixed scripts register on Production
Daynlight Jul 10, 2026
c19b6e4
Update License proj name
Daynlight Jul 16, 2026
3f598bc
Build, Run, Installer
Daynlight Jul 16, 2026
37dbb3b
zip engine packaging
Daynlight Jul 22, 2026
10b435c
linux forece gpu
Daynlight Jul 22, 2026
cce4da6
submodules
Daynlight Jul 24, 2026
1a49182
Cmake
Daynlight Jul 24, 2026
f8bbf4d
IDK
Daynlight Jul 26, 2026
9f4777b
Fixed Textures
Daynlight Jul 26, 2026
4025e1c
End of iter 7
Daynlight Jul 26, 2026
a23cf1f
ScriptShared namespace
Daynlight Jul 26, 2026
04a1503
Viewport UI
Daynlight Jul 28, 2026
2b6f2f5
Diagram
Daynlight Jul 29, 2026
d4cf49a
Namespaces part 2.5/3
Daynlight Jul 29, 2026
043e3e5
Base Camera Scripting
Daynlight Aug 5, 2026
4a48535
Folder Org
Daynlight Aug 7, 2026
3546414
Draw on Screen in Prod
Daynlight Aug 7, 2026
1df0a2a
New 2D Proj
Daynlight Aug 8, 2026
152773d
App for Game fixed Post Processing
Daynlight Aug 8, 2026
8a7d454
Farm Game prject cmrc textures fixed
Daynlight Aug 8, 2026
75d3d67
Lights
Daynlight Aug 8, 2026
76f2dac
Ground
Daynlight Aug 8, 2026
bebed06
Game Terrain
Daynlight Aug 9, 2026
998c9b0
Camera Clean up
Daynlight Aug 10, 2026
c7f214e
Namespace + Camerea Zoom
Daynlight Aug 10, 2026
fbbd626
CameraController clean up
Daynlight Aug 10, 2026
7bb5c67
Camera Constructor Tests with GTests
Daynlight Aug 11, 2026
8c0172b
Test Workflow
Daynlight Aug 11, 2026
5b46866
Test Workflow
Daynlight Aug 11, 2026
2f89b18
Test Workflow
Daynlight Aug 11, 2026
af5b9b9
Test Workflow
Daynlight Aug 11, 2026
845dcba
Test Workflow
Daynlight Aug 11, 2026
89638d7
Test Workflow
Daynlight Aug 11, 2026
6aa4bd6
Test Workflow
Daynlight Aug 11, 2026
98f9eda
Test Workflow
Daynlight Aug 12, 2026
b103ee5
Test Workflow
Daynlight Aug 12, 2026
3d2bd83
Test Workflow
Daynlight Aug 12, 2026
3130a71
Test Workflow
Daynlight Aug 12, 2026
8f4d670
Test Workflow
Daynlight Aug 12, 2026
84ce5e7
All Constructor Tests
Daynlight Aug 12, 2026
d039d3c
Camera Caching and Tests for perspective
Daynlight Aug 13, 2026
d55d807
Projection and Orthogonal Tests
Daynlight Aug 13, 2026
13ab4b1
Simplify Zip
Daynlight Aug 13, 2026
2472047
No more ScriptShared copy to scripts
Daynlight Aug 13, 2026
98213df
Camera Tests Done
Daynlight Aug 14, 2026
57c54ac
Tasks
Daynlight Aug 15, 2026
3cd2bf5
Tasks
Daynlight Aug 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
83 changes: 83 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Engine
# Copyright 2026 Daynlight
# Licensed under the GNU General, Version 3.0.
# See LICENSE file for details.



name: Tests via CMake + GTests

on:
push:
branches: [ "*" ]
pull_request:
branches: [ "*" ]

jobs:
build:
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false

matrix:
os: [ubuntu-latest] # windows-latest
build_type: [Release, Debug]
include:
# - os: windows-latest
# c_compiler: gcc
# cpp_compiler: g++
- os: ubuntu-latest
c_compiler: gcc
cpp_compiler: g++

steps:
- uses: actions/checkout@v4
with:
submodules: recursive

- name: Install Dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
xvfb \
mesa-utils \
libgl1-mesa-dri \
libwayland-dev \
wayland-protocols \
extra-cmake-modules \
libxkbcommon-dev \
libx11-dev \
libxrandr-dev \
libxinerama-dev \
libxcursor-dev \
libxi-dev \
libxext-dev \
libgl1-mesa-dev

- name: Set reusable strings
id: strings
shell: bash
run: |
echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT"

- name: Configure CMake
run: >
cmake -B ${{ steps.strings.outputs.build-output-dir }}
-G Ninja
-DCMAKE_CXX_COMPILER=${{ matrix.cpp_compiler }}
-DCMAKE_C_COMPILER=${{ matrix.c_compiler }}
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
-S ${{ github.workspace }}

- name: Build
run: cmake --build ${{ steps.strings.outputs.build-output-dir }} --config ${{ matrix.build_type }}

- name: Test (Linux)
if: runner.os == 'Linux'
run: xvfb-run --auto-servernum ctest --test-dir ${{ steps.strings.outputs.build-output-dir }} -C ${{ matrix.build_type }} --output-on-failure

- name: Test (Windows)
if: runner.os == 'Windows'
run: ctest --test-dir ${{ steps.strings.outputs.build-output-dir }} -C ${{ matrix.build_type }} --output-on-failure
10 changes: 8 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
build/
Build/
build-*/
build_*/

# CMake generated files
CMakeFiles/
Expand Down Expand Up @@ -73,6 +74,11 @@ bin/
build/
*.ini

temp*
*temp*
Examples/**/App
Scripts_DLL/
**/Scripts/ScriptShared/
**/Scripts/ScriptShared/
.GameData_back/
/GameData/
/Scripts/
Engine_Bin/
11 changes: 11 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[submodule "vendor/CWindow"]
path = vendor/CWindow
url = https://github.com/Daynlight/CWindow.git
branch = engine
[submodule "vendor/cmrc"]
path = vendor/cmrc
url = https://github.com/vector-of-bool/cmrc.git
branch = master
[submodule "vendor/googletest"]
path = vendor/googletest
url = https://github.com/google/googletest.git
73 changes: 38 additions & 35 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Help me I'am Under The Water
# Engine
# Copyright 2026 Daynlight
# Licensed under the GNU General, Version 3.0.
# See LICENSE file for details.
Expand All @@ -7,58 +7,61 @@

cmake_minimum_required(VERSION 3.15)

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_CXX_STANDARD 26)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
option(PRODUCTION "Enable production build flags" OFF)
# option(SANDBOX_SCRIPTS "Enable script sandboxing build flags" ON)



include(FetchContent)
option(PRODUCTION "Enable production build flags" OFF)
option(SANDBOX_SCRIPTS "Enable script sandboxing build flags" OFF)


FetchContent_Declare(CWindow
GIT_REPOSITORY https://github.com/Daynlight/CWindow.git
GIT_TAG under_water
GIT_SHALLOW TRUE
execute_process(
COMMAND git submodule update --init --recursive
)
FetchContent_MakeAvailable(CWindow)

FetchContent_Declare(cmrc
GIT_REPOSITORY https://github.com/vector-of-bool/cmrc.git
GIT_TAG master
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(cmrc)
add_subdirectory(vendor/CWindow)
add_subdirectory(vendor/cmrc)
add_subdirectory(vendor/googletest vendor/googletest EXCLUDE_FROM_ALL)


if(PRODUCTION)
file(GLOB_RECURSE GameDataSet CONFIGURE_DEPENDS "GameData/**")
cmrc_add_resource_library(GameData ${GameDataSet})
set(ENGINE_SRC "${CMAKE_BINARY_DIR}/Engine")
if(DEFINED ENV{XDG_DATA_HOME})
set(ENGINE_SRC_DIR "$ENV{XDG_DATA_HOME}/Engine")
else()
set(ENGINE_SRC_DIR "$ENV{HOME}/.local/share/Engine")
endif()

set(ENGINE_SRC_DEST "${ENGINE_SRC_DIR}/Engine")

file(GLOB_RECURSE ScriptSharedSet CONFIGURE_DEPENDS "ScriptShared/**")
cmrc_add_resource_library(ScriptShared ${ScriptSharedSet})

if(NOT PRODUCTION)
file(REMOVE_RECURSE "${ENGINE_SRC_DEST}")
file(MAKE_DIRECTORY "${ENGINE_SRC_DEST}")

add_subdirectory(Engine)
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/Engine"
DESTINATION "${ENGINE_SRC_DEST}"
PATTERN "Examples" EXCLUDE)

file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/vendor"
DESTINATION "${ENGINE_SRC_DEST}"
PATTERN "Examples" EXCLUDE)

if(PRODUCTION)
target_compile_definitions(Engine PRIVATE PRODUCTION)
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt"
DESTINATION "${ENGINE_SRC_DEST}")
endif()


file(GLOB_RECURSE GameDataSet CONFIGURE_DEPENDS "GameData/**")
cmrc_add_resource_library(GameData ${GameDataSet})

file(GLOB_RECURSE PROD_SCRIPTS CONFIGURE_DEPENDS "Scripts/*.cpp")

target_compile_definitions(Engine PRIVATE COMPILER_PATH="${CMAKE_CXX_COMPILER}")
message(STATUS "ScriptController uses CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
message(STATUS "ScriptController uses COMPILER_PATH definition=${CMAKE_CXX_COMPILER}")
add_subdirectory(Engine)

enable_testing()
add_subdirectory(Tests)

# if(SANDBOX_SCRIPTS)
# target_compile_definitions(Engine PRIVATE SANDBOX_SCRIPTS)
# endif()

install(TARGETS Engine
DESTINATION bin
)
Loading
Loading