UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

44 lines (40 loc) 1.32 kB
import {Object3DWithGeometry} from '../../../core/geometry/Group'; import {PlayerCollisionController} from './collisions/PlayerCollisionsController'; import {Object3D} from 'three'; import {Mesh} from 'three'; import {Capsule} from 'three/examples/jsm/math/Capsule'; import {EventDispatcher} from 'three'; import {Vector3} from 'three'; export interface JumpParams { duration: number; force: number; } export class BaseCollisionHandler extends EventDispatcher<{change: any}> { protected _playerCollisionController: PlayerCollisionController | undefined; setCheckCollisions(collisionObject?: Object3D) { if (collisionObject) { let objectWithGeo: Object3DWithGeometry | undefined; collisionObject.traverse((child) => { if (!objectWithGeo) { const mesh = child as Mesh; if (mesh.geometry) { objectWithGeo = mesh; } } }); if (objectWithGeo) { this._playerCollisionController = new PlayerCollisionController(objectWithGeo); } else { console.error('no geo found in', collisionObject); } } else { this._playerCollisionController = undefined; } } setCollisionCapsule(capsule: Capsule) { this._playerCollisionController?.setCapsule(capsule); } setJumpParams(params: JumpParams) {} setGravity(gravity: Vector3) {} setPlayerMass(mass: number) {} }