From be2ccd8208877b352e8f29a27415a9580b4ada43 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Tue, 7 Apr 2026 06:41:36 +0200 Subject: [PATCH] Refactor viewport water contact patch collection and usage --- src/viewport-three/viewport-host.ts | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/viewport-three/viewport-host.ts b/src/viewport-three/viewport-host.ts index 740317d8..8645237d 100644 --- a/src/viewport-three/viewport-host.ts +++ b/src/viewport-three/viewport-host.ts @@ -2274,8 +2274,7 @@ export class ViewportHost { for (const brush of Object.values(document.brushes)) { const geometry = buildBoxBrushDerivedMeshData(brush).geometry; - const contactPatches = - brush.volume.mode === "water" ? this.collectViewportWaterContactPatches(document, brush.id, brush.center, brush.rotationDegrees, brush.size) : []; + const contactPatches = brush.volume.mode === "water" ? this.collectViewportWaterContactPatches(document, brush) : []; const materials = BOX_FACE_IDS.map((faceId) => this.createFaceMaterial( @@ -3025,17 +3024,11 @@ export class ViewportHost { return texture; } - private collectViewportWaterContactPatches( - document: SceneDocument, - excludedBrushId: string, - center: Vec3, - rotationDegrees: Vec3, - size: Vec3 - ) { + private collectViewportWaterContactPatches(document: SceneDocument, waterBrush: BoxBrush) { const contactBounds: Parameters[1] = []; for (const brush of Object.values(document.brushes)) { - if (brush.id === excludedBrushId || brush.volume.mode !== "none") { + if (brush.id === waterBrush.id || brush.volume.mode !== "none") { continue; } @@ -3091,11 +3084,12 @@ export class ViewportHost { return collectWaterContactPatches( { - center, - rotationDegrees, - size + center: waterBrush.center, + rotationDegrees: waterBrush.rotationDegrees, + size: waterBrush.size }, - contactBounds + contactBounds, + waterBrush.volume.water.foamContactLimit ); } @@ -3167,8 +3161,7 @@ export class ViewportHost { ); const previousMaterials = renderObjects.mesh.material; - const contactPatches = - brush.volume.mode === "water" ? this.collectViewportWaterContactPatches(this.currentDocument, brush.id, brush.center, brush.rotationDegrees, brush.size) : []; + const contactPatches = brush.volume.mode === "water" ? this.collectViewportWaterContactPatches(this.currentDocument, brush) : []; renderObjects.mesh.material = BOX_FACE_IDS.map((faceId) => this.createFaceMaterial( brush,