import Ammo from 'ammojs-typed'; import * as THREE from 'three'; import { Application } from './Application'; import { Entity } from './Entity'; import { CollisionType } from './Types'; export interface AmmoShape { type?: 'box' | 'cylinder' | 'geometry' | 'sphere'; object?: THREE.Object3D; size?: { length: number; height: number; width: number; }; radius?: number; offset: THREE.Vector3; rotation: THREE.Quaternion; } export interface AmmoBodyInfo { shapes: Array; friction?: number; restitution?: number; damping?: [number, number]; collisionType?: CollisionType; } export declare class AmmoBody { private _body; private _world; private _tempTransform; private _tempVec; private _tempQua; private _object; private _id; private _mass; private _info; constructor(world: Ammo.btDiscreteDynamicsWorld, object: THREE.Object3D, mass: number, info: AmmoBodyInfo); get PhyBody(): Ammo.btRigidBody; get CollisionType(): CollisionType; get Id(): number; get IsStatic(): boolean; get Object(): THREE.Object3D; getTransform(position: THREE.Vector3, rotation: THREE.Quaternion): Ammo.btTransform; createBoxShape(length: number, height: number, width: number): any; createCylinderShape(length: number, height: number, width: number): any; createSphereShape(radius: number): any; createConvexHullShape(object: THREE.Object3D): any; createCompoundBoxShape(shapes: AmmoShape[]): any; setInfo(): void; initBody(): void; setStaticObject(): void; changeCollisionType(type: CollisionType): void; setPose(): void; getPose(): void; remove(): void; updateTransform(): void; syncDynamics(): void; syncController(): void; } export declare class PhysiAmmo { private _app; private _world; private _collisionConfiguration; private _debugger; private _debug; private _bodyMap; private _collideCheckEntityList; private _loading; private _fixedTimeStep; constructor(app: Application, fixedTimeStep?: number, debug?: boolean); get Type(): string; initWorld(): void; init(): Promise; delay(ms: number): Promise; waitForAmmoReady(): Promise; addCollideCheckEntity(entity: any): void; removeCollideCheckEntity(entity: any): void; handleCollideCheck(): void; setGround(): void; createShape(type: 'box' | 'cylinder' | 'geometry', size: { length: number; height: number; width: number; }, object?: THREE.Object3D, offset?: THREE.Vector3, rotation?: THREE.Euler): AmmoShape; createBodyInfo(shapes: Array, friction?: number, restitution?: number, collisionType?: CollisionType, damping?: [number, number]): AmmoBodyInfo; addBody(entity: Entity, object: THREE.Object3D, mass: number, info: AmmoBodyInfo): Promise; removeBody(body: AmmoBody): void; update(deltaTime: number): void; destroy(): void; }