Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement graphics/windowing separation layer #11

Draft
wants to merge 137 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
137 commits
Select commit Hold shift + click to select a range
f24cd42
Implement Material Asset type with De/Serializer functionalities
aeris170 Feb 26, 2024
84314ca
Fix material assets not getting auto-dseerialized and not getting sor…
aeris170 Feb 27, 2024
9b5f2e9
Add material creation to Editor
aeris170 Feb 27, 2024
748f0eb
Fix icon indices of meta asset infos defaulting to 0 unconditionally
aeris170 Feb 27, 2024
08584dc
Stop using icon retrieval functions in GUI
aeris170 Feb 27, 2024
c8dcb2b
Implement fancy vector widget for other primitive types
aeris170 Mar 21, 2024
67a1f7e
Fix possible -Wchanges-meaning
aeris170 Mar 21, 2024
932a2d3
Update TemplateUtilities.hpp
aeris170 Mar 21, 2024
47294a7
Implement Hashable concept
aeris170 Mar 21, 2024
d3dae07
Implement a simple graph using adj. lists
aeris170 Mar 21, 2024
73c2651
Move shader uniform extraction/storage process from Shader into Shade…
aeris170 Mar 21, 2024
7c3ed2c
Unify material uniform get/set functions
aeris170 Mar 21, 2024
911be9c
Set-up asset dependency monitoring and automatic updating of dependen…
aeris170 Mar 21, 2024
df53274
Separate asset displays into their respective files
aeris170 Mar 21, 2024
af781ed
Implement post-deserialization actions and supply a specialization fo…
aeris170 Mar 21, 2024
dd8a171
Merge branch 'master' into material-system
aeris170 Mar 21, 2024
1d3d792
Implement missing texture
aeris170 Mar 23, 2024
8e0c981
Implement sampler2D uniform support to material
aeris170 Mar 23, 2024
c347b5e
Right align Image2DButtonWidget
aeris170 Mar 24, 2024
e5d6f57
Change Resolution from a struct of ints to a struct of size_t's
aeris170 Mar 24, 2024
9f056e6
Fix destructor crash
aeris170 Mar 24, 2024
3cd5713
Update ComponentWidgets.cpp
aeris170 Mar 24, 2024
5353782
Begin implementation of Texture2D and Sampler assets/objects
aeris170 Mar 24, 2024
8b4c1fa
Update UndoRedoStack.cpp
aeris170 Mar 25, 2024
5b5db25
Implement sampler de/serializer
aeris170 Mar 25, 2024
2156e82
Remove child from parent on delete
aeris170 Mar 25, 2024
ecc41dc
End implementation of Sampler2D asset object. OpenGL/Vulkan level obj…
aeris170 Mar 26, 2024
10b535e
Separate graphics API specific data from asset data types. Implement …
aeris170 Apr 3, 2024
14f6d27
Update Assets.cpp
aeris170 Apr 3, 2024
34f0b41
Implement GPUSampler/GPUTexture
aeris170 Apr 11, 2024
b553804
Get rid of OpenGL implementation detail seeping into Editor/Launcher …
aeris170 Apr 12, 2024
d4b0fdd
Conform static member variable naming convention - fix an old todo in…
aeris170 Apr 13, 2024
bb9c635
Change TextureFormat to DataFormat
aeris170 Apr 17, 2024
093442f
Implement GPUBuffer
aeris170 Apr 17, 2024
7cf2f35
Fix gpu memory leak
aeris170 Apr 18, 2024
cfc0d77
Implement GPUVertexArray
aeris170 Apr 18, 2024
4eca55b
Update Assets.cpp
aeris170 Apr 18, 2024
4fc83f3
Make GPUBuffer copyable
aeris170 Apr 18, 2024
44df7ae
Update Texture.hpp
aeris170 Apr 18, 2024
d60a7fd
Make GPU structs lighter on release builds
aeris170 Apr 23, 2024
1ad998e
Add multisampled texture 2d support
aeris170 Apr 23, 2024
414e795
Implement GPUFrameBuffer
aeris170 Apr 24, 2024
9604c23
Add newly created GPU structs to AssetBridge
aeris170 Apr 24, 2024
1565af9
Introduce debugbreak
aeris170 May 3, 2024
7e31fa2
Ditto
aeris170 May 3, 2024
f19be9f
Remove debugbreak
aeris170 May 3, 2024
bd36e7e
Fix display error in Material Display
aeris170 May 3, 2024
1a00637
Add more texture types
aeris170 May 3, 2024
75a30a8
Fix crash if shader program is unable to link while a material refere…
aeris170 May 3, 2024
14eb32a
Change order of gitsubmodules
aeris170 May 3, 2024
0c00f56
no message
aeris170 May 3, 2024
c311ccb
no message
aeris170 May 3, 2024
d7ff7ca
Introduce debugbreak
aeris170 May 3, 2024
25a741c
Fix warnings
aeris170 May 3, 2024
ab82bf5
Add debugbreak to Engine
aeris170 May 3, 2024
c6794a8
Fix OpenGL messages
aeris170 May 3, 2024
4109a7a
Fix compiler warnings
aeris170 May 4, 2024
27f4e01
Make about section licence notices wrap to next line
aeris170 May 4, 2024
32f6899
Start converting ll gpu structures
aeris170 May 4, 2024
5f1586a
Expand graphics api
aeris170 May 10, 2024
424bb71
Change how systems are used throughout the Engine
aeris170 Jun 3, 2024
5c76499
Get rid of all llgl calls in Engine::Core
aeris170 Jun 3, 2024
09d1758
Make GPUVertexAttribLayout API agnostic
aeris170 Jun 3, 2024
f0562d5
Remove VertexArray and Buffer expositions in AssetBridge
aeris170 Jun 3, 2024
e941969
Correctly set the draw buffers of GPUFrameBuffer
aeris170 Jun 3, 2024
191dee2
Update GPUShader.hpp
aeris170 Jun 3, 2024
6a2f899
Implement GPUDescriptorSet
aeris170 Jun 3, 2024
aa30bea
Rename GPUVertexArray to GPUPipeline and add extended states
aeris170 Jun 3, 2024
22dc790
Implement BindPipeline
aeris170 Jun 3, 2024
0cfcf30
Implement BindDescriptorSet
aeris170 Jun 3, 2024
815ae83
Change Render functions and remove SetRenderArea (superseeded by Pipe…
aeris170 Jun 3, 2024
a9ad1cc
Implement helpers for Blit
aeris170 Jun 3, 2024
ef00d16
Implement Blit for Depth/Stencil/DepthStencil
aeris170 Jun 3, 2024
c2a846f
Prefer bitwise OR for bitmasks
aeris170 Jun 3, 2024
1d840c2
Prefer GPUFrameBuffer over old FrameBuffer
aeris170 Jun 3, 2024
bbc256b
Simplify Blit(Depth|Stencil|DepthStencil)
aeris170 Jun 6, 2024
3e6e0c7
Implement BlitColor
aeris170 Jun 6, 2024
8683945
Add test cube draw code
aeris170 Jun 6, 2024
eedc977
Re-Implement various systems
aeris170 Aug 29, 2024
975cf29
Wrap OpenGL4.6 MessageCallback function in #ifdef DEBUG
aeris170 Aug 29, 2024
a8101e2
Merge branch 'master' into graphics-frontend
aeris170 Aug 29, 2024
44f535f
Merge branch 'master' into graphics-frontend
aeris170 Aug 29, 2024
45170c4
Merge branch 'master' into graphics-frontend
aeris170 Aug 29, 2024
f9f5f13
Merge branch 'master' into graphics-frontend
aeris170 Aug 29, 2024
cb13720
Merge branch 'master' into graphics-frontend
aeris170 Aug 29, 2024
affcf76
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
9aafd72
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
addbbfc
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
c2ca754
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
47b8903
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
b5624f4
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
9fef63a
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
3a07df1
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
926266e
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
6eb55f8
Remove code erring in clang
aeris170 Aug 30, 2024
5ea5435
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
9b5af92
Include algorithms header
aeris170 Aug 30, 2024
2736e9e
Merge branch 'graphics-frontend' of https://github.com/aeris170/NeoDo…
aeris170 Aug 30, 2024
4ce288d
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
3bf261c
Update CMakeLists.txt
aeris170 Aug 30, 2024
730a086
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
d220c05
Merge branch 'master' into graphics-frontend
aeris170 Aug 30, 2024
1729c1f
Fix -Wnon-pod-varargs
aeris170 Aug 30, 2024
5ff6a42
Merge branch 'graphics-frontend' of https://github.com/aeris170/NeoDo…
aeris170 Aug 30, 2024
3b3c650
Fix -Wnon-pod-varargs
aeris170 Aug 30, 2024
a18b4a6
Fix -Wc++11-narrowing
aeris170 Aug 30, 2024
d403bf4
Update TextEditor.hpp
aeris170 Aug 30, 2024
efce961
Fix redefition of pipe
aeris170 Aug 30, 2024
0125ca4
#include <utility> where std::unreachable() is used
aeris170 Aug 31, 2024
872c67a
Merge branch 'master' into graphics-frontend
aeris170 Aug 31, 2024
a7f5da5
#include <memory> in Monitor.hpp
aeris170 Aug 31, 2024
7df3065
Merge branch 'master' into graphics-frontend
aeris170 Aug 31, 2024
25cbc96
Merge branch 'master' into graphics-frontend
aeris170 Aug 31, 2024
d64d4cc
Merge branch 'master' into graphics-frontend
aeris170 Aug 31, 2024
ec340fb
Fix compiler errors on GCC
aeris170 Aug 31, 2024
a5c5814
Add compiler options for GCC and Clang
aeris170 Aug 31, 2024
ff6d298
Fix errors in Clang and GCC
aeris170 Aug 31, 2024
3224671
Fix errors in GCC and eliminate warnings in Clang
aeris170 Sep 1, 2024
9c042ba
Merge branch 'master' into graphics-frontend
aeris170 Sep 1, 2024
c633b65
Fix compiler flags, MSVC warnings and disable STB warnings
aeris170 Sep 1, 2024
e97e4be
Re-add deleted function, but wrap it in pre-processor block and mark …
aeris170 Sep 1, 2024
6aedd3a
Fix Clang warnings
aeris170 Sep 2, 2024
f864059
Add compilers options for GCC and Clang
aeris170 Sep 2, 2024
542a834
Remove unused code
aeris170 Sep 2, 2024
2bc00c7
Correctly forward command line parameters to sub-script
aeris170 Sep 2, 2024
7b74abd
Fix case-sensitive include
aeris170 Sep 2, 2024
324feb1
Remove unused archaic code
aeris170 Sep 2, 2024
dfebd5e
Remove unused code and refactor ACamera and descendants
aeris170 Sep 2, 2024
0c5f80a
Fix warnings in Clang and disable warnings in external code
aeris170 Sep 2, 2024
f8990a9
Ditto
aeris170 Sep 2, 2024
15c9d09
Update EZEasing
aeris170 Sep 2, 2024
dd1327d
Merge branch 'master' into graphics-frontend
aeris170 Sep 2, 2024
7643424
Update EZEasing
aeris170 Sep 2, 2024
21c0ff3
Update imguizmo package name
aeris170 Sep 4, 2024
cd3e81c
Fix launching of Editor not propagating arguments under Linux
aeris170 Sep 5, 2024
234a6aa
Create script to install GCC-14 headers and Clang for Ubuntu
aeris170 Sep 5, 2024
745f6f6
Update imgInspect
aeris170 Sep 5, 2024
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
21 changes: 12 additions & 9 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
[submodule "Submodules/angelscript_addons_impl"]
path = Submodules/angelscript_addons_impl
url = https://github.com/NeoDoa-Collective/angelscript_addons_impl
[submodule "Submodules/detector"]
path = Submodules/detector
url = https://github.com/NeoDoa-Collective/detector
[submodule "Submodules/EZEasing"]
path = Submodules/EZEasing
url = https://github.com/NeoDoa-Collective/EZEasing
[submodule "Submodules/IconFontCppHeaders"]
path = Submodules/IconFontCppHeaders
url = https://github.com/NeoDoa-Collective/IconFontCppHeaders
[submodule "Submodules/detector"]
path = Submodules/detector
url = https://github.com/NeoDoa-Collective/detector
[submodule "Submodules/libtinyfiledialogs"]
path = Submodules/libtinyfiledialogs
url = https://github.com/NeoDoa-Collective/libtinyfiledialogs
[submodule "Submodules/imgInspect"]
path = Submodules/imgInspect
url = https://github.com/NeoDoa-Collective/imgInspect
[submodule "Submodules/libtinyfiledialogs"]
path = Submodules/libtinyfiledialogs
url = https://github.com/NeoDoa-Collective/libtinyfiledialogs
[submodule "Submodules/stb_impl"]
path = Submodules/stb_impl
url = https://github.com/NeoDoa-Collective/stb_impl
[submodule "Submodules/angelscript_addons_impl"]
path = Submodules/angelscript_addons_impl
url = https://github.com/NeoDoa-Collective/angelscript_addons_impl
[submodule "Submodules/debugbreak"]
path = Submodules/debugbreak
url = https://github.com/NeoDoa-Collective/debugbreak
45 changes: 39 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,36 +1,68 @@
cmake_minimum_required(VERSION 3.26.4)

set(VCPKG_DIR "${CMAKE_CURRENT_SOURCE_DIR}/vcpkg" CACHE STRING "vcpkg dir")

function(copy_folder_post_build folder)
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/${folder}
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$<CONFIG>/${folder})
endfunction()

