Ajout du schéma JSON pour lecture de scènes + ajout des composants son avec OpenAL + composants scripts et libraire de script + ajout de librairies pour le son dr_libs et openAL + librairie schéma json validator + correctifs divers d'oubli et autres + entity et components factory fonctionnelles + rework API graphique et systèmes mergés dans Systèmes (audio physique, etc...) + rework sauvegarde des resources de façon unique pour éviter les reload (correctifs associés)

This commit is contained in:
Tom Ray
2026-04-17 21:00:35 +02:00
parent f49b050e85
commit 595f28ecda
167 changed files with 32352 additions and 2229 deletions
+81 -26
View File
@@ -1,6 +1,8 @@
# Nous voulons un cmake "récent" pour utiliser les dernières fonctionnalités.
cmake_minimum_required(VERSION 3.20)
set (CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti -fno-exceptions")
# Nom du projet.
set(PROJECT CosmicEngine)
project(${PROJECT})
@@ -11,6 +13,11 @@ file(GLOB_RECURSE
src/Engine/*
)
file(GLOB_RECURSE
SRCS_SCRIPTS
src/Modules/Scripts/*
)
file(GLOB_RECURSE
SRCS
src/main.cpp)
@@ -20,6 +27,12 @@ file(GLOB_RECURSE
test/*
)
file(GLOB_RECURSE
HEADERS_ENGINE
src/Engine/*.h
src/Engine/*.hpp
)
# ---------- Inclusion des packages sous windows -----------
if(WIN32)
endif()
@@ -235,13 +248,25 @@ if(UNIX)
# OpenAL Lib gérer le son.
# Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
# set(OPENAL_DIR ./lib/CMake/Linux)
# find_package(OPENAL REQUIRED)
find_package(OpenAL REQUIRED)
# if(OPENAL_FOUND)
# message("lib OpenAL Trouvé")
# else()
# message("lib OpenAL Introuvable")
# endif()
if(OpenAL_FOUND)
message("lib OpenAL Trouvé")
else()
message("lib OpenAL Introuvable")
endif()
# ---------------------------------------
# ------- Inclusion de dr_libs --------
# dr_libs Lib pour gestion du son en mode header only.
set(drlibs_DIR ./lib/CMake/Linux)
find_package(drlibs REQUIRED)
if(drlibs_FOUND)
message("lib dr_libs Trouvé")
else()
message("lib dr_libs Introuvable")
endif()
# ---------------------------------------
# ---------- Inclusion de Catch2-----------
@@ -335,8 +360,7 @@ endif()
# ---------------------------------------
add_library(spirv-reflect STATIC ${SPIRV_EXT_SRC})
# ------- Inclusion de JSONfMC++ --------
# JSONfMC++ Lib pour gestion fichier JSON, en mode header only.
# ------- Inclusion de VulkanAllocator --------
set(VulkanMemoryAllocatorlib_DIR ./lib/CMake/Linux)
find_package(VulkanMemoryAllocatorlib REQUIRED)
@@ -351,6 +375,7 @@ endif()
# JoltPhysics Lib Moteur physique.
set(JoltPhysicslib_DIR ./lib/CMake/Linux)
# # Les autre plateforme (Linux...) ont un installateur de paquet, la lib se trouve toute seul.
find_package(JoltPhysicslib REQUIRED)
if(JoltPhysicslib_FOUND)
message("lib JOLT Trouvé")
@@ -415,9 +440,23 @@ function(compile_slang_shaders SLANG_FILES OUTPUT_DIR)
endfunction()
add_library(Engine STATIC ${SRCS_ENGINE} ${SRCS_EXTERNAL_GLAD})
add_library(Engine STATIC ${SRCS_ENGINE} ${SRCS_EXTERNAL_GLAD} ${ENGINE_HEADERS})
target_include_directories(Engine
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src/Engine
)
add_library(ScriptModule SHARED ${SRCS_SCRIPTS})
target_include_directories(ScriptModule PRIVATE ${HEADERS_ENGINE})
set_property(TARGET Engine PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
add_executable(${PROJECT} ${SRCS})
set_property(TARGET ${PROJECT} PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
add_executable(CosmicTest ${SRCS_TESTS})
set_property(TARGET CosmicTest PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
set_property(TARGET ScriptModule PROPERTY INTERPROCEDURAL_OPTIMIZATION_RELEASE ON)
# On indique que l'on veut un exécutable nommé PROJECT compilé à partir des fichiers décrits par les variables SRCS et HEADERS.
file(GLOB_RECURSE SLANG_SHADERS "${PATH_TO_SHADER_BUILD_TYPE}/assets/shaders/slang/*.slang")
@@ -434,6 +473,7 @@ endif()
add_dependencies(${PROJECT} Engine)
add_dependencies(Engine CompileSlangShaders)
add_dependencies(ScriptModule Engine)
target_link_libraries(CosmicTest PRIVATE Catch2::Catch2WithMain Engine)
@@ -467,9 +507,28 @@ include_directories(${JOLT_INCLUDE_DIRS})
# SNDFILE
#include_directories(${SNDFILE_INCLUDE_DIRS})
# OPENAL
#include_directories(${OPENAL_INCLUDE_DIRS})
include_directories(${OPENAL_INCLUDE_DIRS})
include_directories(${JSONVALIDATOR_INCLUDE_DIRS})
include_directories(${DRLIBS_INCLUDE_DIRS})
target_link_libraries(Engine ${JSONVALIDATOR_LIBRARIES})
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
target_compile_definitions(Engine PRIVATE
JPH_ENABLE_ASSERTS
JPH_PROFILE_ENABLED
JPH_OBJECT_STREAM
JPH_DEBUG_RENDERER
)
else() # Release
target_compile_definitions(Engine PRIVATE
JPH_OBJECT_STREAM
)
endif()
target_link_libraries(Engine
debug ${JOLT_LIBRARIES_DEBUG}
optimized ${JOLT_LIBRARIES_RELEASE}
)
# Fichier lib
# OpenGL
#target_link_libraries(Engine OpenMP::OpenMP_CXX)
@@ -502,23 +561,16 @@ target_link_libraries(Engine spirv-reflect)
# ASSIMP
target_link_libraries(Engine ${ASSIMP_LIBRARIES})
target_link_libraries(Engine ${JSONVALIDATOR_LIBRARIES})
# ODE
#target_link_libraries(Engine ${ODE_LIBRARIES})
target_compile_definitions(Engine PRIVATE
JPH_PROFILE_ENABLED
JPH_DEBUG_RENDERER
JPH_OBJECT_STREAM
)
target_link_libraries(Engine ${JOLT_LIBRARIES})
# SNDFILE
#target_link_libraries(Engine sndfile)
# OPENAL
#target_link_libraries(Engine ${OPENAL_LIBRARIES})
target_link_libraries(Engine OpenAL::OpenAL)
#target_link_libraries(Engine ${CMAKE_DL_LIBS})
@@ -536,19 +588,22 @@ target_link_libraries(Engine ${JOLT_LIBRARIES})
# target_link_libraries(Engine Boost::log)
# target_link_libraries(Engine Boost::log_setup)
target_link_libraries(ScriptModule Engine)
target_link_libraries(${PROJECT} Engine)
#if(UNIX)
#add_custom_command(
# TARGET Engine POST_BUILD
# COMMAND ${CMAKE_COMMAND} -E copy
# ${CMAKE_CURRENT_BINARY_DIR}/libEngine.so
# ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
#endif()
if(UNIX)
add_custom_command(
TARGET ScriptModule POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_BINARY_DIR}/libScriptModule.so
${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endif()
# Paramètre de compilation
if (UNIX)
set(CMAKE_CXX_FLAGS "-Wall -fPIC")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
endif ()
# Valgrind ne marche que pour Linux...