diff --git a/examples/uikit/package.json b/examples/uikit/package.json index 879103a..9a34446 100644 --- a/examples/uikit/package.json +++ b/examples/uikit/package.json @@ -2,9 +2,9 @@ "dependencies": { "@pmndrs/pointer-events": "workspace:^", "@react-three/drei": "^9.108.3", - "@react-three/uikit": "^0.7.0", - "@react-three/uikit-default": "^0.7.0", - "@react-three/uikit-lucide": "^0.7.0", + "@react-three/uikit": "^0.7.1", + "@react-three/uikit-default": "^0.7.1", + "@react-three/uikit-lucide": "^0.7.1", "@react-three/xr": "workspace:^", "leva": "^0.9.35" }, diff --git a/packages/pointer-events/src/intersections/intersector.ts b/packages/pointer-events/src/intersections/intersector.ts index 281f085..8c919b0 100644 --- a/packages/pointer-events/src/intersections/intersector.ts +++ b/packages/pointer-events/src/intersections/intersector.ts @@ -1,9 +1,8 @@ -import { Mesh, Object3D, Sphere, SphereGeometry, Intersection as ThreeIntersection } from 'three' +import { Mesh, Object3D, Sphere, SphereGeometry } from 'three' import { Intersection } from '../index.js' import { PointerCapture } from '../pointer.js' -const VoidObjectRadius = 1000000 -export const VoidObjectCollider = new Sphere(undefined, VoidObjectRadius) +const VoidObjectRadius = 10000000000 const VoidObjectGeometry = new SphereGeometry(VoidObjectRadius) const sceneVoidObjectMap = new Map() diff --git a/packages/pointer-events/src/intersections/utils.ts b/packages/pointer-events/src/intersections/utils.ts index 545a5a9..475f627 100644 --- a/packages/pointer-events/src/intersections/utils.ts +++ b/packages/pointer-events/src/intersections/utils.ts @@ -1,7 +1,7 @@ import { Plane, Intersection as ThreeIntersection, Object3D, Vector3, Ray, Quaternion, Matrix4 } from 'three' import { Intersection, IntersectionOptions } from './index.js' import { AllowedPointerEventsType, Pointer, type AllowedPointerEvents } from '../pointer.js' -import { getVoidObject, VoidObjectCollider } from './intersector.js' +import { getVoidObject } from './intersector.js' import { listenerNames } from '../event.js' export function computeIntersectionWorldPlane( @@ -186,6 +186,8 @@ function defaultSort( return i1.distance - i2.distance } +const VoidObjectDistance = 10000000 + export function voidObjectIntersectionFromRay( scene: Object3D, ray: Ray, @@ -194,8 +196,8 @@ export function voidObjectIntersectionFromRay( pointerQuaternion: Quaternion, addToDistance: number = 0, ): Intersection { - const point = ray.intersectSphere(VoidObjectCollider, new Vector3())! - const distanceOnRay = point.distanceTo(ray.origin) + const point = ray.direction.clone().multiplyScalar(VoidObjectDistance) + const distanceOnRay = VoidObjectDistance return { distance: distanceOnRay + addToDistance, object: getVoidObject(scene), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9663bef..dcc4fd9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -249,14 +249,14 @@ importers: specifier: ^9.108.3 version: 9.111.5(@react-three/fiber@8.17.9)(@types/react@18.3.5)(@types/three@0.164.1)(react-dom@18.3.1)(react@18.3.1)(three@0.167.1) '@react-three/uikit': - specifier: ^0.7.0 - version: 0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) + specifier: ^0.7.1 + version: 0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) '@react-three/uikit-default': - specifier: ^0.7.0 - version: 0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) + specifier: ^0.7.1 + version: 0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) '@react-three/uikit-lucide': - specifier: ^0.7.0 - version: 0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) + specifier: ^0.7.1 + version: 0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) '@react-three/xr': specifier: workspace:^ version: link:../../packages/react/xr @@ -1065,8 +1065,8 @@ packages: three: 0.167.1 dev: false - /@pmndrs/msdfonts@0.7.0: - resolution: {integrity: sha512-1eC8ZOFOx0Pun9ov0j6RsNC4C+lhK40PDkif/U03hgPzS2MZqRDnizkk4hdlaXm3wDBzDsES1D8JqBBgMv8jUw==} + /@pmndrs/msdfonts@0.7.1: + resolution: {integrity: sha512-UpejAqZZxG+RArt+c9dtQCrnSU5bjDA3yYB5ZkjUA/pGaEeDIA9alviB/ZiTkhrDPG+WHV9r3EtBVX/v8Pxsxg==} dev: false /@pmndrs/uikit-lucide@0.4.4(three@0.167.1): @@ -1108,12 +1108,12 @@ packages: - ts-node dev: false - /@pmndrs/uikit@0.7.0(three@0.167.1): - resolution: {integrity: sha512-cB+DQ2gJatdi4rsleBgktgQ8RkENmUWDuvkbqhpOZ4xw/GSUM+HlwkWGrGWAuyAAf/1mKN6gcHcOF02nWfBIyQ==} + /@pmndrs/uikit@0.7.1(three@0.167.1): + resolution: {integrity: sha512-pgFi1nP51iN7/UAc4HdM+dj6d7UnxDWXRwDvM2+Y5/pzMhvdrfY5s4VxoFKtXjoRXR8Nae6TckEvYbkUDLsiiQ==} peerDependencies: three: '>=0.160' dependencies: - '@pmndrs/msdfonts': 0.7.0 + '@pmndrs/msdfonts': 0.7.1 '@preact/signals-core': 1.8.0 inline-style-parser: 0.2.4 node-html-parser: 6.1.13 @@ -1768,11 +1768,11 @@ packages: three-stdlib: 2.23.9(three@0.167.1) dev: false - /@react-three/uikit-default@0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1): - resolution: {integrity: sha512-e9jkQMfiu47J/03/pezDc+zvKu9dqY/Ico6wnGuGKPuuTpL0yXw/0WOk34GVhClxMu0RXuoiKtIh/h17NNm2gw==} + /@react-three/uikit-default@0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1): + resolution: {integrity: sha512-bAjSG5HyHigAPanRNNh1wEIMwTjsEoMmAjNLfZ/Fg4e9fQItn7L0xtP4vA4VYg2Vofa6Z3NSODYd2JePv+WGZw==} dependencies: - '@react-three/uikit': 0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) - '@react-three/uikit-lucide': 0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) + '@react-three/uikit': 0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) + '@react-three/uikit-lucide': 0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) tunnel-rat: 0.1.2(@types/react@18.3.5)(react@18.3.1) transitivePeerDependencies: - '@react-three/fiber' @@ -1796,10 +1796,10 @@ packages: - ts-node dev: false - /@react-three/uikit-lucide@0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1): - resolution: {integrity: sha512-tt9TCDJk6798L3fURLJguKetPfkWJoqSpRHZuLEcOP098N4wNlyzCPdAA0RGZdKL/8AOocYqMp1X9djdfevmHQ==} + /@react-three/uikit-lucide@0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1): + resolution: {integrity: sha512-hlNSNbSjd4xkreolGCJfUPBT0NW9geoH3LvOGr+g+2TNasuyTUGab5kPug0CFX9mNbsU4e5KCyBiHtHuxoQ3hA==} dependencies: - '@react-three/uikit': 0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) + '@react-three/uikit': 0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1) transitivePeerDependencies: - '@react-three/fiber' - '@types/react' @@ -1859,14 +1859,14 @@ packages: - ts-node dev: false - /@react-three/uikit@0.7.0(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1): - resolution: {integrity: sha512-E0cxUK904fr6tg89m5lnvBtbnN0M+yi2eCP0UgNu0bNVHyKIpXAAcMwv08XlMr1x99nEZYuxZu5gD4Teu4i00A==} + /@react-three/uikit@0.7.1(@react-three/fiber@8.17.9)(@types/react@18.3.5)(react@18.3.1)(three@0.167.1): + resolution: {integrity: sha512-Hx0Htk/T6P3CV1kF8yRc9SS5l3hT74FjpbVurcjZDw1gACAK4bjw5VZgZxkHqADMQkhLu7DdGHpAWGipz0Rrdw==} hasBin: true peerDependencies: '@react-three/fiber': '>=8' react: '>=18' dependencies: - '@pmndrs/uikit': 0.7.0(three@0.167.1) + '@pmndrs/uikit': 0.7.1(three@0.167.1) '@preact/signals-core': 1.8.0 '@react-three/fiber': 8.17.9(react-dom@18.3.1)(react@18.3.1)(three@0.167.1) chalk: 5.3.0