if (MSVC AND WIN32 AND NOT MSVC_VERSION VERSION_LESS 142)
add_link_option($<$<CONFIG:Debug>:/INCREMENTAL>)
add_compile_option($<$<CONFIG:Debug>:/ZI>)
endif()

set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Editor)
set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/vcpkg/scripts/buildsystems/vcpkg.cmake)
set(CMAKE_TOOLCHAIN_FILE ${VCPKG_DIR}/scripts/buildsystems/vcpkg.cmake)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_COMPILE_WARNING_AS_ERROR OFF)

project(NeoDoa)

message("Generating for ${CMAKE_CXX_COMPILER_ID}")
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
if(WIN32 AND NOT MSVC_VERSION VERSION_LESS 142)
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
add_compile_options(/W4)
add_compile_options(/wd4456) # declaration of 'LOCAL_VARIABLE_NAME' hides previous local declaration
add_compile_options(/wd4457) # declaration of 'LOCAL_VARIABLE_NAME' hides function parameter
add_compile_options(/wd4458) # declaration of 'FUNCTION_PARAMETER_NAME' hides class member
add_compile_options(/wd4459) # declaration of 'FUNCTION_PARAMETER_NAME' hides global declaration
add_compile_options($<$<CONFIG:Debug>:/ZI>)
add_link_options($<$<CONFIG:Debug>:/INCREMENTAL>)
endif()
else()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(-fmax-errors=0)
add_compile_options(-Wall)
add_compile_options(-Wextra)
add_compile_options(-Wpedantic)
add_compile_options(-Wno-changes-meaning)
endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_compile_options(-ferror-limit=0)
add_compile_options(-Wall)
add_compile_options(-Wextra)
add_compile_options(-Wpedantic)
add_compile_options(-Wno-invalid-utf8)
add_compile_options(-Wno-braced-scalar-init)
add_compile_options(-Wno-missing-field-initializers)
add_compile_options(-Wno-gnu-zero-variadic-macro-arguments)
endif()
endif()

