UNPKG

lingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

44 lines 1.76 kB
import { Object3D, PerspectiveCamera } from "three"; import scene from "../../engine/scene"; import { characterCameraDefaults, characterCameraSchema } from "../../interface/ICharacterCamera"; import { FAR, NEAR } from "../../globals"; import CameraBase from "./CameraBase"; import MeshAppendable from "./MeshAppendable"; import { addCharacterCameraTransformEditSystem } from "../../systems/eventSystems/characterCameraTransformEditSystem"; import { characterCameraFollowSystem } from "../../systems/characterCameraFollowSystem"; class CharacterCamera extends CameraBase { static defaults = characterCameraDefaults; static schema = characterCameraSchema; constructor() { super(new PerspectiveCamera(75, 1, NEAR, FAR)); const midObject3d = (this.midObject3d = new Object3D()); this.outerObject3d.add(midObject3d); midObject3d.add(this.object3d); scene.attach(this.$camera); this.createEffect(() => { const found = this.firstChildState.get(); if (!(found instanceof MeshAppendable)) return; characterCameraFollowSystem.add(this, { found }); return () => { characterCameraFollowSystem.delete(this); }; }, [this.firstChildState.get]); addCharacterCameraTransformEditSystem(this); } disposeNode() { super.disposeNode(); scene.remove(this.$camera); } lockTargetRotation = true; append(object) { this.$appendNode(object); object.outerObject3d.parent !== scene && scene.attach(object.outerObject3d); } attach(object) { this.append(object); } } export default CharacterCamera; //# sourceMappingURL=CharacterCamera.js.map