From 68f4c3c55ef03276ed6280b84eccdc616ab53337 Mon Sep 17 00:00:00 2001 From: NigthLier Date: Tue, 5 May 2026 12:58:11 +0300 Subject: [PATCH 1/4] Added Clion build section --- CMakePresets.json | 21 +++++++++++++++++++++ README.md | 20 ++++++++++++++++++++ src/CMakeLists.txt | 11 +++++++++-- 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 47ba71e34..508719628 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -15,6 +15,22 @@ "VOXELENGINE_BUILD_TESTS": "ON" } }, + { + "name": "default-ninja-mingw-windows", + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + }, + "generator": "Ninja Multi-Config", + "binaryDir": "${sourceDir}/build-mingw", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "VCPKG_HOST_TRIPLET": "x64-mingw-static", + "VCPKG_TARGET_TRIPLET": "x64-mingw-static", + "VOXELENGINE_BUILD_TESTS": "ON" + } + }, { "name": "default-ninja-gnu-linux", "condition": { @@ -60,6 +76,11 @@ "configurePreset": "default-vs-msvc-windows", "configuration": "Debug" }, + { + "name": "default-ninja-mingw-windows", + "configurePreset": "default-ninja-mingw-windows", + "configuration": "Debug" + }, { "name": "default-ninja-gnu-linux", "configurePreset": "default-ninja-gnu-linux", diff --git a/README.md b/README.md index 1d6a462c9..e672ef541 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,26 @@ cmake --build --preset default-vs-msvc-windows > [!NOTE] > Make sure your `CMakeUserPresets.json` (if used) contains the correct `VCPKG_ROOT` path. +--- +### Building with CLion (MinGW / Ninja) + +> [!NOTE] +> Requirements: **vcpkg**, **Git**, and **CLion** (bundled with CMake, Ninja and MinGW toolchain). + +> [!WARNING] +> Avoid installing tools in paths with spaces (e.g. `Program Files`). +> This may break MinGW builds (especially `windres`). + +Install **vcpkg** manually as described in the Visual Studio section. + + +#### Configure CLion +Open the project in CLion and configure CMake profile: +```text +Settings → Build, Execution, Deployment → CMake +``` +Reload CMake project and build the engine. + --- ## Build using Docker diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d6f4c5b74..12ece0f7f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -37,6 +37,14 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows") "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/" ) else() + set(LUAJIT_PACKAGE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}") + + if(EXISTS "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit-2.1") + set(LUAJIT_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit-2.1") + else() + set(LUAJIT_INCLUDE_DIR "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit") + endif() + add_library(luajit SHARED IMPORTED) set_target_properties( luajit @@ -45,8 +53,7 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows") "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/bin/lua51.dll" IMPORTED_IMPLIB "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/lib/lua51.lib" - INTERFACE_INCLUDE_DIRECTORIES - "$ENV{VCPKG_ROOT}/packages/luajit_${VCPKG_TARGET_TRIPLET}/include/luajit" + INTERFACE_INCLUDE_DIRECTORIES "${LUAJIT_INCLUDE_DIR}" ) endif() From 3d9c8310516f29fa1d83daa7c668e3a15b62af41 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 16 Jun 2026 19:17:15 +0300 Subject: [PATCH 2/4] fix PhysicsSolver::calcCollisionNegY --- src/physics/PhysicsSolver.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/physics/PhysicsSolver.cpp b/src/physics/PhysicsSolver.cpp index 5fb959670..d2757844b 100644 --- a/src/physics/PhysicsSolver.cpp +++ b/src/physics/PhysicsSolver.cpp @@ -151,7 +151,10 @@ bool PhysicsSolver::calcCollisionNegY( continue; } auto aabb = AABB(pos - half, pos + half); - aabb.scale(glm::vec3(1.0f - E * 4.0f, 1.0f - E * 2, 1.0f - E * 4.0f)); + glm::vec3 scale(1.0f); + scale.x = 1.0f - E * 4.0f; + scale.z = 1.0f - E * 4.0f; + aabb.scale(scale); auto boxhalf = box->getHalfSize(); if (box->position.y < pos.y && box->getAABB().intersects(aabb)) { From 625a5caeccbce1d06a0ad1c743e56995d9b42343 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Tue, 16 Jun 2026 20:49:21 +0300 Subject: [PATCH 3/4] fix ceiling collision --- src/physics/PhysicsSolver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/physics/PhysicsSolver.cpp b/src/physics/PhysicsSolver.cpp index d2757844b..7ecc07f05 100644 --- a/src/physics/PhysicsSolver.cpp +++ b/src/physics/PhysicsSolver.cpp @@ -244,7 +244,7 @@ void PhysicsSolver::calcCollisions( float x = (pos.x - half.x + E) + ix; for (int iz = 0; iz <= glm::ceil((half.z - E) * 2); iz++) { float z = (pos.z - half.z + E) + iz; - float y = (pos.y + half.y + E) + 0.5f; + float y = (pos.y + half.y + E) - E; if (auto aabb = chunks.isObstacleAt(x, y, z, boxAABB)) { float newy = std::floor(y) - half.y + aabb->min().y - E; if (pos.y >= newy) { From 825f8fbf62eb58815366a7955a948ea2ab239c9c Mon Sep 17 00:00:00 2001 From: MihailRis Date: Thu, 18 Jun 2026 19:29:43 +0300 Subject: [PATCH 4/4] update windows.yml --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d13479cd3..f248b6ab6 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: include: - - os: windows-latest + - os: windows-2022 runs-on: ${{ matrix.os }}