add_compile_options("$<$<CONFIG:DEBUG>:-DDEBUG>")
add_compile_options("$<$<CONFIG:DEBUG>:-D_DEBUG>")
add_compile_options("$<$<CONFIG:RELEASE>:-DNDEBUG>")
add_compile_options("$<$<CONFIG:RELEASE>:-D_NDEBUG>")
add_compile_definitions(ASSIMP_BUILD_ZLIB=ON)
add_compile_definitions(IMGUI_DEFINE_MATH_OPERATORS)
add_compile_definitions(GLFW_INCLUDE_NONE)
add_compile_definitions(GLM_ENABLE_EXPERIMENTAL)
add_compile_definitions(OPENGL_4_6_SUPPORT)

add_subdirectory(Submodules/angelscript_addons_impl)
add_subdirectory(Submodules/debugbreak)
add_subdirectory(Submodules/detector)
add_subdirectory(Submodules/EZEasing)
add_subdirectory(Submodules/IconFontCppHeaders)
Expand All @@ -42,6 +74,7 @@ add_subdirectory(Editor)
add_subdirectory(Launcher)

set_target_properties(angelscript_addons_impl PROPERTIES FOLDER Submodules)
set_target_properties(debugbreak PROPERTIES FOLDER Submodules)
set_target_properties(detector PROPERTIES FOLDER Submodules)
set_target_properties(EZEasing PROPERTIES FOLDER Submodules)
set_target_properties(IconFontCppHeaders PROPERTIES FOLDER Submodules)
Expand Down
69 changes: 69 additions & 0 deletions Editor/AssetFilter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#include <Editor/AssetFilter.hpp>

