UNPKG

@matematrolii/sketchbook

Version:

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

37 lines (33 loc) 1.01 kB
import { ISpawnPoint } from '../interfaces/ISpawnPoint'; import * as THREE from 'three'; import { World } from './World'; import { Item } from '../items/Item'; import { LoadingManager } from '../core/LoadingManager'; import * as Utils from '../core/FunctionLibrary'; export class ItemSpawnPoint implements ISpawnPoint { private object: THREE.Object3D; constructor(object: THREE.Object3D) { this.object = object; } public spawn(loadingManager: LoadingManager, world: World): void { loadingManager.loadGLTF(world.worldOptions?.itemModel, (model) => { let item = new Item(model, world.worldOptions?.itemTexture); let worldPos = new THREE.Vector3(); this.object.getWorldPosition(worldPos); item.setPosition(worldPos.x, worldPos.y, worldPos.z); let forward = Utils.getForward(this.object); item.setOrientation(forward, true); world.add(item); item = undefined; worldPos = undefined; forward = undefined; }); } public destroy(): void { this.object = undefined; } }