bullet.h 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444
  1. /* Copyright (C) 2011 Erwin Coumans & Charlie C
  2. *
  3. * This software is provided 'as-is', without any express or implied
  4. * warranty. In no event will the authors be held liable for any damages
  5. * arising from the use of this software.
  6. *
  7. * Permission is granted to anyone to use this software for any purpose,
  8. * including commercial applications, and to alter it and redistribute it
  9. * freely, subject to the following restrictions:
  10. *
  11. * 1. The origin of this software must not be misrepresented; you must not
  12. * claim that you wrote the original software. If you use this software
  13. * in a product, an acknowledgment in the product documentation would be
  14. * appreciated but is not required.
  15. * 2. Altered source versions must be plainly marked as such, and must not be
  16. * misrepresented as being the original software.
  17. * 3. This notice may not be removed or altered from any source distribution.
  18. */
  19. // Auto generated from Bullet/Extras/HeaderGenerator/bulletGenerate.py
  20. #ifndef __BULLET_H__
  21. #define __BULLET_H__
  22. namespace Bullet {
  23. // put an empty struct in the case
  24. typedef struct bInvalidHandle {
  25. int unused;
  26. }bInvalidHandle;
  27. class PointerArray;
  28. class btPhysicsSystem;
  29. class ListBase;
  30. class btVector3FloatData;
  31. class btVector3DoubleData;
  32. class btQuaternionFloatData;
  33. class btQuaternionDoubleData;
  34. class btMatrix3x3FloatData;
  35. class btMatrix3x3DoubleData;
  36. class btTransformFloatData;
  37. class btTransformDoubleData;
  38. class btBvhSubtreeInfoData;
  39. class btOptimizedBvhNodeFloatData;
  40. class btOptimizedBvhNodeDoubleData;
  41. class btQuantizedBvhNodeData;
  42. class btQuantizedBvhFloatData;
  43. class btQuantizedBvhDoubleData;
  44. class btCollisionShapeData;
  45. class btStaticPlaneShapeData;
  46. class btConvexInternalShapeData;
  47. class btPositionAndRadius;
  48. class btMultiSphereShapeData;
  49. class btIntIndexData;
  50. class btShortIntIndexData;
  51. class btShortIntIndexTripletData;
  52. class btCharIndexTripletData;
  53. class btMeshPartData;
  54. class btStridingMeshInterfaceData;
  55. class btTriangleMeshShapeData;
  56. class btScaledTriangleMeshShapeData;
  57. class btCompoundShapeChildData;
  58. class btCompoundShapeData;
  59. class btCylinderShapeData;
  60. class btConeShapeData;
  61. class btCapsuleShapeData;
  62. class btTriangleInfoData;
  63. class btTriangleInfoMapData;
  64. class btGImpactMeshShapeData;
  65. class btConvexHullShapeData;
  66. class btCollisionObjectDoubleData;
  67. class btCollisionObjectFloatData;
  68. class btContactSolverInfoDoubleData;
  69. class btContactSolverInfoFloatData;
  70. class btDynamicsWorldDoubleData;
  71. class btDynamicsWorldFloatData;
  72. class btRigidBodyFloatData;
  73. class btRigidBodyDoubleData;
  74. class btConstraintInfo1;
  75. class btTypedConstraintFloatData;
  76. class btTypedConstraintData;
  77. class btTypedConstraintDoubleData;
  78. class btPoint2PointConstraintFloatData;
  79. class btPoint2PointConstraintDoubleData2;
  80. class btPoint2PointConstraintDoubleData;
  81. class btHingeConstraintDoubleData;
  82. class btHingeConstraintFloatData;
  83. class btHingeConstraintDoubleData2;
  84. class btConeTwistConstraintDoubleData;
  85. class btConeTwistConstraintData;
  86. class btGeneric6DofConstraintData;
  87. class btGeneric6DofConstraintDoubleData2;
  88. class btGeneric6DofSpringConstraintData;
  89. class btGeneric6DofSpringConstraintDoubleData2;
  90. class btGeneric6DofSpring2ConstraintData;
  91. class btGeneric6DofSpring2ConstraintDoubleData2;
  92. class btSliderConstraintData;
  93. class btSliderConstraintDoubleData;
  94. class btGearConstraintFloatData;
  95. class btGearConstraintDoubleData;
  96. class SoftBodyMaterialData;
  97. class SoftBodyNodeData;
  98. class SoftBodyLinkData;
  99. class SoftBodyFaceData;
  100. class SoftBodyTetraData;
  101. class SoftRigidAnchorData;
  102. class SoftBodyConfigData;
  103. class SoftBodyPoseData;
  104. class SoftBodyClusterData;
  105. class btSoftBodyJointData;
  106. class btSoftBodyFloatData;
  107. class btMultiBodyLinkDoubleData;
  108. class btMultiBodyLinkFloatData;
  109. class btMultiBodyDoubleData;
  110. class btMultiBodyFloatData;
  111. // -------------------------------------------------- //
  112. class PointerArray
  113. {
  114. public:
  115. int m_size;
  116. int m_capacity;
  117. void *m_data;
  118. };
  119. // -------------------------------------------------- //
  120. class btPhysicsSystem
  121. {
  122. public:
  123. PointerArray m_collisionShapes;
  124. PointerArray m_collisionObjects;
  125. PointerArray m_constraints;
  126. };
  127. // -------------------------------------------------- //
  128. class ListBase
  129. {
  130. public:
  131. void *first;
  132. void *last;
  133. };
  134. // -------------------------------------------------- //
  135. class btVector3FloatData
  136. {
  137. public:
  138. float m_floats[4];
  139. };
  140. // -------------------------------------------------- //
  141. class btVector3DoubleData
  142. {
  143. public:
  144. double m_floats[4];
  145. };
  146. // -------------------------------------------------- //
  147. class btQuaternionFloatData
  148. {
  149. public:
  150. float m_floats[4];
  151. };
  152. // -------------------------------------------------- //
  153. class btQuaternionDoubleData
  154. {
  155. public:
  156. double m_floats[4];
  157. };
  158. // -------------------------------------------------- //
  159. class btMatrix3x3FloatData
  160. {
  161. public:
  162. btVector3FloatData m_el[3];
  163. };
  164. // -------------------------------------------------- //
  165. class btMatrix3x3DoubleData
  166. {
  167. public:
  168. btVector3DoubleData m_el[3];
  169. };
  170. // -------------------------------------------------- //
  171. class btTransformFloatData
  172. {
  173. public:
  174. btMatrix3x3FloatData m_basis;
  175. btVector3FloatData m_origin;
  176. };
  177. // -------------------------------------------------- //
  178. class btTransformDoubleData
  179. {
  180. public:
  181. btMatrix3x3DoubleData m_basis;
  182. btVector3DoubleData m_origin;
  183. };
  184. // -------------------------------------------------- //
  185. class btBvhSubtreeInfoData
  186. {
  187. public:
  188. int m_rootNodeIndex;
  189. int m_subtreeSize;
  190. short m_quantizedAabbMin[3];
  191. short m_quantizedAabbMax[3];
  192. };
  193. // -------------------------------------------------- //
  194. class btOptimizedBvhNodeFloatData
  195. {
  196. public:
  197. btVector3FloatData m_aabbMinOrg;
  198. btVector3FloatData m_aabbMaxOrg;
  199. int m_escapeIndex;
  200. int m_subPart;
  201. int m_triangleIndex;
  202. char m_pad[4];
  203. };
  204. // -------------------------------------------------- //
  205. class btOptimizedBvhNodeDoubleData
  206. {
  207. public:
  208. btVector3DoubleData m_aabbMinOrg;
  209. btVector3DoubleData m_aabbMaxOrg;
  210. int m_escapeIndex;
  211. int m_subPart;
  212. int m_triangleIndex;
  213. char m_pad[4];
  214. };
  215. // -------------------------------------------------- //
  216. class btQuantizedBvhNodeData
  217. {
  218. public:
  219. short m_quantizedAabbMin[3];
  220. short m_quantizedAabbMax[3];
  221. int m_escapeIndexOrTriangleIndex;
  222. };
  223. // -------------------------------------------------- //
  224. class btQuantizedBvhFloatData
  225. {
  226. public:
  227. btVector3FloatData m_bvhAabbMin;
  228. btVector3FloatData m_bvhAabbMax;
  229. btVector3FloatData m_bvhQuantization;
  230. int m_curNodeIndex;
  231. int m_useQuantization;
  232. int m_numContiguousLeafNodes;
  233. int m_numQuantizedContiguousNodes;
  234. btOptimizedBvhNodeFloatData *m_contiguousNodesPtr;
  235. btQuantizedBvhNodeData *m_quantizedContiguousNodesPtr;
  236. btBvhSubtreeInfoData *m_subTreeInfoPtr;
  237. int m_traversalMode;
  238. int m_numSubtreeHeaders;
  239. };
  240. // -------------------------------------------------- //
  241. class btQuantizedBvhDoubleData
  242. {
  243. public:
  244. btVector3DoubleData m_bvhAabbMin;
  245. btVector3DoubleData m_bvhAabbMax;
  246. btVector3DoubleData m_bvhQuantization;
  247. int m_curNodeIndex;
  248. int m_useQuantization;
  249. int m_numContiguousLeafNodes;
  250. int m_numQuantizedContiguousNodes;
  251. btOptimizedBvhNodeDoubleData *m_contiguousNodesPtr;
  252. btQuantizedBvhNodeData *m_quantizedContiguousNodesPtr;
  253. int m_traversalMode;
  254. int m_numSubtreeHeaders;
  255. btBvhSubtreeInfoData *m_subTreeInfoPtr;
  256. };
  257. // -------------------------------------------------- //
  258. class btCollisionShapeData
  259. {
  260. public:
  261. char *m_name;
  262. int m_shapeType;
  263. char m_padding[4];
  264. };
  265. // -------------------------------------------------- //
  266. class btStaticPlaneShapeData
  267. {
  268. public:
  269. btCollisionShapeData m_collisionShapeData;
  270. btVector3FloatData m_localScaling;
  271. btVector3FloatData m_planeNormal;
  272. float m_planeConstant;
  273. char m_pad[4];
  274. };
  275. // -------------------------------------------------- //
  276. class btConvexInternalShapeData
  277. {
  278. public:
  279. btCollisionShapeData m_collisionShapeData;
  280. btVector3FloatData m_localScaling;
  281. btVector3FloatData m_implicitShapeDimensions;
  282. float m_collisionMargin;
  283. int m_padding;
  284. };
  285. // -------------------------------------------------- //
  286. class btPositionAndRadius
  287. {
  288. public:
  289. btVector3FloatData m_pos;
  290. float m_radius;
  291. };
  292. // -------------------------------------------------- //
  293. class btMultiSphereShapeData
  294. {
  295. public:
  296. btConvexInternalShapeData m_convexInternalShapeData;
  297. btPositionAndRadius *m_localPositionArrayPtr;
  298. int m_localPositionArraySize;
  299. char m_padding[4];
  300. };
  301. // -------------------------------------------------- //
  302. class btIntIndexData
  303. {
  304. public:
  305. int m_value;
  306. };
  307. // -------------------------------------------------- //
  308. class btShortIntIndexData
  309. {
  310. public:
  311. short m_value;
  312. char m_pad[2];
  313. };
  314. // -------------------------------------------------- //
  315. class btShortIntIndexTripletData
  316. {
  317. public:
  318. short m_values[3];
  319. char m_pad[2];
  320. };
  321. // -------------------------------------------------- //
  322. class btCharIndexTripletData
  323. {
  324. public:
  325. char m_values[3];
  326. char m_pad;
  327. };
  328. // -------------------------------------------------- //
  329. class btMeshPartData
  330. {
  331. public:
  332. btVector3FloatData *m_vertices3f;
  333. btVector3DoubleData *m_vertices3d;
  334. btIntIndexData *m_indices32;
  335. btShortIntIndexTripletData *m_3indices16;
  336. btCharIndexTripletData *m_3indices8;
  337. btShortIntIndexData *m_indices16;
  338. int m_numTriangles;
  339. int m_numVertices;
  340. };
  341. // -------------------------------------------------- //
  342. class btStridingMeshInterfaceData
  343. {
  344. public:
  345. btMeshPartData *m_meshPartsPtr;
  346. btVector3FloatData m_scaling;
  347. int m_numMeshParts;
  348. char m_padding[4];
  349. };
  350. // -------------------------------------------------- //
  351. class btTriangleMeshShapeData
  352. {
  353. public:
  354. btCollisionShapeData m_collisionShapeData;
  355. btStridingMeshInterfaceData m_meshInterface;
  356. btQuantizedBvhFloatData *m_quantizedFloatBvh;
  357. btQuantizedBvhDoubleData *m_quantizedDoubleBvh;
  358. btTriangleInfoMapData *m_triangleInfoMap;
  359. float m_collisionMargin;
  360. char m_pad3[4];
  361. };
  362. // -------------------------------------------------- //
  363. class btScaledTriangleMeshShapeData
  364. {
  365. public:
  366. btTriangleMeshShapeData m_trimeshShapeData;
  367. btVector3FloatData m_localScaling;
  368. };
  369. // -------------------------------------------------- //
  370. class btCompoundShapeChildData
  371. {
  372. public:
  373. btTransformFloatData m_transform;
  374. btCollisionShapeData *m_childShape;
  375. int m_childShapeType;
  376. float m_childMargin;
  377. };
  378. // -------------------------------------------------- //
  379. class btCompoundShapeData
  380. {
  381. public:
  382. btCollisionShapeData m_collisionShapeData;
  383. btCompoundShapeChildData *m_childShapePtr;
  384. int m_numChildShapes;
  385. float m_collisionMargin;
  386. };
  387. // -------------------------------------------------- //
  388. class btCylinderShapeData
  389. {
  390. public:
  391. btConvexInternalShapeData m_convexInternalShapeData;
  392. int m_upAxis;
  393. char m_padding[4];
  394. };
  395. // -------------------------------------------------- //
  396. class btConeShapeData
  397. {
  398. public:
  399. btConvexInternalShapeData m_convexInternalShapeData;
  400. int m_upIndex;
  401. char m_padding[4];
  402. };
  403. // -------------------------------------------------- //
  404. class btCapsuleShapeData
  405. {
  406. public:
  407. btConvexInternalShapeData m_convexInternalShapeData;
  408. int m_upAxis;
  409. char m_padding[4];
  410. };
  411. // -------------------------------------------------- //
  412. class btTriangleInfoData
  413. {
  414. public:
  415. int m_flags;
  416. float m_edgeV0V1Angle;
  417. float m_edgeV1V2Angle;
  418. float m_edgeV2V0Angle;
  419. };
  420. // -------------------------------------------------- //
  421. class btTriangleInfoMapData
  422. {
  423. public:
  424. int *m_hashTablePtr;
  425. int *m_nextPtr;
  426. btTriangleInfoData *m_valueArrayPtr;
  427. int *m_keyArrayPtr;
  428. float m_convexEpsilon;
  429. float m_planarEpsilon;
  430. float m_equalVertexThreshold;
  431. float m_edgeDistanceThreshold;
  432. float m_zeroAreaThreshold;
  433. int m_nextSize;
  434. int m_hashTableSize;
  435. int m_numValues;
  436. int m_numKeys;
  437. char m_padding[4];
  438. };
  439. // -------------------------------------------------- //
  440. class btGImpactMeshShapeData
  441. {
  442. public:
  443. btCollisionShapeData m_collisionShapeData;
  444. btStridingMeshInterfaceData m_meshInterface;
  445. btVector3FloatData m_localScaling;
  446. float m_collisionMargin;
  447. int m_gimpactSubType;
  448. };
  449. // -------------------------------------------------- //
  450. class btConvexHullShapeData
  451. {
  452. public:
  453. btConvexInternalShapeData m_convexInternalShapeData;
  454. btVector3FloatData *m_unscaledPointsFloatPtr;
  455. btVector3DoubleData *m_unscaledPointsDoublePtr;
  456. int m_numUnscaledPoints;
  457. char m_padding3[4];
  458. };
  459. // -------------------------------------------------- //
  460. class btCollisionObjectDoubleData
  461. {
  462. public:
  463. void *m_broadphaseHandle;
  464. void *m_collisionShape;
  465. btCollisionShapeData *m_rootCollisionShape;
  466. char *m_name;
  467. btTransformDoubleData m_worldTransform;
  468. btTransformDoubleData m_interpolationWorldTransform;
  469. btVector3DoubleData m_interpolationLinearVelocity;
  470. btVector3DoubleData m_interpolationAngularVelocity;
  471. btVector3DoubleData m_anisotropicFriction;
  472. double m_contactProcessingThreshold;
  473. double m_deactivationTime;
  474. double m_friction;
  475. double m_rollingFriction;
  476. double m_contactDamping;
  477. double m_contactStiffness;
  478. double m_restitution;
  479. double m_hitFraction;
  480. double m_ccdSweptSphereRadius;
  481. double m_ccdMotionThreshold;
  482. int m_hasAnisotropicFriction;
  483. int m_collisionFlags;
  484. int m_islandTag1;
  485. int m_companionId;
  486. int m_activationState1;
  487. int m_internalType;
  488. int m_checkCollideWith;
  489. char m_padding[4];
  490. };
  491. // -------------------------------------------------- //
  492. class btCollisionObjectFloatData
  493. {
  494. public:
  495. void *m_broadphaseHandle;
  496. void *m_collisionShape;
  497. btCollisionShapeData *m_rootCollisionShape;
  498. char *m_name;
  499. btTransformFloatData m_worldTransform;
  500. btTransformFloatData m_interpolationWorldTransform;
  501. btVector3FloatData m_interpolationLinearVelocity;
  502. btVector3FloatData m_interpolationAngularVelocity;
  503. btVector3FloatData m_anisotropicFriction;
  504. float m_contactProcessingThreshold;
  505. float m_deactivationTime;
  506. float m_friction;
  507. float m_rollingFriction;
  508. float m_contactDamping;
  509. float m_contactStiffness;
  510. float m_restitution;
  511. float m_hitFraction;
  512. float m_ccdSweptSphereRadius;
  513. float m_ccdMotionThreshold;
  514. int m_hasAnisotropicFriction;
  515. int m_collisionFlags;
  516. int m_islandTag1;
  517. int m_companionId;
  518. int m_activationState1;
  519. int m_internalType;
  520. int m_checkCollideWith;
  521. char m_padding[4];
  522. };
  523. // -------------------------------------------------- //
  524. class btContactSolverInfoDoubleData
  525. {
  526. public:
  527. double m_tau;
  528. double m_damping;
  529. double m_friction;
  530. double m_timeStep;
  531. double m_restitution;
  532. double m_maxErrorReduction;
  533. double m_sor;
  534. double m_erp;
  535. double m_erp2;
  536. double m_globalCfm;
  537. double m_splitImpulsePenetrationThreshold;
  538. double m_splitImpulseTurnErp;
  539. double m_linearSlop;
  540. double m_warmstartingFactor;
  541. double m_maxGyroscopicForce;
  542. double m_singleAxisRollingFrictionThreshold;
  543. int m_numIterations;
  544. int m_solverMode;
  545. int m_restingContactRestitutionThreshold;
  546. int m_minimumSolverBatchSize;
  547. int m_splitImpulse;
  548. char m_padding[4];
  549. };
  550. // -------------------------------------------------- //
  551. class btContactSolverInfoFloatData
  552. {
  553. public:
  554. float m_tau;
  555. float m_damping;
  556. float m_friction;
  557. float m_timeStep;
  558. float m_restitution;
  559. float m_maxErrorReduction;
  560. float m_sor;
  561. float m_erp;
  562. float m_erp2;
  563. float m_globalCfm;
  564. float m_splitImpulsePenetrationThreshold;
  565. float m_splitImpulseTurnErp;
  566. float m_linearSlop;
  567. float m_warmstartingFactor;
  568. float m_maxGyroscopicForce;
  569. float m_singleAxisRollingFrictionThreshold;
  570. int m_numIterations;
  571. int m_solverMode;
  572. int m_restingContactRestitutionThreshold;
  573. int m_minimumSolverBatchSize;
  574. int m_splitImpulse;
  575. char m_padding[4];
  576. };
  577. // -------------------------------------------------- //
  578. class btDynamicsWorldDoubleData
  579. {
  580. public:
  581. btContactSolverInfoDoubleData m_solverInfo;
  582. btVector3DoubleData m_gravity;
  583. };
  584. // -------------------------------------------------- //
  585. class btDynamicsWorldFloatData
  586. {
  587. public:
  588. btContactSolverInfoFloatData m_solverInfo;
  589. btVector3FloatData m_gravity;
  590. };
  591. // -------------------------------------------------- //
  592. class btRigidBodyFloatData
  593. {
  594. public:
  595. btCollisionObjectFloatData m_collisionObjectData;
  596. btMatrix3x3FloatData m_invInertiaTensorWorld;
  597. btVector3FloatData m_linearVelocity;
  598. btVector3FloatData m_angularVelocity;
  599. btVector3FloatData m_angularFactor;
  600. btVector3FloatData m_linearFactor;
  601. btVector3FloatData m_gravity;
  602. btVector3FloatData m_gravity_acceleration;
  603. btVector3FloatData m_invInertiaLocal;
  604. btVector3FloatData m_totalForce;
  605. btVector3FloatData m_totalTorque;
  606. float m_inverseMass;
  607. float m_linearDamping;
  608. float m_angularDamping;
  609. float m_additionalDampingFactor;
  610. float m_additionalLinearDampingThresholdSqr;
  611. float m_additionalAngularDampingThresholdSqr;
  612. float m_additionalAngularDampingFactor;
  613. float m_linearSleepingThreshold;
  614. float m_angularSleepingThreshold;
  615. int m_additionalDamping;
  616. };
  617. // -------------------------------------------------- //
  618. class btRigidBodyDoubleData
  619. {
  620. public:
  621. btCollisionObjectDoubleData m_collisionObjectData;
  622. btMatrix3x3DoubleData m_invInertiaTensorWorld;
  623. btVector3DoubleData m_linearVelocity;
  624. btVector3DoubleData m_angularVelocity;
  625. btVector3DoubleData m_angularFactor;
  626. btVector3DoubleData m_linearFactor;
  627. btVector3DoubleData m_gravity;
  628. btVector3DoubleData m_gravity_acceleration;
  629. btVector3DoubleData m_invInertiaLocal;
  630. btVector3DoubleData m_totalForce;
  631. btVector3DoubleData m_totalTorque;
  632. double m_inverseMass;
  633. double m_linearDamping;
  634. double m_angularDamping;
  635. double m_additionalDampingFactor;
  636. double m_additionalLinearDampingThresholdSqr;
  637. double m_additionalAngularDampingThresholdSqr;
  638. double m_additionalAngularDampingFactor;
  639. double m_linearSleepingThreshold;
  640. double m_angularSleepingThreshold;
  641. int m_additionalDamping;
  642. char m_padding[4];
  643. };
  644. // -------------------------------------------------- //
  645. class btConstraintInfo1
  646. {
  647. public:
  648. int m_numConstraintRows;
  649. int nub;
  650. };
  651. // -------------------------------------------------- //
  652. class btTypedConstraintFloatData
  653. {
  654. public:
  655. btRigidBodyFloatData *m_rbA;
  656. btRigidBodyFloatData *m_rbB;
  657. char *m_name;
  658. int m_objectType;
  659. int m_userConstraintType;
  660. int m_userConstraintId;
  661. int m_needsFeedback;
  662. float m_appliedImpulse;
  663. float m_dbgDrawSize;
  664. int m_disableCollisionsBetweenLinkedBodies;
  665. int m_overrideNumSolverIterations;
  666. float m_breakingImpulseThreshold;
  667. int m_isEnabled;
  668. };
  669. // -------------------------------------------------- //
  670. class btTypedConstraintData
  671. {
  672. public:
  673. bInvalidHandle *m_rbA;
  674. bInvalidHandle *m_rbB;
  675. char *m_name;
  676. int m_objectType;
  677. int m_userConstraintType;
  678. int m_userConstraintId;
  679. int m_needsFeedback;
  680. float m_appliedImpulse;
  681. float m_dbgDrawSize;
  682. int m_disableCollisionsBetweenLinkedBodies;
  683. int m_overrideNumSolverIterations;
  684. float m_breakingImpulseThreshold;
  685. int m_isEnabled;
  686. };
  687. // -------------------------------------------------- //
  688. class btTypedConstraintDoubleData
  689. {
  690. public:
  691. btRigidBodyDoubleData *m_rbA;
  692. btRigidBodyDoubleData *m_rbB;
  693. char *m_name;
  694. int m_objectType;
  695. int m_userConstraintType;
  696. int m_userConstraintId;
  697. int m_needsFeedback;
  698. double m_appliedImpulse;
  699. double m_dbgDrawSize;
  700. int m_disableCollisionsBetweenLinkedBodies;
  701. int m_overrideNumSolverIterations;
  702. double m_breakingImpulseThreshold;
  703. int m_isEnabled;
  704. char padding[4];
  705. };
  706. // -------------------------------------------------- //
  707. class btPoint2PointConstraintFloatData
  708. {
  709. public:
  710. btTypedConstraintData m_typeConstraintData;
  711. btVector3FloatData m_pivotInA;
  712. btVector3FloatData m_pivotInB;
  713. };
  714. // -------------------------------------------------- //
  715. class btPoint2PointConstraintDoubleData2
  716. {
  717. public:
  718. btTypedConstraintDoubleData m_typeConstraintData;
  719. btVector3DoubleData m_pivotInA;
  720. btVector3DoubleData m_pivotInB;
  721. };
  722. // -------------------------------------------------- //
  723. class btPoint2PointConstraintDoubleData
  724. {
  725. public:
  726. btTypedConstraintData m_typeConstraintData;
  727. btVector3DoubleData m_pivotInA;
  728. btVector3DoubleData m_pivotInB;
  729. };
  730. // -------------------------------------------------- //
  731. class btHingeConstraintDoubleData
  732. {
  733. public:
  734. btTypedConstraintData m_typeConstraintData;
  735. btTransformDoubleData m_rbAFrame;
  736. btTransformDoubleData m_rbBFrame;
  737. int m_useReferenceFrameA;
  738. int m_angularOnly;
  739. int m_enableAngularMotor;
  740. float m_motorTargetVelocity;
  741. float m_maxMotorImpulse;
  742. float m_lowerLimit;
  743. float m_upperLimit;
  744. float m_limitSoftness;
  745. float m_biasFactor;
  746. float m_relaxationFactor;
  747. };
  748. // -------------------------------------------------- //
  749. class btHingeConstraintFloatData
  750. {
  751. public:
  752. btTypedConstraintData m_typeConstraintData;
  753. btTransformFloatData m_rbAFrame;
  754. btTransformFloatData m_rbBFrame;
  755. int m_useReferenceFrameA;
  756. int m_angularOnly;
  757. int m_enableAngularMotor;
  758. float m_motorTargetVelocity;
  759. float m_maxMotorImpulse;
  760. float m_lowerLimit;
  761. float m_upperLimit;
  762. float m_limitSoftness;
  763. float m_biasFactor;
  764. float m_relaxationFactor;
  765. };
  766. // -------------------------------------------------- //
  767. class btHingeConstraintDoubleData2
  768. {
  769. public:
  770. btTypedConstraintDoubleData m_typeConstraintData;
  771. btTransformDoubleData m_rbAFrame;
  772. btTransformDoubleData m_rbBFrame;
  773. int m_useReferenceFrameA;
  774. int m_angularOnly;
  775. int m_enableAngularMotor;
  776. double m_motorTargetVelocity;
  777. double m_maxMotorImpulse;
  778. double m_lowerLimit;
  779. double m_upperLimit;
  780. double m_limitSoftness;
  781. double m_biasFactor;
  782. double m_relaxationFactor;
  783. char m_padding1[4];
  784. };
  785. // -------------------------------------------------- //
  786. class btConeTwistConstraintDoubleData
  787. {
  788. public:
  789. btTypedConstraintDoubleData m_typeConstraintData;
  790. btTransformDoubleData m_rbAFrame;
  791. btTransformDoubleData m_rbBFrame;
  792. double m_swingSpan1;
  793. double m_swingSpan2;
  794. double m_twistSpan;
  795. double m_limitSoftness;
  796. double m_biasFactor;
  797. double m_relaxationFactor;
  798. double m_damping;
  799. };
  800. // -------------------------------------------------- //
  801. class btConeTwistConstraintData
  802. {
  803. public:
  804. btTypedConstraintData m_typeConstraintData;
  805. btTransformFloatData m_rbAFrame;
  806. btTransformFloatData m_rbBFrame;
  807. float m_swingSpan1;
  808. float m_swingSpan2;
  809. float m_twistSpan;
  810. float m_limitSoftness;
  811. float m_biasFactor;
  812. float m_relaxationFactor;
  813. float m_damping;
  814. char m_pad[4];
  815. };
  816. // -------------------------------------------------- //
  817. class btGeneric6DofConstraintData
  818. {
  819. public:
  820. btTypedConstraintData m_typeConstraintData;
  821. btTransformFloatData m_rbAFrame;
  822. btTransformFloatData m_rbBFrame;
  823. btVector3FloatData m_linearUpperLimit;
  824. btVector3FloatData m_linearLowerLimit;
  825. btVector3FloatData m_angularUpperLimit;
  826. btVector3FloatData m_angularLowerLimit;
  827. int m_useLinearReferenceFrameA;
  828. int m_useOffsetForConstraintFrame;
  829. };
  830. // -------------------------------------------------- //
  831. class btGeneric6DofConstraintDoubleData2
  832. {
  833. public:
  834. btTypedConstraintDoubleData m_typeConstraintData;
  835. btTransformDoubleData m_rbAFrame;
  836. btTransformDoubleData m_rbBFrame;
  837. btVector3DoubleData m_linearUpperLimit;
  838. btVector3DoubleData m_linearLowerLimit;
  839. btVector3DoubleData m_angularUpperLimit;
  840. btVector3DoubleData m_angularLowerLimit;
  841. int m_useLinearReferenceFrameA;
  842. int m_useOffsetForConstraintFrame;
  843. };
  844. // -------------------------------------------------- //
  845. class btGeneric6DofSpringConstraintData
  846. {
  847. public:
  848. btGeneric6DofConstraintData m_6dofData;
  849. int m_springEnabled[6];
  850. float m_equilibriumPoint[6];
  851. float m_springStiffness[6];
  852. float m_springDamping[6];
  853. };
  854. // -------------------------------------------------- //
  855. class btGeneric6DofSpringConstraintDoubleData2
  856. {
  857. public:
  858. btGeneric6DofConstraintDoubleData2 m_6dofData;
  859. int m_springEnabled[6];
  860. double m_equilibriumPoint[6];
  861. double m_springStiffness[6];
  862. double m_springDamping[6];
  863. };
  864. // -------------------------------------------------- //
  865. class btGeneric6DofSpring2ConstraintData
  866. {
  867. public:
  868. btTypedConstraintData m_typeConstraintData;
  869. btTransformFloatData m_rbAFrame;
  870. btTransformFloatData m_rbBFrame;
  871. btVector3FloatData m_linearUpperLimit;
  872. btVector3FloatData m_linearLowerLimit;
  873. btVector3FloatData m_linearBounce;
  874. btVector3FloatData m_linearStopERP;
  875. btVector3FloatData m_linearStopCFM;
  876. btVector3FloatData m_linearMotorERP;
  877. btVector3FloatData m_linearMotorCFM;
  878. btVector3FloatData m_linearTargetVelocity;
  879. btVector3FloatData m_linearMaxMotorForce;
  880. btVector3FloatData m_linearServoTarget;
  881. btVector3FloatData m_linearSpringStiffness;
  882. btVector3FloatData m_linearSpringDamping;
  883. btVector3FloatData m_linearEquilibriumPoint;
  884. char m_linearEnableMotor[4];
  885. char m_linearServoMotor[4];
  886. char m_linearEnableSpring[4];
  887. char m_linearSpringStiffnessLimited[4];
  888. char m_linearSpringDampingLimited[4];
  889. char m_padding1[4];
  890. btVector3FloatData m_angularUpperLimit;
  891. btVector3FloatData m_angularLowerLimit;
  892. btVector3FloatData m_angularBounce;
  893. btVector3FloatData m_angularStopERP;
  894. btVector3FloatData m_angularStopCFM;
  895. btVector3FloatData m_angularMotorERP;
  896. btVector3FloatData m_angularMotorCFM;
  897. btVector3FloatData m_angularTargetVelocity;
  898. btVector3FloatData m_angularMaxMotorForce;
  899. btVector3FloatData m_angularServoTarget;
  900. btVector3FloatData m_angularSpringStiffness;
  901. btVector3FloatData m_angularSpringDamping;
  902. btVector3FloatData m_angularEquilibriumPoint;
  903. char m_angularEnableMotor[4];
  904. char m_angularServoMotor[4];
  905. char m_angularEnableSpring[4];
  906. char m_angularSpringStiffnessLimited[4];
  907. char m_angularSpringDampingLimited[4];
  908. int m_rotateOrder;
  909. };
  910. // -------------------------------------------------- //
  911. class btGeneric6DofSpring2ConstraintDoubleData2
  912. {
  913. public:
  914. btTypedConstraintDoubleData m_typeConstraintData;
  915. btTransformDoubleData m_rbAFrame;
  916. btTransformDoubleData m_rbBFrame;
  917. btVector3DoubleData m_linearUpperLimit;
  918. btVector3DoubleData m_linearLowerLimit;
  919. btVector3DoubleData m_linearBounce;
  920. btVector3DoubleData m_linearStopERP;
  921. btVector3DoubleData m_linearStopCFM;
  922. btVector3DoubleData m_linearMotorERP;
  923. btVector3DoubleData m_linearMotorCFM;
  924. btVector3DoubleData m_linearTargetVelocity;
  925. btVector3DoubleData m_linearMaxMotorForce;
  926. btVector3DoubleData m_linearServoTarget;
  927. btVector3DoubleData m_linearSpringStiffness;
  928. btVector3DoubleData m_linearSpringDamping;
  929. btVector3DoubleData m_linearEquilibriumPoint;
  930. char m_linearEnableMotor[4];
  931. char m_linearServoMotor[4];
  932. char m_linearEnableSpring[4];
  933. char m_linearSpringStiffnessLimited[4];
  934. char m_linearSpringDampingLimited[4];
  935. char m_padding1[4];
  936. btVector3DoubleData m_angularUpperLimit;
  937. btVector3DoubleData m_angularLowerLimit;
  938. btVector3DoubleData m_angularBounce;
  939. btVector3DoubleData m_angularStopERP;
  940. btVector3DoubleData m_angularStopCFM;
  941. btVector3DoubleData m_angularMotorERP;
  942. btVector3DoubleData m_angularMotorCFM;
  943. btVector3DoubleData m_angularTargetVelocity;
  944. btVector3DoubleData m_angularMaxMotorForce;
  945. btVector3DoubleData m_angularServoTarget;
  946. btVector3DoubleData m_angularSpringStiffness;
  947. btVector3DoubleData m_angularSpringDamping;
  948. btVector3DoubleData m_angularEquilibriumPoint;
  949. char m_angularEnableMotor[4];
  950. char m_angularServoMotor[4];
  951. char m_angularEnableSpring[4];
  952. char m_angularSpringStiffnessLimited[4];
  953. char m_angularSpringDampingLimited[4];
  954. int m_rotateOrder;
  955. };
  956. // -------------------------------------------------- //
  957. class btSliderConstraintData
  958. {
  959. public:
  960. btTypedConstraintData m_typeConstraintData;
  961. btTransformFloatData m_rbAFrame;
  962. btTransformFloatData m_rbBFrame;
  963. float m_linearUpperLimit;
  964. float m_linearLowerLimit;
  965. float m_angularUpperLimit;
  966. float m_angularLowerLimit;
  967. int m_useLinearReferenceFrameA;
  968. int m_useOffsetForConstraintFrame;
  969. };
  970. // -------------------------------------------------- //
  971. class btSliderConstraintDoubleData
  972. {
  973. public:
  974. btTypedConstraintDoubleData m_typeConstraintData;
  975. btTransformDoubleData m_rbAFrame;
  976. btTransformDoubleData m_rbBFrame;
  977. double m_linearUpperLimit;
  978. double m_linearLowerLimit;
  979. double m_angularUpperLimit;
  980. double m_angularLowerLimit;
  981. int m_useLinearReferenceFrameA;
  982. int m_useOffsetForConstraintFrame;
  983. };
  984. // -------------------------------------------------- //
  985. class btGearConstraintFloatData
  986. {
  987. public:
  988. btTypedConstraintFloatData m_typeConstraintData;
  989. btVector3FloatData m_axisInA;
  990. btVector3FloatData m_axisInB;
  991. float m_ratio;
  992. char m_padding[4];
  993. };
  994. // -------------------------------------------------- //
  995. class btGearConstraintDoubleData
  996. {
  997. public:
  998. btTypedConstraintDoubleData m_typeConstraintData;
  999. btVector3DoubleData m_axisInA;
  1000. btVector3DoubleData m_axisInB;
  1001. double m_ratio;
  1002. };
  1003. // -------------------------------------------------- //
  1004. class SoftBodyMaterialData
  1005. {
  1006. public:
  1007. float m_linearStiffness;
  1008. float m_angularStiffness;
  1009. float m_volumeStiffness;
  1010. int m_flags;
  1011. };
  1012. // -------------------------------------------------- //
  1013. class SoftBodyNodeData
  1014. {
  1015. public:
  1016. SoftBodyMaterialData *m_material;
  1017. btVector3FloatData m_position;
  1018. btVector3FloatData m_previousPosition;
  1019. btVector3FloatData m_velocity;
  1020. btVector3FloatData m_accumulatedForce;
  1021. btVector3FloatData m_normal;
  1022. float m_inverseMass;
  1023. float m_area;
  1024. int m_attach;
  1025. int m_pad;
  1026. };
  1027. // -------------------------------------------------- //
  1028. class SoftBodyLinkData
  1029. {
  1030. public:
  1031. SoftBodyMaterialData *m_material;
  1032. int m_nodeIndices[2];
  1033. float m_restLength;
  1034. int m_bbending;
  1035. };
  1036. // -------------------------------------------------- //
  1037. class SoftBodyFaceData
  1038. {
  1039. public:
  1040. btVector3FloatData m_normal;
  1041. SoftBodyMaterialData *m_material;
  1042. int m_nodeIndices[3];
  1043. float m_restArea;
  1044. };
  1045. // -------------------------------------------------- //
  1046. class SoftBodyTetraData
  1047. {
  1048. public:
  1049. btVector3FloatData m_c0[4];
  1050. SoftBodyMaterialData *m_material;
  1051. int m_nodeIndices[4];
  1052. float m_restVolume;
  1053. float m_c1;
  1054. float m_c2;
  1055. int m_pad;
  1056. };
  1057. // -------------------------------------------------- //
  1058. class SoftRigidAnchorData
  1059. {
  1060. public:
  1061. btMatrix3x3FloatData m_c0;
  1062. btVector3FloatData m_c1;
  1063. btVector3FloatData m_localFrame;
  1064. bInvalidHandle *m_rigidBody;
  1065. int m_nodeIndex;
  1066. float m_c2;
  1067. };
  1068. // -------------------------------------------------- //
  1069. class SoftBodyConfigData
  1070. {
  1071. public:
  1072. int m_aeroModel;
  1073. float m_baumgarte;
  1074. float m_damping;
  1075. float m_drag;
  1076. float m_lift;
  1077. float m_pressure;
  1078. float m_volume;
  1079. float m_dynamicFriction;
  1080. float m_poseMatch;
  1081. float m_rigidContactHardness;
  1082. float m_kineticContactHardness;
  1083. float m_softContactHardness;
  1084. float m_anchorHardness;
  1085. float m_softRigidClusterHardness;
  1086. float m_softKineticClusterHardness;
  1087. float m_softSoftClusterHardness;
  1088. float m_softRigidClusterImpulseSplit;
  1089. float m_softKineticClusterImpulseSplit;
  1090. float m_softSoftClusterImpulseSplit;
  1091. float m_maxVolume;
  1092. float m_timeScale;
  1093. int m_velocityIterations;
  1094. int m_positionIterations;
  1095. int m_driftIterations;
  1096. int m_clusterIterations;
  1097. int m_collisionFlags;
  1098. };
  1099. // -------------------------------------------------- //
  1100. class SoftBodyPoseData
  1101. {
  1102. public:
  1103. btMatrix3x3FloatData m_rot;
  1104. btMatrix3x3FloatData m_scale;
  1105. btMatrix3x3FloatData m_aqq;
  1106. btVector3FloatData m_com;
  1107. btVector3FloatData *m_positions;
  1108. float *m_weights;
  1109. int m_numPositions;
  1110. int m_numWeigts;
  1111. int m_bvolume;
  1112. int m_bframe;
  1113. float m_restVolume;
  1114. int m_pad;
  1115. };
  1116. // -------------------------------------------------- //
  1117. class SoftBodyClusterData
  1118. {
  1119. public:
  1120. btTransformFloatData m_framexform;
  1121. btMatrix3x3FloatData m_locii;
  1122. btMatrix3x3FloatData m_invwi;
  1123. btVector3FloatData m_com;
  1124. btVector3FloatData m_vimpulses[2];
  1125. btVector3FloatData m_dimpulses[2];
  1126. btVector3FloatData m_lv;
  1127. btVector3FloatData m_av;
  1128. btVector3FloatData *m_framerefs;
  1129. int *m_nodeIndices;
  1130. float *m_masses;
  1131. int m_numFrameRefs;
  1132. int m_numNodes;
  1133. int m_numMasses;
  1134. float m_idmass;
  1135. float m_imass;
  1136. int m_nvimpulses;
  1137. int m_ndimpulses;
  1138. float m_ndamping;
  1139. float m_ldamping;
  1140. float m_adamping;
  1141. float m_matching;
  1142. float m_maxSelfCollisionImpulse;
  1143. float m_selfCollisionImpulseFactor;
  1144. int m_containsAnchor;
  1145. int m_collide;
  1146. int m_clusterIndex;
  1147. };
  1148. // -------------------------------------------------- //
  1149. class btSoftBodyJointData
  1150. {
  1151. public:
  1152. void *m_bodyA;
  1153. void *m_bodyB;
  1154. btVector3FloatData m_refs[2];
  1155. float m_cfm;
  1156. float m_erp;
  1157. float m_split;
  1158. int m_delete;
  1159. btVector3FloatData m_relPosition[2];
  1160. int m_bodyAtype;
  1161. int m_bodyBtype;
  1162. int m_jointType;
  1163. int m_pad;
  1164. };
  1165. // -------------------------------------------------- //
  1166. class btSoftBodyFloatData
  1167. {
  1168. public:
  1169. btCollisionObjectFloatData m_collisionObjectData;
  1170. SoftBodyPoseData *m_pose;
  1171. SoftBodyMaterialData **m_materials;
  1172. SoftBodyNodeData *m_nodes;
  1173. SoftBodyLinkData *m_links;
  1174. SoftBodyFaceData *m_faces;
  1175. SoftBodyTetraData *m_tetrahedra;
  1176. SoftRigidAnchorData *m_anchors;
  1177. SoftBodyClusterData *m_clusters;
  1178. btSoftBodyJointData *m_joints;
  1179. int m_numMaterials;
  1180. int m_numNodes;
  1181. int m_numLinks;
  1182. int m_numFaces;
  1183. int m_numTetrahedra;
  1184. int m_numAnchors;
  1185. int m_numClusters;
  1186. int m_numJoints;
  1187. SoftBodyConfigData m_config;
  1188. };
  1189. // -------------------------------------------------- //
  1190. class btMultiBodyLinkDoubleData
  1191. {
  1192. public:
  1193. btQuaternionDoubleData m_zeroRotParentToThis;
  1194. btVector3DoubleData m_parentComToThisComOffset;
  1195. btVector3DoubleData m_thisPivotToThisComOffset;
  1196. btVector3DoubleData m_jointAxisTop[6];
  1197. btVector3DoubleData m_jointAxisBottom[6];
  1198. btVector3DoubleData m_linkInertia;
  1199. double m_linkMass;
  1200. int m_parentIndex;
  1201. int m_jointType;
  1202. int m_dofCount;
  1203. int m_posVarCount;
  1204. double m_jointPos[7];
  1205. double m_jointVel[6];
  1206. double m_jointTorque[6];
  1207. double m_jointDamping;
  1208. double m_jointFriction;
  1209. double m_jointLowerLimit;
  1210. double m_jointUpperLimit;
  1211. double m_jointMaxForce;
  1212. double m_jointMaxVelocity;
  1213. char *m_linkName;
  1214. char *m_jointName;
  1215. btCollisionObjectDoubleData *m_linkCollider;
  1216. char *m_paddingPtr;
  1217. };
  1218. // -------------------------------------------------- //
  1219. class btMultiBodyLinkFloatData
  1220. {
  1221. public:
  1222. btQuaternionFloatData m_zeroRotParentToThis;
  1223. btVector3FloatData m_parentComToThisComOffset;
  1224. btVector3FloatData m_thisPivotToThisComOffset;
  1225. btVector3FloatData m_jointAxisTop[6];
  1226. btVector3FloatData m_jointAxisBottom[6];
  1227. btVector3FloatData m_linkInertia;
  1228. int m_dofCount;
  1229. float m_linkMass;
  1230. int m_parentIndex;
  1231. int m_jointType;
  1232. float m_jointPos[7];
  1233. float m_jointVel[6];
  1234. float m_jointTorque[6];
  1235. int m_posVarCount;
  1236. float m_jointDamping;
  1237. float m_jointFriction;
  1238. float m_jointLowerLimit;
  1239. float m_jointUpperLimit;
  1240. float m_jointMaxForce;
  1241. float m_jointMaxVelocity;
  1242. char *m_linkName;
  1243. char *m_jointName;
  1244. btCollisionObjectFloatData *m_linkCollider;
  1245. char *m_paddingPtr;
  1246. };
  1247. // -------------------------------------------------- //
  1248. class btMultiBodyDoubleData
  1249. {
  1250. public:
  1251. btTransformDoubleData m_baseWorldTransform;
  1252. btVector3DoubleData m_baseInertia;
  1253. double m_baseMass;
  1254. char *m_baseName;
  1255. btMultiBodyLinkDoubleData *m_links;
  1256. btCollisionObjectDoubleData *m_baseCollider;
  1257. char *m_paddingPtr;
  1258. int m_numLinks;
  1259. char m_padding[4];
  1260. };
  1261. // -------------------------------------------------- //
  1262. class btMultiBodyFloatData
  1263. {
  1264. public:
  1265. char *m_baseName;
  1266. btMultiBodyLinkFloatData *m_links;
  1267. btCollisionObjectFloatData *m_baseCollider;
  1268. btTransformFloatData m_baseWorldTransform;
  1269. btVector3FloatData m_baseInertia;
  1270. float m_baseMass;
  1271. int m_numLinks;
  1272. };
  1273. }
  1274. #endif//__BULLET_H__