#include <Engine/Assets.hpp>

bool AssetFilters::IncludeSceneAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
AssetHandle handle = assets.FindAsset(assetID);
assert(handle.HasValue());
return handle->IsScene();
}
bool AssetFilters::IncludeComponentAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
AssetHandle handle = assets.FindAsset(assetID);
assert(handle.HasValue());
return handle->IsComponentDefinition();
}
bool AssetFilters::IncludeSamplerAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
AssetHandle handle = assets.FindAsset(assetID);
assert(handle.HasValue());
return handle->IsSampler();
}
bool AssetFilters::IncludeTextureAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
AssetHandle handle = assets.FindAsset(assetID);
assert(handle.HasValue());
return handle->IsTexture();
}
bool AssetFilters::IncludeShaderAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
AssetHandle handle = assets.FindAsset(assetID);
assert(handle.HasValue());
return handle->IsShader();
}
bool AssetFilters::IncludeShaderProgramAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
AssetHandle handle = assets.FindAsset(assetID);
assert(handle.HasValue());
return handle->IsShaderProgram();
}
bool AssetFilters::IncludeMaterialAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
AssetHandle handle = assets.FindAsset(assetID);
assert(handle.HasValue());
return handle->IsMaterial();
}
bool AssetFilters::IncludeModelAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
AssetHandle handle = assets.FindAsset(assetID);
assert(handle.HasValue());
return handle->IsModel();
}

