Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 3 additions & 9 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
[submodule "src/Engine/vendor/debugbreak"]
path = src/Engine/vendor/debugbreak
url = https://github.com/scottt/debugbreak.git
[submodule "src/Engine/vendor/glm"]
path = src/Engine/vendor/glm
url = https://github.com/g-truc/glm
Expand All @@ -10,9 +7,6 @@
[submodule "src/tests/vendor/gtest"]
path = src/tests/vendor/gtest
url = https://github.com/google/googletest
[submodule "src/Engine/vendor/gsl"]
path = src/Engine/vendor/gsl
url = https://github.com/microsoft/GSL.git
[submodule "src/Engine/vendor/entt"]
path = src/Engine/vendor/entt
url = https://github.com/skypjack/entt.git
Expand Down Expand Up @@ -50,6 +44,6 @@
[submodule "src/Engine/vendor/msdfgen/msdf-atlas-gen"]
path = src/Engine/vendor/msdfgen/msdf-atlas-gen
url = https://github.com/Chlumsky/msdf-atlas-gen
[submodule "src/Editor/vendor/ImGuizmo/imguizmo"]
path = src/Editor/vendor/ImGuizmo/imguizmo
url = https://github.com/CedricGuillemet/ImGuizmo
[submodule "src/Engine/vendor/ImGuizmo/imguizmo"]
path = src/Engine/vendor/ImGuizmo/imguizmo
url = https://github.com/CedricGuillemet/ImGuizmo.git
9 changes: 8 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@ option(BEE_BUILD_SANDBOX OFF)
option(BEE_BUILD_LOC_TOOL OFF)
option(BEE_BUILD_EDITOR ON)
option(BEE_BUILD_RUNTIME ON)
option(BEE_BUILD_BEEENGINE ON)
option(BEE_NO_DOTNET OFF "Disable dotnet and C# scripting")

message("Build BeeEngine library? ${BEE_BUILD_BEEENGINE}")
message("Build Tests? ${BEE_BUILD_TESTS}")
message("Build Sandbox? ${BEE_BUILD_SANDBOX}")
message("Build Localization Tool? ${BEE_BUILD_LOC_TOOL}")
Expand Down Expand Up @@ -109,7 +112,11 @@ include(cmake/StandardProjectSettings.cmake)
#include(cmake/CompilerWarnings.cmake)
#set_project_warnings(project_warnings)

add_subdirectory(src/Engine)
include(cmake/set_compile_definitions.cmake)

if(${BEE_BUILD_BEEENGINE})
add_subdirectory(src/Engine)
endif()
if(${BEE_BUILD_SANDBOX})
add_subdirectory(src/Sandbox2D)
endif()
Expand Down
31 changes: 31 additions & 0 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,39 @@
"CMAKE_BUILD_WITH_INSTALL_RPATH": "ON",
"BEE_USE_VCPKG": "OFF",
"NETHOST_LIB": "$env{NETHOST_LIB}",
"BEE_BUILD_BEEENGINE": "ON",
"BEE_BUILD_EDITOR": "ON",
"BEE_BUILD_LOC_TOOL": "ON",
"BEE_BUILD_RUNTIME": "ON",
"BEE_BUILD_TESTS": "ON",
"BEE_USE_SYSTEM_SDL3": "ON"
},
"vendor": {},
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "Release-NixOS",
"displayName": "Release-NixOS Config",
"description": "Release build using Ninja generator",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/Release-NixOS",
"installDir": "${sourceDir}/install/Release-NixOS",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++",
"CMAKE_BUILD_WITH_INSTALL_RPATH": "ON",
"BEE_USE_VCPKG": "OFF",
"NETHOST_LIB": "$env{NETHOST_LIB}",
"BEE_BUILD_BEEENGINE": "ON",
"BEE_BUILD_EDITOR": "OFF",
"BEE_BUILD_LOC_TOOL": "OFF",
"BEE_BUILD_RUNTIME": "OFF",
"BEE_BUILD_TESTS": "OFF",
"BEE_USE_SYSTEM_SDL3": "ON"
},
"vendor": {},
Expand Down
126 changes: 126 additions & 0 deletions cmake/set_compile_definitions.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
function(DesktopPlatformsOnly)
add_compile_definitions(DESKTOP_PLATFORM)
endfunction(DesktopPlatformsOnly)

