auto-git:
[change] src/viewport-three/viewport-host.ts
This commit is contained in:
@@ -1325,6 +1325,7 @@ export class ViewportHost {
|
||||
this.rebuildLightVolumes(document);
|
||||
this.rebuildBrushMeshes(document, this.currentSelection);
|
||||
if (reuseTerrainRenderObjects) {
|
||||
this.refreshReusedTerrainRenderDirtyChunks(document);
|
||||
this.updateTerrainLodVisibility();
|
||||
this.syncTerrainBrushPreview();
|
||||
} else {
|
||||
@@ -6534,6 +6535,10 @@ export class ViewportHost {
|
||||
const renderObjects = this.createTerrainRenderObjects(displayedTerrain);
|
||||
this.terrainGroup.add(renderObjects.group);
|
||||
this.terrainRenderObjects.set(displayedTerrain.id, renderObjects);
|
||||
this.terrainRenderRevisions.set(
|
||||
displayedTerrain.id,
|
||||
getTerrainRenderDirtyRevision(displayedTerrain)
|
||||
);
|
||||
}
|
||||
|
||||
this.applyShadowState();
|
||||
@@ -6660,6 +6665,30 @@ export class ViewportHost {
|
||||
}
|
||||
}
|
||||
|
||||
private refreshReusedTerrainRenderDirtyChunks(document: SceneDocument) {
|
||||
for (const terrain of getTerrains(document.terrains)) {
|
||||
const renderObjects = this.terrainRenderObjects.get(terrain.id);
|
||||
|
||||
if (renderObjects === undefined) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const previousRevision = this.terrainRenderRevisions.get(terrain.id) ?? 0;
|
||||
const dirtyState = getTerrainRenderDirtyBoundsSince(
|
||||
terrain,
|
||||
previousRevision
|
||||
);
|
||||
|
||||
this.terrainRenderRevisions.set(terrain.id, dirtyState.revision);
|
||||
|
||||
if (dirtyState.dirtyBounds === null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
this.refreshDisplayedTerrainDirtyBounds(terrain.id, dirtyState.dirtyBounds);
|
||||
}
|
||||
}
|
||||
|
||||
private createPathLineGeometry(path: ScenePath): BufferGeometry {
|
||||
const points = path.points.map(
|
||||
(point) =>
|
||||
|
||||
Reference in New Issue
Block a user