Skip to content

Commit e73018c

Browse files
committed
prepare deploy
1 parent b359fcc commit e73018c

File tree

5 files changed

+189
-18
lines changed

5 files changed

+189
-18
lines changed

.github/workflows/packages.yml

+37-11
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
deploy-packages:
1010
runs-on: ubuntu-latest
1111
permissions:
12-
contents: write
12+
contents: read
1313
steps:
1414
- name: Checkout code
1515
uses: actions/checkout@v3
@@ -29,7 +29,7 @@ jobs:
2929

3030
- uses: gittools/actions/gitversion/setup@v0
3131
with:
32-
versionSpec: "5.x"
32+
versionSpec: '5.x'
3333

3434
- name: Install Dependencies
3535
run: pnpm install
@@ -39,10 +39,10 @@ jobs:
3939
pnpm -r check:prettier
4040
pnpm -r check:eslint
4141
42-
# - name: Test
43-
# run: |
44-
# pnpm exec playwright install chromium
45-
# pnpm -r test
42+
# - name: Test
43+
# run: |
44+
# pnpm exec playwright install chromium
45+
# pnpm -r test
4646

4747
- name: Gitversion
4848
id: gitversion
@@ -51,13 +51,39 @@ jobs:
5151
- name: Build
5252
run: |
5353
pnpm -F './packages/**/*' build
54-
54+
5555
- name: Set Version
5656
run: pnpm -F './packages/**/*' exec json -f "package.json" -I -e 'this.version = "${{ steps.gitversion.outputs.fullSemVer }}"'
5757

58-
# TBD: push to npm
58+
- name: Set publishing config
59+
run: pnpm config set '//registry.npmjs.org/:_authToken' "${{ secrets.NPM_TOKEN }}"
60+
61+
- id: check-pointer-events
62+
uses: PostHog/check-package-version@v2
63+
with:
64+
path: ./packages/pointer-events/
65+
66+
- name: Deploy pointer events Package
67+
if: steps.check-pointer-events.outputs.is-new-version == 'true'
68+
working-directory: ./packages/pointer-events
69+
run: pnpm publish --access public --no-git-checks --tag latest
5970

71+
- id: check-xr-vanilla
72+
uses: PostHog/check-package-version@v2
73+
with:
74+
path: ./packages/xr/
75+
76+
- name: Deploy XR Vanilla Package
77+
if: steps.check-xr-vanilla.outputs.is-new-version == 'true'
78+
working-directory: ./packages/xr
79+
run: pnpm publish --access public --no-git-checks --tag latest
80+
81+
- id: check-xr-react
82+
uses: PostHog/check-package-version@v2
83+
with:
84+
path: ./packages/react/xr/
6085

61-
62-
63-
86+
- name: Deploy XR React Package
87+
if: steps.check-xr-react.outputs.is-new-version == 'true'
88+
working-directory: ./packages/react/xr
89+
run: pnpm publish --access public --no-git-checks --tag latest

packages/pointer-events/package.json

