Introduce TilesetSharedAssetSystem.
This commit is contained in:
parent
d16e3ef94a
commit
49f1d6319c
|
|
@ -23,10 +23,12 @@
|
|||
#include <vector>
|
||||
|
||||
namespace Cesium3DTilesSelection {
|
||||
|
||||
class TilesetContentManager;
|
||||
class TilesetMetadata;
|
||||
class TilesetHeightQuery;
|
||||
class TilesetHeightRequest;
|
||||
class TilesetSharedAssetSystem;
|
||||
|
||||
/**
|
||||
* @brief A <a
|
||||
|
|
@ -184,11 +186,10 @@ public:
|
|||
/**
|
||||
* @brief Returns the {@link SharedAssetDepot} of this tileset.
|
||||
*/
|
||||
CesiumGltfReader::GltfSharedAssetSystem& getSharedAssetSystem() noexcept;
|
||||
TilesetSharedAssetSystem& getSharedAssetSystem() noexcept;
|
||||
|
||||
/** @copydoc Tileset::getSharedAssetSystem() */
|
||||
const CesiumGltfReader::GltfSharedAssetSystem&
|
||||
getSharedAssetSystem() const noexcept;
|
||||
const TilesetSharedAssetSystem& getSharedAssetSystem() const noexcept;
|
||||
|
||||
/**
|
||||
* @brief Updates this view but waits for all tiles that meet sse to finish
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
#pragma once
|
||||
|
||||
#include <CesiumGltfReader/GltfSharedAssetSystem.h>
|
||||
|
||||
namespace Cesium3DTilesSelection {
|
||||
|
||||
/**
|
||||
* @brief Contains assets that are potentially shared across multiple Tilesets.
|
||||
*/
|
||||
class TilesetSharedAssetSystem
|
||||
: public CesiumGltfReader::GltfSharedAssetSystem {
|
||||
public:
|
||||
static CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem> getDefault();
|
||||
|
||||
virtual ~TilesetSharedAssetSystem() = default;
|
||||
};
|
||||
|
||||
} // namespace Cesium3DTilesSelection
|
||||
|
|
@ -9,8 +9,8 @@ TileContentLoadInfo::TileContentLoadInfo(
|
|||
const std::shared_ptr<IPrepareRendererResources>&
|
||||
pPrepareRendererResources_,
|
||||
const std::shared_ptr<spdlog::logger>& pLogger_,
|
||||
const CesiumUtility::IntrusivePointer<
|
||||
CesiumGltfReader::GltfSharedAssetSystem> pAssetDepot_,
|
||||
const CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem>
|
||||
pSharedAssetSystem_,
|
||||
const TilesetContentOptions& contentOptions_,
|
||||
const Tile& tile)
|
||||
: asyncSystem(asyncSystem_),
|
||||
|
|
@ -20,7 +20,7 @@ TileContentLoadInfo::TileContentLoadInfo(
|
|||
tileID(tile.getTileID()),
|
||||
tileBoundingVolume(tile.getBoundingVolume()),
|
||||
tileContentBoundingVolume(tile.getContentBoundingVolume()),
|
||||
pAssetDepot{pAssetDepot_},
|
||||
pSharedAssetSystem{pSharedAssetSystem_},
|
||||
tileRefine(tile.getRefine()),
|
||||
tileGeometricError(tile.getGeometricError()),
|
||||
tileTransform(tile.getTransform()),
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@
|
|||
#include <Cesium3DTilesSelection/TileID.h>
|
||||
#include <Cesium3DTilesSelection/TileRefine.h>
|
||||
#include <Cesium3DTilesSelection/TilesetOptions.h>
|
||||
#include <Cesium3DTilesSelection/TilesetSharedAssetSystem.h>
|
||||
#include <CesiumAsync/AsyncSystem.h>
|
||||
#include <CesiumAsync/IAssetAccessor.h>
|
||||
#include <CesiumGeometry/Axis.h>
|
||||
#include <CesiumGltfReader/GltfSharedAssetSystem.h>
|
||||
|
||||
#include <gsl/span>
|
||||
#include <spdlog/fwd.h>
|
||||
|
|
@ -25,8 +25,8 @@ struct TileContentLoadInfo {
|
|||
const std::shared_ptr<IPrepareRendererResources>&
|
||||
pPrepareRendererResources,
|
||||
const std::shared_ptr<spdlog::logger>& pLogger,
|
||||
const CesiumUtility::IntrusivePointer<
|
||||
CesiumGltfReader::GltfSharedAssetSystem> maybeAssetDepot,
|
||||
const CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem>
|
||||
pSharedAssetSystem,
|
||||
const TilesetContentOptions& contentOptions,
|
||||
const Tile& tile);
|
||||
|
||||
|
|
@ -43,8 +43,7 @@ struct TileContentLoadInfo {
|
|||
BoundingVolume tileBoundingVolume;
|
||||
|
||||
std::optional<BoundingVolume> tileContentBoundingVolume;
|
||||
CesiumUtility::IntrusivePointer<CesiumGltfReader::GltfSharedAssetSystem>
|
||||
pAssetDepot;
|
||||
CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem> pSharedAssetSystem;
|
||||
|
||||
TileRefine tileRefine;
|
||||
|
||||
|
|
|
|||
|
|
@ -149,13 +149,11 @@ const RasterOverlayCollection& Tileset::getOverlays() const noexcept {
|
|||
return this->_pTilesetContentManager->getRasterOverlayCollection();
|
||||
}
|
||||
|
||||
CesiumGltfReader::GltfSharedAssetSystem&
|
||||
Tileset::getSharedAssetSystem() noexcept {
|
||||
TilesetSharedAssetSystem& Tileset::getSharedAssetSystem() noexcept {
|
||||
return *this->_pTilesetContentManager->getSharedAssetSystem();
|
||||
}
|
||||
|
||||
const CesiumGltfReader::GltfSharedAssetSystem&
|
||||
Tileset::getSharedAssetSystem() const noexcept {
|
||||
const TilesetSharedAssetSystem& Tileset::getSharedAssetSystem() const noexcept {
|
||||
return *this->_pTilesetContentManager->getSharedAssetSystem();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -565,8 +565,8 @@ postProcessContentInWorkerThread(
|
|||
tileLoadInfo.contentOptions.ktx2TranscodeTargets;
|
||||
gltfOptions.applyTextureTransform =
|
||||
tileLoadInfo.contentOptions.applyTextureTransform;
|
||||
if (tileLoadInfo.pAssetDepot) {
|
||||
gltfOptions.pSharedAssets = tileLoadInfo.pAssetDepot;
|
||||
if (tileLoadInfo.pSharedAssetSystem) {
|
||||
gltfOptions.pSharedAssets = tileLoadInfo.pSharedAssetSystem;
|
||||
}
|
||||
|
||||
auto asyncSystem = tileLoadInfo.asyncSystem;
|
||||
|
|
@ -666,7 +666,7 @@ TilesetContentManager::TilesetContentManager(
|
|||
_tileLoadsInProgress{0},
|
||||
_loadedTilesCount{0},
|
||||
_tilesDataUsed{0},
|
||||
_pSharedAssets(CesiumGltfReader::GltfSharedAssetSystem::getDefault()),
|
||||
_pSharedAssets(TilesetSharedAssetSystem::getDefault()),
|
||||
_destructionCompletePromise{externals.asyncSystem.createPromise<void>()},
|
||||
_destructionCompleteFuture{
|
||||
this->_destructionCompletePromise.getFuture().share()},
|
||||
|
|
@ -696,7 +696,7 @@ TilesetContentManager::TilesetContentManager(
|
|||
_tileLoadsInProgress{0},
|
||||
_loadedTilesCount{0},
|
||||
_tilesDataUsed{0},
|
||||
_pSharedAssets(CesiumGltfReader::GltfSharedAssetSystem::getDefault()),
|
||||
_pSharedAssets(TilesetSharedAssetSystem::getDefault()),
|
||||
_destructionCompletePromise{externals.asyncSystem.createPromise<void>()},
|
||||
_destructionCompleteFuture{
|
||||
this->_destructionCompletePromise.getFuture().share()},
|
||||
|
|
@ -848,7 +848,7 @@ TilesetContentManager::TilesetContentManager(
|
|||
_tileLoadsInProgress{0},
|
||||
_loadedTilesCount{0},
|
||||
_tilesDataUsed{0},
|
||||
_pSharedAssets(CesiumGltfReader::GltfSharedAssetSystem::getDefault()),
|
||||
_pSharedAssets(TilesetSharedAssetSystem::getDefault()),
|
||||
_destructionCompletePromise{externals.asyncSystem.createPromise<void>()},
|
||||
_destructionCompleteFuture{
|
||||
this->_destructionCompletePromise.getFuture().share()},
|
||||
|
|
@ -1237,7 +1237,7 @@ TilesetContentManager::getTilesetCredits() const noexcept {
|
|||
return this->_tilesetCredits;
|
||||
}
|
||||
|
||||
const CesiumUtility::IntrusivePointer<CesiumGltfReader::GltfSharedAssetSystem>&
|
||||
const CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem>&
|
||||
TilesetContentManager::getSharedAssetSystem() const noexcept {
|
||||
return this->_pSharedAssets;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
namespace Cesium3DTilesSelection {
|
||||
|
||||
class TilesetSharedAssetSystem;
|
||||
|
||||
class TilesetContentManager
|
||||
: public CesiumUtility::ReferenceCountedNonThreadSafe<
|
||||
TilesetContentManager> {
|
||||
|
|
@ -115,8 +117,7 @@ public:
|
|||
|
||||
const std::vector<CesiumUtility::Credit>& getTilesetCredits() const noexcept;
|
||||
|
||||
const CesiumUtility::IntrusivePointer<
|
||||
CesiumGltfReader::GltfSharedAssetSystem>&
|
||||
const CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem>&
|
||||
getSharedAssetSystem() const noexcept;
|
||||
|
||||
int32_t getNumberOfTilesLoading() const noexcept;
|
||||
|
|
@ -172,8 +173,7 @@ private:
|
|||
int64_t _tilesDataUsed;
|
||||
|
||||
// Stores assets that might be shared between tiles.
|
||||
CesiumUtility::IntrusivePointer<CesiumGltfReader::GltfSharedAssetSystem>
|
||||
_pSharedAssets;
|
||||
CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem> _pSharedAssets;
|
||||
|
||||
CesiumAsync::Promise<void> _destructionCompletePromise;
|
||||
CesiumAsync::SharedFuture<void> _destructionCompleteFuture;
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
|
||||
#include <Cesium3DTilesSelection/TilesetContentLoader.h>
|
||||
#include <Cesium3DTilesSelection/TilesetExternals.h>
|
||||
#include <Cesium3DTilesSelection/TilesetSharedAssetSystem.h>
|
||||
#include <CesiumAsync/Future.h>
|
||||
#include <CesiumAsync/IAssetAccessor.h>
|
||||
#include <CesiumGltfReader/GltfSharedAssetSystem.h>
|
||||
|
||||
#include <rapidjson/fwd.h>
|
||||
|
||||
|
|
@ -56,8 +56,7 @@ public:
|
|||
private:
|
||||
std::string _baseUrl;
|
||||
CesiumGeospatial::Ellipsoid _ellipsoid;
|
||||
CesiumUtility::IntrusivePointer<CesiumGltfReader::GltfSharedAssetSystem>
|
||||
_pSharedAssets;
|
||||
CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem> _pSharedAssets;
|
||||
|
||||
/**
|
||||
* @brief The axis that was declared as the "up-axis" for glTF content.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,34 @@
|
|||
#include <Cesium3DTilesSelection/TilesetSharedAssetSystem.h>
|
||||
|
||||
using namespace Cesium3DTilesSelection;
|
||||
using namespace CesiumAsync;
|
||||
using namespace CesiumGltf;
|
||||
using namespace CesiumGltfReader;
|
||||
using namespace CesiumUtility;
|
||||
|
||||
namespace {
|
||||
|
||||
CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem> createDefault() {
|
||||
CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem> p =
|
||||
new TilesetSharedAssetSystem();
|
||||
|
||||
CesiumUtility::IntrusivePointer<GltfSharedAssetSystem> pGltf =
|
||||
GltfSharedAssetSystem::getDefault();
|
||||
|
||||
p->pImage = pGltf->pImage;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace Cesium3DTilesSelection {
|
||||
|
||||
/*static*/ CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem>
|
||||
TilesetSharedAssetSystem::getDefault() {
|
||||
static CesiumUtility::IntrusivePointer<TilesetSharedAssetSystem> pDefault =
|
||||
createDefault();
|
||||
return pDefault;
|
||||
}
|
||||
|
||||
} // namespace Cesium3DTilesSelection
|
||||
|
|
@ -14,6 +14,8 @@ class GltfSharedAssetSystem
|
|||
public:
|
||||
static CesiumUtility::IntrusivePointer<GltfSharedAssetSystem> getDefault();
|
||||
|
||||
virtual ~GltfSharedAssetSystem() = default;
|
||||
|
||||
using ImageDepot = CesiumAsync::
|
||||
SharedAssetDepot<CesiumGltf::ImageAsset, NetworkImageAssetDescriptor>;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue