16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-22 11:39:19 +02:00

EU7 scenery format and models streaming

This commit is contained in:
maj00r
2026-06-13 15:43:44 +02:00
parent f07c8fdcd2
commit 876a4c7c18
171 changed files with 27924 additions and 281 deletions

View File

@@ -48,6 +48,7 @@ file(GLOB HEADERS "*.h"
"global_include/*.h"
"simulation/*.h"
"scene/*.h"
"scene/eu7/*.h"
"rendering/*.h"
"audio/*.h"
"environment/*.h"
@@ -82,6 +83,7 @@ option(GENERATE_PDB "Generate executable with program debugging symbols" ON)
option(ENABLE_MCC "Enable multicore compilation" ON)
option(WITHDUMPGEN "Enable generating DMP files on crash" ON)
option(ENABLE_AVX2 "Enable AVX2 instruction set (requires AVX2-capable CPU, Haswell/2013 or newer)" ON)
option(WITH_EU7_PARSER "Embed EU07 SCM→EU7 baker (eu07-parser)" ON)
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
@@ -148,6 +150,17 @@ set(SOURCES
"stdafx.cpp"
"input/messaging.cpp"
"scene/scene.cpp"
"scene/eu7/eu7_loader.cpp"
"scene/eu7/eu7_load_stats.cpp"
"scene/eu7/eu7_pack_bench.cpp"
"scene/eu7/eu7_section.cpp"
"scene/eu7/eu7_section_stream.cpp"
"scene/eu7/eu7_model_prefetch.cpp"
"scene/eu7/eu7_reader.cpp"
"scene/eu7/eu7_emit.cpp"
"scene/eu7/eu7_apply.cpp"
"scene/eu7/eu7_bake.cpp"
"scene/eu7/eu7_parameters.cpp"
"scene/scenenode.cpp"
"simulation/simulation.cpp"
"model/vertex.cpp"
@@ -392,9 +405,32 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
add_compile_options("/utf-8")
endif()
find_package(Threads REQUIRED)
set(EU07_BAKE_LIBS "")
if(WITH_EU7_PARSER)
set(EU07_PARSER_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/eu07-parser/include")
if(NOT EXISTS "${EU07_PARSER_INCLUDE}/eu07/parser.hpp")
message(FATAL_ERROR "EU07 parser headers missing at ${EU07_PARSER_INCLUDE}. Sync eu07-parser/include from the parser repo.")
endif()
add_library(eu07_bake STATIC "scene/eu7/eu7_bake_parser.cpp")
target_compile_features(eu07_bake PUBLIC cxx_std_23)
set_target_properties(eu07_bake PROPERTIES CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON)
target_include_directories(eu07_bake PRIVATE "${EU07_PARSER_INCLUDE}")
target_link_libraries(eu07_bake PUBLIC Threads::Threads)
if(MSVC)
target_compile_options(eu07_bake PRIVATE /utf-8 /Zc:__cplusplus /EHsc /wd4834)
endif()
list(APPEND EU07_BAKE_LIBS eu07_bake)
endif()
add_executable(${PROJECT_NAME} ${SOURCES} ${HEADERS})
target_compile_definitions(${PROJECT_NAME} PRIVATE ${DEFINITIONS})
if(WITH_EU7_PARSER)
target_compile_definitions(${PROJECT_NAME} PRIVATE WITH_EU7_PARSER=1)
endif()
target_include_directories(${PROJECT_NAME} PRIVATE
"."
@@ -442,6 +478,7 @@ if(NOT ${CMAKE_VERSION} VERSION_LESS "3.16.0")
target_precompile_headers(${PROJECT_NAME} PRIVATE "$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/stdafx.h>")
set_source_files_properties("/glad/src/glad.c" "ref/dds-ktx/src/dds-ktx.c" "stb/stb_image.c"
"imgui/imgui.cpp" "imgui/imgui_demo.cpp" "imgui/imgui_draw.cpp" "imgui/imgui_widgets.cpp" "imgui/imgui_impl_glfw.cpp"
"scene/eu7/eu7_bake_parser.cpp"
PROPERTIES SKIP_PRECOMPILE_HEADERS TRUE)
endif()
endif()
@@ -483,8 +520,7 @@ else()
target_link_libraries(${PROJECT_NAME} ${PNG_LIBRARIES})
endif()
find_package(Threads REQUIRED)
target_link_libraries(${PROJECT_NAME} Threads::Threads)
target_link_libraries(${PROJECT_NAME} Threads::Threads ${EU07_BAKE_LIBS})
find_package(GLM REQUIRED)
target_include_directories(${PROJECT_NAME} PRIVATE ${GLM_INCLUDE_DIR})