UNPKG

@matematrolii/sketchbook

Version:

3D matematrolii playground built on three.js and cannon.js

41 lines (36 loc) 1.22 kB
import { ISpawnPoint } from "../interfaces/ISpawnPoint"; import * as THREE from "three"; import { World } from "./World"; import { Character } from "../characters/Character"; import { LoadingManager } from "../core/LoadingManager"; import * as Utils from "../core/FunctionLibrary"; import { ModelType, } from "../enums/WorldType"; export class CharacterSpawnPoint implements ISpawnPoint { private object: THREE.Object3D; constructor(object: THREE.Object3D) { this.object = object; } public spawn( loadingManager: LoadingManager, world: World ): void { loadingManager.loadGLTF(world.worldOptions?.playerModel, (model) => { let player = new Character(model, world.worldOptions?.playerTexture, ModelType.PLAYER, this.object.name); let worldPos = new THREE.Vector3(); this.object.getWorldPosition(worldPos); player.setPosition(worldPos.x, worldPos.y, worldPos.z); let forward = Utils.getForward(this.object); player.setOrientation(forward, true); world.add(player); player.takeControl(); player = undefined; worldPos = undefined; forward = undefined; }); } public destroy(): void { this.object = undefined; } }