# SPDX-License-Identifier: MPL-2.0
#
# SEQUA 3D : contrat vers les moteurs 3D, négociation des capacités, synchronisation de la
# scène, I3DEngineAdapter. Ne dépend d'aucun moteur : les adaptateurs vivent dans engines/.

add_library(sequa_3d
    src/adapter.cpp
    src/capabilities.cpp
    src/input.cpp
    src/null_adapter.cpp
    src/scene.cpp)
add_library(sequa::3d ALIAS sequa_3d)

target_include_directories(sequa_3d PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_compile_features(sequa_3d PUBLIC cxx_std_20)
sequa_target_defaults(sequa_3d)

if(SEQUA_BUILD_TESTS)
    add_executable(sequa_3d_tests
        tests/main.cpp
        tests/test_capabilities.cpp
        tests/test_input.cpp
        tests/test_scene.cpp
        tests/test_null_adapter.cpp)
    target_link_libraries(sequa_3d_tests PRIVATE sequa::3d doctest::doctest)
    sequa_target_defaults(sequa_3d_tests)
    doctest_discover_tests(sequa_3d_tests)
endif()

# Codec JSON provisoire du protocole Core - rendu (docs/specs/protocole-core-rendu-0.1.md §5).
if(SEQUA_BUILD_SERVER) # nlohmann/json n'est récupéré qu'avec le serveur (cmake/SequaDependencies.cmake)
    add_subdirectory(wire)
endif()
