@matematrolii/sketchbook
Version:
3D matematrolii playground built on three.js and cannon.js
37 lines (33 loc) • 1.01 kB
text/typescript
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;
}
}