+15
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
11
{
22
"name": "@pmndrs/pointer-events",
33
"description": "framework agnostic pointer-events implementation for threejs",
4+
"license": "SEE LICENSE IN LICENSE",
45
"version": "0.0.0",
6+
"homepage": "https://github.com/pmndrs/xr",
7+
"author": "Bela Bohlender",
58
"type": "module",
9+
"keywords": [
10+
"r3f",
11+
"events",
12+
"pointer",
13+
"three.js",
14+
"userinterface",
15+
"typescript"
16+
],
17+
"repository": {
18+
"type": "git",
19+
"url": "[email protected]:pmndrs/xr.git"
20+
},
621
"files": [
722
"dist"
823
],

packages/react/xr/package.json

+18-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
{
22
"name": "@react-three/xr",
3-
"description": "XR for react-three-fiber",
3+
"description": "VR/AR for react-three-fiber",
4+
"author": "Bela Bohlender",
5+
"license": "SEE LICENSE IN LICENSE",
6+
"homepage": "https://github.com/pmndrs/xr",
7+
"type": "module",
8+
"keywords": [
9+
"r3f",
10+
"xr",
11+
"ar",
12+
"vr",
13+
"three.js",
14+
"react",
15+
"typescript"
16+
],
17+
"repository": {
18+
"type": "git",
19+
"url": "[email protected]:pmndrs/xr.git"
20+
},
421
"files": [
522
"dist"
623
],

packages/xr/README.md

+104-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,109 @@
1-
# XR
1+
<p align="center">
2+
<img src="../../docs/getting-started/logo.svg" width="100" />
3+
</p>
24

3-
Vanilla threejs version
5+
<h1 align="center">xr</h1>
6+
<h3 align="center">Turn any threejs app into an interactive immersive experience.</h3>
7+
<br/>
8+
9+
<p align="center">
10+
<a href="https://npmjs.com/package/@pmndrs/xr" target="_blank">
11+
<img src="https://img.shields.io/npm/v/@pmndrs/xr?style=flat&colorA=000000&colorB=000000" alt="NPM" />
12+
</a>
13+
<a href="https://npmjs.com/package/@pmndrs/xr" target="_blank">
14+
<img src="https://img.shields.io/npm/dt/@pmndrs/xr.svg?style=flat&colorA=000000&colorB=000000" alt="NPM" />
15+
</a>
16+
<a href="https://twitter.com/pmndrs" target="_blank">
17+
<img src="https://img.shields.io/twitter/follow/pmndrs?label=%40pmndrs&style=flat&colorA=000000&colorB=000000&logo=twitter&logoColor=000000" alt="Twitter" />
18+
</a>
19+
<a href="https://discord.gg/ZZjjNvJ" target="_blank">
20+
<img src="https://img.shields.io/discord/740090768164651008?style=flat&colorA=000000&colorB=000000&label=discord&logo=discord&logoColor=000000" alt="Discord" />
21+
</a>
22+
</p>
23+
24+
```bash
25+
npm install three @pmndrs/xr
26+
```
27+
28+
## What does it look like?
29+
30+
| A simple scene with a mesh that toggles its material color between `"red"` and `"blue"` when clicked through touching or pointing. | ![recording of interacting with the code below](../../docs/getting-started/basic-example.gif) |
31+
| ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
32+
33+
```tsx
34+
import { createXRStore } from '@pmndrs/xr'
35+
import { BoxGeometry, Mesh, MeshBasicMaterial, PerspectiveCamera, Scene, WebGLRenderer } from 'three'
36+
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'
37+
38+
const camera = new PerspectiveCamera(70, 1, 0.01, 100)
39+
const scene = new Scene()
40+
const canvas = document.getElementById('root') as HTMLCanvasElement
41+
const renderer = new WebGLRenderer({ antialias: true, canvas, alpha: true })
42+
43+
const boxMaterial = new MeshBasicMaterial({ color: 'red' })
44+
const box = new Mesh(new BoxGeometry(), boxMaterial)
45+
box.pointerEventsType = { deny: 'grab' }
46+
let red = false
47+
box.addEventListener('click', () => {
48+
red = !red
49+
boxMaterial.color.set(red ? 'red' : 'blue')
50+
})
51+
scene.add(box)
452

5-
```ts
653
const store = createXRStore(canvas, scene, camera, renderer.xr)
54+
document.getElementById('enter-ar')?.addEventListener('click', () => store.enterAR())
55+
56+
let prevTime: undefined | number
57+
58+
renderer.setAnimationLoop((time, frame) => {
59+
const delta = prevTime == null ? 0 : time - prevTime
60+
prevTime = time
61+
store.update(frame, delta)
62+
renderer.render(scene, camera)
63+
})
64+
65+
function updateSize() {
66+
renderer.setSize(window.innerWidth, window.innerHeight)
67+
renderer.setPixelRatio(window.devicePixelRatio)
68+
camera.aspect = window.innerWidth / window.innerHeight
69+
camera.updateProjectionMatrix()
70+
}
771

8-
const btn = document.getElementById('enter-ar')
9-
btn.addEventListener('click', () => store.enterAR())
72+
updateSize()
73+
window.addEventListener('resize', updateSize)
1074
```
75+
76+
### How to enable XR for your threejs app?
77+
78+
1. `const store = createXRStore(canvas, scene, camera, renderer.xr)` create a xr store
79+
2. `store.enterAR()` call enter AR when clicking on a button
80+
81+
## Tutorials
82+
83+
_The following tutorials contain code for react-three/fiber but all informations are also applicable for @pmndrs/xr._
84+
85+
- 👌 [Interactions](https://docs.pmnd.rs/xr/tutorials/interactions)
86+
- 🔧 [Options](https://docs.pmnd.rs/xr/tutorials/options)
87+
- 🧊 [Object Detection](https://docs.pmnd.rs/xr/tutorials/object-detection)
88+
-[Origin](https://docs.pmnd.rs/xr/tutorials/origin)
89+
- 🪄 [Teleport](https://docs.pmnd.rs/xr/tutorials/teleport)
90+
- 🕹️ [Gamepad](https://docs.pmnd.rs/xr/tutorials/gamepad)
91+
- 🎮 [Custom Controller/Hands/...](https://docs.pmnd.rs/xr/tutorials/custom-inputs)
92+
-[Guards](https://docs.pmnd.rs/xr/tutorials/guards)
93+
94+
## Roadmap
95+
96+
- 🤳 XR Gestures
97+
- ➕ Multimodal
98+
- ⚓️ Anchors
99+
- 📺 Layers
100+
- 📱 Dom Overlays
101+
- 🕺 Tracked Body
102+
- 🎯 Hit Test
103+
- ↕ pmndrs/controls
104+
105+
## Sponsors
106+
107+
This project is supported by a few companies and individuals building cutting-edge 3D Web & XR experiences. Check them out!
108+
109+
![Sponsors Overview](https://bbohlender.github.io/sponsors/screenshot.png)

packages/xr/package.json

+15-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,22 @@
22
"name": "@pmndrs/xr",
33
"author": "Bela Bohlender",
44
"type": "module",
5-
"description": "",
5+
"description": "VR/AR for threejs",
6+
"homepage": "https://github.com/pmndrs/xr",
67
"version": "0.0.0",
8+
"keywords": [
9+
"r3f",
10+
"xr",
11+
"ar",
12+
"vr",
13+
"three.js",
14+
"react",
15+
"typescript"
16+
],
17+
"repository": {
18+
"type": "git",
19+
"url": "[email protected]:pmndrs/xr.git"
20+
},
721
"license": "SEE LICENSE IN LICENSE",
822
"scripts": {
923
"build": "tsc",

0 commit comments

Comments
 (0)