import { Bone, Euler, Matrix4, Object3D, Quaternion, SkinnedMesh, Vector3 } from '../../../src/Three'; export interface MMDPhysicsParameter { unitStep?: number; maxStepNum?: number; gravity?: Vector3; } export class MMDPhysics { constructor(mesh: SkinnedMesh, rigidBodyParams: object[], constraintParams?: object[], params?: MMDPhysicsParameter); manager: ResourceManager; mesh: SkinnedMesh; unitStep: number; maxStepNum: number; gravity: Vector3; world: null; bodies: RigidBody[]; constraints: Constraint[]; update(delta: number): this; reset(): this; warmup(cycles: number): this; setGravity(gravity: Vector3): this; createHelper(): MMDPhysicsHelper; } export class ResourceManager{ constructor(); threeVector3s: Vector3[]; threeMatrix4s: Matrix4[]; threeQuaternions: Quaternion[]; threeEulers: Euler[]; transforms: object[]; quaternions: object[]; vector3s: object[]; allocThreeVector3(): void; freeThreeVector3(v: Vector3): void; allocThreeMatrix4(): void; freeThreeMatrix4(m: Matrix4): void; allocThreeQuaternion(): void; freeThreeQuaternion(q: Quaternion): void; allocThreeEuler(): void; freeThreeEuler(e: Euler): void; allocTransform(): void; freeTransform(t: object): void; allocQuaternion(): void; freeQuaternion(q: object): void; allocVector3(): void; freeVector3(v: object): void; setIdentity(): void; getBasis(t: object): object; getBasisAsMatrix3(t: object): object; getOrigin(t: object): object; setOrigin(t: object, v: object): void; copyOrigin(t1: object, t2: object): void; setBasis(t: object, q: object): void; setBasisFromMatrix3(t: object, m: object): void; setOriginFromArray3(t: object, a: number[]): void; setOriginFromThreeVector3(t: object, v: Vector3): void; setBasisFromArray3(t: object, a: number[]): void; setBasisFromThreeQuaternion(t: object, a: Quaternion): void; multiplyTransforms(t1: object, t2: object): object; inverseTransform(t: object): object; multiplyMatrices3(m1: object, m2: object): object; addVector3(v1: object, v2: object): object; dotVectors3(v1: object, v2: object): number; rowOfMatrix3(m: object, i: number): object; columnOfMatrix3(m: object, i: number): object; negativeVector3(v: object): object; multiplyMatrix3ByVector3(m: object, v: object): object; transposeMatrix3(m: object): object; quaternionToMatrix3(q: object): object; matrix3ToQuaternion(m: object): object; } export class RigidBody{ constructor(mesh: SkinnedMesh, world: object, params: object, manager: ResourceManager); mesh: SkinnedMesh; world: object; params: object; manager: ResourceManager; body: object; bone: Bone; boneOffsetForm: object; boneOffsetFormInverse: object; reset(): this; updateFromBone(): this; updateBone(): this; } export class Constraint{ constructor(mesh: SkinnedMesh, world: object, bodyA: RigidBody, bodyB: RigidBody, params: object, manager: ResourceManager); } export class MMDPhysicsHelper extends Object3D { constructor(); }