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