function(MobilePlatformsOnly)
add_compile_definitions(MOBILE_PLATFORM)
endfunction(MobilePlatformsOnly)

if(IOS)
# Covers iOS implementation
set(BEE_COMPILE_WEBGPU OFF)
set(BEE_COMPILE_VULKAN ON)
set(BEE_COMPILE_SDL ON)
elseif(APPLE)
# Covers macOS implementation
DesktopPlatformsOnly()
set(BEE_COMPILE_WEBGPU OFF)
set(BEE_COMPILE_VULKAN ON)
set(BEE_COMPILE_SDL ON)
elseif(ANDROID)
# Covers Android implementation
MobilePlatformsOnly()
set(BEE_COMPILE_WEBGPU OFF)
set(BEE_COMPILE_VULKAN ON)
set(BEE_COMPILE_SDL ON)
elseif(WIN32)
# Covers Windows implementation
DesktopPlatformsOnly()
set(BEE_COMPILE_WEBGPU OFF)
set(BEE_COMPILE_VULKAN ON)
set(BEE_COMPILE_SDL OFF)
elseif (UNIX AND NOT APPLE)
# Covers Linux implementation
DesktopPlatformsOnly()
set(BEE_COMPILE_WEBGPU OFF)
set(BEE_COMPILE_VULKAN ON)
set(BEE_COMPILE_SDL ON)
endif()

function(DesktopPlatformsOnlyPostTarget)


endfunction(DesktopPlatformsOnlyPostTarget)

if(${BEE_COMPILE_WEBGPU})
include(${CMAKE_CURRENT_LIST_DIR}/cmake/InstallWebGPU.cmake)
endif ()

if(IOS)
# Covers iOS implementation
add_compile_definitions(IOS)
elseif(APPLE)
# Covers macOS implementation
add_compile_definitions(MACOS)
DesktopPlatformsOnlyPostTarget()
elseif(ANDROID)
# Covers Android implementation
add_compile_definitions(ANDROID)
elseif(WIN32)
# Covers Windows implementation
add_compile_definitions(WINDOWS)
DesktopPlatformsOnlyPostTarget()
elseif (UNIX AND NOT APPLE)
# Covers Linux implementation
add_compile_definitions(LINUX)
DesktopPlatformsOnlyPostTarget()
endif()

if(${BEE_COMPILE_WEBGPU})
message("Compiling WebGPU")
add_compile_definitions(BEE_COMPILE_WEBGPU)
endif()

if (${BEE_COMPILE_SDL})
message("Compiling with SDL3")
add_compile_definitions(BEE_COMPILE_SDL)
endif()

if(${BEE_COMPILE_VULKAN})
message("Compiling with Vulkan")
add_compile_definitions(BEE_COMPILE_VULKAN)
endif()

if (${BEE_USE_VCPKG})
function(extract_vcpkg_path ICU_LIB_LIST RESULT_VAR)
list(GET ICU_LIB_LIST 0 ICU_LIB_PATH)
string(REGEX REPLACE "(.*/vcpkg_installed/[^/]+).*$" "\\1" EXTRACTED_PATH ${ICU_LIB_PATH})
set(${RESULT_VAR} ${EXTRACTED_PATH} PARENT_SCOPE)
endfunction()

extract_vcpkg_path("${ICU_LIBRARIES}" ICU_VCPKG_PATH)
set(ICU_INCLUDE_DIR ${ICU_VCPKG_PATH}/include)
endif()

add_compile_definitions(GLM_FORCE_DEPTH_ZERO_TO_ONE)
add_compile_definitions(GLM_FORCE_LEFT_HANDED)

add_compile_definitions($<$<CONFIG:Debug>:DEBUG>)

add_compile_definitions(BEE_ENABLE_CHECKS)

add_compile_definitions($<$<CONFIG:Debug>:BEE_ENABLE_ASSERTS>)
add_compile_definitions($<$<CONFIG:Release>:BEE_ENABLE_ASSERTS>)

add_compile_definitions($<$<CONFIG:Debug>:BEE_ENABLE_PROFILING>)
add_compile_definitions($<$<CONFIG:Release>:BEE_ENABLE_PROFILING>) # should be disabled in the future by default?

