diff --git a/public/index.html b/public/index.html index 3eea446b075b024a3cc716c8a6c22d85c3288c91..fb72813fd4968806d6b44cdb337c7a38515dc9bd 100644 --- a/public/index.html +++ b/public/index.html @@ -167,7 +167,6 @@ align-items: center; justify-content: center; gap: 20px; - padding: 20px; background: rgba(0, 0, 0, 0.8); box-shadow: 0 -2px 6px rgba(0, 0, 0, 0.2); color: white; @@ -392,14 +391,24 @@ const raycaster = new THREE.Raycaster(); raycaster.setFromCamera(mouse, camera); + // Prüfe Kollisionen mit Objekten in der Szene const intersects = raycaster.intersectObjects(scene.children, true); + if (intersects.length > 0) { - selectedPlacedModel = intersects[0].object; + // Finde das Hauptobjekt (Root-Parent), falls Mesh ausgewählt wurde + let selectedObject = intersects[0].object; + while (selectedObject.parent && selectedObject.parent !== scene) { + selectedObject = selectedObject.parent; + } + + // Markiere das gesamte Modell als ausgewählt + selectedPlacedModel = selectedObject; highlightSelectedModel(); - showMenu("edit-menu") + showMenu("edit-menu"); } } + function openRotationMenu() { if (!selectedPlacedModel) { showInfoDialog("Kein Modell ausgewählt. Bitte wählen Sie ein Modell aus, bevor Sie es bearbeiten."); @@ -432,7 +441,7 @@ dynamicMenu.style.display = "flex"; dynamicMenu.innerHTML = ` <h3>Skalierung anpassen</h3> - <label>Größe: <input type="range" min="0.1" max="3" step="0.1" onchange="updateScale(this.value)"></label> + <label>Größe: <input type="range" min="0.01" max="3" step="0.1" onchange="updateScale(this.value)"></label> <button onclick="closeDynamicMenu()">Zurück</button> `; }