diff --git a/source/website/erase.js b/source/website/erase.js index b4808aa6..26978c81 100644 --- a/source/website/erase.js +++ b/source/website/erase.js @@ -8,7 +8,6 @@ export class EraserTool extends HighlightTool { constructor(viewer, settings) { super(viewer, settings); this.highlightColor = new THREE.Color('rgba(0, 0, 0, 0)'); - this.highlightMeshes = HighlightTool.sharedHighlightMeshes; } SetActive(isActive) { @@ -57,7 +56,7 @@ export class EraserTool extends HighlightTool { // Only remove highlights if the mouse button is down if (this.isMouseDown) { - this.RemoveHighlight(intersection); + this.RemoveHighlight (intersection); this.viewer.Render(); } } @@ -66,9 +65,8 @@ export class EraserTool extends HighlightTool { let intersection = this.viewer.GetMeshIntersectionUnderMouse(IntersectionMode.MeshOnly, mouseCoordinates); if (intersection === null) { return; - } - - this.RemoveHighlight(intersection); + } + this.RemoveHighlight (intersection); this.viewer.Render(); } @@ -132,11 +130,5 @@ export class EraserTool extends HighlightTool { this.Resize(); } - ClearHighlight() { - HighlightTool.sharedHighlightMeshes.forEach((mesh) => { - this.viewer.RemoveExtraObject(mesh); - }); - HighlightTool.sharedHighlightMeshes = []; - this.viewer.Render(); - } + } \ No newline at end of file diff --git a/source/website/highlighttool.js b/source/website/highlighttool.js index e32743f4..5514f2dc 100644 --- a/source/website/highlighttool.js +++ b/source/website/highlighttool.js @@ -291,7 +291,6 @@ export class HighlightTool { overlapping.push(mesh); } } - return overlapping; } @@ -301,25 +300,29 @@ export class HighlightTool { } let { id: uniqueId } = this.GenerateHighlightMesh(intersection); - let meshToRemove = HighlightTool.sharedHighlightMeshes.find(item => item.id === uniqueId); + let existingMesh = this.FindExistingMeshById(uniqueId); + let currentIntensity = this.intensityMap.get(uniqueId) || 0; if (meshToRemove) { - this.viewer.RemoveExtraObject(meshToRemove.mesh); - - // Update highlightMeshes array - HighlightTool.sharedHighlightMeshes = HighlightTool.sharedHighlightMeshes.filter((item) => item.id !== uniqueId); - - // Dispose of the highlight mesh - this.DisposeHighlightMesh(meshToRemove.mesh); - - // Update overlappingMeshes - this.overlappingMeshes.delete(uniqueId); - for (let [key, value] of this.overlappingMeshes) { - let filteredValue = value.filter(item => item.id !== uniqueId); - this.overlappingMeshes.set(key, filteredValue); + if (currentIntensity >= 3) { + // Decrease intensity for existing mesh + let newIntensity = Math.max(currentIntensity - (this.intensityIncreaseRate * 0.7), 0); + this.intensityMap.set(uniqueId, newIntensity); + this.UpdateMeshColor(existingMesh); + + } else { + this.viewer.RemoveExtraObject(meshToRemove.mesh); + HighlightTool.sharedHighlightMeshes = HighlightTool.sharedHighlightMeshes.filter((item) => item.id !== uniqueId); + this.DisposeHighlightMesh(meshToRemove.mesh); + + // Update overlappingMeshes + this.overlappingMeshes.delete(uniqueId); + for (let [key, value] of this.overlappingMeshes) { + let filteredValue = value.filter(item => item.id !== uniqueId); + this.overlappingMeshes.set(key, filteredValue); + } } - this.viewer.Render(); } }