()
| 2445 | checkResolutionWarning(); |
| 2446 | |
| 2447 | // Dispose old preview material so it gets fully recreated |
| 2448 | if (previewMaterial) { |
| 2449 | previewMaterial.dispose(); |
| 2450 | previewMaterial = null; |
| 2451 | } |
| 2452 | |
| 2453 | loadGeometry(currentGeometry); |
| 2454 | |
| 2455 | // Reset displacement preview |
| 2456 | if (dispPreviewGeometry) { dispPreviewGeometry.dispose(); dispPreviewGeometry = null; } |
| 2457 | settings.useDisplacement = false; |
| 2458 | dispPreviewToggle.checked = false; |
| 2459 | |
| 2460 | // Reset precision masking (geometry was rotated) |
| 2461 | if (precisionGeometry) { precisionGeometry.dispose(); precisionGeometry = null; } |
| 2462 | precisionParentMap = null; precisionEdgeLength = null; |
| 2463 | precisionCentroids = null; precisionFaceNormals = null; precisionAdjacency = null; |
| 2464 | precisionMaskingEnabled = false; precisionMaskingToggle.checked = false; |
| 2465 | precisionStatus.textContent = ''; |
| 2466 | precisionOutdated.classList.add('hidden'); precisionRefreshBtn.classList.add('hidden'); |
| 2467 | precisionWarning.classList.add('hidden'); precisionMaskingRow.classList.add('hidden'); |
| 2468 | precisionExcludedFaces = new Set(); |
| 2469 | |
| 2470 | // Deactivate tools but keep excludedFaces (face indices are stable after rotation) |
| 2471 | exclusionTool = null; |
| 2472 | eraseMode = false; |
| 2473 | isPainting = false; |
| 2474 | exclBrushBtn.classList.remove('active'); |
| 2475 | exclBucketBtn.classList.remove('active'); |
| 2476 | exclBrushTypeRow.classList.add('hidden'); |
| 2477 | exclRadiusRow.classList.add('hidden'); |
| 2478 | exclThresholdRow.classList.add('hidden'); |
no test coverage detected