add_compile_definitions($<$<CONFIG:Debug>:BEE_VULKAN_ENABLE_VALIDATION_LAYERS>)

add_compile_definitions($<$<CONFIG:Release>:RELEASE>)

set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "Publish")

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
#add_compile_options(-O0)
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Release")
add_compile_options(-O3)
endif()
if(CMAKE_BUILD_TYPE STREQUAL "Publish")
add_compile_options(-O3)
endif()

if(NOT ${BEE_NO_DOTNET})
add_compile_definitions(BEE_ENABLE_SCRIPTING)
endif()
15 changes: 10 additions & 5 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,30 @@
outputs = { self, nixpkgs, ... }@inputs: let
inherit (nixpkgs) lib;
eachSystem = lib.genAttrs [ "x86_64-linux" "aarch64-linux" ];
defaultOverlay = system:
final: _prev: {
beeengineeditor = self.packages.${system}.BeeEngineEditor;
beelocalization = self.packages.${system}.BeeLocalization;
beeengine = self.packages.${system}.BeeEngine;
};
pkgsFor = eachSystem (system:
import nixpkgs {
localSystem = system;
overlays = with self.overlays; [
(defaultOverlay system)
];
});
pkgsCrossFor = eachSystem (system: crossSystem:
import nixpkgs {
localSystem = system;
inherit crossSystem;
overlays = with self.overlays; [
(defaultOverlay system)
];
});
src = self;
in {
overlays = eachSystem (system:
final: _prev: {
beeengineeditor = self.packages.${system}.BeeEngineEditor;
beelocalization = self.packages.${system}.BeeLocalization;
});
overlays = eachSystem defaultOverlay;
devShells = eachSystem (system: let
pkgs = pkgsFor.${system};
buildInputsFile = (import ./nix/buildInputs.nix {inherit pkgs;});
Expand All @@ -52,6 +56,7 @@
BeeEngineEditor-Debug = pkgs.callPackage ./nix/editor.nix { inherit src; inherit buildInputsFile; cmakeBuildType = "Debug"; };
BeeLocalization = pkgs.callPackage ./nix/localizationtool.nix { inherit src; inherit buildInputsFile; };
BeeLocalization-Debug = pkgs.callPackage ./nix/localizationtool.nix { inherit src; inherit buildInputsFile; cmakeBuildType = "Debug"; };
BeeEngine = pkgs.callPackage ./nix/libbeeengine.nix { inherit src; inherit buildInputsFile; };
});
};
}
2 changes: 2 additions & 0 deletions nix/editor.nix
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,11 @@ let
"-DBEE_USE_VCPKG=OFF"
"-DBEE_BUILD_TESTS=OFF"
"-DBEE_BUILD_EDITOR=ON"
"-DBEE_BUILD_BEEENGINE=ON"
"-DNETHOST_LIB=${nethost-lib-path}"
"-DBEE_USE_SYSTEM_SDL3=ON"
];
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://github.com/KyleKrein/BeeEngine";
description = ''
Expand Down
40 changes: 40 additions & 0 deletions nix/libbeeengine.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
lib,
pkgs,
src,
buildInputsFile,
cmakeBuildType ? "Release"
}:
assert pkgs.lib.assertMsg (src.submodules == true)
"Unable to build without submodules. Append '?submodules=1#' to the URL.";
let
nethost-lib-path = (import ./unofficial-nethost.nix {inherit pkgs; inherit lib;}).nethost-lib-path;
in
pkgs.gcc14Stdenv.mkDerivation rec {
pname = "BeeEngine";
version = "1.0.0-alpha.1.2";

inherit src;

nativeBuildInputs = buildInputsFile.dotnetNativeBuildInputs;
buildInputs = buildInputsFile.buildInputs;

cmakeFlags = [
"-DCMAKE_BUILD_TYPE=${cmakeBuildType}"
"-DBEE_USE_VCPKG=OFF"
"-DBEE_BUILD_TESTS=OFF"
"-DBEE_BUILD_BEEENGINE=ON"
"-DNETHOST_LIB=${nethost-lib-path}"
"-DBEE_USE_SYSTEM_SDL3=ON"
];
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://github.com/KyleKrein/BeeEngine";
description = ''
BeeEngine library that can be used to build other native C++ apps.
'';
licencse = licenses.mit;
platforms = with platforms; linux ++ darwin;
maintainers = [ maintainers.KyleKrein ];
};
}
2 changes: 2 additions & 0 deletions nix/localizationtool.nix
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,12 @@ tool = pkgs.gcc14Stdenv.mkDerivation rec {
"-DCMAKE_BUILD_TYPE=${cmakeBuildType}"
"-DBEE_USE_VCPKG=OFF"
"-DBEE_BUILD_TESTS=OFF"
"-DBEE_BUILD_BEEENGINE=ON"
"-DBEE_BUILD_LOC_TOOL=ON"
"-DBEE_USE_SYSTEM_SDL3=ON"
"-DBEE_NO_DOTNET=ON"
];
enableParallelBuilding = true;
meta = with lib; {
homepage = "https://github.com/KyleKrein/BeeEngine";
description = ''
Expand Down
26 changes: 16 additions & 10 deletions src/Editor/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,28 @@ add_executable(BeeEngineEditor Start.cpp src/EditorApplication.cpp src/EditorApp
src/Panels/ProjectSettings.cpp)
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 23)