bool AssetFilters::ExcludeSceneAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
return !IncludeSceneAssets()(assetID, assets);
}
bool AssetFilters::ExcludeComponentAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
return !IncludeComponentAssets()(assetID, assets);
}
bool AssetFilters::ExcludeSamplerAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
return !IncludeSamplerAssets()(assetID, assets);
}
bool AssetFilters::ExcludeTextureAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
return !IncludeTextureAssets()(assetID, assets);
}
bool AssetFilters::ExcludeShaderAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
return !IncludeShaderAssets()(assetID, assets);
}
bool AssetFilters::ExcludeShaderProgramAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
return !IncludeShaderProgramAssets()(assetID, assets);
}
bool AssetFilters::ExcludeMaterialAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
return !IncludeMaterialAssets()(assetID, assets);
}
bool AssetFilters::ExcludeModelAssets::operator()(UUID assetID, const Assets& assets) const noexcept {
return !IncludeModelAssets()(assetID, assets);
}
90 changes: 90 additions & 0 deletions Editor/AssetFilter.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#pragma once

#include <concepts>
#include <functional>

#include <Engine/UUID.hpp>

struct Assets;

template<typename Callable>
concept AssetFilter = requires (Callable& c, UUID assetID, const Assets& assets) {
{ std::invoke(c, assetID, assets) } -> std::convertible_to<bool>;
};

