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:
+81
-26
@@ -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...
|
||||
|
||||
Reference in New Issue
Block a user