28 lines
1.0 KiB
TypeScript
28 lines
1.0 KiB
TypeScript
import { observer } from "mobx-react-lite";
|
|
import { GameObjectView } from "./GameObjectView";
|
|
import { ObjectEditorView } from "./ObjectEditorView";
|
|
import { DebugLabelsView } from "./DebugLabelsView";
|
|
import type { Scene } from "../types";
|
|
|
|
type SceneViewProps = {
|
|
scene: Scene,
|
|
isEditor?: boolean;
|
|
debugOverlay?: boolean;
|
|
}
|
|
|
|
export const SceneView = observer(function (props: SceneViewProps) {
|
|
return (<>
|
|
<ambientLight intensity={0.5} />
|
|
<directionalLight position={[5, 5, 5]} intensity={1} />
|
|
{
|
|
Object.values(props.scene.objects)
|
|
.map((obj) => (
|
|
!props.isEditor
|
|
? <GameObjectView key={obj.id} object={obj} isPlayer={props.scene.playerObjectId === obj.id} isSceneEditor={props.isEditor} />
|
|
: <ObjectEditorView key={obj.id} object={obj} isPlayer={props.scene.playerObjectId === obj.id} />
|
|
))
|
|
}
|
|
{props.debugOverlay && <DebugLabelsView scene={props.scene} editMode={props.isEditor} />}
|
|
</>);
|
|
});
|