diff --git a/src/components/CharacterView.tsx b/src/components/CharacterView.tsx index 45ca7b2..0f5ddd1 100644 --- a/src/components/CharacterView.tsx +++ b/src/components/CharacterView.tsx @@ -1,5 +1,5 @@ import { observer } from "mobx-react-lite"; -import type { Character, Scene } from "../types"; +import type { Character } from "../types"; export const CharacterView = observer(function ({ character }: { character: Character }) { diff --git a/src/components/ObjectView.tsx b/src/components/ObjectView.tsx index 91826a3..0a55217 100644 --- a/src/components/ObjectView.tsx +++ b/src/components/ObjectView.tsx @@ -35,7 +35,19 @@ export const ObjectView = observer(function ({ object }: ObjectViewProps) { const controls = controlsRef.current; if (!controls) return; - const onDragChanged = (e: { value: boolean }) => state.worldEditor.setIsDragging(e.value); + const onDragChanged = (e: { value: boolean }) => { + state.worldEditor.setIsDragging(e.value); + if (!e.value) { + const group = groupRef.current; + if (group) + state.worldEditor.setObjectTransform( + object.id, + group.position.toArray(), + group.rotation.toArray().slice(0, 3) as R3, + group.scale.toArray(), + ); + } + }; controls.addEventListener('dragging-changed', onDragChanged); return () => { controls.removeEventListener('dragging-changed', onDragChanged); @@ -53,25 +65,11 @@ export const ObjectView = observer(function ({ object }: ObjectViewProps) { state.worldEditor.setSelectedObject(object.id, nextSelectionEditMode(selectionMode)); }; - const handleObjectChange = () => { - const group = groupRef.current; - if (!group) - return; - - state.worldEditor.setObjectTransform( - object.id, - group.position.toArray(), - group.rotation.toArray().slice(0, 3) as R3, // chop EulerOrder off array - group.scale.toArray(), - ); - }; - return (<> { (isSelected && (selectionMode !== undefined) && groupRef.current) && } - onChange={handleObjectChange} mode={selectionMode} /> } diff --git a/src/components/ThreeView.tsx b/src/components/ThreeView.tsx index 9c31116..e196090 100644 --- a/src/components/ThreeView.tsx +++ b/src/components/ThreeView.tsx @@ -1,4 +1,5 @@ import { Canvas } from '@react-three/fiber'; +import { Stats } from '@react-three/drei'; import { observer } from 'mobx-react-lite'; import { state } from '../state'; import { GameView } from './GameView'; @@ -16,6 +17,7 @@ export const ThreeView = observer(function () { // camera={state.world.character.camera} onPointerMissed={() => state.worldEditor.resetSelectedObject()} > + {isGame ? : }
diff --git a/src/state/gameState.ts b/src/state/gameState.ts index e663660..7cdf4a8 100644 --- a/src/state/gameState.ts +++ b/src/state/gameState.ts @@ -54,7 +54,7 @@ export class GameState { this.world.data.state = { playing: false }; } - public tick(deltaTime: number): void { + public tick(_deltaTime: number): void { //TODO } } \ No newline at end of file