auto-git:

[change] src/viewport-three/viewport-host.ts
This commit is contained in:
2026-05-01 18:03:45 +02:00
parent 8b2419be97
commit 4f40cdbd94

View File

@@ -1325,6 +1325,7 @@ export class ViewportHost {
this.rebuildLightVolumes(document); this.rebuildLightVolumes(document);
this.rebuildBrushMeshes(document, this.currentSelection); this.rebuildBrushMeshes(document, this.currentSelection);
if (reuseTerrainRenderObjects) { if (reuseTerrainRenderObjects) {
this.refreshReusedTerrainRenderDirtyChunks(document);
this.updateTerrainLodVisibility(); this.updateTerrainLodVisibility();
this.syncTerrainBrushPreview(); this.syncTerrainBrushPreview();
} else { } else {
@@ -6534,6 +6535,10 @@ export class ViewportHost {
const renderObjects = this.createTerrainRenderObjects(displayedTerrain); const renderObjects = this.createTerrainRenderObjects(displayedTerrain);
this.terrainGroup.add(renderObjects.group); this.terrainGroup.add(renderObjects.group);
this.terrainRenderObjects.set(displayedTerrain.id, renderObjects); this.terrainRenderObjects.set(displayedTerrain.id, renderObjects);
this.terrainRenderRevisions.set(
displayedTerrain.id,
getTerrainRenderDirtyRevision(displayedTerrain)
);
} }
this.applyShadowState(); 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 { private createPathLineGeometry(path: ScenePath): BufferGeometry {
const points = path.points.map( const points = path.points.map(
(point) => (point) =>