Files
armorpaint/base/Sources/PhysicsBullet.ts
T
luboslenco 0e8b6ec05b Fix physics
2024-01-21 09:45:47 +01:00

634 lines
19 KiB
TypeScript

///if arm_physics
declare function Ammo<T>(ops?: T): Promise<T & typeof Ammo>;
declare namespace Ammo {
class btTypedObject {}
class btVector3 {
constructor(x: f32, y: f32, z: f32);
setValue(x: f32, y: f32, z: f32): void;
setX(x: f32): void;
setY(y: f32): void;
setZ(z: f32): void;
x(): f32;
y(): f32;
z(): f32;
length(): f32;
normalize(): void;
}
class btQuadWord {
setX(x: f32): void;
setY(y: f32): void;
setZ(z: f32): void;
setW(w: f32): void;
x(): f32;
y(): f32;
z(): f32;
w(): f32;
}
class btQuaternion extends btQuadWord {
constructor(x: f32, y: f32, z: f32, w: f32);
setEuler(yaw: f32, pitch: f32, roll: f32): void;
slerp(q: btQuaternion, t: f32): btQuaternion;
setValue(x: f32, y: f32, z: f32, w: f32): void;
}
class btMatrix3x3 {
setEulerZYX(ex: f32, ey: f32, ez: f32): void;
getRotation(q: btQuaternion): void;
getRow(y: i32): btVector3;
}
class btActionInterface {}
class btTransform {
constructor();
setIdentity(): void;
setOrigin(inVec: btVector3): void;
getOrigin(): btVector3;
setRotation(inQuat: btQuaternion): void;
getRotation(): btQuaternion;
}
class btIDebugDraw {
drawLine(from: btVector3, to: btVector3, color: btVector3): void;
drawContactPoint(pointOnB: btVector3, normalOnB: btVector3, distance: f32, lifeTime: i32, color: btVector3): void;
reportErrorWarning(warningString: string): void;
draw3dText(location: btVector3, textString: string): void;
setDebugMode(debugMode: i32): void;
getDebugMode(): i32;
}
class btMotionState {
getWorldTransform(centerOfMassWorldTrans: btTransform): void;
setWorldTransform(centerOfMassWorldTrans: btTransform): void;
}
class btDefaultMotionState extends btMotionState {
constructor(worldTrans: btTransform, centerOfMassOffset: btTransform);
}
class btRigidBodyConstructionInfo {
constructor(mass: f32, motionState: btMotionState, collisionShape: btCollisionShape, localInertia: btVector3);
m_friction: f32;
m_rollingFriction: f32;
}
class btCollisionObject {
getWorldTransform(): btTransform;
setWorldTransform(trans: btTransform): void;
activate(forceActivation: bool): void;
setActivationState(newState: i32): void;
getUserIndex(): i32;
setUserIndex(index: i32): void;
getUserPointer(): any;
setUserPointer(userPointer: any): void;
isActive(): bool;
isKinematicObject(): bool;
isStaticObject(): bool;
isStaticOrKinematicObject(): bool;
setFriction(frict: f32): void;
setRollingFriction(frict: f32): void;
setRestitution(rest: f32): void;
setContactProcessingThreshold(contactProcessingThreshold: f32): void;
setCollisionShape(collisionShape: btCollisionShape): void;
getCollisionShape(): btCollisionShape;
setCollisionFlags(flags: i32): void;
getCollisionFlags(): i32;
setCcdSweptSphereRadius(radius: f32): void;
setCcdMotionThreshold(ccdMotionThreshold: f32): void;
}
class btRigidBody extends btCollisionObject {
userIndex: i32;
constructor(constructionInfo: btRigidBodyConstructionInfo);
setMassProps(mass: f32, inertia: btVector3): void;
getMotionState(): btMotionState;
applyCentralForce(force: btVector3): void;
applyForce(force: btVector3, rel_pos: btVector3): void;
applyCentralImpulse(impulse: btVector3): void;
applyImpulse(impulse: btVector3, rel_pos: btVector3): void;
applyTorque(torque: btVector3): void;
applyTorqueImpulse(torque: btVector3): void;
clearForces(): void;
setDamping(linear: f32, angular: f32): void;
updateInertiaTensor(): void;
getCenterOfMassPosition(): btVector3;
getCenterOfMassTransform(): btTransform;
setCenterOfMassTransform(trans: btTransform): void;
getLinearVelocity(): btVector3;
setLinearVelocity(lin_vel: btVector3): void;
getAngularVelocity(): btVector3;
setAngularVelocity(ang_vel: btVector3): void;
setLinearFactor(linearFactor: btVector3): void;
setAngularFactor(angFac: btVector3): void;
setSleepingThresholds(linear: f32, angular: f32): void;
applyGravity(): void;
getGravity(): btVector3;
setGravity(acceleration: btVector3): void;
upcast(col_obj: btCollisionObject): btRigidBody;
}
class btCollisionConfiguration {}
class btDefaultCollisionConfiguration extends btCollisionConfiguration {
constructor();
}
class btSoftBodyRigidBodyCollisionConfiguration extends btCollisionConfiguration {
constructor();
}
class btDispatcher {
getManifoldByIndexInternal(index: i32): btPersistentManifold;
getNumManifolds(): i32;
}
class btCollisionDispatcher extends btDispatcher {
constructor(collisionConfiguration: btCollisionConfiguration);
}
class btBroadphaseInterface {}
class btDbvtBroadphase extends btBroadphaseInterface {
constructor();
}
class btAxisSweep3 extends btBroadphaseInterface {
constructor(worldAabbMin: btVector3, worldAabbMax: btVector3);
}
class btConstraintSolver {}
class btSequentialImpulseConstraintSolver extends btConstraintSolver {
constructor();
}
class btDefaultSoftBodySolver extends btConstraintSolver {
constructor();
}
class RayResultCallback {
hasHit(): bool;
constructor();
get_m_collisionFilterGroup(): i32;
set_m_collisionFilterGroup(g: i32): void;
get_m_collisionFilterMask(): i32;
set_m_collisionFilterMask(m: i32): void;
get_m_collisionObject(): btCollisionObject;
}
class ClosestRayResultCallback extends RayResultCallback {
constructor(rayFromWorld: btVector3, rayToWorld: btVector3);
get_m_hitNormalWorld(): btVector3;
get_m_hitPointWorld(): btVector3;
}
class ConcreteContactResultCallback extends RayResultCallback {
constructor();
}
class btCollisionWorld {
rayTest(rayFromWorld: btVector3, rayToWorld: btVector3, resultCallback: RayResultCallback): void;
updateSingleAabb(colObj: btCollisionObject): void;
getPairCache(): btOverlappingPairCache;
removeCollisionObject(collisionObject: btCollisionObject): void;
addCollisionObject(collisionObject: btCollisionObject, collisionFilterGroup?: i32, collisionFilterMask?: i32): void;
}
class btDynamicsWorld extends btCollisionWorld {
addRigidBody(body: btRigidBody, group?: i32, mask?: i32): void;
removeRigidBody(body: btRigidBody): void;
addAction(action: btActionInterface): void;
removeAction(action: btActionInterface): void;
addConstraint(constraint: btTypedConstraint, disableCollisionsBetweenLinkedBodies: bool): void;
removeConstraint(constraint: btTypedConstraint): void;
getGravity(): btVector3;
setGravity(v: btVector3): void;
stepSimulation(timeStep: f32, maxSubSteps: f32, fixedTimeStep: f32): void;
}
class btDiscreteDynamicsWorld extends btDynamicsWorld {
constructor(dispatcher: btDispatcher, pairCache: btBroadphaseInterface, constraintSolver: btConstraintSolver, collisionConfiguration: btCollisionConfiguration);
debugDrawWorld(): void;
}
class btSoftBodyWorldInfo {
set_m_gravity(v: btVector3): void;
}
class btSoftRigidDynamicsWorld extends btDynamicsWorld {
constructor(dispatcher: btDispatcher, pairCache: btBroadphaseInterface, constraintSolver: btConstraintSolver, collisionConfiguration: btCollisionConfiguration, softConstraintSolver: btConstraintSolver);
addSoftBody(body: btSoftBody, collisionFilterGroup: i32, collisionFilterMask: i32): void;
removeSoftBody(body: btSoftBody): void;
getWorldInfo(): btSoftBodyWorldInfo;
}
class btSimpleDynamicsWorld extends btDynamicsWorld {
constructor(dispatcher: btDispatcher, pairCache: btBroadphaseInterface, constraintSolver: btConstraintSolver, collisionConfiguration: btCollisionConfiguration);
}
class btCollisionShape {
calculateLocalInertia(mass: f32, inertia: btVector3): void;
setMargin(margin: f32): void;
setLocalScaling(scaling: btVector3): void;
getLocalScaling(): btVector3;
}
class btCompoundShape extends btCollisionShape {
constructor(enableDynamicAabbTree: bool);
addChildShape(localTransform: btTransform, shape: btCollisionShape): void;
}
class btConvexShape extends btCollisionShape {}
class btConcaveShape extends btCollisionShape {}
class btConvexInternalShape extends btConvexShape {}
class btPolyhedralConvexShape extends btConvexInternalShape {}
class btBoxShape extends btPolyhedralConvexShape {
constructor(boxHalfExtents: btVector3);
}
class btSphereShape extends btConvexInternalShape {
constructor(radius: f32);
}
class btStaticPlaneShape extends btConcaveShape {
constructor(planeNormal: btVector3, planeConstant: f32);
}
class btPolyhedralConvexAabbCachingShape extends btPolyhedralConvexShape {}
class btConvexHullShape extends btPolyhedralConvexAabbCachingShape {
constructor();
addPoint(point: btVector3, recalculateLocalAabb: bool): void;
}
class btCapsuleShape extends btConvexInternalShape {
constructor(radius: f32, height: f32);
getUpAxis(): i32;
getRadius(): f32;
getHalfHeight(): f32;
}
class btCapsuleShapeX extends btCapsuleShape {
constructor(radius: f32, height: f32);
}
class btCapsuleShapeZ extends btCapsuleShape {
constructor(radius: f32, height: f32);
}
class btCylinderShape extends btConvexInternalShape {
constructor(halfExtents: btVector3);
}
class btCylinderShapeX extends btCylinderShape {
constructor(halfExtents: btVector3);
}
class btCylinderShapeZ extends btCylinderShape {
constructor(halfExtents: btVector3);
}
class btConeShape extends btConvexInternalShape {
constructor(radius: f32, height: f32);
}
class btConeShapeX extends btConeShape {
constructor(radius: f32, height: f32);
}
class btConeShapeZ extends btConeShape {
constructor(radius: f32, height: f32);
}
class btHeightfieldTerrainShape extends btConcaveShape {
// heightDataType - float, double, integer, short, fixedpoint88, uchar
constructor(heightStickWidth: i32, heightStickLength: i32, heightfieldData: any, heightScale: f32, minHeight: f32, maxHeight: f32, upAxis: i32, heightDataType: i32, flipQuadEdges: bool);
}
class btStridingMeshInterface {
constructor();
}
class btIndexedMesh {
constructor();
}
class btTriangleIndexVertexArray extends btStridingMeshInterface {
constructor();
}
class btTriangleMesh extends btTriangleIndexVertexArray {
constructor(use32bitIndices: bool, use4componentVertices: bool);
addTriangle(vertex0: btVector3, vertex1: btVector3, vertex2: btVector3, removeDuplicateVertices?: bool): void;
}
class btTriangleMeshShape extends btConcaveShape {
constructor(meshInterface: btStridingMeshInterface);
}
class btBvhTriangleMeshShape extends btTriangleMeshShape {
constructor(meshInterface: btStridingMeshInterface, useQuantizedAabbCompression: bool, buildBvh: bool);
}
class btGImpactMeshShape extends btConcaveShape {
constructor(meshInterface: btStridingMeshInterface);
updateBound(): void;
}
class GImpactCollisionAlgorithm {
constructor();
registerAlgorithm(dispatcher: btCollisionDispatcher): void;
}
class btVehicleTuning extends btActionInterface {
constructor();
}
class btVehicleRaycaster {}
class btDefaultVehicleRaycaster extends btVehicleRaycaster {
constructor(world: btDynamicsWorld);
}
class btRaycastInfo {
m_contactNormalWS: btVector3;
m_contactPointWS: btVector3;
m_suspensionLength: f32;
m_hardPointWS: btVector3;
m_wheelDirectionWS: btVector3;
m_wheelAxleWS: btVector3;
m_isInContact: bool;
}
class btWheelInfoConstructionInfo {
constructor();
m_chassisConnectionCS: btVector3;
m_wheelDirectionCS: btVector3;
m_wheelAxleCS: btVector3;
m_suspensionRestLength: f32;
m_maxSuspensionTravelCm: f32;
m_wheelRadius: f32;
m_suspensionStiffness: f32;
m_wheelsDampingCompression: f32;
m_wheelsDampingRelaxation: f32;
m_frictionSlip: f32;
m_maxSuspensionForce: f32;
m_bIsFrontWheel: bool;
}
class btWheelInfo {
constructor(ci: btWheelInfoConstructionInfo);
m_raycastInfo: btRaycastInfo;
m_worldTransform: btTransform;
m_chassisConnectionPointCS: btVector3;
m_wheelDirectionCS: btVector3;
m_wheelAxleCS: btVector3;
m_suspensionRestLength1: f32;
m_maxSuspensionTravelCm: f32;
getSuspensionRestLength(): f32;
m_suspensionStiffness: f32;
m_wheelsDampingCompression: f32;
m_wheelsDampingRelaxation: f32;
m_frictionSlip: f32;
m_steering: f32;
m_rotation: f32;
m_deltaRotation: f32;
m_rollInfluence: f32;
m_maxSuspensionForce: f32;
m_wheelsRadius: f32;
m_engineForce: f32;
m_brake: f32;
m_bIsFrontWheel: bool;
m_clippedInvContactDotSuspension: f32;
m_suspensionRelativeVelocity: f32;
m_wheelsSuspensionForce: f32;
m_skidInfo: f32;
}
class btRaycastVehicle extends btActionInterface {
constructor(tuning: btVehicleTuning, chassis: btRigidBody, raycaster: btVehicleRaycaster);
setCoordinateSystem(rightIndex: i32, upIndex: i32, forwardIndex: i32): void;
addWheel(connectionPointCS0: btVector3, wheelDirectionCS0: btVector3, wheelAxleCS: btVector3, suspensionRestLength: f32, wheelRadius: f32, tuning: btVehicleTuning, isFrontWheel: bool): btWheelInfo;
getNumWheels(): i32;
getWheelInfo(index: i32): btWheelInfo;
resetSuspension(): void;
getWheelTransformWS(wheelIndex: i32): btTransform;
updateWheelTransform(wheelIndex: i32, interpolatedTransform: bool): void;
applyEngineForce(force: f32, wheel: i32): void;
setBrake(brake: f32, wheelIndex: i32): void;
setPitchControl(pitch: f32): void;
updateSuspension(deltaTime: f32 ): void;
updateFriction(deltaTime: f32 ): void;
setSteeringValue(steering: f32, wheel: i32): void;
getRightAxis(): i32;
getUpAxis(): i32;
getForwardAxis(): i32;
getForwardVector(): btVector3;
getCurrentSpeedKmHour(): f32;
}
class btPersistentManifold extends btTypedObject {
constructor();
getBody0(): btCollisionObject;
getBody1(): btCollisionObject;
getNumContacts(): i32;
getContactPoint(index: i32): btManifoldPoint;
}
class btManifoldPoint {
constructor();
get_m_positionWorldOnA(): btVector3;
get_m_positionWorldOnB(): btVector3;
get_m_normalWorldOnB(): btVector3;
getDistance(): f32;
getAppliedImpulse(): f32;
}
class btTypedConstraint extends btTypedObject {
setBreakingImpulseThreshold(threshold: f32): void;
}
class btGeneric6DofConstraint extends btTypedConstraint {
constructor(rbB: btRigidBody, frameInB: btTransform, useLinearReferenceFrameB: bool);
// static new2(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useLinearReferenceFrameB: bool): Generic6DofConstraint {
// let _r1 = rbA, _r2 = rbB, _fa = frameInA, _fb = frameInB, _b = useLinearReferenceFrameB;
// return new Ammo.btGeneric6DofConstraint(_r1, _r2, _fa, _fb, _b);
// }
setLinearLowerLimit(linearLower: btVector3): void;
setLinearUpperLimit(linearUpper: btVector3): void;
setAngularLowerLimit(angularLower: btVector3): void;
setAngularUpperLimit(angularUpper: btVector3): void;
setParam(num: i32, value: f32, axis: i32): void;
getFrameOffsetA(): btTransform;
}
class btGeneric6DofSpringConstraint extends btGeneric6DofConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useLinearReferenceFrameB: bool);
enableSpring(index: i32, onOff: bool): void;
setStiffness(index: i32, stiffness: f32): void;
setDamping(index: i32, damping: f32): void;
}
class btHingeConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, pivotInA: btVector3, pivotInB: btVector3, axisInA: btVector3, axisInB: btVector3, useReferenceFrameA: bool);
setLimit(low: f32, high: f32, _softness: f32, _biasFactor: f32, _relaxationFactor: f32): void;
}
class btSliderConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useReferenceFrameA: bool);
setLowerLinLimit(lowerLimit: f32): void;
setUpperLinLimit(upperLimit: f32): void;
setLowerAngLimit(lowerAngLimit: f32): void;
setUpperAngLimit(upperAngLimit: f32): void;
}
class btPoint2PointConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, pivotInA: btVector3, pivotInB: btVector3);
setPivotA(pivotA: btVector3): void;
setPivotB(pivotB: btVector3): void;
getPivotInA(): btVector3;
getPivotInB(): btVector3;
}
class Config {
set_viterations(i: i32): void;
set_piterations(i: i32): void;
set_collisions(i: i32): void;
set_kDF(f: f32): void;
set_kDP(f: f32): void;
set_kPR(f: f32): void;
set_kVC(f: f32): void;
set_kAHR(f: f32): void;
}
class tNodeArray {
at(i: i32): Node;
size(): i32;
}
class tMaterialArray {
at(i: i32): Material;
}
class tAnchorArray {
constructor();
at(i: i32): Anchor;
clear(): void;
size(): i32;
push_back(anc: Anchor): void;
pop_back(): void;
}
class Node {
get_m_x(): btVector3;
get_m_n(): btVector3;
}
class Material {
constructor();
set_m_kLST(kAST: f32): void;
get_m_kLST(): void;
set_m_kAST(kAST: f32): void;
get_m_kAST(): void;
set_m_kVST(kVST: f32): void;
get_m_kVST(): f32;
set_m_flags(flags: i32): void;
get_m_flags(): i32;
}
class Anchor {
set_m_node(node: Node): void;
get_m_node(): Node;
set_m_local(local: btVector3): void;
get_m_local(): btVector3;
set_m_body(body: btRigidBody): void;
get_m_body(): btRigidBody;
set_m_influence(influence: f32): void;
get_m_influence(): f32;
set_m_c1(c1: btVector3): void;
get_m_c1(): btVector3;
set_m_c2(c2: f32): void;
get_m_c2(): f32;
}
class btSoftBody extends btCollisionObject {
get_m_nodes(): tNodeArray;
get_m_cfg(): Config;
get_m_materials(): tMaterialArray;
get_m_anchors(): tAnchorArray;
setTotalMass(mass: f32, fromfaces: bool): void;
generateClusters(k: i32, maxiterations: i32): void;
generateBendingConstraints(distance: i32, mat: any): void;
appendAnchor(node: i32, body: btRigidBody, disableCollisionBetweenLinkedBodies: bool, influence: f32): void;
appendLink(node: Node, node1: Node, mat: Material, bcheckexist: bool): void;
addForce(f: btVector3, node: i32): void;
}
class btSoftBodyHelpers {
constructor();
CreateFromTriMesh(worldInfo: btSoftBodyWorldInfo, vertices:f32[], triangles:i32[], ntriangles: i32, randomizeConstraints: bool): btSoftBody;
}
class btOverlappingPairCallback {}
class btGhostPairCallback extends btOverlappingPairCallback {
constructor();
}
class btOverlappingPairCache {
setInternalGhostPairCallback(ghostPairCallback: btOverlappingPairCallback): void;
}
class btGhostObject extends btCollisionObject {
constructor();
getNumOverlappingObjects(): i32;
getOverlappingObject(index: i32): btCollisionObject;
}
class btPairCachingGhostObject extends btGhostObject {
constructor();
}
class btKinematicCharacterController extends btActionInterface {
constructor(ghostObject: btPairCachingGhostObject, convexShape: btConvexShape, stepHeight: f32, upAxis: i32);
setUpAxis(axis: i32): void; // setUp in cpp
jump(): void;
setGravity(gravity: f32): void;
getGravity(): f32;
canJump(): bool;
onGround(): bool;
setWalkDirection(walkDirection: btVector3): void;
setVelocityForTimeInterval(velocity: btVector3, timeInterval: f32): void;
warp(origin: btVector3): void;
preStep(collisionWorld: btCollisionWorld): void;
playerStep(collisionWorld: btCollisionWorld, dt: f32): void;
setFallSpeed(fallSpeed: f32): void;
setJumpSpeed(jumpSpeed: f32): void;
setMaxJumpHeight(maxJumpHeight: f32): void;
setMaxSlope(slopeRadians: f32): void;
getMaxSlope(): f32;
getGhostObject(): btPairCachingGhostObject;
setUseGhostSweepTest(useGhostObjectSweepTest: bool): void;
setUpInterpolate(value: bool): void;
}
function destroy(obj: any): void;
function castObject(obj: any, to: any): any;
function _malloc(byteSize: i32): i32;
let HEAPU8: any;
let HEAPF32: any;
}
///end