Bt.hx 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  1. package arm.plugin;
  2. @:native("Ammo.btTypedObject")
  3. extern class TypedObject {}
  4. @:native("Ammo.btVector3")
  5. extern class Vector3 {
  6. public function new(x: Float, y: Float, z: Float): Void;
  7. public function setValue(x: Float, y: Float, z: Float): Void;
  8. public function setX(x: Float): Void;
  9. public function setY(y: Float): Void;
  10. public function setZ(z: Float): Void;
  11. public function x(): Float;
  12. public function y(): Float;
  13. public function z(): Float;
  14. public function length(): Float;
  15. public function normalize(): Void;
  16. }
  17. @:native("Ammo.btQuadWord")
  18. extern class QuadWord {
  19. public function setX(x: Float): Void;
  20. public function setY(y: Float): Void;
  21. public function setZ(z: Float): Void;
  22. public function setW(w: Float): Void;
  23. public function x(): Float;
  24. public function y(): Float;
  25. public function z(): Float;
  26. public function w(): Float;
  27. }
  28. @:native("Ammo.btQuaternion")
  29. extern class Quaternion extends QuadWord {
  30. public function new(x: Float, y: Float, z: Float, w: Float): Void;
  31. public function setEuler(yaw: Float, pitch: Float, roll: Float): Void;
  32. public function slerp(q: Quaternion, t: Float): Quaternion;
  33. public function setValue(x: Float, y: Float, z: Float, w: Float): Void;
  34. }
  35. @:native("Ammo.btMatrix3x3")
  36. extern class Matrix3x3 {
  37. public function setEulerZYX(ex: Float, ey: Float, ez: Float): Void;
  38. public function getRotation(q: Quaternion): Void;
  39. public function getRow(y: Int): Vector3;
  40. }
  41. @:native("Ammo.btActionInterface")
  42. extern class ActionInterface {}
  43. @:native("Ammo.btTransform")
  44. extern class Transform {
  45. public function new(): Void;
  46. public function setIdentity(): Void;
  47. public function setOrigin(inVec: Vector3): Void;
  48. public function getOrigin(): Vector3;
  49. public function setRotation(inQuat: Quaternion): Void;
  50. public function getRotation(): Quaternion;
  51. }
  52. @:native("Ammo.btIDebugDraw")
  53. extern class IDebugDraw {
  54. public function drawLine(from: Vector3, to: Vector3, color: Vector3): Void;
  55. public function drawContactPoint(pointOnB: Vector3, normalOnB: Vector3, distance: Float, lifeTime: Int, color: Vector3): Void;
  56. public function reportErrorWarning(warningString: String): Void;
  57. public function draw3dText(location: Vector3, textString: String): Void;
  58. public function setDebugMode(debugMode: Int): Void;
  59. public function getDebugMode(): Int;
  60. }
  61. @:native("Ammo.btMotionState")
  62. extern class MotionState {
  63. public function getWorldTransform(centerOfMassWorldTrans: Transform): Void;
  64. public function setWorldTransform(centerOfMassWorldTrans: Transform): Void;
  65. }
  66. @:native("Ammo.btDefaultMotionState")
  67. extern class DefaultMotionState extends MotionState {
  68. public function new(worldTrans: Transform, centerOfMassOffset: Transform): Void;
  69. }
  70. @:native("Ammo.btRigidBodyConstructionInfo")
  71. extern class RigidBodyConstructionInfo {
  72. public function new(mass: Float, motionState: MotionState, collisionShape: CollisionShape, localInertia: Vector3): Void;
  73. public var m_friction: Float;
  74. public var m_rollingFriction: Float;
  75. }
  76. @:native("Ammo.btCollisionObject")
  77. extern class CollisionObject {
  78. public static inline var ACTIVE_TAG = 1;
  79. public static inline var ISLAND_SLEEPING = 2;
  80. public static inline var WANTS_DEACTIVATION = 3;
  81. public static inline var DISABLE_DEACTIVATION = 4;
  82. public static inline var DISABLE_SIMULATION = 5;
  83. public static inline var CF_STATIC_OBJECT = 1;
  84. public static inline var CF_KINEMATIC_OBJECT = 2;
  85. public static inline var CF_NO_CONTACT_RESPONSE = 4;
  86. public static inline var CF_CHARACTER_OBJECT = 16;
  87. public function getWorldTransform(): Transform;
  88. public function setWorldTransform(trans: Transform): Void;
  89. public function activate(forceActivation: Bool = false): Void;
  90. public function setActivationState(newState: Int): Void;
  91. public function getUserIndex(): Int;
  92. public function setUserIndex(index: Int): Void;
  93. public function getUserPointer(): Dynamic;
  94. public function setUserPointer(userPointer: Dynamic): Void;
  95. public function isActive(): Bool;
  96. public function isKinematicObject(): Bool;
  97. public function isStaticObject(): Bool;
  98. public function isStaticOrKinematicObject(): Bool;
  99. public function setFriction(frict: Float): Void;
  100. public function setRollingFriction(frict: Float): Void;
  101. public function setRestitution(rest: Float): Void;
  102. public function setContactProcessingThreshold(contactProcessingThreshold: Float): Void;
  103. public function setCollisionShape(collisionShape: CollisionShape): Void;
  104. public function getCollisionShape(): CollisionShape;
  105. public function setCollisionFlags(flags: Int): Void;
  106. public function getCollisionFlags(): Int;
  107. public function setCcdSweptSphereRadius(radius: Float): Void;
  108. public function setCcdMotionThreshold(ccdMotionThreshold: Float): Void;
  109. }
  110. @:native("Ammo.btRigidBody")
  111. extern class RigidBody extends CollisionObject {
  112. public function new(constructionInfo: RigidBodyConstructionInfo): Void;
  113. public function setMassProps(mass: Float, inertia: Vector3): Void;
  114. public function getMotionState(): MotionState;
  115. public function applyCentralForce(force: Vector3): Void;
  116. public function applyForce(force: Vector3, rel_pos: Vector3): Void;
  117. public function applyCentralImpulse(impulse: Vector3): Void;
  118. public function applyImpulse(impulse: Vector3, rel_pos: Vector3): Void;
  119. public function applyTorque(torque: Vector3): Void;
  120. public function applyTorqueImpulse(torque: Vector3): Void;
  121. public function clearForces(): Void;
  122. public function setDamping(linear: Float, angular: Float): Void;
  123. public function updateInertiaTensor(): Void;
  124. public function getCenterOfMassPosition(): Vector3;
  125. public function getCenterOfMassTransform(): Transform;
  126. public function setCenterOfMassTransform(trans: Transform): Void;
  127. public function getLinearVelocity(): Vector3;
  128. public function setLinearVelocity(lin_vel: Vector3): Void;
  129. public function getAngularVelocity(): Vector3;
  130. public function setAngularVelocity(ang_vel: Vector3): Void;
  131. public function setLinearFactor(linearFactor: Vector3): Void;
  132. public function setAngularFactor(angFac: Vector3): Void;
  133. public function setSleepingThresholds(linear: Float, angular: Float): Void;
  134. public function applyGravity(): Void;
  135. public function getGravity(): Vector3;
  136. public function setGravity(acceleration: Vector3): Void;
  137. }
  138. @:native("Ammo.btCollisionConfiguration")
  139. extern class CollisionConfiguration {}
  140. @:native("Ammo.btDefaultCollisionConfiguration")
  141. extern class DefaultCollisionConfiguration extends CollisionConfiguration {
  142. public function new(): Void;
  143. }
  144. @:native("Ammo.btSoftBodyRigidBodyCollisionConfiguration")
  145. extern class SoftBodyRigidBodyCollisionConfiguration extends CollisionConfiguration {
  146. public function new(): Void;
  147. }
  148. @:native("Ammo.btDispatcher")
  149. extern class Dispatcher {
  150. public function getManifoldByIndexInternal(index: Int): PersistentManifold;
  151. public function getNumManifolds(): Int;
  152. }
  153. @:native("Ammo.btCollisionDispatcher")
  154. extern class CollisionDispatcher extends Dispatcher {
  155. public function new(collisionConfiguration: CollisionConfiguration): Void;
  156. }
  157. @:native("Ammo.btBroadphaseInterface")
  158. extern class BroadphaseInterface {}
  159. @:native("Ammo.btDbvtBroadphase")
  160. extern class DbvtBroadphase extends BroadphaseInterface {
  161. public function new(): Void;
  162. }
  163. @:native("Ammo.btAxisSweep3")
  164. extern class AxisSweep3 extends BroadphaseInterface {
  165. public function new(worldAabbMin: Vector3, worldAabbMax: Vector3): Void;
  166. }
  167. @:native("Ammo.btConstraintSolver")
  168. extern class ConstraintSolver {}
  169. @:native("Ammo.btSequentialImpulseConstraintSolver")
  170. extern class SequentialImpulseConstraintSolver extends ConstraintSolver {
  171. public function new(): Void;
  172. }
  173. @:native("Ammo.btDefaultSoftBodySolver")
  174. extern class DefaultSoftBodySolver extends ConstraintSolver {
  175. public function new(): Void;
  176. }
  177. @:native("Ammo.RayResultCallback")
  178. extern class RayResultCallback {
  179. public function hasHit(): Bool;
  180. public function new(): Void;
  181. public function get_m_collisionFilterGroup(): Int;
  182. public function set_m_collisionFilterGroup(g: Int): Void;
  183. public function get_m_collisionFilterMask(): Int;
  184. public function set_m_collisionFilterMask(m: Int): Void;
  185. public function get_m_collisionObject(): CollisionObject;
  186. }
  187. @:native("Ammo.ClosestRayResultCallback")
  188. extern class ClosestRayResultCallback extends RayResultCallback {
  189. public function new(rayFromWorld: Vector3, rayToWorld: Vector3): Void;
  190. public function get_m_hitNormalWorld(): Vector3;
  191. public function get_m_hitPointWorld(): Vector3;
  192. }
  193. @:native("Ammo.ConcreteContactResultCallback")
  194. extern class ConcreteContactResultCallback extends RayResultCallback {
  195. public function new(): Void;
  196. }
  197. @:native("Ammo.btCollisionWorld")
  198. extern class CollisionWorld {
  199. public function rayTest(rayFromWorld: Vector3, rayToWorld: Vector3, resultCallback: RayResultCallback): Void;
  200. public function updateSingleAabb(colObj: CollisionObject): Void;
  201. public function getPairCache(): OverlappingPairCache;
  202. public function addCollisionObject(collisionObject: CollisionObject): Void;
  203. public function removeCollisionObject(collisionObject: CollisionObject): Void;
  204. @:native("addCollisionObject")
  205. public function addCollisionObjectToGroup(collisionObject: CollisionObject, collisionFilterGroup: Int, collisionFilterMask: Int): Void;
  206. }
  207. @:native("Ammo.btDynamicsWorld")
  208. extern class DynamicsWorld extends CollisionWorld {
  209. public function addRigidBody(body: RigidBody): Void;
  210. @:native("addRigidBody")
  211. public function addRigidBodyToGroup(body: RigidBody, group: Int, mask: Int): Void;
  212. public function removeRigidBody(body: RigidBody): Void;
  213. public function addAction(action: ActionInterface): Void;
  214. public function removeAction(action: ActionInterface): Void;
  215. public function addConstraint(constraint: TypedConstraint, disableCollisionsBetweenLinkedBodies: Bool = false): Void;
  216. public function removeConstraint(constraint: TypedConstraint): Void;
  217. public function getGravity(): Vector3;
  218. public function setGravity(v: Vector3): Void;
  219. public function stepSimulation(timeStep: Float, maxSubSteps: Float = 1, fixedTimeStep: Float = 1.0 / 60.0): Void;
  220. }
  221. @:native("Ammo.btDiscreteDynamicsWorld")
  222. extern class DiscreteDynamicsWorld extends DynamicsWorld {
  223. public function new(dispatcher: Dispatcher, pairCache: BroadphaseInterface, constraintSolver: ConstraintSolver, collisionConfiguration: CollisionConfiguration): Void;
  224. public function debugDrawWorld(): Void;
  225. }
  226. @:native("Ammo.btSoftBodyWorldInfo")
  227. extern class SoftBodyWorldInfo {
  228. public function set_m_gravity(v: Vector3): Void;
  229. }
  230. @:native("Ammo.btSoftRigidDynamicsWorld")
  231. extern class SoftRigidDynamicsWorld extends DynamicsWorld {
  232. public function new(dispatcher: Dispatcher, pairCache: BroadphaseInterface, constraintSolver: ConstraintSolver, collisionConfiguration: CollisionConfiguration, softConstraintSolver: ConstraintSolver): Void;
  233. public function addSoftBody(body: SoftBody, collisionFilterGroup: Int, collisionFilterMask: Int): Void;
  234. public function removeSoftBody(body: SoftBody): Void;
  235. public function getWorldInfo(): SoftBodyWorldInfo;
  236. }
  237. @:native("Ammo.btSimpleDynamicsWorld")
  238. extern class SimpleDynamicsWorld extends DynamicsWorld {
  239. public function new(dispatcher: Dispatcher, pairCache: BroadphaseInterface, constraintSolver: ConstraintSolver, collisionConfiguration: CollisionConfiguration): Void;
  240. }
  241. @:native("Ammo.btCollisionShape")
  242. extern class CollisionShape {
  243. public function calculateLocalInertia(mass: Float, inertia: Vector3): Void;
  244. public function setMargin(margin: Float): Void;
  245. public function setLocalScaling(scaling: Vector3): Void;
  246. public function getLocalScaling(): Vector3;
  247. }
  248. @:native("Ammo.btCompoundShape")
  249. extern class CompoundShape extends CollisionShape {
  250. public function new(enableDynamicAabbTree: Bool = true): Void;
  251. public function addChildShape(localTransform: Transform, shape: CollisionShape): Void;
  252. }
  253. @:native("Ammo.btConvexShape")
  254. extern class ConvexShape extends CollisionShape {}
  255. @:native("Ammo.btConcaveShape")
  256. extern class ConcaveShape extends CollisionShape {}
  257. @:native("Ammo.btConvexInternalShape")
  258. extern class ConvexInternalShape extends ConvexShape {}
  259. @:native("Ammo.btPolyhedralConvexShape")
  260. extern class PolyhedralConvexShape extends ConvexInternalShape {}
  261. @:native("Ammo.btBoxShape")
  262. extern class BoxShape extends PolyhedralConvexShape {
  263. public function new(boxHalfExtents: Vector3): Void;
  264. }
  265. @:native("Ammo.btSphereShape")
  266. extern class SphereShape extends ConvexInternalShape {
  267. public function new(radius: Float): Void;
  268. }
  269. @:native("Ammo.btStaticPlaneShape")
  270. extern class StaticPlaneShape extends ConcaveShape {
  271. public function new(planeNormal: Vector3, planeConstant: Float): Void;
  272. }
  273. @:native("Ammo.btPolyhedralConvexAabbCachingShape")
  274. extern class PolyhedralConvexAabbCachingShape extends PolyhedralConvexShape {}
  275. @:native("Ammo.btConvexHullShape")
  276. extern class ConvexHullShape extends PolyhedralConvexAabbCachingShape {
  277. public function new(): Void;
  278. public function addPoint(point: Vector3, recalculateLocalAabb: Bool = true): Void;
  279. }
  280. @:native("Ammo.btCapsuleShape")
  281. extern class CapsuleShape extends ConvexInternalShape {
  282. public function new(radius: Float, height: Float): Void;
  283. public function getUpAxis(): Int;
  284. public function getRadius(): Float;
  285. public function getHalfHeight(): Float;
  286. }
  287. @:native("Ammo.btCapsuleShapeX")
  288. extern class CapsuleShapeX extends CapsuleShape {
  289. public function new(radius: Float, height: Float): Void;
  290. }
  291. @:native("Ammo.btCapsuleShapeZ")
  292. extern class CapsuleShapeZ extends CapsuleShape {
  293. public function new(radius: Float, height: Float): Void;
  294. }
  295. @:native("Ammo.btCylinderShape")
  296. extern class CylinderShape extends ConvexInternalShape {
  297. public function new(halfExtents: Vector3): Void;
  298. }
  299. @:native("Ammo.btCylinderShapeX")
  300. extern class CylinderShapeX extends CylinderShape {
  301. public function new(halfExtents: Vector3): Void;
  302. }
  303. @:native("Ammo.btCylinderShapeZ")
  304. extern class CylinderShapeZ extends CylinderShape {
  305. public function new(halfExtents: Vector3): Void;
  306. }
  307. @:native("Ammo.btConeShape")
  308. extern class ConeShape extends ConvexInternalShape {
  309. public function new(radius: Float, height: Float): Void;
  310. }
  311. @:native("Ammo.btConeShapeX")
  312. extern class ConeShapeX extends ConeShape {
  313. public function new(radius: Float, height: Float): Void;
  314. }
  315. @:native("Ammo.btConeShapeZ")
  316. extern class ConeShapeZ extends ConeShape {
  317. public function new(radius: Float, height: Float): Void;
  318. }
  319. @:native("Ammo.btHeightfieldTerrainShape")
  320. extern class HeightfieldTerrainShape extends ConcaveShape {
  321. // heightDataType - float, double, integer, short, fixedpoint88, uchar
  322. public function new(heightStickWidth: Int, heightStickLength: Int, heightfieldData: Dynamic, heightScale: Float, minHeight: Float, maxHeight: Float, upAxis: Int, heightDataType: Int, flipQuadEdges: Bool): Void;
  323. }
  324. @:native("Ammo.btStridingMeshInterface")
  325. extern class StridingMeshInterface {
  326. public function new(): Void;
  327. }
  328. @:native("Ammo.btIndexedMesh")
  329. extern class IndexedMesh {
  330. public function new(): Void;
  331. }
  332. @:native("Ammo.btTriangleIndexVertexArray")
  333. extern class TriangleIndexVertexArray extends StridingMeshInterface {
  334. public function new(): Void;
  335. }
  336. @:native("Ammo.btTriangleMesh")
  337. extern class TriangleMesh extends TriangleIndexVertexArray {
  338. public function new(use32bitIndices: Bool = true, use4componentVertices: Bool = true): Void;
  339. public function addTriangle(vertex0: Vector3, vertex1: Vector3, vertex2: Vector3, removeDuplicateVertices: Bool = false): Void;
  340. }
  341. @:native("Ammo.btTriangleMeshShape")
  342. extern class TriangleMeshShape extends ConcaveShape {
  343. public function new(meshInterface: StridingMeshInterface): Void;
  344. }
  345. @:native("Ammo.btBvhTriangleMeshShape")
  346. extern class BvhTriangleMeshShape extends TriangleMeshShape {
  347. public function new(meshInterface: StridingMeshInterface, useQuantizedAabbCompression: Bool, buildBvh: Bool = true): Void;
  348. }
  349. @:native("Ammo.btGImpactMeshShape")
  350. extern class GImpactMeshShape extends ConcaveShape {
  351. public function new(meshInterface: StridingMeshInterface): Void;
  352. public function updateBound(): Void;
  353. }
  354. @:native("Ammo.GImpactCollisionAlgorithm")
  355. extern class GImpactCollisionAlgorithm {
  356. public function new(): Void;
  357. public function registerAlgorithm(dispatcher: CollisionDispatcher): Void;
  358. }
  359. @:native("Ammo.btVehicleTuning")
  360. extern class VehicleTuning extends ActionInterface {
  361. public function new(): Void;
  362. }
  363. @:native("Ammo.btVehicleRaycaster")
  364. extern class VehicleRaycaster {}
  365. @:native("Ammo.btDefaultVehicleRaycaster")
  366. extern class DefaultVehicleRaycaster extends VehicleRaycaster {
  367. public function new(world: DynamicsWorld): Void;
  368. }
  369. @:native("Ammo.btWheelInfoConstructionInfo")
  370. extern class RaycastInfo {
  371. public var m_contactNormalWS: Vector3;
  372. public var m_contactPointWS: Vector3;
  373. public var m_suspensionLength: Float;
  374. public var m_hardPointWS: Vector3;
  375. public var m_wheelDirectionWS: Vector3;
  376. public var m_wheelAxleWS: Vector3;
  377. public var m_isInContact: Bool;
  378. }
  379. @:native("Ammo.btWheelInfoConstructionInfo")
  380. extern class WheelInfoConstructionInfo {
  381. public function new(): Void;
  382. public var m_chassisConnectionCS: Vector3;
  383. public var m_wheelDirectionCS: Vector3;
  384. public var m_wheelAxleCS: Vector3;
  385. public var m_suspensionRestLength: Float;
  386. public var m_maxSuspensionTravelCm: Float;
  387. public var m_wheelRadius: Float;
  388. public var m_suspensionStiffness: Float;
  389. public var m_wheelsDampingCompression: Float;
  390. public var m_wheelsDampingRelaxation: Float;
  391. public var m_frictionSlip: Float;
  392. public var m_maxSuspensionForce: Float;
  393. public var m_bIsFrontWheel: Bool;
  394. }
  395. @:native("Ammo.btWheelInfo")
  396. extern class WheelInfo {
  397. public function new(ci: WheelInfoConstructionInfo): Void;
  398. public var m_raycastInfo: RaycastInfo;
  399. public var m_worldTransform: Transform;
  400. public var m_chassisConnectionPointCS: Vector3;
  401. public var m_wheelDirectionCS: Vector3;
  402. public var m_wheelAxleCS: Vector3;
  403. public var m_suspensionRestLength1: Float;
  404. public var m_maxSuspensionTravelCm: Float;
  405. public function getSuspensionRestLength(): Float;
  406. public var m_suspensionStiffness: Float;
  407. public var m_wheelsDampingCompression: Float;
  408. public var m_wheelsDampingRelaxation: Float;
  409. public var m_frictionSlip: Float;
  410. public var m_steering: Float;
  411. public var m_rotation: Float;
  412. public var m_deltaRotation: Float;
  413. public var m_rollInfluence: Float;
  414. public var m_maxSuspensionForce: Float;
  415. public var m_wheelsRadius: Float;
  416. public var m_engineForce: Float;
  417. public var m_brake: Float;
  418. public var m_bIsFrontWheel: Bool;
  419. public var m_clippedInvContactDotSuspension: Float;
  420. public var m_suspensionRelativeVelocity: Float;
  421. public var m_wheelsSuspensionForce: Float;
  422. public var m_skidInfo: Float;
  423. }
  424. @:native("Ammo.btRaycastVehicle")
  425. extern class RaycastVehicle extends ActionInterface {
  426. public function new(tuning: VehicleTuning, chassis: RigidBody, raycaster: VehicleRaycaster): Void;
  427. public function setCoordinateSystem(rightIndex: Int, upIndex: Int, forwardIndex: Int): Void;
  428. public function addWheel(connectionPointCS0: Vector3, wheelDirectionCS0: Vector3, wheelAxleCS: Vector3, suspensionRestLength: Float, wheelRadius: Float, tuning: VehicleTuning, isFrontWheel: Bool): WheelInfo;
  429. public function getNumWheels(): Int;
  430. public function getWheelInfo(index: Int): WheelInfo;
  431. public function resetSuspension(): Void;
  432. public function getWheelTransformWS(wheelIndex: Int): Transform;
  433. public function updateWheelTransform(wheelIndex: Int, interpolatedTransform: Bool = true): Void;
  434. public function applyEngineForce(force: Float, wheel: Int): Void;
  435. public function setBrake(brake: Float, wheelIndex: Int): Void;
  436. public function setPitchControl(pitch: Float): Void;
  437. public function updateSuspension(deltaTime: Float ): Void;
  438. public function updateFriction(deltaTime: Float ): Void;
  439. public function setSteeringValue(steering: Float, wheel: Int): Void;
  440. public function getRightAxis(): Int;
  441. public function getUpAxis(): Int;
  442. public function getForwardAxis(): Int;
  443. public function getForwardVector(): Vector3;
  444. public function getCurrentSpeedKmHour(): Float;
  445. }
  446. @:native("Ammo.btPersistentManifold")
  447. extern class PersistentManifold extends TypedObject {
  448. public function new(): Void;
  449. public function getBody0(): CollisionObject;
  450. public function getBody1(): CollisionObject;
  451. public function getNumContacts(): Int;
  452. public function getContactPoint(index: Int): ManifoldPoint;
  453. }
  454. @:native("Ammo.btManifoldPoint")
  455. extern class ManifoldPoint {
  456. public function new(): Void;
  457. public function get_m_positionWorldOnA(): Vector3;
  458. public function get_m_positionWorldOnB(): Vector3;
  459. public function get_m_normalWorldOnB(): Vector3;
  460. public function getDistance(): Float;
  461. public function getAppliedImpulse(): Float;
  462. }
  463. @:native("Ammo.btTypedConstraint")
  464. extern class TypedConstraint extends TypedObject {
  465. public function setBreakingImpulseThreshold(threshold: Float): Void;
  466. }
  467. @:native("Ammo.btGeneric6DofConstraint")
  468. extern class Generic6DofConstraint extends TypedConstraint {
  469. public function new(rbB: RigidBody, frameInB: Transform, useLinearReferenceFrameB: Bool): Void;
  470. public static inline function new2(rbA: RigidBody, rbB: RigidBody, frameInA: Transform, frameInB: Transform, useLinearReferenceFrameB: Bool = false): Generic6DofConstraint {
  471. var _r1 = rbA, _r2 = rbB, _fa = frameInA, _fb = frameInB, _b = useLinearReferenceFrameB;
  472. return untyped __js__("new Ammo.btGeneric6DofConstraint(_r1, _r2, _fa, _fb, _b)");
  473. }
  474. public function setLinearLowerLimit(linearLower: Vector3): Void;
  475. public function setLinearUpperLimit(linearUpper: Vector3): Void;
  476. public function setAngularLowerLimit(angularLower: Vector3): Void;
  477. public function setAngularUpperLimit(angularUpper: Vector3): Void;
  478. public function setParam(num: Int, value: Float, axis: Int = -1): Void;
  479. public function getFrameOffsetA(): Transform;
  480. }
  481. @:native("Ammo.btGeneric6DofSpringConstraint")
  482. extern class Generic6DofSpringConstraint extends Generic6DofConstraint {
  483. public function new(rbA: RigidBody, rbB: RigidBody, frameInA: Transform, frameInB: Transform, useLinearReferenceFrameB: Bool): Void;
  484. public function enableSpring(index: Int, onOff: Bool): Void;
  485. public function setStiffness(index: Int, stiffness: Float): Void;
  486. public function setDamping(index: Int, damping: Float): Void;
  487. }
  488. @:native("Ammo.btHingeConstraint")
  489. extern class HingeConstraint extends TypedConstraint {
  490. public function new(rbA: RigidBody, rbB: RigidBody, pivotInA: Vector3, pivotInB: Vector3, axisInA: Vector3, axisInB: Vector3, useReferenceFrameA: Bool = false): Void;
  491. public function setLimit(low: Float, high: Float, _softness: Float = 0.9, _biasFactor: Float = 0.3, _relaxationFactor: Float = 1.0): Void;
  492. }
  493. @:native("Ammo.btSliderConstraint")
  494. extern class SliderConstraint extends TypedConstraint {
  495. public function new(rbA: RigidBody, rbB: RigidBody, frameInA: Transform, frameInB: Transform, useReferenceFrameA: Bool): Void;
  496. public function setLowerLinLimit(lowerLimit: Float): Void;
  497. public function setUpperLinLimit(upperLimit: Float): Void;
  498. public function setLowerAngLimit(lowerAngLimit: Float): Void;
  499. public function setUpperAngLimit(upperAngLimit: Float): Void;
  500. }
  501. @:native("Ammo.btPoint2PointConstraint")
  502. extern class Point2PointConstraint extends TypedConstraint {
  503. public function new(rbA: RigidBody, rbB: RigidBody, pivotInA: Vector3, pivotInB: Vector3): Void;
  504. public function setPivotA(pivotA: Vector3): Void;
  505. public function setPivotB(pivotB: Vector3): Void;
  506. public function getPivotInA(): Vector3;
  507. public function getPivotInB(): Vector3;
  508. }
  509. @:native("Ammo.Config")
  510. extern class Config {
  511. public function set_viterations(i: Int): Void;
  512. public function set_piterations(i: Int): Void;
  513. public function set_collisions(i: Int): Void;
  514. public function set_kDF(f: Float): Void;
  515. public function set_kDP(f: Float): Void;
  516. public function set_kPR(f: Float): Void;
  517. public function set_kVC(f: Float): Void;
  518. public function set_kAHR(f: Float): Void;
  519. }
  520. @:native("Ammo.tNodeArray")
  521. extern class TNodeArray {
  522. public function at(i: Int): Node;
  523. public function size(): Int;
  524. }
  525. @:native("Ammo.tMaterialArray")
  526. extern class TMaterialArray {
  527. public function at(i: Int): Material;
  528. }
  529. @:native("Ammo.tAnchorArray")
  530. extern class TAnchorArray {
  531. public function new();
  532. public function at(i: Int): Anchor;
  533. public function clear(): Void;
  534. public function size(): Int;
  535. public function push_back(anc: Anchor): Void;
  536. public function pop_back(): Void;
  537. }
  538. @:native("Ammo.Node")
  539. extern class Node {
  540. public function get_m_x(): Vector3;
  541. public function get_m_n(): Vector3;
  542. }
  543. @:native("Ammo.Material")
  544. extern class Material {
  545. public function new();
  546. public function set_m_kLST(kAST: Float): Void;
  547. public function get_m_kLST(): Void;
  548. public function set_m_kAST(kAST: Float): Void;
  549. public function get_m_kAST(): Void;
  550. public function set_m_kVST(kVST: Float): Void;
  551. public function get_m_kVST(): Float;
  552. public function set_m_flags(flags: Int): Void;
  553. public function get_m_flags(): Int;
  554. }
  555. @:native("Ammo.Anchor")
  556. extern class Anchor {
  557. public function set_m_node(node: Node): Void;
  558. public function get_m_node(): Node;
  559. public function set_m_local(local: Vector3): Void;
  560. public function get_m_local(): Vector3;
  561. public function set_m_body(body: RigidBody): Void;
  562. public function get_m_body(): RigidBody;
  563. public function set_m_influence(influence: Float): Void;
  564. public function get_m_influence(): Float;
  565. public function set_m_c1(c1: Vector3): Void;
  566. public function get_m_c1(): Vector3;
  567. public function set_m_c2(c2: Float): Void;
  568. public function get_m_c2(): Float;
  569. }
  570. @:native("Ammo.btSoftBody")
  571. extern class SoftBody extends CollisionObject {
  572. public function get_m_nodes(): TNodeArray;
  573. public function get_m_cfg(): Config;
  574. public function get_m_materials(): TMaterialArray;
  575. public function get_m_anchors(): TAnchorArray;
  576. public function setTotalMass(mass: Float, fromfaces: Bool = false): Void;
  577. public function generateClusters(k: Int, maxiterations: Int = 8192): Void;
  578. public function generateBendingConstraints(distance: Int, mat: Dynamic = 0): Void;
  579. public function appendAnchor(node: Int, body: RigidBody, disableCollisionBetweenLinkedBodies: Bool, influence: Float): Void;
  580. public function appendLink(node: Node, node1: Node, mat: Material, bcheckexist: Bool = false): Void;
  581. public function addForce(f: Vector3, node: Int): Void;
  582. }
  583. @:native("Ammo.btSoftBodyHelpers")
  584. extern class SoftBodyHelpers {
  585. public function new(): Void;
  586. function CreateFromTriMesh(worldInfo: SoftBodyWorldInfo, vertices: haxe.ds.Vector<Float>, triangles: haxe.ds.Vector<Int>, ntriangles: Int, randomizeConstraints: Bool = true): SoftBody;
  587. }
  588. @:native("Ammo.btOverlappingPairCallback")
  589. extern class OverlappingPairCallback {}
  590. @:native("Ammo.btGhostPairCallback")
  591. extern class GhostPairCallback extends OverlappingPairCallback {
  592. public function new(): Void;
  593. }
  594. @:native("Ammo.btOverlappingPairCache")
  595. extern class OverlappingPairCache {
  596. public function setInternalGhostPairCallback(ghostPairCallback: OverlappingPairCallback): Void;
  597. }
  598. @:native("Ammo.btGhostObject")
  599. extern class GhostObject extends CollisionObject {
  600. public function new(): Void;
  601. public function getNumOverlappingObjects(): Int;
  602. public function getOverlappingObject(index: Int): CollisionObject;
  603. }
  604. @:native("Ammo.btPairCachingGhostObject")
  605. extern class PairCachingGhostObject extends GhostObject {
  606. public function new(): Void;
  607. }
  608. @:native("Ammo.btKinematicCharacterController")
  609. extern class KinematicCharacterController extends ActionInterface {
  610. public function new(ghostObject: PairCachingGhostObject, convexShape: ConvexShape, stepHeight: Float, upAxis: Int = 1): Void;
  611. public function setUpAxis(axis: Int): Void; // setUp in cpp
  612. public function jump(): Void;
  613. public function setGravity(gravity: Float): Void;
  614. public function getGravity(): Float;
  615. public function canJump(): Bool;
  616. public function onGround(): Bool;
  617. public function setWalkDirection(walkDirection: Vector3): Void;
  618. public function setVelocityForTimeInterval(velocity: Vector3, timeInterval: Float): Void;
  619. public function warp(origin: Vector3): Void;
  620. public function preStep(collisionWorld: CollisionWorld): Void;
  621. public function playerStep(collisionWorld: CollisionWorld, dt: Float): Void;
  622. public function setFallSpeed(fallSpeed: Float): Void;
  623. public function setJumpSpeed(jumpSpeed: Float): Void;
  624. public function setMaxJumpHeight(maxJumpHeight: Float): Void;
  625. public function setMaxSlope(slopeRadians: Float): Void;
  626. public function getMaxSlope(): Float;
  627. public function getGhostObject(): PairCachingGhostObject;
  628. public function setUseGhostSweepTest(useGhostObjectSweepTest: Bool): Void;
  629. public function setUpInterpolate(value: Bool): Void;
  630. }
  631. @:native("Ammo")
  632. extern class Ammo {
  633. public static function destroy(obj: Dynamic): Void;
  634. public static function castObject(obj: Dynamic, to: Class<Dynamic>): Dynamic;
  635. public static function _malloc(byteSize: Int): Int;
  636. public static var HEAPU8: Dynamic;
  637. public static var HEAPF32: Dynamic;
  638. }