1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603 |
- declare module "utils/EventTarget" {
- export class EventTarget {
- private _listeners;
- addEventListener(type: string, listener: Function): EventTarget;
- hasEventListener(type: string, listener: Function): boolean;
- hasAnyEventListener(type: string): boolean;
- removeEventListener(type: string, listener: Function): EventTarget;
- dispatchEvent(event: any): EventTarget;
- }
- }
- declare module "math/Quaternion" {
- import { Vec3 } from "math/Vec3";
- export class Quaternion {
- x: number;
- y: number;
- z: number;
- w: number;
- constructor(x?: number, y?: number, z?: number, w?: number);
- set(x: number, y: number, z: number, w: number): Quaternion;
- toString(): string;
- toArray(): [number, number, number, number];
- setFromAxisAngle(vector: Vec3, angle: number): Quaternion;
- toAxisAngle(targetAxis?: Vec3): [Vec3, number];
- setFromVectors(u: Vec3, v: Vec3): Quaternion;
- mult(quat: Quaternion, target?: Quaternion): Quaternion;
- inverse(target?: Quaternion): Quaternion;
- conjugate(target?: Quaternion): Quaternion;
- normalize(): Quaternion;
- normalizeFast(): Quaternion;
- vmult(v: Vec3, target?: Vec3): Vec3;
- copy(quat: Quaternion): Quaternion;
- toEuler(target: Vec3, order?: string): void;
- setFromEuler(x: number, y: number, z: number, order?: string): Quaternion;
- clone(): Quaternion;
- slerp(toQuat: Quaternion, t: number, target?: Quaternion): Quaternion;
- integrate(angularVelocity: Vec3, dt: number, angularFactor: Vec3, target?: Quaternion): Quaternion;
- }
- }
- declare module "math/Mat3" {
- import { Vec3 } from "math/Vec3";
- import type { Quaternion } from "math/Quaternion";
- export class Mat3 {
- elements: number[];
- constructor(elements?: number[]);
- identity(): void;
- setZero(): void;
- setTrace(vector: Vec3): void;
- getTrace(target?: Vec3): Vec3;
- vmult(v: Vec3, target?: Vec3): Vec3;
- smult(s: number): void;
- mmult(matrix: Mat3, target?: Mat3): Mat3;
- scale(vector: Vec3, target?: Mat3): Mat3;
- solve(b: Vec3, target?: Vec3): Vec3;
- e(row: number, column: number): number;
- e(row: number, column: number, value: number): void;
- copy(matrix: Mat3): Mat3;
- toString(): string;
- reverse(target?: Mat3): Mat3;
- setRotationFromQuaternion(q: Quaternion): Mat3;
- transpose(target?: Mat3): Mat3;
- }
- }
- declare module "math/Vec3" {
- import { Mat3 } from "math/Mat3";
- export class Vec3 {
- x: number;
- y: number;
- z: number;
- static ZERO: Vec3;
- static UNIT_X: Vec3;
- static UNIT_Y: Vec3;
- static UNIT_Z: Vec3;
- constructor(x?: number, y?: number, z?: number);
- cross(vector: Vec3, target?: Vec3): Vec3;
- set(x: number, y: number, z: number): Vec3;
- setZero(): void;
- vadd(vector: Vec3): Vec3;
- vadd(vector: Vec3, target: Vec3): void;
- vsub(vector: Vec3): Vec3;
- vsub(vector: Vec3, target: Vec3): void;
- crossmat(): Mat3;
- normalize(): number;
- unit(target?: Vec3): Vec3;
- length(): number;
- lengthSquared(): number;
- distanceTo(p: Vec3): number;
- distanceSquared(p: Vec3): number;
- scale(scalar: number, target?: Vec3): Vec3;
- vmul(vector: Vec3, target?: Vec3): Vec3;
- addScaledVector(scalar: number, vector: Vec3, target?: Vec3): Vec3;
- dot(vector: Vec3): number;
- isZero(): boolean;
- negate(target?: Vec3): Vec3;
- tangents(t1: Vec3, t2: Vec3): void;
- toString(): string;
- toArray(): [number, number, number];
- copy(vector: Vec3): Vec3;
- lerp(vector: Vec3, t: number, target: Vec3): void;
- almostEquals(vector: Vec3, precision?: number): boolean;
- almostZero(precision?: number): boolean;
- isAntiparallelTo(vector: Vec3, precision?: number): boolean;
- clone(): Vec3;
- }
- }
- declare module "math/Transform" {
- import { Vec3 } from "math/Vec3";
- import { Quaternion } from "math/Quaternion";
- export type TransformOptions = ConstructorParameters<typeof Transform>[0];
- export class Transform {
- position: Vec3;
- quaternion: Quaternion;
- constructor(options?: {
- position?: Vec3;
- quaternion?: Quaternion;
- });
- pointToLocal(worldPoint: Vec3, result?: Vec3): Vec3;
- pointToWorld(localPoint: Vec3, result?: Vec3): Vec3;
- vectorToWorldFrame(localVector: Vec3, result?: Vec3): Vec3;
- static pointToLocalFrame(position: Vec3, quaternion: Quaternion, worldPoint: Vec3, result?: Vec3): Vec3;
- static pointToWorldFrame(position: Vec3, quaternion: Quaternion, localPoint: Vec3, result?: Vec3): Vec3;
- static vectorToWorldFrame(quaternion: Quaternion, localVector: Vec3, result?: Vec3): Vec3;
- static vectorToLocalFrame(position: Vec3, quaternion: Quaternion, worldVector: Vec3, result?: Vec3): Vec3;
- }
- }
- declare module "material/Material" {
- export type MaterialOptions = ConstructorParameters<typeof Material>[0];
- export class Material {
- name: string;
- id: number;
- friction: number;
- restitution: number;
- static idCounter: number;
- constructor(options?: {
- friction?: number;
- restitution?: number;
- } | string);
- }
- }
- declare module "shapes/Shape" {
- import type { Vec3 } from "math/Vec3";
- import type { Quaternion } from "math/Quaternion";
- import type { Body } from "objects/Body";
- import type { Material } from "material/Material";
- export const SHAPE_TYPES: {
- readonly SPHERE: 1;
- readonly PLANE: 2;
- readonly BOX: 4;
- readonly COMPOUND: 8;
- readonly CONVEXPOLYHEDRON: 16;
- readonly HEIGHTFIELD: 32;
- readonly PARTICLE: 64;
- readonly CYLINDER: 128;
- readonly TRIMESH: 256;
- };
- export type ShapeType = typeof SHAPE_TYPES[keyof typeof SHAPE_TYPES];
- export type ShapeOptions = ConstructorParameters<typeof Shape>[0];
- export class Shape {
- id: number;
- type: ShapeType | 0;
- boundingSphereRadius: number;
- collisionResponse: boolean;
- collisionFilterGroup: number;
- collisionFilterMask: number;
- material: Material | null;
- body: Body | null;
- static idCounter: number;
- static types: {
- readonly SPHERE: 1;
- readonly PLANE: 2;
- readonly BOX: 4;
- readonly COMPOUND: 8;
- readonly CONVEXPOLYHEDRON: 16;
- readonly HEIGHTFIELD: 32;
- readonly PARTICLE: 64;
- readonly CYLINDER: 128;
- readonly TRIMESH: 256;
- };
- constructor(options?: {
- type?: ShapeType;
- collisionResponse?: boolean;
- collisionFilterGroup?: number;
- collisionFilterMask?: number;
- material?: Material;
- });
- updateBoundingSphereRadius(): void;
- volume(): number;
- calculateLocalInertia(mass: number, target: Vec3): void;
- calculateWorldAABB(pos: Vec3, quat: Quaternion, min: Vec3, max: Vec3): void;
- }
- }
- declare module "collision/RaycastResult" {
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- import type { Shape } from "shapes/Shape";
- export class RaycastResult {
- rayFromWorld: Vec3;
- rayToWorld: Vec3;
- hitNormalWorld: Vec3;
- hitPointWorld: Vec3;
- hasHit: boolean;
- shape: Shape | null;
- body: Body | null;
- hitFaceIndex: number;
- distance: number;
- shouldStop: boolean;
- constructor();
- reset(): void;
- abort(): void;
- set(rayFromWorld: Vec3, rayToWorld: Vec3, hitNormalWorld: Vec3, hitPointWorld: Vec3, shape: Shape, body: Body, distance: number): void;
- }
- }
- declare module "shapes/Sphere" {
- import { Shape } from "shapes/Shape";
- import { Vec3 } from "math/Vec3";
- import type { Quaternion } from "math/Quaternion";
- export class Sphere extends Shape {
- radius: number;
- constructor(radius: number);
- calculateLocalInertia(mass: number, target?: Vec3): Vec3;
- volume(): number;
- updateBoundingSphereRadius(): void;
- calculateWorldAABB(pos: Vec3, quat: Quaternion, min: Vec3, max: Vec3): void;
- }
- }
- declare module "shapes/ConvexPolyhedron" {
- import { Shape } from "shapes/Shape";
- import { Vec3 } from "math/Vec3";
- import type { Quaternion } from "math/Quaternion";
- export type ConvexPolyhedronContactPoint = {
- point: Vec3;
- normal: Vec3;
- depth: number;
- };
- export class ConvexPolyhedron extends Shape {
- vertices: Vec3[];
- faces: number[][];
- faceNormals: Vec3[];
- worldVertices: Vec3[];
- worldVerticesNeedsUpdate: boolean;
- worldFaceNormals: Vec3[];
- worldFaceNormalsNeedsUpdate: boolean;
- uniqueAxes: Vec3[] | null;
- uniqueEdges: Vec3[];
- constructor(props?: {
- vertices?: Vec3[];
- faces?: number[][];
- normals?: Vec3[];
- axes?: Vec3[];
- boundingSphereRadius?: number;
- });
- computeEdges(): void;
- computeNormals(): void;
- getFaceNormal(i: number, target: Vec3): void;
- static computeNormal(va: Vec3, vb: Vec3, vc: Vec3, target: Vec3): void;
- clipAgainstHull(posA: Vec3, quatA: Quaternion, hullB: ConvexPolyhedron, posB: Vec3, quatB: Quaternion, separatingNormal: Vec3, minDist: number, maxDist: number, result: ConvexPolyhedronContactPoint[]): void;
- findSeparatingAxis(hullB: ConvexPolyhedron, posA: Vec3, quatA: Quaternion, posB: Vec3, quatB: Quaternion, target: Vec3, faceListA?: number[] | null, faceListB?: number[] | null): boolean;
- testSepAxis(axis: Vec3, hullB: ConvexPolyhedron, posA: Vec3, quatA: Quaternion, posB: Vec3, quatB: Quaternion): number | false;
- calculateLocalInertia(mass: number, target: Vec3): void;
- getPlaneConstantOfFace(face_i: number): number;
- clipFaceAgainstHull(separatingNormal: Vec3, posA: Vec3, quatA: Quaternion, worldVertsB1: Vec3[], minDist: number, maxDist: number, result: ConvexPolyhedronContactPoint[]): void;
- clipFaceAgainstPlane(inVertices: Vec3[], outVertices: Vec3[], planeNormal: Vec3, planeConstant: number): Vec3[];
- computeWorldVertices(position: Vec3, quat: Quaternion): void;
- computeLocalAABB(aabbmin: Vec3, aabbmax: Vec3): void;
- computeWorldFaceNormals(quat: Quaternion): void;
- updateBoundingSphereRadius(): void;
- calculateWorldAABB(pos: Vec3, quat: Quaternion, min: Vec3, max: Vec3): void;
- volume(): number;
- getAveragePointLocal(target?: Vec3): Vec3;
- transformAllPoints(offset: Vec3, quat: Quaternion): void;
- pointIsInside(p: Vec3): 1 | -1 | false;
- static project(shape: ConvexPolyhedron, axis: Vec3, pos: Vec3, quat: Quaternion, result: number[]): void;
- }
- }
- declare module "shapes/Box" {
- import { Shape } from "shapes/Shape";
- import { Vec3 } from "math/Vec3";
- import { ConvexPolyhedron } from "shapes/ConvexPolyhedron";
- import type { Quaternion } from "math/Quaternion";
- export class Box extends Shape {
- halfExtents: Vec3;
- convexPolyhedronRepresentation: ConvexPolyhedron;
- constructor(halfExtents: Vec3);
- updateConvexPolyhedronRepresentation(): void;
- calculateLocalInertia(mass: number, target?: Vec3): Vec3;
- static calculateInertia(halfExtents: Vec3, mass: number, target: Vec3): void;
- getSideNormals(sixTargetVectors: Vec3[], quat: Quaternion): Vec3[];
- volume(): number;
- updateBoundingSphereRadius(): void;
- forEachWorldCorner(pos: Vec3, quat: Quaternion, callback: (x: number, y: number, z: number) => void): void;
- calculateWorldAABB(pos: Vec3, quat: Quaternion, min: Vec3, max: Vec3): void;
- }
- }
- declare module "shapes/Plane" {
- import { Shape } from "shapes/Shape";
- import { Vec3 } from "math/Vec3";
- import type { Quaternion } from "math/Quaternion";
- export class Plane extends Shape {
- worldNormal: Vec3;
- worldNormalNeedsUpdate: boolean;
- boundingSphereRadius: number;
- constructor();
- computeWorldNormal(quat: Quaternion): void;
- calculateLocalInertia(mass: number, target?: Vec3): Vec3;
- volume(): number;
- calculateWorldAABB(pos: Vec3, quat: Quaternion, min: Vec3, max: Vec3): void;
- updateBoundingSphereRadius(): void;
- }
- }
- declare module "utils/Utils" {
- export class Utils {
- static defaults(options: Record<string, any> | undefined, defaults: Record<string, any>): Record<string, any>;
- }
- }
- declare module "shapes/Heightfield" {
- import { Shape } from "shapes/Shape";
- import { ConvexPolyhedron } from "shapes/ConvexPolyhedron";
- import { Vec3 } from "math/Vec3";
- import type { AABB } from "collision/AABB";
- import type { Quaternion } from "math/Quaternion";
- export type HeightfieldOptions = ConstructorParameters<typeof Heightfield>[1];
- type HeightfieldPillar = {
- convex: any;
- offset: any;
- };
- export class Heightfield extends Shape {
- data: number[][];
- maxValue: number | null;
- minValue: number | null;
- elementSize: number;
- cacheEnabled: boolean;
- pillarConvex: ConvexPolyhedron;
- pillarOffset: Vec3;
- private _cachedPillars;
- constructor(data: number[][], options?: {
- maxValue?: number | null;
- minValue?: number | null;
- elementSize?: number;
- });
- update(): void;
- updateMinValue(): void;
- updateMaxValue(): void;
- setHeightValueAtIndex(xi: number, yi: number, value: number): void;
- getRectMinMax(iMinX: number, iMinY: number, iMaxX: number, iMaxY: number, result?: number[]): void;
- getIndexOfPosition(x: number, y: number, result: number[], clamp: boolean): boolean;
- getTriangleAt(x: number, y: number, edgeClamp: boolean, a: Vec3, b: Vec3, c: Vec3): boolean;
- getNormalAt(x: number, y: number, edgeClamp: boolean, result: Vec3): void;
- getAabbAtIndex(xi: number, yi: number, { lowerBound, upperBound }: AABB): void;
- getHeightAt(x: number, y: number, edgeClamp: boolean): number;
- getCacheConvexTrianglePillarKey(xi: number, yi: number, getUpperTriangle: boolean): string;
- getCachedConvexTrianglePillar(xi: number, yi: number, getUpperTriangle: boolean): HeightfieldPillar;
- setCachedConvexTrianglePillar(xi: number, yi: number, getUpperTriangle: boolean, convex: ConvexPolyhedron, offset: Vec3): void;
- clearCachedConvexTrianglePillar(xi: number, yi: number, getUpperTriangle: boolean): void;
- getTriangle(xi: number, yi: number, upper: boolean, a: Vec3, b: Vec3, c: Vec3): void;
- getConvexTrianglePillar(xi: number, yi: number, getUpperTriangle: boolean): void;
- calculateLocalInertia(mass: number, target?: Vec3): Vec3;
- volume(): number;
- calculateWorldAABB(pos: Vec3, quat: Quaternion, min: Vec3, max: Vec3): void;
- updateBoundingSphereRadius(): void;
- setHeightsFromImage(image: HTMLImageElement, scale: Vec3): void;
- }
- }
- declare module "utils/Octree" {
- import { AABB } from "collision/AABB";
- import type { Transform } from "math/Transform";
- import type { Ray } from "collision/Ray";
- class OctreeNode {
- root: OctreeNode | null;
- aabb: AABB;
- data: number[];
- children: OctreeNode[];
- constructor(options?: {
- root?: Octree | null;
- aabb?: AABB;
- });
- reset(): void;
- insert(aabb: AABB, elementData: number, level?: number): boolean;
- subdivide(): void;
- aabbQuery(aabb: AABB, result: number[]): number[];
- rayQuery(ray: Ray, treeTransform: Transform, result: number[]): number[];
- removeEmptyNodes(): void;
- }
- export class Octree extends OctreeNode {
- maxDepth: number;
- constructor(aabb?: AABB, options?: {
- maxDepth?: number;
- });
- }
- }
- declare module "shapes/Trimesh" {
- import { Shape } from "shapes/Shape";
- import { Vec3 } from "math/Vec3";
- import { AABB } from "collision/AABB";
- import { Octree } from "utils/Octree";
- import type { Quaternion } from "math/Quaternion";
- export class Trimesh extends Shape {
- vertices: Float32Array;
- indices: Int16Array;
- normals: Float32Array;
- aabb: AABB;
- edges: Int16Array | null;
- scale: Vec3;
- tree: Octree;
- constructor(vertices: number[], indices: number[]);
- updateTree(): void;
- getTrianglesInAABB(aabb: AABB, result: number[]): number[];
- setScale(scale: Vec3): void;
- updateNormals(): void;
- updateEdges(): void;
- getEdgeVertex(edgeIndex: number, firstOrSecond: number, vertexStore: Vec3): void;
- getEdgeVector(edgeIndex: number, vectorStore: Vec3): void;
- static computeNormal(va: Vec3, vb: Vec3, vc: Vec3, target: Vec3): void;
- getVertex(i: number, out: Vec3): Vec3;
- private _getUnscaledVertex;
- getWorldVertex(i: number, pos: Vec3, quat: Quaternion, out: Vec3): Vec3;
- getTriangleVertices(i: number, a: Vec3, b: Vec3, c: Vec3): void;
- getNormal(i: number, target: Vec3): Vec3;
- calculateLocalInertia(mass: number, target: Vec3): Vec3;
- computeLocalAABB(aabb: AABB): void;
- updateAABB(): void;
- updateBoundingSphereRadius(): void;
- calculateWorldAABB(pos: Vec3, quat: Quaternion, min: Vec3, max: Vec3): void;
- volume(): number;
- static createTorus(radius?: number, tube?: number, radialSegments?: number, tubularSegments?: number, arc?: number): Trimesh;
- }
- }
- declare module "math/JacobianElement" {
- import { Vec3 } from "math/Vec3";
- export class JacobianElement {
- spatial: Vec3;
- rotational: Vec3;
- constructor();
- multiplyElement(element: JacobianElement): number;
- multiplyVectors(spatial: Vec3, rotational: Vec3): number;
- }
- }
- declare module "equations/Equation" {
- import { JacobianElement } from "math/JacobianElement";
- import type { Body } from "objects/Body";
- import type { Shape } from "shapes/Shape";
- export class Equation {
- id: number;
- minForce: number;
- maxForce: number;
- bi: Body;
- bj: Body;
- si: Shape;
- sj: Shape;
- a: number;
- b: number;
- eps: number;
- jacobianElementA: JacobianElement;
- jacobianElementB: JacobianElement;
- enabled: boolean;
- multiplier: number;
- static idCounter: number;
- constructor(bi: Body, bj: Body, minForce?: number, maxForce?: number);
- setSpookParams(stiffness: number, relaxation: number, timeStep: number): void;
- computeB(a: number, b: number, h: number): number;
- computeGq(): number;
- computeGW(): number;
- computeGWlambda(): number;
- computeGiMf(): number;
- computeGiMGt(): number;
- addToWlambda(deltalambda: number): void;
- computeC(): number;
- }
- }
- declare module "solver/Solver" {
- import type { Equation } from "equations/Equation";
- import type { World } from "world/World";
- export class Solver {
- equations: Equation[];
- constructor();
- solve(dt: number, world: World): number;
- addEquation(eq: Equation): void;
- removeEquation(eq: Equation): void;
- removeAllEquations(): void;
- }
- }
- declare module "solver/GSSolver" {
- import { Solver } from "solver/Solver";
- import type { World } from "world/World";
- export class GSSolver extends Solver {
- iterations: number;
- tolerance: number;
- constructor();
- solve(dt: number, world: World): number;
- }
- }
- declare module "collision/Broadphase" {
- import { Body } from "objects/Body";
- import type { AABB } from "collision/AABB";
- import type { World } from "world/World";
- export class Broadphase {
- world: World | null;
- useBoundingBoxes: boolean;
- dirty: boolean;
- constructor();
- collisionPairs(world: World, p1: Body[], p2: Body[]): void;
- needBroadphaseCollision(bodyA: Body, bodyB: Body): boolean;
- intersectionTest(bodyA: Body, bodyB: Body, pairs1: Body[], pairs2: Body[]): void;
- doBoundingSphereBroadphase(bodyA: Body, bodyB: Body, pairs1: Body[], pairs2: Body[]): void;
- doBoundingBoxBroadphase(bodyA: Body, bodyB: Body, pairs1: Body[], pairs2: Body[]): void;
- makePairsUnique(pairs1: Body[], pairs2: Body[]): void;
- setWorld(world: World): void;
- static boundingSphereCheck(bodyA: Body, bodyB: Body): boolean;
- aabbQuery(world: World, aabb: AABB, result: Body[]): Body[];
- }
- }
- declare module "collision/NaiveBroadphase" {
- import { Broadphase } from "collision/Broadphase";
- import type { AABB } from "collision/AABB";
- import type { Body } from "objects/Body";
- import type { World } from "world/World";
- export class NaiveBroadphase extends Broadphase {
- constructor();
- collisionPairs(world: World, pairs1: Body[], pairs2: Body[]): void;
- aabbQuery(world: World, aabb: AABB, result?: Body[]): Body[];
- }
- }
- declare module "utils/Pool" {
- export class Pool {
- objects: any[];
- type: any;
- release(...args: any[]): Pool;
- get(): any;
- constructObject(): void;
- resize(size: number): Pool;
- }
- }
- declare module "utils/Vec3Pool" {
- import { Pool } from "utils/Pool";
- import { Vec3 } from "math/Vec3";
- export class Vec3Pool extends Pool {
- type: typeof Vec3;
- constructObject(): Vec3;
- }
- }
- declare module "equations/ContactEquation" {
- import { Equation } from "equations/Equation";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export class ContactEquation extends Equation {
- restitution: number;
- ri: Vec3;
- rj: Vec3;
- ni: Vec3;
- constructor(bodyA: Body, bodyB: Body, maxForce?: number);
- computeB(h: number): number;
- getImpactVelocityAlongNormal(): number;
- }
- }
- declare module "equations/FrictionEquation" {
- import { Equation } from "equations/Equation";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export class FrictionEquation extends Equation {
- ri: Vec3;
- rj: Vec3;
- t: Vec3;
- constructor(bodyA: Body, bodyB: Body, slipForce: number);
- computeB(h: number): number;
- }
- }
- declare module "shapes/Particle" {
- import { Shape } from "shapes/Shape";
- import { Vec3 } from "math/Vec3";
- import type { Quaternion } from "math/Quaternion";
- export class Particle extends Shape {
- constructor();
- calculateLocalInertia(mass: number, target?: Vec3): Vec3;
- volume(): number;
- updateBoundingSphereRadius(): void;
- calculateWorldAABB(pos: Vec3, quat: Quaternion, min: Vec3, max: Vec3): void;
- }
- }
- declare module "shapes/Cylinder" {
- import { ConvexPolyhedron } from "shapes/ConvexPolyhedron";
- export class Cylinder extends ConvexPolyhedron {
- radiusTop: number;
- radiusBottom: number;
- height: number;
- numSegments: number;
- constructor(radiusTop?: number, radiusBottom?: number, height?: number, numSegments?: number);
- }
- }
- declare module "material/ContactMaterial" {
- import type { Material } from "material/Material";
- export type ContactMaterialOptions = ConstructorParameters<typeof ContactMaterial>[2];
- export class ContactMaterial {
- id: number;
- materials: [Material, Material];
- friction: number;
- restitution: number;
- contactEquationStiffness: number;
- contactEquationRelaxation: number;
- frictionEquationStiffness: number;
- frictionEquationRelaxation: number;
- static idCounter: number;
- constructor(m1: Material, m2: Material, options: {
- friction?: number;
- restitution?: number;
- contactEquationStiffness?: number;
- contactEquationRelaxation?: number;
- frictionEquationStiffness?: number;
- frictionEquationRelaxation?: number;
- });
- }
- }
- declare module "world/Narrowphase" {
- import { Shape } from "shapes/Shape";
- import { Vec3 } from "math/Vec3";
- import { Quaternion } from "math/Quaternion";
- import { Body } from "objects/Body";
- import { Vec3Pool } from "utils/Vec3Pool";
- import { ContactEquation } from "equations/ContactEquation";
- import { FrictionEquation } from "equations/FrictionEquation";
- import type { Box } from "shapes/Box";
- import type { Sphere } from "shapes/Sphere";
- import type { ConvexPolyhedron } from "shapes/ConvexPolyhedron";
- import type { Particle } from "shapes/Particle";
- import type { Plane } from "shapes/Plane";
- import type { Trimesh } from "shapes/Trimesh";
- import type { Heightfield } from "shapes/Heightfield";
- import { Cylinder } from "shapes/Cylinder";
- import type { ContactMaterial } from "material/ContactMaterial";
- import type { World } from "world/World";
- export const COLLISION_TYPES: {
- sphereSphere: 1;
- spherePlane: 3;
- boxBox: 4;
- sphereBox: 5;
- planeBox: 6;
- convexConvex: 16;
- sphereConvex: 17;
- planeConvex: 18;
- boxConvex: 20;
- sphereHeightfield: 33;
- boxHeightfield: 36;
- convexHeightfield: 48;
- sphereParticle: 65;
- planeParticle: 66;
- boxParticle: 68;
- convexParticle: 80;
- cylinderCylinder: 128;
- sphereCylinder: 129;
- planeCylinder: 130;
- boxCylinder: 132;
- convexCylinder: 144;
- heightfieldCylinder: 160;
- particleCylinder: 192;
- sphereTrimesh: 257;
- planeTrimesh: 258;
- };
- export type CollisionType = typeof COLLISION_TYPES[keyof typeof COLLISION_TYPES];
- export class Narrowphase {
- contactPointPool: ContactEquation[];
- frictionEquationPool: FrictionEquation[];
- result: ContactEquation[];
- frictionResult: FrictionEquation[];
- v3pool: Vec3Pool;
- world: World;
- currentContactMaterial: ContactMaterial;
- enableFrictionReduction: boolean;
- get [COLLISION_TYPES.sphereSphere](): (si: Sphere, sj: Sphere, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => boolean | void;
- get [COLLISION_TYPES.spherePlane](): (si: Sphere, sj: Plane, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.boxBox](): (si: Box, sj: Box, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.sphereBox](): (si: Sphere, sj: Box, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.planeBox](): (si: Plane, sj: Box, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.convexConvex](): (si: ConvexPolyhedron, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined, faceListA?: number[] | null | undefined, faceListB?: number[] | null | undefined) => true | void;
- get [COLLISION_TYPES.sphereConvex](): (si: Sphere, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.planeConvex](): (planeShape: Plane, convexShape: ConvexPolyhedron, planePosition: Vec3, convexPosition: Vec3, planeQuat: Quaternion, convexQuat: Quaternion, planeBody: Body, convexBody: Body, si?: Shape | undefined, sj?: Shape | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.boxConvex](): (si: Box, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.sphereHeightfield](): (sphereShape: Sphere, hfShape: Heightfield, spherePos: Vec3, hfPos: Vec3, sphereQuat: Quaternion, hfQuat: Quaternion, sphereBody: Body, hfBody: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.boxHeightfield](): (si: Box, sj: Heightfield, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.convexHeightfield](): (convexShape: ConvexPolyhedron, hfShape: Heightfield, convexPos: Vec3, hfPos: Vec3, convexQuat: Quaternion, hfQuat: Quaternion, convexBody: Body, hfBody: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.sphereParticle](): (sj: Sphere, si: Particle, xj: Vec3, xi: Vec3, qj: Quaternion, qi: Quaternion, bj: Body, bi: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.planeParticle](): (sj: Plane, si: Particle, xj: Vec3, xi: Vec3, qj: Quaternion, qi: Quaternion, bj: Body, bi: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.boxParticle](): (si: Box, sj: Particle, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.convexParticle](): (sj: ConvexPolyhedron, si: Particle, xj: Vec3, xi: Vec3, qj: Quaternion, qi: Quaternion, bj: Body, bi: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.cylinderCylinder](): (si: ConvexPolyhedron, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined, faceListA?: number[] | null | undefined, faceListB?: number[] | null | undefined) => true | void;
- get [COLLISION_TYPES.sphereCylinder](): (si: Sphere, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.planeCylinder](): (planeShape: Plane, convexShape: ConvexPolyhedron, planePosition: Vec3, convexPosition: Vec3, planeQuat: Quaternion, convexQuat: Quaternion, planeBody: Body, convexBody: Body, si?: Shape | undefined, sj?: Shape | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.boxCylinder](): (si: Box, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.convexCylinder](): (si: ConvexPolyhedron, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined, faceListA?: number[] | null | undefined, faceListB?: number[] | null | undefined) => true | void;
- get [COLLISION_TYPES.heightfieldCylinder](): (hfShape: Heightfield, convexShape: Cylinder, hfPos: Vec3, convexPos: Vec3, hfQuat: Quaternion, convexQuat: Quaternion, hfBody: Body, convexBody: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.particleCylinder](): (si: Particle, sj: Cylinder, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.sphereTrimesh](): (sphereShape: Sphere, trimeshShape: Trimesh, spherePos: Vec3, trimeshPos: Vec3, sphereQuat: Quaternion, trimeshQuat: Quaternion, sphereBody: Body, trimeshBody: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- get [COLLISION_TYPES.planeTrimesh](): (planeShape: Plane, trimeshShape: Trimesh, planePos: Vec3, trimeshPos: Vec3, planeQuat: Quaternion, trimeshQuat: Quaternion, planeBody: Body, trimeshBody: Body, rsi?: Shape | null | undefined, rsj?: Shape | null | undefined, justTest?: boolean | undefined) => true | void;
- constructor(world: World);
- createContactEquation(bi: Body, bj: Body, si: Shape, sj: Shape, overrideShapeA?: Shape | null, overrideShapeB?: Shape | null): ContactEquation;
- createFrictionEquationsFromContact(contactEquation: ContactEquation, outArray: FrictionEquation[]): boolean;
- createFrictionFromAverage(numContacts: number): void;
- getContacts(p1: Body[], p2: Body[], world: World, result: ContactEquation[], oldcontacts: ContactEquation[], frictionResult: FrictionEquation[], frictionPool: FrictionEquation[]): void;
- sphereSphere(si: Sphere, sj: Sphere, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): boolean | void;
- spherePlane(si: Sphere, sj: Plane, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- boxBox(si: Box, sj: Box, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- sphereBox(si: Sphere, sj: Box, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- planeBox(si: Plane, sj: Box, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- convexConvex(si: ConvexPolyhedron, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean, faceListA?: number[] | null, faceListB?: number[] | null): true | void;
- sphereConvex(si: Sphere, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- planeConvex(planeShape: Plane, convexShape: ConvexPolyhedron, planePosition: Vec3, convexPosition: Vec3, planeQuat: Quaternion, convexQuat: Quaternion, planeBody: Body, convexBody: Body, si?: Shape, sj?: Shape, justTest?: boolean): true | void;
- boxConvex(si: Box, sj: ConvexPolyhedron, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- sphereHeightfield(sphereShape: Sphere, hfShape: Heightfield, spherePos: Vec3, hfPos: Vec3, sphereQuat: Quaternion, hfQuat: Quaternion, sphereBody: Body, hfBody: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- boxHeightfield(si: Box, sj: Heightfield, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- convexHeightfield(convexShape: ConvexPolyhedron, hfShape: Heightfield, convexPos: Vec3, hfPos: Vec3, convexQuat: Quaternion, hfQuat: Quaternion, convexBody: Body, hfBody: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- sphereParticle(sj: Sphere, si: Particle, xj: Vec3, xi: Vec3, qj: Quaternion, qi: Quaternion, bj: Body, bi: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- planeParticle(sj: Plane, si: Particle, xj: Vec3, xi: Vec3, qj: Quaternion, qi: Quaternion, bj: Body, bi: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- boxParticle(si: Box, sj: Particle, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- convexParticle(sj: ConvexPolyhedron, si: Particle, xj: Vec3, xi: Vec3, qj: Quaternion, qi: Quaternion, bj: Body, bi: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- heightfieldCylinder(hfShape: Heightfield, convexShape: Cylinder, hfPos: Vec3, convexPos: Vec3, hfQuat: Quaternion, convexQuat: Quaternion, hfBody: Body, convexBody: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- particleCylinder(si: Particle, sj: Cylinder, xi: Vec3, xj: Vec3, qi: Quaternion, qj: Quaternion, bi: Body, bj: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- sphereTrimesh(sphereShape: Sphere, trimeshShape: Trimesh, spherePos: Vec3, trimeshPos: Vec3, sphereQuat: Quaternion, trimeshQuat: Quaternion, sphereBody: Body, trimeshBody: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- planeTrimesh(planeShape: Plane, trimeshShape: Trimesh, planePos: Vec3, trimeshPos: Vec3, planeQuat: Quaternion, trimeshQuat: Quaternion, planeBody: Body, trimeshBody: Body, rsi?: Shape | null, rsj?: Shape | null, justTest?: boolean): true | void;
- }
- }
- declare module "collision/ArrayCollisionMatrix" {
- import type { Body } from "objects/Body";
- export class ArrayCollisionMatrix {
- matrix: number[];
- constructor();
- get(bi: Body, bj: Body): number;
- set(bi: Body, bj: Body, value: boolean): void;
- reset(): void;
- setNumObjects(n: number): void;
- }
- }
- declare module "collision/OverlapKeeper" {
- export class OverlapKeeper {
- current: number[];
- previous: number[];
- constructor();
- getKey(i: number, j: number): number;
- set(i: number, j: number): void;
- tick(): void;
- getDiff(additions: number[], removals: number[]): void;
- }
- }
- declare module "utils/TupleDictionary" {
- export class TupleDictionary {
- data: {
- [id: string]: any;
- keys: string[];
- };
- get(i: number, j: number): any;
- set(i: number, j: number, value: any): void;
- delete(i: number, j: number): void;
- reset(): void;
- }
- }
- declare module "constraints/Constraint" {
- import type { Body } from "objects/Body";
- import type { Equation } from "equations/Equation";
- export type ConstraintOptions = ConstructorParameters<typeof Constraint>[2];
- export class Constraint {
- equations: Equation[];
- bodyA: Body;
- bodyB: Body;
- id: number;
- collideConnected: boolean;
- static idCounter: number;
- constructor(bodyA: Body, bodyB: Body, options?: {
- collideConnected?: boolean;
- wakeUpBodies?: boolean;
- });
- update(): void;
- enable(): void;
- disable(): void;
- }
- }
- declare module "world/World" {
- import { EventTarget } from "utils/EventTarget";
- import { Narrowphase } from "world/Narrowphase";
- import { Vec3 } from "math/Vec3";
- import { Material } from "material/Material";
- import { ContactMaterial } from "material/ContactMaterial";
- import { ArrayCollisionMatrix } from "collision/ArrayCollisionMatrix";
- import { OverlapKeeper } from "collision/OverlapKeeper";
- import { TupleDictionary } from "utils/TupleDictionary";
- import { RaycastResult } from "collision/RaycastResult";
- import { Body } from "objects/Body";
- import type { Broadphase } from "collision/Broadphase";
- import type { Solver } from "solver/Solver";
- import type { ContactEquation } from "equations/ContactEquation";
- import type { FrictionEquation } from "equations/FrictionEquation";
- import type { RayOptions, RaycastCallback } from "collision/Ray";
- import type { Constraint } from "constraints/Constraint";
- import type { Shape } from "shapes/Shape";
- export type WorldOptions = ConstructorParameters<typeof World>[0];
- export class World extends EventTarget {
- dt: number;
- allowSleep: boolean;
- contacts: ContactEquation[];
- frictionEquations: FrictionEquation[];
- quatNormalizeSkip: number;
- quatNormalizeFast: boolean;
- time: number;
- stepnumber: number;
- default_dt: number;
- nextId: number;
- gravity: Vec3;
- frictionGravity?: Vec3;
- broadphase: Broadphase;
- bodies: Body[];
- hasActiveBodies: boolean;
- solver: Solver;
- constraints: Constraint[];
- narrowphase: Narrowphase;
- collisionMatrix: ArrayCollisionMatrix;
- collisionMatrixPrevious: ArrayCollisionMatrix;
- bodyOverlapKeeper: OverlapKeeper;
- shapeOverlapKeeper: OverlapKeeper;
- contactmaterials: ContactMaterial[];
- contactMaterialTable: TupleDictionary;
- defaultMaterial: Material;
- defaultContactMaterial: ContactMaterial;
- doProfiling: boolean;
- profile: {
- solve: number;
- makeContactConstraints: number;
- broadphase: number;
- integrate: number;
- narrowphase: number;
- };
- accumulator: number;
- subsystems: any[];
- addBodyEvent: {
- type: 'addBody';
- body: Body | null;
- };
- removeBodyEvent: {
- type: 'removeBody';
- body: Body | null;
- };
- idToBodyMap: {
- [id: number]: Body;
- };
- lastCallTime?: number;
- constructor(options?: {
- gravity?: Vec3;
- frictionGravity?: Vec3;
- allowSleep?: boolean;
- broadphase?: Broadphase;
- solver?: Solver;
- quatNormalizeFast?: boolean;
- quatNormalizeSkip?: number;
- });
- getContactMaterial(m1: Material, m2: Material): ContactMaterial;
- collisionMatrixTick(): void;
- addConstraint(c: Constraint): void;
- removeConstraint(c: Constraint): void;
- rayTest(from: Vec3, to: Vec3, result: RaycastResult | RaycastCallback): void;
- raycastAll(from?: Vec3, to?: Vec3, options?: RayOptions, callback?: RaycastCallback): boolean;
- raycastAny(from?: Vec3, to?: Vec3, options?: RayOptions, result?: RaycastResult): boolean;
- raycastClosest(from?: Vec3, to?: Vec3, options?: RayOptions, result?: RaycastResult): boolean;
- addBody(body: Body): void;
- removeBody(body: Body): void;
- getBodyById(id: number): Body;
- getShapeById(id: number): Shape | null;
- addContactMaterial(cmat: ContactMaterial): void;
- removeContactMaterial(cmat: ContactMaterial): void;
- fixedStep(dt?: number, maxSubSteps?: number): void;
- step(dt: number, timeSinceLastCalled?: number, maxSubSteps?: number): void;
- internalStep(dt: number): void;
- emitContactEvents(): void;
- clearForces(): void;
- }
- }
- declare module "collision/Ray" {
- import { Vec3 } from "math/Vec3";
- import { Quaternion } from "math/Quaternion";
- import { RaycastResult } from "collision/RaycastResult";
- import { Shape } from "shapes/Shape";
- import { AABB } from "collision/AABB";
- import type { Body } from "objects/Body";
- import type { Sphere } from "shapes/Sphere";
- import type { Box } from "shapes/Box";
- import type { Plane } from "shapes/Plane";
- import type { Heightfield } from "shapes/Heightfield";
- import type { ConvexPolyhedron } from "shapes/ConvexPolyhedron";
- import type { Trimesh } from "shapes/Trimesh";
- import type { World } from "world/World";
- export const RAY_MODES: {
- readonly CLOSEST: 1;
- readonly ANY: 2;
- readonly ALL: 4;
- };
- export type RayMode = typeof RAY_MODES[keyof typeof RAY_MODES];
- export type RayOptions = {
- from?: Vec3;
- to?: Vec3;
- mode?: RayMode;
- result?: RaycastResult;
- skipBackfaces?: boolean;
- collisionFilterMask?: number;
- collisionFilterGroup?: number;
- checkCollisionResponse?: boolean;
- callback?: RaycastCallback;
- };
- export type RaycastCallback = (result: RaycastResult) => void;
- export class Ray {
- from: Vec3;
- to: Vec3;
- direction: Vec3;
- precision: number;
- checkCollisionResponse: boolean;
- skipBackfaces: boolean;
- collisionFilterMask: number;
- collisionFilterGroup: number;
- mode: number;
- result: RaycastResult;
- hasHit: boolean;
- callback: RaycastCallback;
- static CLOSEST: 1;
- static ANY: 2;
- static ALL: 4;
- get [Shape.types.SPHERE](): (sphere: Sphere, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape) => void;
- get [Shape.types.PLANE](): (shape: Plane, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape) => void;
- get [Shape.types.BOX](): (box: Box, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape) => void;
- get [Shape.types.CYLINDER](): (shape: ConvexPolyhedron, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape, options?: {
- faceList: number[];
- } | undefined) => void;
- get [Shape.types.CONVEXPOLYHEDRON](): (shape: ConvexPolyhedron, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape, options?: {
- faceList: number[];
- } | undefined) => void;
- get [Shape.types.HEIGHTFIELD](): (shape: Heightfield, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape) => void;
- get [Shape.types.TRIMESH](): (mesh: Trimesh, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape, options?: {
- faceList?: any[] | undefined;
- } | undefined) => void;
- constructor(from?: Vec3, to?: Vec3);
- intersectWorld(world: World, options: RayOptions): boolean;
- intersectBody(body: Body, result?: RaycastResult): void;
- intersectBodies(bodies: Body[], result?: RaycastResult): void;
- private updateDirection;
- private intersectShape;
- _intersectBox(box: Box, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape): void;
- _intersectPlane(shape: Plane, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape): void;
- getAABB(aabb: AABB): void;
- _intersectHeightfield(shape: Heightfield, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape): void;
- _intersectSphere(sphere: Sphere, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape): void;
- _intersectConvex(shape: ConvexPolyhedron, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape, options?: {
- faceList: number[];
- }): void;
- _intersectTrimesh(mesh: Trimesh, quat: Quaternion, position: Vec3, body: Body, reportedShape: Shape, options?: {
- faceList?: any[];
- }): void;
- private reportIntersection;
- static pointInTriangle(p: Vec3, a: Vec3, b: Vec3, c: Vec3): boolean;
- }
- }
- declare module "collision/AABB" {
- import { Vec3 } from "math/Vec3";
- import type { Ray } from "collision/Ray";
- import type { Transform } from "math/Transform";
- import type { Quaternion } from "math/Quaternion";
- export class AABB {
- lowerBound: Vec3;
- upperBound: Vec3;
- constructor(options?: {
- upperBound?: Vec3;
- lowerBound?: Vec3;
- });
- setFromPoints(points: Vec3[], position?: Vec3, quaternion?: Quaternion, skinSize?: number): AABB;
- copy(aabb: AABB): AABB;
- clone(): AABB;
- extend(aabb: AABB): void;
- overlaps(aabb: AABB): boolean;
- volume(): number;
- contains(aabb: AABB): boolean;
- getCorners(a: Vec3, b: Vec3, c: Vec3, d: Vec3, e: Vec3, f: Vec3, g: Vec3, h: Vec3): void;
- toLocalFrame(frame: Transform, target: AABB): AABB;
- toWorldFrame(frame: Transform, target: AABB): AABB;
- overlapsRay(ray: Ray): boolean;
- }
- }
- declare module "objects/Body" {
- import { EventTarget } from "utils/EventTarget";
- import { Vec3 } from "math/Vec3";
- import { Mat3 } from "math/Mat3";
- import { Quaternion } from "math/Quaternion";
- import { AABB } from "collision/AABB";
- import type { Shape } from "shapes/Shape";
- import type { Material } from "material/Material";
- import type { World } from "world/World";
- export const BODY_TYPES: {
- readonly DYNAMIC: 1;
- readonly STATIC: 2;
- readonly KINEMATIC: 4;
- };
- export type BodyType = typeof BODY_TYPES[keyof typeof BODY_TYPES];
- export const BODY_SLEEP_STATES: {
- readonly AWAKE: 0;
- readonly SLEEPY: 1;
- readonly SLEEPING: 2;
- };
- export type BodySleepState = typeof BODY_SLEEP_STATES[keyof typeof BODY_SLEEP_STATES];
- export type BodyOptions = ConstructorParameters<typeof Body>[0];
- export class Body extends EventTarget {
- static idCounter: number;
- static COLLIDE_EVENT_NAME: string;
- static DYNAMIC: 1;
- static STATIC: 2;
- static KINEMATIC: 4;
- static AWAKE: 0;
- static SLEEPY: 1;
- static SLEEPING: 2;
- static wakeupEvent: {
- type: string;
- };
- static sleepyEvent: {
- type: string;
- };
- static sleepEvent: {
- type: string;
- };
- id: number;
- index: number;
- world: World | null;
- vlambda: Vec3;
- collisionFilterGroup: number;
- collisionFilterMask: number;
- collisionResponse: boolean;
- position: Vec3;
- previousPosition: Vec3;
- interpolatedPosition: Vec3;
- initPosition: Vec3;
- velocity: Vec3;
- initVelocity: Vec3;
- force: Vec3;
- mass: number;
- invMass: number;
- material: Material | null;
- linearDamping: number;
- type: BodyType;
- allowSleep: boolean;
- sleepState: BodySleepState;
- sleepSpeedLimit: number;
- sleepTimeLimit: number;
- timeLastSleepy: number;
- wakeUpAfterNarrowphase: boolean;
- torque: Vec3;
- quaternion: Quaternion;
- initQuaternion: Quaternion;
- previousQuaternion: Quaternion;
- interpolatedQuaternion: Quaternion;
- angularVelocity: Vec3;
- initAngularVelocity: Vec3;
- shapes: Shape[];
- shapeOffsets: Vec3[];
- shapeOrientations: Quaternion[];
- inertia: Vec3;
- invInertia: Vec3;
- invInertiaWorld: Mat3;
- invMassSolve: number;
- invInertiaSolve: Vec3;
- invInertiaWorldSolve: Mat3;
- fixedRotation: boolean;
- angularDamping: number;
- linearFactor: Vec3;
- angularFactor: Vec3;
- aabb: AABB;
- aabbNeedsUpdate: boolean;
- boundingRadius: number;
- wlambda: Vec3;
- isTrigger: boolean;
- constructor(options?: {
- collisionFilterGroup?: number;
- collisionFilterMask?: number;
- collisionResponse?: boolean;
- position?: Vec3;
- velocity?: Vec3;
- mass?: number;
- material?: Material;
- linearDamping?: number;
- type?: BodyType;
- allowSleep?: boolean;
- sleepSpeedLimit?: number;
- sleepTimeLimit?: number;
- quaternion?: Quaternion;
- angularVelocity?: Vec3;
- fixedRotation?: boolean;
- angularDamping?: number;
- linearFactor?: Vec3;
- angularFactor?: Vec3;
- shape?: Shape;
- isTrigger?: boolean;
- });
- wakeUp(): void;
- sleep(): void;
- sleepTick(time: number): void;
- updateSolveMassProperties(): void;
- pointToLocalFrame(worldPoint: Vec3, result?: Vec3): Vec3;
- vectorToLocalFrame(worldVector: Vec3, result?: Vec3): Vec3;
- pointToWorldFrame(localPoint: Vec3, result?: Vec3): Vec3;
- vectorToWorldFrame(localVector: Vec3, result?: Vec3): Vec3;
- addShape(shape: Shape, _offset?: Vec3, _orientation?: Quaternion): Body;
- removeShape(shape: Shape): Body;
- updateBoundingRadius(): void;
- updateAABB(): void;
- updateInertiaWorld(force?: boolean): void;
- applyForce(force: Vec3, relativePoint?: Vec3): void;
- applyLocalForce(localForce: Vec3, localPoint?: Vec3): void;
- applyTorque(torque: Vec3): void;
- applyImpulse(impulse: Vec3, relativePoint?: Vec3): void;
- applyLocalImpulse(localImpulse: Vec3, localPoint?: Vec3): void;
- updateMassProperties(): void;
- getVelocityAtWorldPoint(worldPoint: Vec3, result: Vec3): Vec3;
- integrate(dt: number, quatNormalize: boolean, quatNormalizeFast: boolean): void;
- }
- }
- declare module "collision/ObjectCollisionMatrix" {
- import type { Body } from "objects/Body";
- export class ObjectCollisionMatrix {
- matrix: Record<string, boolean>;
- constructor();
- get(bi: Body, bj: Body): boolean;
- set(bi: Body, bj: Body, value: boolean): void;
- reset(): void;
- setNumObjects(n: number): void;
- }
- }
- declare module "collision/GridBroadphase" {
- import { Broadphase } from "collision/Broadphase";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- import type { World } from "world/World";
- export class GridBroadphase extends Broadphase {
- nx: number;
- ny: number;
- nz: number;
- aabbMin: Vec3;
- aabbMax: Vec3;
- bins: Body[][];
- binLengths: number[];
- constructor(aabbMin?: Vec3, aabbMax?: Vec3, nx?: number, ny?: number, nz?: number);
- collisionPairs(world: World, pairs1: Body[], pairs2: Body[]): void;
- }
- }
- declare module "collision/SAPBroadphase" {
- import { Broadphase } from "collision/Broadphase";
- import type { AABB } from "collision/AABB";
- import type { Body } from "objects/Body";
- import type { World } from "world/World";
- export class SAPBroadphase extends Broadphase {
- axisList: Body[];
- world: World | null;
- axisIndex: 0 | 1 | 2;
- private _addBodyHandler;
- private _removeBodyHandler;
- static checkBounds(bi: Body, bj: Body, axisIndex: 0 | 1 | 2): boolean;
- static insertionSortX(a: Body[]): Body[];
- static insertionSortY(a: Body[]): Body[];
- static insertionSortZ(a: Body[]): Body[];
- constructor(world: World);
- setWorld(world: World): void;
- collisionPairs(world: World, p1: Body[], p2: Body[]): void;
- sortList(): void;
- autoDetectAxis(): void;
- aabbQuery(world: World, aabb: AABB, result?: Body[]): Body[];
- }
- }
- declare module "constraints/PointToPointConstraint" {
- import { Constraint } from "constraints/Constraint";
- import { ContactEquation } from "equations/ContactEquation";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export class PointToPointConstraint extends Constraint {
- pivotA: Vec3;
- pivotB: Vec3;
- equationX: ContactEquation;
- equationY: ContactEquation;
- equationZ: ContactEquation;
- constructor(bodyA: Body, pivotA: Vec3 | undefined, bodyB: Body, pivotB?: Vec3, maxForce?: number);
- update(): void;
- }
- }
- declare module "equations/ConeEquation" {
- import { Vec3 } from "math/Vec3";
- import { Equation } from "equations/Equation";
- import type { Body } from "objects/Body";
- export type ConeEquationOptions = ConstructorParameters<typeof ConeEquation>[2];
- export class ConeEquation extends Equation {
- axisA: Vec3;
- axisB: Vec3;
- angle: number;
- constructor(bodyA: Body, bodyB: Body, options?: {
- maxForce?: number;
- axisA?: Vec3;
- axisB?: Vec3;
- angle?: number;
- });
- computeB(h: number): number;
- }
- }
- declare module "equations/RotationalEquation" {
- import { Equation } from "equations/Equation";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export type RotationalEquationOptions = ConstructorParameters<typeof RotationalEquation>[2];
- export class RotationalEquation extends Equation {
- axisA: Vec3;
- axisB: Vec3;
- maxAngle: number;
- constructor(bodyA: Body, bodyB: Body, options?: {
- axisA?: Vec3;
- axisB?: Vec3;
- maxAngle?: number;
- maxForce?: number;
- });
- computeB(h: number): number;
- }
- }
- declare module "constraints/ConeTwistConstraint" {
- import { PointToPointConstraint } from "constraints/PointToPointConstraint";
- import { ConeEquation } from "equations/ConeEquation";
- import { RotationalEquation } from "equations/RotationalEquation";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export type ConeTwistConstraintOptions = ConstructorParameters<typeof ConeTwistConstraint>[2];
- export class ConeTwistConstraint extends PointToPointConstraint {
- axisA: Vec3;
- axisB: Vec3;
- angle: number;
- twistAngle: number;
- coneEquation: ConeEquation;
- twistEquation: RotationalEquation;
- constructor(bodyA: Body, bodyB: Body, options?: {
- pivotA?: Vec3;
- pivotB?: Vec3;
- axisA?: Vec3;
- axisB?: Vec3;
- angle?: number;
- twistAngle?: number;
- maxForce?: number;
- collideConnected?: boolean;
- });
- update(): void;
- }
- }
- declare module "constraints/DistanceConstraint" {
- import { Constraint } from "constraints/Constraint";
- import { ContactEquation } from "equations/ContactEquation";
- import type { Body } from "objects/Body";
- export class DistanceConstraint extends Constraint {
- distance: number;
- distanceEquation: ContactEquation;
- constructor(bodyA: Body, bodyB: Body, distance?: number, maxForce?: number);
- update(): void;
- }
- }
- declare module "equations/RotationalMotorEquation" {
- import { Equation } from "equations/Equation";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export class RotationalMotorEquation extends Equation {
- axisA: Vec3;
- axisB: Vec3;
- targetVelocity: number;
- constructor(bodyA: Body, bodyB: Body, maxForce?: number);
- computeB(h: number): number;
- }
- }
- declare module "constraints/LockConstraint" {
- import { PointToPointConstraint } from "constraints/PointToPointConstraint";
- import { RotationalEquation } from "equations/RotationalEquation";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- import type { RotationalMotorEquation } from "equations/RotationalMotorEquation";
- export type LockConstraintOptions = ConstructorParameters<typeof LockConstraint>[2];
- export class LockConstraint extends PointToPointConstraint {
- xA: Vec3;
- xB: Vec3;
- yA: Vec3;
- yB: Vec3;
- zA: Vec3;
- zB: Vec3;
- rotationalEquation1: RotationalEquation;
- rotationalEquation2: RotationalEquation;
- rotationalEquation3: RotationalEquation;
- motorEquation?: RotationalMotorEquation;
- constructor(bodyA: Body, bodyB: Body, options?: {
- maxForce?: number;
- });
- update(): void;
- }
- }
- declare module "constraints/HingeConstraint" {
- import { PointToPointConstraint } from "constraints/PointToPointConstraint";
- import { RotationalEquation } from "equations/RotationalEquation";
- import { RotationalMotorEquation } from "equations/RotationalMotorEquation";
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export type HingeConstraintOptions = ConstructorParameters<typeof HingeConstraint>[2];
- export class HingeConstraint extends PointToPointConstraint {
- axisA: Vec3;
- axisB: Vec3;
- rotationalEquation1: RotationalEquation;
- rotationalEquation2: RotationalEquation;
- motorEquation: RotationalMotorEquation;
- constructor(bodyA: Body, bodyB: Body, options?: {
- pivotA?: Vec3;
- pivotB?: Vec3;
- axisA?: Vec3;
- axisB?: Vec3;
- collideConnected?: boolean;
- maxForce?: number;
- });
- enableMotor(): void;
- disableMotor(): void;
- setMotorSpeed(speed: number): void;
- setMotorMaxForce(maxForce: number): void;
- update(): void;
- }
- }
- declare module "objects/Spring" {
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export type SpringOptions = ConstructorParameters<typeof Spring>[2];
- export class Spring {
- restLength: number;
- stiffness: number;
- damping: number;
- bodyA: Body;
- bodyB: Body;
- localAnchorA: Vec3;
- localAnchorB: Vec3;
- constructor(bodyA: Body, bodyB: Body, options?: {
- restLength?: number;
- stiffness?: number;
- damping?: number;
- localAnchorA?: Vec3;
- localAnchorB?: Vec3;
- worldAnchorA?: Vec3;
- worldAnchorB?: Vec3;
- });
- setWorldAnchorA(worldAnchorA: Vec3): void;
- setWorldAnchorB(worldAnchorB: Vec3): void;
- getWorldAnchorA(result: Vec3): void;
- getWorldAnchorB(result: Vec3): void;
- applyForce(): void;
- }
- }
- declare module "objects/WheelInfo" {
- import { Vec3 } from "math/Vec3";
- import { Transform } from "math/Transform";
- import { RaycastResult } from "collision/RaycastResult";
- import type { Body } from "objects/Body";
- export type WheelInfoOptions = ConstructorParameters<typeof WheelInfo>[0];
- export type WheelRaycastResult = RaycastResult & Partial<{
- suspensionLength: number;
- directionWorld: Vec3;
- groundObject: number;
- }>;
- export class WheelInfo {
- maxSuspensionTravel: number;
- customSlidingRotationalSpeed: number;
- useCustomSlidingRotationalSpeed: boolean;
- sliding: boolean;
- chassisConnectionPointLocal: Vec3;
- chassisConnectionPointWorld: Vec3;
- directionLocal: Vec3;
- directionWorld: Vec3;
- axleLocal: Vec3;
- axleWorld: Vec3;
- suspensionRestLength: number;
- suspensionMaxLength: number;
- radius: number;
- suspensionStiffness: number;
- dampingCompression: number;
- dampingRelaxation: number;
- frictionSlip: number;
- forwardAcceleration: number;
- sideAcceleration: number;
- steering: number;
- rotation: number;
- deltaRotation: number;
- rollInfluence: number;
- maxSuspensionForce: number;
- engineForce: number;
- brake: number;
- isFrontWheel: boolean;
- clippedInvContactDotSuspension: number;
- suspensionRelativeVelocity: number;
- suspensionForce: number;
- slipInfo: number;
- skidInfo: number;
- suspensionLength: number;
- sideImpulse: number;
- forwardImpulse: number;
- raycastResult: WheelRaycastResult;
- worldTransform: Transform;
- isInContact: boolean;
- constructor(options?: {
- chassisConnectionPointLocal?: Vec3;
- chassisConnectionPointWorld?: Vec3;
- directionLocal?: Vec3;
- directionWorld?: Vec3;
- axleLocal?: Vec3;
- axleWorld?: Vec3;
- suspensionRestLength?: number;
- suspensionMaxLength?: number;
- radius?: number;
- suspensionStiffness?: number;
- dampingCompression?: number;
- dampingRelaxation?: number;
- frictionSlip?: number;
- forwardAcceleration?: number;
- sideAcceleration?: number;
- steering?: number;
- rotation?: number;
- deltaRotation?: number;
- rollInfluence?: number;
- maxSuspensionForce?: number;
- isFrontWheel?: boolean;
- clippedInvContactDotSuspension?: number;
- suspensionRelativeVelocity?: number;
- suspensionForce?: number;
- slipInfo?: number;
- skidInfo?: number;
- suspensionLength?: number;
- maxSuspensionTravel?: number;
- useCustomSlidingRotationalSpeed?: boolean;
- customSlidingRotationalSpeed?: number;
- });
- updateWheel(chassis: Body): void;
- }
- }
- declare module "objects/RaycastVehicle" {
- import type { Body } from "objects/Body";
- import { WheelInfo } from "objects/WheelInfo";
- import type { WheelInfoOptions } from "objects/WheelInfo";
- import type { Transform } from "math/Transform";
- import type { Constraint } from "constraints/Constraint";
- import type { World } from "world/World";
- export type RaycastVehicleOptions = ConstructorParameters<typeof RaycastVehicle>[0];
- export class RaycastVehicle {
- chassisBody: Body;
- wheelInfos: WheelInfo[];
- sliding: boolean;
- world: World | null;
- indexRightAxis: number;
- indexForwardAxis: number;
- indexUpAxis: number;
- constraints: Constraint[];
- preStepCallback: () => void;
- currentVehicleSpeedKmHour: number;
- numWheelsOnGround: number;
- constructor(options: {
- chassisBody: Body;
- indexRightAxis?: number;
- indexForwardAxis?: number;
- indexUpAxis?: number;
- });
- addWheel(options?: WheelInfoOptions): number;
- setSteeringValue(value: number, wheelIndex: number): void;
- applyEngineForce(value: number, wheelIndex: number): void;
- setBrake(brake: number, wheelIndex: number): void;
- addToWorld(world: World): void;
- private getVehicleAxisWorld;
- updateVehicle(timeStep: number): void;
- updateSuspension(deltaTime: number): void;
- removeFromWorld(world: World): void;
- castRay(wheel: WheelInfo): number;
- updateWheelTransformWorld(wheel: WheelInfo): void;
- updateWheelTransform(wheelIndex: number): void;
- getWheelTransformWorld(wheelIndex: number): Transform;
- updateFriction(timeStep: number): void;
- }
- }
- declare module "objects/RigidVehicle" {
- import { Vec3 } from "math/Vec3";
- import { Body } from "objects/Body";
- import { HingeConstraint } from "constraints/HingeConstraint";
- import type { World } from "world/World";
- export type RigidVehicleOptions = ConstructorParameters<typeof RigidVehicle>[0];
- export class RigidVehicle {
- wheelBodies: Body[];
- coordinateSystem: Vec3;
- chassisBody: Body;
- constraints: (HingeConstraint & {
- motorTargetVelocity?: number;
- })[];
- wheelAxes: Vec3[];
- wheelForces: number[];
- constructor(options?: {
- coordinateSystem?: Vec3;
- chassisBody?: Body;
- });
- addWheel(options?: {
- body?: Body;
- position?: Vec3;
- axis?: Vec3;
- direction?: Vec3;
- }): number;
- setSteeringValue(value: number, wheelIndex: number): void;
- setMotorSpeed(value: number, wheelIndex: number): void;
- disableMotor(wheelIndex: number): void;
- setWheelForce(value: number, wheelIndex: number): void;
- applyWheelForce(value: number, wheelIndex: number): void;
- addToWorld(world: World): void;
- private _update;
- removeFromWorld(world: World): void;
- getWheelSpeed(wheelIndex: number): number;
- }
- }
- declare module "objects/SPHSystem" {
- import { Vec3 } from "math/Vec3";
- import type { Body } from "objects/Body";
- export class SPHSystem {
- particles: Body[];
- density: number;
- smoothingRadius: number;
- speedOfSound: number;
- viscosity: number;
- eps: number;
- pressures: number[];
- densities: number[];
- neighbors: Body[][];
- constructor();
- add(particle: Body): void;
- remove(particle: Body): void;
- getNeighbors(particle: Body, neighbors: Body[]): void;
- update(): void;
- w(r: number): number;
- gradw(rVec: Vec3, resultVec: Vec3): void;
- nablaw(r: number): number;
- }
- }
- declare module "solver/SplitSolver" {
- import { Solver } from "solver/Solver";
- import { Body } from "objects/Body";
- import type { Equation } from "equations/Equation";
- import type { World } from "world/World";
- import { GSSolver } from "solver/GSSolver";
- type SplitSolverNode = {
- body: Body | null;
- children: SplitSolverNode[];
- eqs: Equation[];
- visited: boolean;
- };
- export class SplitSolver extends Solver {
- iterations: number;
- tolerance: number;
- subsolver: GSSolver;
- nodes: SplitSolverNode[];
- nodePool: SplitSolverNode[];
- constructor(subsolver: GSSolver);
- createNode(): SplitSolverNode;
- solve(dt: number, world: World): number;
- }
- }
- declare module "cannon-es" {
- export * from "collision/ObjectCollisionMatrix";
- export * from "collision/AABB";
- export * from "collision/ArrayCollisionMatrix";
- export * from "collision/Broadphase";
- export * from "collision/GridBroadphase";
- export * from "collision/NaiveBroadphase";
- export * from "collision/Ray";
- export * from "collision/RaycastResult";
- export * from "collision/SAPBroadphase";
- export * from "constraints/ConeTwistConstraint";
- export * from "constraints/Constraint";
- export * from "constraints/DistanceConstraint";
- export * from "constraints/LockConstraint";
- export * from "constraints/PointToPointConstraint";
- export * from "constraints/HingeConstraint";
- export * from "equations/ContactEquation";
- export * from "equations/Equation";
- export * from "equations/FrictionEquation";
- export * from "equations/RotationalEquation";
- export * from "equations/RotationalMotorEquation";
- export * from "material/ContactMaterial";
- export * from "material/Material";
- export * from "math/Quaternion";
- export * from "math/Mat3";
- export * from "math/Transform";
- export * from "math/Vec3";
- export * from "math/JacobianElement";
- export * from "objects/Body";
- export * from "objects/Spring";
- export * from "objects/RaycastVehicle";
- export * from "objects/WheelInfo";
- export * from "objects/RigidVehicle";
- export * from "objects/SPHSystem";
- export * from "shapes/Box";
- export * from "shapes/ConvexPolyhedron";
- export * from "shapes/Cylinder";
- export * from "shapes/Particle";
- export * from "shapes/Plane";
- export * from "shapes/Shape";
- export * from "shapes/Sphere";
- export * from "shapes/Heightfield";
- export * from "shapes/Trimesh";
- export * from "solver/GSSolver";
- export * from "solver/Solver";
- export * from "solver/SplitSolver";
- export * from "utils/Pool";
- export * from "utils/EventTarget";
- export * from "utils/Vec3Pool";
- export * from "world/Narrowphase";
- export * from "world/World";
- }
|