#pragma once #include "Library.h" #include "TileOcclusionRendererProxy.h" #include "TilesetSharedAssetSystem.h" #include "spdlog-cesium.h" #include #include namespace CesiumAsync { class IAssetAccessor; class ITaskProcessor; } // namespace CesiumAsync namespace CesiumUtility { class CreditSystem; } namespace Cesium3DTilesSelection { class IPrepareRendererResources; /** * @brief External interfaces used by a {@link Tileset}. * * Not supposed to be used by clients. */ class CESIUM3DTILESSELECTION_API TilesetExternals final { public: /** * @brief An external {@link CesiumAsync::IAssetAccessor}. */ std::shared_ptr pAssetAccessor; /** * @brief An external {@link IPrepareRendererResources}. */ std::shared_ptr pPrepareRendererResources; /** * @brief The async system to use to do work in threads. * * The tileset will automatically call * {@link CesiumAsync::AsyncSystem::dispatchMainThreadTasks} from * {@link Tileset::updateView}. */ CesiumAsync::AsyncSystem asyncSystem; /** * @brief An external {@link CesiumUtility::CreditSystem} that can be used to manage credit * strings and track which which credits to show and remove from the screen * each frame. */ std::shared_ptr pCreditSystem; /** * @brief A spdlog logger that will receive log messages. * * If not specified, defaults to `spdlog::default_logger()`. */ std::shared_ptr pLogger = spdlog::default_logger(); /** * @brief A pool of renderer proxies to determine the occlusion state of * tile bounding volumes. * * If not specified, the traversal will not attempt to leverage occlusion * information. */ std::shared_ptr pTileOcclusionProxyPool = nullptr; /** * @brief The shared asset system used to facilitate sharing of common assets, * such as images, between and within tilesets. */ CesiumUtility::IntrusivePointer pSharedAssetSystem = TilesetSharedAssetSystem::getDefault(); }; } // namespace Cesium3DTilesSelection