import { Mesh } from '@tinoe/glc'; import { PhysicsPlugin } from '../common/physics'; import { OimoBallJointOptions, OimoDistanceJointOptions, OimoHingeJointOptions, OimoPrismeJointOptions, OimoRigidBodyOptions, OimoSlideJointOptions, OimoWheelJointOptions, OimoWorldOptions } from './interface'; import { OimoJoint } from './Joint'; import { OimoRigidBody } from './RigidBody'; import { OimoWorld } from './World'; export * from './interface'; export * from './RigidBody'; export declare enum OimoShapeType { sphere = "sphere", cylinder = "cylinder", box = "box", plane = "plane" } export declare enum OimoJointType { distance = "jointDistance", hinge = "jointHinge", prisme = "jointPrisme", slider = "jointSlider", ball = "jointBall", wheel = "jointWheel" } export declare class OimoPhysics extends PhysicsPlugin { /** * 物理世界 */ protected _world: OimoWorld; /** * 物理世界的刚体和Mesh的关系对应 */ protected _rigidBodyMap: Map, { body: OimoRigidBody; }>; get world(): OimoWorld; initWorld(options?: OimoWorldOptions): Promise; /** * 添加刚体 * @param mesh * @param options */ addRigidBody(mesh: Mesh, options?: OimoRigidBodyOptions): OimoRigidBody; /** * 移除刚体 * @param body */ removeRigidBody(body: OimoRigidBody): void; /** * 添加限制 * @param options */ addJoint(options: OimoDistanceJointOptions): OimoJoint; addJoint(options: OimoHingeJointOptions): OimoJoint; addJoint(options: OimoBallJointOptions): OimoJoint; addJoint(options: OimoSlideJointOptions): OimoJoint; addJoint(options: OimoWheelJointOptions): OimoJoint; addJoint(options: OimoPrismeJointOptions): OimoJoint; /** * 移除限制 * @param joint */ removeJoint(joint: OimoJoint): void; /** * 更新世界 */ protected _update: (deltaTime: number) => void; addCollider(mesh: Mesh, options?: OimoRigidBodyOptions): OimoRigidBody; private _detectCollision; }