add_subdirectory(vendor/ImGuizmo)
if(NOT ${BEE_BUILD_BEEENGINE})
find_library(BeeEngine_LIB BeeEngine REQUIRED)
message("Found BeeEngine: ${BeeEngine_LIB}")
get_filename_component(BeeEngineLibDir "${BeeEngine_LIB}" DIRECTORY)
get_filename_component(BeeEnginePrefix "${BeeEngineLibDir}" DIRECTORY)
set(BEE_CSHARP_LIBRARY_PATH ${BeeEnginePrefix}/share/BeeEngine/libs)
add_library(BeeEngine STATIC IMPORTED GLOBAL)
set_target_properties(BeeEngine PROPERTIES
IMPORTED_LOCATION ${BeeEngine_LIB}
INTERFACE_INCLUDE_DIRECTORIES ${BeeEnginePrefix}/include/BeeEngine
)
set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -Wl,--start-group -Wl,--whole-archive <LINK_LIBRARIES> -Wl,--no-whole-archive -Wl,--end-group")

endif()

target_include_directories(BeeEngineEditor
PUBLIC ../Engine/include/
PRIVATE ../Engine/vendor/
PRIVATE vendor/FileWatcher
PUBLIC src
PUBLIC ${ImGuizmo_SOURCE_DIR}
)

target_link_libraries(BeeEngineEditor
PUBLIC BeeEngine::WithScripting
PUBLIC ImGuizmo
PUBLIC BeeEngine
)
add_compile_definitions(BEE_ENABLE_CHECKS)
add_compile_definitions($<$<CONFIG:Debug>:BEE_ENABLE_PROFILING>)
add_compile_definitions($<$<CONFIG:Release>:BEE_ENABLE_PROFILING>)
file(COPY ../Engine/Assets/Shaders DESTINATION ${CMAKE_CURRENT_BINARY_DIR})

configure_file(${BEE_CSHARP_LIBRARY_PATH}/BeeEngine.Core.dll ${CMAKE_CURRENT_BINARY_DIR}/libs/BeeEngine.Core.dll COPYONLY)
Expand Down
6 changes: 3 additions & 3 deletions src/Editor/Start.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@
// Created by alexl on 26.05.2023.
//

#include "BeeEngine.h"
#include "Core/Move.h"
#include <BeeEngine.h>
#include <Core/Move.h>
#include "src/ConfigFile.h"
#include "src/EditorApplication.h"

gsl::not_null<BeeEngine::Application*> BeeEngine::CreateApplication(const BeeEngine::ApplicationArgs& args)
BeeEngine::Application* BeeEngine::CreateApplication(const BeeEngine::ApplicationArgs& args)
{
Editor::ConfigFile config = Editor::ConfigFile::Load(Editor::ConfigFile::DefaultPath());
return new BeeEngine::Editor::EditorApplication(BeeMove(config));
Expand Down
2 changes: 1 addition & 1 deletion src/Editor/src/AssetScanner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//

#include "AssetScanner.h"
#include "Core/ResourceManager.h"
#include <Core/ResourceManager.h>

namespace BeeEngine::Editor
{
Expand Down
Loading