Skip to content

Commit 53364a1

Browse files
authored
Merge pull request #1720 from CesiumGS/const-get-root-tile
Use `const-get-root-tile` branch of cesium-native
2 parents a87e489 + fdd773e commit 53364a1

File tree

5 files changed

+42
-51
lines changed

5 files changed

+42
-51
lines changed

Source/CesiumRuntime/Private/Cesium3DTileset.cpp

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1657,8 +1657,7 @@ bool ACesium3DTileset::ShouldTickIfViewportsOnly() const {
16571657
namespace {
16581658
template <typename Func>
16591659
void forEachRenderableTile(const auto& tiles, Func&& f) {
1660-
for (const CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>&
1661-
pTile : tiles) {
1660+
for (const auto& pTile : tiles) {
16621661
if (!pTile ||
16631662
pTile->getState() != Cesium3DTilesSelection::TileLoadState::Done) {
16641663
continue;
@@ -1686,17 +1685,14 @@ void forEachRenderableTile(const auto& tiles, Func&& f) {
16861685
}
16871686

16881687
void removeVisibleTilesFromList(
1689-
std::vector<CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>>&
1690-
list,
1691-
const std::vector<
1692-
CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>>&
1688+
std::vector<Cesium3DTilesSelection::Tile::ConstPointer>& list,
1689+
const std::vector<Cesium3DTilesSelection::Tile::ConstPointer>&
16931690
visibleTiles) {
16941691
if (list.empty()) {
16951692
return;
16961693
}
16971694

1698-
for (const CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>&
1699-
pTile : visibleTiles) {
1695+
for (const Cesium3DTilesSelection::Tile::ConstPointer& pTile : visibleTiles) {
17001696
auto it = std::find(list.begin(), list.end(), pTile);
17011697
if (it != list.end()) {
17021698
list.erase(it);
@@ -1714,13 +1710,11 @@ void removeVisibleTilesFromList(
17141710
* @param tiles The tiles to hide
17151711
*/
17161712
void hideTiles(
1717-
const std::vector<
1718-
CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>>& tiles) {
1713+
const std::vector<Cesium3DTilesSelection::Tile::ConstPointer>& tiles) {
17191714
TRACE_CPUPROFILER_EVENT_SCOPE(Cesium::HideTiles)
17201715
forEachRenderableTile(
17211716
tiles,
1722-
[](const CesiumUtility::IntrusivePointer<
1723-
Cesium3DTilesSelection::Tile>& /*pTile*/,
1717+
[](const Cesium3DTilesSelection::Tile::ConstPointer& /*pTile*/,
17241718
UCesiumGltfComponent* pGltf) {
17251719
if (pGltf->IsVisible()) {
17261720
TRACE_CPUPROFILER_EVENT_SCOPE(Cesium::SetVisibilityFalse)
@@ -1740,13 +1734,12 @@ void hideTiles(
17401734
* list. This includes tiles that are fading out.
17411735
*/
17421736
void removeCollisionForTiles(
1743-
const std::unordered_set<
1744-
CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>>& tiles) {
1737+
const std::unordered_set<Cesium3DTilesSelection::Tile::ConstPointer>&
1738+
tiles) {
17451739
TRACE_CPUPROFILER_EVENT_SCOPE(Cesium::RemoveCollisionForTiles)
17461740
forEachRenderableTile(
17471741
tiles,
1748-
[](const CesiumUtility::IntrusivePointer<
1749-
Cesium3DTilesSelection::Tile>& /*pTile*/,
1742+
[](const Cesium3DTilesSelection::Tile::ConstPointer& /*pTile*/,
17501743
UCesiumGltfComponent* pGltf) {
17511744
TRACE_CPUPROFILER_EVENT_SCOPE(Cesium::SetCollisionDisabled)
17521745
pGltf->SetCollisionEnabled(ECollisionEnabled::NoCollision);
@@ -1829,8 +1822,8 @@ void ACesium3DTileset::updateLastViewUpdateResultState(
18291822
ResolveGeoreference();
18301823
check(Georeference);
18311824

1832-
for (const CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>&
1833-
pTile : result.tilesToRenderThisFrame) {
1825+
for (const Cesium3DTilesSelection::Tile::ConstPointer& pTile :
1826+
result.tilesToRenderThisFrame) {
18341827
CesiumGeometry::OrientedBoundingBox obb =
18351828
Cesium3DTilesSelection::getOrientedBoundingBoxFromBoundingVolume(
18361829
pTile->getBoundingVolume(),
@@ -1930,15 +1923,13 @@ void ACesium3DTileset::updateLastViewUpdateResultState(
19301923
}
19311924

19321925
void ACesium3DTileset::showTilesToRender(
1933-
const std::vector<
1934-
CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>>& tiles) {
1926+
const std::vector<Cesium3DTilesSelection::Tile::ConstPointer>& tiles) {
19351927
TRACE_CPUPROFILER_EVENT_SCOPE(Cesium::ShowTilesToRender)
19361928
forEachRenderableTile(
19371929
tiles,
19381930
[&RootComponent = this->RootComponent,
19391931
&BodyInstance = this->BodyInstance](
1940-
const CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>&
1941-
pTile,
1932+
const Cesium3DTilesSelection::Tile::ConstPointer& pTile,
19421933
UCesiumGltfComponent* pGltf) {
19431934
applyActorCollisionSettings(BodyInstance, pGltf);
19441935

@@ -1977,8 +1968,7 @@ static void updateTileFades(const auto& tiles, bool fadingIn) {
19771968
forEachRenderableTile(
19781969
tiles,
19791970
[fadingIn](
1980-
const CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>&
1981-
pTile,
1971+
const Cesium3DTilesSelection::Tile::ConstPointer& pTile,
19821972
UCesiumGltfComponent* pGltf) {
19831973
float percentage = pTile->getContent()
19841974
.getRenderContent()
@@ -2091,9 +2081,9 @@ void ACesium3DTileset::Tick(float DeltaTime) {
20912081
hideTiles(this->_tilesToHideNextFrame);
20922082

20932083
_tilesToHideNextFrame.clear();
2094-
for (const CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>&
2095-
pTile : pResult->tilesFadingOut) {
2096-
Cesium3DTilesSelection::TileRenderContent* pRenderContent =
2084+
for (const Cesium3DTilesSelection::Tile::ConstPointer& pTile :
2085+
pResult->tilesFadingOut) {
2086+
const Cesium3DTilesSelection::TileRenderContent* pRenderContent =
20972087
pTile->getContent().getRenderContent();
20982088
if (!this->UseLodTransitions ||
20992089
(pRenderContent &&

Source/CesiumRuntime/Private/Tests/SampleTilesetsLoad.perf.cpp

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -192,22 +192,24 @@ bool FLoadTilesetMontrealPointCloud::RunTest(const FString& Parameters) {
192192
playContext.tilesets[0]->GetTileset();
193193
if (TestNotNull("Tileset", pTileset)) {
194194
int visibleTiles = 0;
195-
pTileset->forEachLoadedTile([&](Cesium3DTilesSelection::Tile& tile) {
196-
if (tile.getState() != Cesium3DTilesSelection::TileLoadState::Done)
197-
return;
198-
const Cesium3DTilesSelection::TileContent& content = tile.getContent();
199-
const Cesium3DTilesSelection::TileRenderContent* pRenderContent =
200-
content.getRenderContent();
201-
if (!pRenderContent) {
202-
return;
203-
}
204-
205-
UCesiumGltfComponent* Gltf = static_cast<UCesiumGltfComponent*>(
206-
pRenderContent->getRenderResources());
207-
if (Gltf && Gltf->IsVisible()) {
208-
++visibleTiles;
209-
}
210-
});
195+
pTileset->forEachLoadedTile(
196+
[&](const Cesium3DTilesSelection::Tile& tile) {
197+
if (tile.getState() != Cesium3DTilesSelection::TileLoadState::Done)
198+
return;
199+
const Cesium3DTilesSelection::TileContent& content =
200+
tile.getContent();
201+
const Cesium3DTilesSelection::TileRenderContent* pRenderContent =
202+
content.getRenderContent();
203+
if (!pRenderContent) {
204+
return;
205+
}
206+
207+
UCesiumGltfComponent* Gltf = static_cast<UCesiumGltfComponent*>(
208+
pRenderContent->getRenderResources());
209+
if (Gltf && Gltf->IsVisible()) {
210+
++visibleTiles;
211+
}
212+
});
211213

212214
TestEqual("visibleTiles", visibleTiles, 1);
213215
}

Source/CesiumRuntime/Private/Tests/TileLoadingSoakTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ FString& getLogFilePath() {
5858
}
5959

6060
void countTree(
61-
Cesium3DTilesSelection::Tile* tile,
61+
const Cesium3DTilesSelection::Tile* tile,
6262
int depth,
6363
int& outCount,
6464
int& outUnloaded,
@@ -67,8 +67,8 @@ void countTree(
6767
int& outContentLoaded,
6868
int& outDone) {
6969
outCount++;
70-
std::span<Cesium3DTilesSelection::Tile> tiles = tile->getChildren();
71-
for (Cesium3DTilesSelection::Tile& child : tiles) {
70+
std::span<const Cesium3DTilesSelection::Tile> tiles = tile->getChildren();
71+
for (const Cesium3DTilesSelection::Tile& child : tiles) {
7272
switch (child.getState()) {
7373
case Cesium3DTilesSelection::TileLoadState::Unloaded:
7474
outUnloaded++;

Source/CesiumRuntime/Public/Cesium3DTileset.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1289,8 +1289,8 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor {
12891289
*
12901290
* @param tiles The tiles
12911291
*/
1292-
void showTilesToRender(const std::vector<CesiumUtility::IntrusivePointer<
1293-
Cesium3DTilesSelection::Tile>>& tiles);
1292+
void showTilesToRender(
1293+
const std::vector<Cesium3DTilesSelection::Tile::ConstPointer>& tiles);
12941294

12951295
/**
12961296
* Will be called after the tileset is loaded or spawned, to register
@@ -1366,8 +1366,7 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor {
13661366
// If we find a way to clear the wrong occlusion information in the
13671367
// Unreal Engine, then this field may be removed, and the
13681368
// tilesToHideThisFrame may be hidden immediately.
1369-
std::vector<CesiumUtility::IntrusivePointer<Cesium3DTilesSelection::Tile>>
1370-
_tilesToHideNextFrame;
1369+
std::vector<Cesium3DTilesSelection::Tile::ConstPointer> _tilesToHideNextFrame;
13711370

13721371
int32 _tilesetsBeingDestroyed;
13731372

0 commit comments

Comments
 (0)