template<AssetFilter T1, AssetFilter T2>
auto operator|(const T1& f1, const T2& f2) {
return [f1, f2](UUID assetID, const Assets& assets) {
return std::invoke(f1, assetID, assets) || std::invoke(f2, assetID, assets);
};
}

namespace AssetFilters {
struct IncludeSceneAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct IncludeComponentAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct IncludeSamplerAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct IncludeTextureAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct IncludeShaderAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct IncludeShaderProgramAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct IncludeMaterialAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct IncludeModelAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};

struct ExcludeSceneAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct ExcludeComponentAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct ExcludeSamplerAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct ExcludeTextureAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct ExcludeShaderAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct ExcludeShaderProgramAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct ExcludeMaterialAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
struct ExcludeModelAssets {
bool operator()(UUID assetID, const Assets& assets) const noexcept;
};
}

static_assert(AssetFilter<AssetFilters::IncludeSceneAssets >);
static_assert(AssetFilter<AssetFilters::IncludeComponentAssets >);
static_assert(AssetFilter<AssetFilters::IncludeSamplerAssets >);
static_assert(AssetFilter<AssetFilters::IncludeTextureAssets >);
static_assert(AssetFilter<AssetFilters::IncludeShaderAssets >);
static_assert(AssetFilter<AssetFilters::IncludeShaderProgramAssets>);
static_assert(AssetFilter<AssetFilters::IncludeMaterialAssets >);
static_assert(AssetFilter<AssetFilters::IncludeModelAssets >);

static_assert(AssetFilter<AssetFilters::ExcludeSceneAssets >);
static_assert(AssetFilter<AssetFilters::ExcludeComponentAssets >);
static_assert(AssetFilter<AssetFilters::ExcludeSamplerAssets >);
static_assert(AssetFilter<AssetFilters::ExcludeTextureAssets >);
static_assert(AssetFilter<AssetFilters::ExcludeShaderAssets >);
static_assert(AssetFilter<AssetFilters::ExcludeShaderProgramAssets>);
static_assert(AssetFilter<AssetFilters::ExcludeMaterialAssets >);
static_assert(AssetFilter<AssetFilters::ExcludeModelAssets >);
16 changes: 11 additions & 5 deletions Editor/AssetManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ AssetManager::AssetManager(GUI& gui) noexcept :
}

bool AssetManager::Begin() {
const GUI& gui = this->gui;
[[maybe_unused]] const GUI& gui = this->gui;
ImGui::PushID(WindowStrings::AssetManagerWindowName);
bool visible = ImGui::Begin(WindowStrings::AssetManagerWindowTitleID, nullptr, ImGuiWindowFlags_MenuBar);

Expand Down Expand Up @@ -399,7 +399,7 @@ void AssetManager::RenderSelectedFolderContent() {

void AssetManager::RenderContextMenu() {
GUI& gui = this->gui.get();
Assets& assets = *gui.CORE->GetAssets();
[[maybe_unused]] Assets& assets = *gui.CORE->GetAssets();

bool isDisabled = !hasContent;
if (isDisabled) { ImGui::BeginDisabled(); }
Expand Down Expand Up @@ -464,7 +464,14 @@ void AssetManager::RenderContextMenu() {
if (ImGui::MenuItem(shaderProgram)) {
gui.ShowNewShaderProgramAssetModal(*currentFolder);
}

static constexpr auto material = cat(FileIcons::MATERIAL_ICON, " ", "Material");
if (ImGui::MenuItem(material)) {
gui.ShowNewMaterialAssetModal(*currentFolder);
}
static constexpr auto sampler = cat(FileIcons::SAMPLER_ICON, " ", "Sampler");
if (ImGui::MenuItem(sampler)) {
gui.ShowNewSamplerAssetModal(*currentFolder);
}
ImGui::EndMenu();
}

Expand Down Expand Up @@ -515,7 +522,6 @@ void AssetManager::SetCurrentFolder(FNode* folder) {
}

if (!folder->IsDirectory()) { return; }
GUI& gui = this->gui;

if (folder == root || folder == currentFolder->ParentNode()) {
SetSelectedNode(nullptr);
Expand Down Expand Up @@ -545,7 +551,7 @@ bool AssetManager::FileFilter::CheckVisibility(const FNode& file) const {
return true;
}

void AssetManager::OnProjectLoaded(Project& project) {
void AssetManager::OnProjectLoaded([[maybe_unused]] Project& project) {
hasContent = true;
assets = gui.get().CORE->GetAssets().get();
root = &assets->Root();
Expand Down
22 changes: 19 additions & 3 deletions Editor/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.26.4)

project(Editor LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(Editor)

Expand All @@ -12,12 +12,12 @@ target_link_libraries(Editor PUBLIC Engine)

find_package(argparse CONFIG REQUIRED)
find_package(cppzmq CONFIG REQUIRED)
find_package(unofficial-imguizmo CONFIG REQUIRED)
find_package(imguizmo CONFIG REQUIRED)
find_package(unofficial-lunasvg CONFIG REQUIRED)

target_link_libraries(Editor PUBLIC argparse::argparse)
target_link_libraries(Editor PUBLIC cppzmq cppzmq-static)
target_link_libraries(Editor PUBLIC unofficial::imguizmo::imguizmo)
target_link_libraries(Editor PUBLIC imguizmo::imguizmo)
target_link_libraries(Editor PUBLIC unofficial::lunasvg::lunasvg)

set(GROUP_LIST
Expand Down Expand Up @@ -46,6 +46,8 @@ set(GROUP_LIST
"Language/CodeGenerator.cpp"
"Language/CodeGenerator.hpp"

"UI/AssetFilter/AssetFilter.cpp"
"UI/AssetFilter/AssetFilter.hpp"
"UI/Colors/Colors.hpp"
"UI/Components/ComponentUI.cpp"
"UI/Components/ComponentUI.hpp"
Expand Down Expand Up @@ -92,6 +94,20 @@ set(GROUP_LIST
"UI/GUI/Modals/NewAssetModal.hpp"
"UI/GUI/Observer/Observer.cpp"
"UI/GUI/Observer/Observer.hpp"
"UI/GUI/Observer/Displays/DisplayTargetRenderer.cpp"
"UI/GUI/Observer/Displays/DisplayTargetRenderer.hpp"
"UI/GUI/Observer/Displays/SceneDisplay/SceneDisplay.cpp"
"UI/GUI/Observer/Displays/SceneDisplay/SceneDisplay.hpp"
"UI/GUI/Observer/Displays/ComponentDefinitionDisplay/ComponentDefinitionDisplay.cpp"
"UI/GUI/Observer/Displays/ComponentDefinitionDisplay/ComponentDefinitionDisplay.hpp"
"UI/GUI/Observer/Displays/SamplerDisplay/SamplerDisplay.cpp"
"UI/GUI/Observer/Displays/SamplerDisplay/SamplerDisplay.hpp"
"UI/GUI/Observer/Displays/ShaderDisplay/ShaderDisplay.cpp"
"UI/GUI/Observer/Displays/ShaderDisplay/ShaderDisplay.hpp"
"UI/GUI/Observer/Displays/ShaderProgramDisplay/ShaderProgramDisplay.cpp"
"UI/GUI/Observer/Displays/ShaderProgramDisplay/ShaderProgramDisplay.hpp"
"UI/GUI/Observer/Displays/MaterialDisplay/MaterialDisplay.cpp"
"UI/GUI/Observer/Displays/MaterialDisplay/MaterialDisplay.hpp"
"UI/GUI/SceneHierarchy/SceneHierarchy.cpp"
"UI/GUI/SceneHierarchy/SceneHierarchy.hpp"
"UI/GUI/SceneSettings/SceneSettings.cpp"
Expand Down
Loading
Loading