Skip to content

Commit 70e0936

Browse files
committed
before adding the hit test example
1 parent 55bd14b commit 70e0936

File tree

29 files changed

+560
-237
lines changed

29 files changed

+560
-237
lines changed

CONTRIBUTING.md

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ To get started, make sure you have [Node](https://nodejs.org) and [PNPM](https:/
66

77
```bash
88
pnpm i
9+
pnpm -r copy
910
pnpm -r build
1011
```
1112

examples/demo-controller/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})

examples/editor/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/editor/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})

examples/handheld-ar/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})
+14-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
1+
import path from 'path'
12
import { defineConfig } from 'vite'
23

34
// https://vitejs.dev/config/
45
export default defineConfig({
5-
build: {
6-
outDir: "./dist"
7-
},
8-
base: '/pointer-events/',
6+
build: {
7+
outDir: './dist',
8+
},
9+
base: '/pointer-events/',
10+
resolve: {
11+
alias: [
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
17+
dedupe: ['three'],
18+
},
919
})

examples/handle/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})

examples/hit-test-anchor/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})

examples/layers/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/layers/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})

examples/minecraft/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/minecraft/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})

examples/miniature/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})

examples/pingpong/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/pingpong/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})
+14-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
1+
import path from 'path'
12
import { defineConfig } from 'vite'
23

34
// https://vitejs.dev/config/
45
export default defineConfig({
5-
build: {
6-
outDir: "./dist"
7-
},
8-
base: '/pointer-events/',
6+
build: {
7+
outDir: './dist',
8+
},
9+
resolve: {
10+
alias: [
11+
{
12+
find: '@pmndrs/pointer-events',
13+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
14+
},
15+
],
16+
dedupe: ['three'],
17+
},
18+
base: '/pointer-events/',
919
})

examples/rag-doll/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/rag-doll/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})

examples/react-three-xr/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})

examples/rollercoaster/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})

examples/room-with-shadows/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/room-with-shadows/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})

examples/secondary-input-sources/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/secondary-input-sources/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})

examples/stage/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/stage/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})

examples/uikit/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})

examples/use-gesture/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['@react-three/fiber', 'three'],
1218
},
1319
})

examples/vanilla/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@ import basicSsl from '@vitejs/plugin-basic-ssl'
77
export default defineConfig({
88
plugins: [react(), basicSsl()],
99
resolve: {
10-
alias: [{ find: '@pmndrs/xr', replacement: path.resolve(__dirname, '../../packages/xr/src/index.ts') }],
10+
alias: [
11+
{ find: '@pmndrs/xr', replacement: path.resolve(__dirname, '../../packages/xr/src/index.ts') },
12+
{
13+
find: '@pmndrs/pointer-events',
14+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
15+
},
16+
],
1117
dedupe: ['three'],
1218
},
1319
})

examples/watch/vite.config.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ export default defineConfig({
88
plugins: [react(), basicSsl()],
99
base: '/xr/examples/watch/',
1010
resolve: {
11-
alias: [{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') }],
11+
alias: [
12+
{ find: '@react-three/xr', replacement: path.resolve(__dirname, '../../packages/react/xr/src/index.ts') },
13+
{
14+
find: '@pmndrs/pointer-events',
15+
replacement: path.resolve(__dirname, '../../packages/pointer-events/src/index.ts'),
16+
},
17+
],
1218
dedupe: ['@react-three/fiber', 'three'],
1319
},
1420
})

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"@types/react": "^19",
1313
"@types/react-dom": "^19",
1414
"@types/three": "latest",
15-
"@types/webxr": "^0.5.16",
15+
"@types/webxr": "^0.5.21",
1616
"@typescript-eslint/eslint-plugin": "^7.12.0",
1717
"@typescript-eslint/parser": "^7.12.0",
1818
"@vitejs/plugin-basic-ssl": "^1.1.0",

packages/pointer-events/src/pointer.ts

+9-3
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,13 @@ export type PointerOptions = {
5454
) => boolean
5555
}
5656

57-
const pointerMap = new Map<number, Pointer>()
57+
globalThis.pointerEventspointerMap ??= new Map<number, Pointer>()
58+
59+
declare global {
60+
namespace globalThis {
61+
var pointerEventspointerMap: Map<number, Pointer> | undefined
62+
}
63+
}
5864

5965
declare module 'three' {
6066
interface Object3D {
@@ -90,7 +96,7 @@ Object3D.prototype.hasPointerCapture = function (this: Object3D, pointerId: numb
9096
}
9197

9298
export function getPointerById(pointerId: number) {
93-
return pointerMap.get(pointerId)
99+
return globalThis.pointerEventspointerMap?.get(pointerId)
94100
}
95101

96102
export type GetCamera = () => PerspectiveCamera | OrthographicCamera
@@ -128,7 +134,7 @@ export class Pointer {
128134
private readonly parentReleasePointerCapture?: () => void,
129135
public readonly options: PointerOptions = {},
130136
) {
131-
pointerMap.set(id, this)
137+
globalThis.pointerEventspointerMap?.set(id, this)
132138
}
133139

134140
getPointerCapture(): PointerCapture | undefined {

packages/xr/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
src/default-environment.json

0 commit comments

Comments
 (0)