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.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) =>
|
||||||
|
|||||||
Reference in New Issue
Block a user