From e058c9ef24a67a5d69fae93ee9726f3a9c64cc8f Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Fri, 1 May 2026 17:42:25 +0200 Subject: [PATCH] auto-git: [change] src/viewport-three/viewport-host.ts --- src/viewport-three/viewport-host.ts | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/viewport-three/viewport-host.ts b/src/viewport-three/viewport-host.ts index 48affe4b..617fbc76 100644 --- a/src/viewport-three/viewport-host.ts +++ b/src/viewport-three/viewport-host.ts @@ -9689,8 +9689,10 @@ export class ViewportHost { } const cancelled = event.type === "pointercancel"; + const activeStroke = this.activeTerrainBrushStroke; let finalPreviewTerrain = this.activeTerrainBrushStroke.previewTerrain; let changed = this.activeTerrainBrushStroke.changed; + let dirtyBounds = this.activeTerrainBrushStroke.dirtyBounds; if (!cancelled) { const hit = this.getTerrainBrushHitAtClientPosition( @@ -9710,6 +9712,10 @@ export class ViewportHost { this.activeTerrainBrushStroke.referenceHeight ); changed ||= segmentResult.changed; + dirtyBounds = this.mergeTerrainBrushDirtyBounds( + dirtyBounds, + segmentResult.dirtyBounds + ); if ( segmentResult.lastAppliedPoint.x !== hit.point.x || @@ -9725,17 +9731,17 @@ export class ViewportHost { this.activeTerrainBrushStroke.referenceHeight ); changed ||= pointResult.changed; + dirtyBounds = this.mergeTerrainBrushDirtyBounds( + dirtyBounds, + pointResult.dirtyBounds + ); } } } - const baseTerrain = - this.currentDocument?.terrains[ - this.activeTerrainBrushStroke.toolState.terrainId - ] ?? null; const commit = !cancelled && - baseTerrain !== null && + dirtyBounds !== null && changed; const toolState = this.activeTerrainBrushStroke.toolState; this.activeTerrainBrushStroke = null; @@ -9746,9 +9752,16 @@ export class ViewportHost { return true; } + const patch = createTerrainBrushPatchFromTerrains({ + before: activeStroke.baseTerrain, + after: finalPreviewTerrain, + dirtyBounds + }); + const committed = this.terrainBrushCommitHandler?.({ - terrain: finalPreviewTerrain, + terrainId: finalPreviewTerrain.id, + patch, commandLabel: getTerrainBrushCommandLabel(toolState.tool), tool: toolState.tool }) === true;