UNPKG

@matematrolii/sketchbook

Version:

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

46 lines (42 loc) 1.44 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 { RandomBehaviour } from "../characters/character_ai/RandomBehaviour"; import * as Utils from "../core/FunctionLibrary"; import { ModelType, DriverType, } from "../enums/WorldType"; export class EnemySpawnPoint implements ISpawnPoint { private object: THREE.Object3D; public driver: string; public firstAINode: string; constructor(object: THREE.Object3D) { this.object = object; } public spawn( loadingManager: LoadingManager, world: World ): void { loadingManager.loadGLTF(world.worldOptions?.enemyModel, (model) => { let player = new Character(model, world.worldOptions?.enemyTexture, ModelType.ENEMY, 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); if (this.driver === DriverType.RANDOM) { player.setBehaviour(new RandomBehaviour()); } player = undefined; worldPos = undefined; forward = undefined; }); } public destroy(): void { this.object = undefined; } }