UNPKG

mylingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

33 lines (27 loc) 1.12 kB
import { Cancellable } from "@lincode/promiselikes" import { Vector3 } from "three" import PhysicsObjectManager from "." import scene from "../../../engine/scene" import getActualScale from "../../utils/getActualScale" import ObjectManager from "../ObjectManager" import { bvhCharacterSet } from "./bvh/bvhCharacterSet" import "./bvh/bvhLoop" import PhysicsUpdate from "./PhysicsUpdate" export default function (this: PhysicsObjectManager, handle: Cancellable) { if (handle.done) return scene.attach(this.outerObject3d) if (this instanceof ObjectManager) this.width = this.depth = Math.min(this.width, this.depth) this.rotationUpdate = new PhysicsUpdate() this.positionUpdate = new PhysicsUpdate() const actualScale = getActualScale(this).multiplyScalar(0.5) this.bvhHalfHeight = Math.max(actualScale.y, 0.5) this.bvhRadius = Math.max(actualScale.x, 0.5) this.bvhVelocity = new Vector3() bvhCharacterSet.add(this) handle.then(() => { bvhCharacterSet.delete(this) this.rotationUpdate = undefined this.positionUpdate = undefined }) }