diff --git a/demos/space-game/package.json b/demos/space-game/package.json index 53accbaf..f4a9092a 100644 --- a/demos/space-game/package.json +++ b/demos/space-game/package.json @@ -11,10 +11,12 @@ ], "dependencies": { "@react-three/fiber": "^8.17.5", + "@react-three/drei": "^9.109.5", "react": "^18.3.1", "react-dom": "^18.3.1", "styled-components": "^5.3.11", "three": "^0.165.0", + "three-stdlib": "^2.32.2", "zustand": "^3.7.2" }, "devDependencies": { diff --git a/demos/space-game/src/3d/Effects.jsx b/demos/space-game/src/3d/Effects.jsx index 6b75fff2..2dbc7e7f 100755 --- a/demos/space-game/src/3d/Effects.jsx +++ b/demos/space-game/src/3d/Effects.jsx @@ -1,22 +1,13 @@ -import React, { useRef, useEffect } from 'react' -import { extend, useThree, useFrame } from '@react-three/fiber' -import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer' -import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass' -import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass' -import { UnrealBloomPass } from 'three/examples/jsm/postprocessing/UnrealBloomPass' -import { FilmPass } from 'three/examples/jsm/postprocessing/FilmPass' +import { extend } from '@react-three/fiber' +import { Effects as EffectComposer } from '@react-three/drei' +import { UnrealBloomPass } from 'three-stdlib' -extend({ EffectComposer, ShaderPass, RenderPass, UnrealBloomPass, FilmPass }) +extend({ UnrealBloomPass }) export default function Effects() { - const composer = useRef() - const { scene, gl, size, camera } = useThree() - useEffect(() => void composer.current.setSize(size.width, size.height), [size]) - useFrame(() => composer.current.render(), 2) return ( - - - - + + + ) } diff --git a/demos/space-game/src/3d/Enemies.jsx b/demos/space-game/src/3d/Enemies.jsx index dd17989a..180f5658 100755 --- a/demos/space-game/src/3d/Enemies.jsx +++ b/demos/space-game/src/3d/Enemies.jsx @@ -30,7 +30,7 @@ const Drone = React.memo(({ data }) => { return ( - + diff --git a/demos/space-game/src/3d/Explosions.jsx b/demos/space-game/src/3d/Explosions.jsx index fee35300..2e6acdc0 100755 --- a/demos/space-game/src/3d/Explosions.jsx +++ b/demos/space-game/src/3d/Explosions.jsx @@ -47,7 +47,7 @@ function Explosion({ position, scale }) { {particles.map(({ color, data }, index) => ( - + ))} diff --git a/demos/space-game/src/3d/Planets.jsx b/demos/space-game/src/3d/Planets.jsx index 0edf5128..c3f46b09 100755 --- a/demos/space-game/src/3d/Planets.jsx +++ b/demos/space-game/src/3d/Planets.jsx @@ -17,11 +17,11 @@ export default function Planets() { - + - + ) diff --git a/demos/space-game/src/3d/Rig.jsx b/demos/space-game/src/3d/Rig.jsx index 916101b0..3bbcdcc0 100755 --- a/demos/space-game/src/3d/Rig.jsx +++ b/demos/space-game/src/3d/Rig.jsx @@ -36,7 +36,7 @@ export default function Rig({ children }) { return ( - + {children} diff --git a/demos/space-game/src/3d/Rings.jsx b/demos/space-game/src/3d/Rings.jsx index d9659a4e..d26103e6 100755 --- a/demos/space-game/src/3d/Rings.jsx +++ b/demos/space-game/src/3d/Rings.jsx @@ -2,7 +2,7 @@ import * as THREE from 'three' import React from 'react' import useStore from '../store' -const geometry = new THREE.RingBufferGeometry(1, 1.01, 64) +const geometry = new THREE.RingGeometry(1, 1.01, 64) const material = new THREE.MeshBasicMaterial({ color: new THREE.Color('lightgreen'), side: THREE.DoubleSide }) export default function Rings() { diff --git a/demos/space-game/src/3d/Ship.jsx b/demos/space-game/src/3d/Ship.jsx index d77ea96b..1be8bf64 100755 --- a/demos/space-game/src/3d/Ship.jsx +++ b/demos/space-game/src/3d/Ship.jsx @@ -6,7 +6,7 @@ import useStore from '../store' import shipModel from './ship.gltf?url' -const geometry = new THREE.BoxBufferGeometry(1, 1, 40) +const geometry = new THREE.BoxGeometry(1, 1, 40) const lightgreen = new THREE.Color('lightgreen') const hotpink = new THREE.Color('hotpink') const laserMaterial = new THREE.MeshBasicMaterial({ color: lightgreen }) @@ -78,7 +78,7 @@ export default function Ship() { - + {lasers.map((t, i) => ( @@ -109,7 +109,7 @@ export default function Ship() { - + diff --git a/demos/space-game/src/App.jsx b/demos/space-game/src/App.jsx index b5687d51..ad49a5b2 100755 --- a/demos/space-game/src/App.jsx +++ b/demos/space-game/src/App.jsx @@ -28,7 +28,7 @@ export default function App() { camera={{ position: [0, 0, 2000], near: 0.01, far: 10000, fov }} onCreated={({ gl, camera }) => { actions.init(camera) - gl.toneMapping = THREE.Uncharted2ToneMapping + gl.toneMapping = THREE.NoToneMapping gl.setClearColor(new THREE.Color('#020209')) }}> diff --git a/demos/space-game/src/index.jsx b/demos/space-game/src/index.jsx index 4cce877a..bbad0802 100755 --- a/demos/space-game/src/index.jsx +++ b/demos/space-game/src/index.jsx @@ -1,6 +1,5 @@ -import React from 'react' -import ReactDOM from 'react-dom' +import { createRoot } from 'react-dom/client' import './styles.css' import App from './App' -ReactDOM.render(, document.getElementById('root')) +createRoot(document.getElementById('root')).render() diff --git a/demos/space-game/src/store.js b/demos/space-game/src/store.js index 953d531e..8741ccc0 100755 --- a/demos/space-game/src/store.js +++ b/demos/space-game/src/store.js @@ -1,5 +1,5 @@ import * as THREE from 'three' -import { Curves } from 'three/examples/jsm/curves/CurveExtras' +import * as Curves from 'three/examples/jsm/curves/CurveExtras' import { addEffect } from '@react-three/fiber' import create from 'zustand' import * as audio from './audio' @@ -8,7 +8,7 @@ let guid = 1 const useStore = create((set, get) => { let spline = new Curves.GrannyKnot() - let track = new THREE.TubeBufferGeometry(spline, 250, 0.2, 10, true) + let track = new THREE.TubeGeometry(spline, 250, 0.2, 10, true) let cancelLaserTO = undefined let cancelExplosionTO = undefined const box = new THREE.Box3() diff --git a/package-lock.json b/package-lock.json index 11b89550..bbc70cd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1521,8 +1521,7 @@ "leva": "^0.9.35", "react": "^18.3.1", "react-dom": "^18.3.1", - "three": "^0.165.0", - "v8": "0.1.0" + "three": "^0.165.0" }, "devDependencies": { "@types/react": "^18.3.3", @@ -3193,11 +3192,13 @@ "name": "@demo/space-game", "version": "1.0.0", "dependencies": { + "@react-three/drei": "^9.109.5", "@react-three/fiber": "^8.17.5", "react": "^18.3.1", "react-dom": "^18.3.1", "styled-components": "^5.3.11", "three": "^0.165.0", + "three-stdlib": "^2.32.2", "zustand": "^3.7.2" }, "devDependencies": { @@ -3589,8 +3590,7 @@ "glsl-noise": "^0.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", - "three": "^0.165.0", - "v8": "0.1.0" + "three": "^0.165.0" }, "devDependencies": { "@types/react": "^18.3.3", @@ -16621,15 +16621,6 @@ "js-sha1": "^0.6.0" } }, - "node_modules/v8": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/v8/-/v8-0.1.0.tgz", - "integrity": "sha512-cSrJCQ7WRDkSP8zbIwOO38kLSp1mGmBbx/I0pHdzQROZIMlO+qkiC4deQxg1I7pKguYJNMhMD5g/Nc1muiVyYw==", - "license": "MIT", - "bin": { - "v8": "bin/v8" - } - }, "node_modules/v8n": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/v8n/-/v8n-1.5.1.tgz",