"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const THREE = require("three"); const _pointer = /* @__PURE__ */ new THREE.Vector2(); const _event = { type: "", data: _pointer }; class InteractiveGroup extends THREE.Group { constructor(renderer, camera) { super(); const scope = this; const raycaster = new THREE.Raycaster(); const tempMatrix = new THREE.Matrix4(); const element = renderer.domElement; function onPointerEvent(event) { event.stopPropagation(); _pointer.x = event.clientX / element.clientWidth * 2 - 1; _pointer.y = -(event.clientY / element.clientHeight) * 2 + 1; raycaster.setFromCamera(_pointer, camera); const intersects = raycaster.intersectObjects(scope.children, false); if (intersects.length > 0) { const intersection = intersects[0]; const object = intersection.object; const uv = intersection.uv; _event.type = event.type; _event.data.set(uv.x, 1 - uv.y); object.dispatchEvent(_event); } } element.addEventListener("pointerdown", onPointerEvent); element.addEventListener("pointerup", onPointerEvent); element.addEventListener("pointermove", onPointerEvent); element.addEventListener("mousedown", onPointerEvent); element.addEventListener("mouseup", onPointerEvent); element.addEventListener("mousemove", onPointerEvent); element.addEventListener("click", onPointerEvent); const events = { move: "mousemove", select: "click", selectstart: "mousedown", selectend: "mouseup" }; function onXRControllerEvent(event) { const controller = event.target; tempMatrix.identity().extractRotation(controller.matrixWorld); raycaster.ray.origin.setFromMatrixPosition(controller.matrixWorld); raycaster.ray.direction.set(0, 0, -1).applyMatrix4(tempMatrix); const intersections = raycaster.intersectObjects(scope.children, false); if (intersections.length > 0) { const intersection = intersections[0]; const object = intersection.object; const uv = intersection.uv; _event.type = events[event.type]; _event.data.set(uv.x, 1 - uv.y); object.dispatchEvent(_event); } } const controller1 = renderer.xr.getController(0); controller1.addEventListener("move", onXRControllerEvent); controller1.addEventListener("select", onXRControllerEvent); controller1.addEventListener("selectstart", onXRControllerEvent); controller1.addEventListener("selectend", onXRControllerEvent); const controller2 = renderer.xr.getController(1); controller2.addEventListener("move", onXRControllerEvent); controller2.addEventListener("select", onXRControllerEvent); controller2.addEventListener("selectstart", onXRControllerEvent); controller2.addEventListener("selectend", onXRControllerEvent); } } exports.InteractiveGroup = InteractiveGroup; //# sourceMappingURL=InteractiveGroup.cjs.map