joltc.h 184 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052
  1. // Copyright (c) Amer Koleci and Contributors.
  2. // Licensed under the MIT License (MIT). See LICENSE in the repository root for more information.
  3. #ifndef JOLT_C_H_
  4. #define JOLT_C_H_ 1
  5. #if defined(JPH_SHARED_LIBRARY_BUILD)
  6. # if defined(_MSC_VER)
  7. # define _JPH_EXPORT __declspec(dllexport)
  8. # elif defined(__GNUC__)
  9. # define _JPH_EXPORT __attribute__((visibility("default")))
  10. # else
  11. # define _JPH_EXPORT
  12. # pragma warning "Unknown dynamic link import/export semantics."
  13. # endif
  14. #elif defined(JPH_SHARED_LIBRARY_INCLUDE)
  15. # if defined(_MSC_VER)
  16. # define _JPH_EXPORT __declspec(dllimport)
  17. # else
  18. # define _JPH_EXPORT
  19. # endif
  20. #else
  21. # define _JPH_EXPORT
  22. #endif
  23. #ifdef __cplusplus
  24. # define _JPH_EXTERN extern "C"
  25. #else
  26. # define _JPH_EXTERN extern
  27. #endif
  28. #ifdef _WIN32
  29. # define JPH_API_CALL __cdecl
  30. #else
  31. # define JPH_API_CALL
  32. #endif
  33. #define JPH_CAPI _JPH_EXTERN _JPH_EXPORT
  34. #include <stdbool.h>
  35. #include <stdint.h>
  36. #include <stddef.h>
  37. #define JPH_DEFAULT_COLLISION_TOLERANCE (1.0e-4f) // float cDefaultCollisionTolerance = 1.0e-4f
  38. #define JPH_DEFAULT_PENETRATION_TOLERANCE (1.0e-4f) // float cDefaultPenetrationTolerance = 1.0e-4f
  39. #define JPH_DEFAULT_CONVEX_RADIUS (0.05f) // float cDefaultConvexRadius = 0.05f
  40. #define JPH_CAPSULE_PROJECTION_SLOP (0.02f) // float cCapsuleProjectionSlop = 0.02f
  41. #define JPH_MAX_PHYSICS_JOBS (2048) // int cMaxPhysicsJobs = 2048
  42. #define JPH_MAX_PHYSICS_BARRIERS (8) // int cMaxPhysicsBarriers = 8
  43. #define JPH_INVALID_COLLISION_GROUP_ID (~0U)
  44. #define JPH_INVALID_COLLISION_SUBGROUP_ID (~0U)
  45. #define JPH_M_PI (3.14159265358979323846f) // To avoid collision with JPH_PI
  46. typedef uint32_t JPH_Bool;
  47. typedef uint32_t JPH_BodyID;
  48. typedef uint32_t JPH_SubShapeID;
  49. typedef uint32_t JPH_ObjectLayer;
  50. typedef uint8_t JPH_BroadPhaseLayer;
  51. typedef uint32_t JPH_CollisionGroupID;
  52. typedef uint32_t JPH_CollisionSubGroupID;
  53. typedef uint32_t JPH_CharacterID;
  54. /* Forward declarations */
  55. typedef struct JPH_BroadPhaseLayerInterface JPH_BroadPhaseLayerInterface;
  56. typedef struct JPH_ObjectVsBroadPhaseLayerFilter JPH_ObjectVsBroadPhaseLayerFilter;
  57. typedef struct JPH_ObjectLayerPairFilter JPH_ObjectLayerPairFilter;
  58. typedef struct JPH_BroadPhaseLayerFilter JPH_BroadPhaseLayerFilter;
  59. typedef struct JPH_ObjectLayerFilter JPH_ObjectLayerFilter;
  60. typedef struct JPH_BodyFilter JPH_BodyFilter;
  61. typedef struct JPH_ShapeFilter JPH_ShapeFilter;
  62. typedef struct JPH_SimShapeFilter JPH_SimShapeFilter;
  63. typedef struct JPH_PhysicsStepListener JPH_PhysicsStepListener;
  64. typedef struct JPH_PhysicsSystem JPH_PhysicsSystem;
  65. typedef struct JPH_PhysicsMaterial JPH_PhysicsMaterial;
  66. typedef struct JPH_LinearCurve JPH_LinearCurve;
  67. /* ShapeSettings */
  68. typedef struct JPH_ShapeSettings JPH_ShapeSettings;
  69. typedef struct JPH_ConvexShapeSettings JPH_ConvexShapeSettings;
  70. typedef struct JPH_SphereShapeSettings JPH_SphereShapeSettings;
  71. typedef struct JPH_BoxShapeSettings JPH_BoxShapeSettings;
  72. typedef struct JPH_PlaneShapeSettings JPH_PlaneShapeSettings;
  73. typedef struct JPH_TriangleShapeSettings JPH_TriangleShapeSettings;
  74. typedef struct JPH_CapsuleShapeSettings JPH_CapsuleShapeSettings;
  75. typedef struct JPH_TaperedCapsuleShapeSettings JPH_TaperedCapsuleShapeSettings;
  76. typedef struct JPH_CylinderShapeSettings JPH_CylinderShapeSettings;
  77. typedef struct JPH_TaperedCylinderShapeSettings JPH_TaperedCylinderShapeSettings;
  78. typedef struct JPH_ConvexHullShapeSettings JPH_ConvexHullShapeSettings;
  79. typedef struct JPH_CompoundShapeSettings JPH_CompoundShapeSettings;
  80. typedef struct JPH_StaticCompoundShapeSettings JPH_StaticCompoundShapeSettings;
  81. typedef struct JPH_MutableCompoundShapeSettings JPH_MutableCompoundShapeSettings;
  82. typedef struct JPH_MeshShapeSettings JPH_MeshShapeSettings;
  83. typedef struct JPH_HeightFieldShapeSettings JPH_HeightFieldShapeSettings;
  84. typedef struct JPH_RotatedTranslatedShapeSettings JPH_RotatedTranslatedShapeSettings;
  85. typedef struct JPH_ScaledShapeSettings JPH_ScaledShapeSettings;
  86. typedef struct JPH_OffsetCenterOfMassShapeSettings JPH_OffsetCenterOfMassShapeSettings;
  87. typedef struct JPH_EmptyShapeSettings JPH_EmptyShapeSettings;
  88. /* Shape */
  89. typedef struct JPH_Shape JPH_Shape;
  90. typedef struct JPH_ConvexShape JPH_ConvexShape;
  91. typedef struct JPH_SphereShape JPH_SphereShape;
  92. typedef struct JPH_BoxShape JPH_BoxShape;
  93. typedef struct JPH_PlaneShape JPH_PlaneShape;
  94. typedef struct JPH_CapsuleShape JPH_CapsuleShape;
  95. typedef struct JPH_CylinderShape JPH_CylinderShape;
  96. typedef struct JPH_TaperedCylinderShape JPH_TaperedCylinderShape;
  97. typedef struct JPH_TriangleShape JPH_TriangleShape;
  98. typedef struct JPH_TaperedCapsuleShape JPH_TaperedCapsuleShape;
  99. typedef struct JPH_ConvexHullShape JPH_ConvexHullShape;
  100. typedef struct JPH_CompoundShape JPH_CompoundShape;
  101. typedef struct JPH_StaticCompoundShape JPH_StaticCompoundShape;
  102. typedef struct JPH_MutableCompoundShape JPH_MutableCompoundShape;
  103. typedef struct JPH_MeshShape JPH_MeshShape;
  104. typedef struct JPH_HeightFieldShape JPH_HeightFieldShape;
  105. typedef struct JPH_DecoratedShape JPH_DecoratedShape;
  106. typedef struct JPH_RotatedTranslatedShape JPH_RotatedTranslatedShape;
  107. typedef struct JPH_ScaledShape JPH_ScaledShape;
  108. typedef struct JPH_OffsetCenterOfMassShape JPH_OffsetCenterOfMassShape;
  109. typedef struct JPH_EmptyShape JPH_EmptyShape;
  110. typedef struct JPH_BodyCreationSettings JPH_BodyCreationSettings;
  111. typedef struct JPH_SoftBodyCreationSettings JPH_SoftBodyCreationSettings;
  112. typedef struct JPH_BodyInterface JPH_BodyInterface;
  113. typedef struct JPH_BodyLockInterface JPH_BodyLockInterface;
  114. typedef struct JPH_BroadPhaseQuery JPH_BroadPhaseQuery;
  115. typedef struct JPH_NarrowPhaseQuery JPH_NarrowPhaseQuery;
  116. typedef struct JPH_MotionProperties JPH_MotionProperties;
  117. typedef struct JPH_MassProperties JPH_MassProperties;
  118. typedef struct JPH_Body JPH_Body;
  119. typedef struct JPH_CollideShapeResult JPH_CollideShapeResult;
  120. typedef struct JPH_ContactListener JPH_ContactListener;
  121. typedef struct JPH_ContactManifold JPH_ContactManifold;
  122. typedef struct JPH_GroupFilter JPH_GroupFilter;
  123. typedef struct JPH_GroupFilterTable JPH_GroupFilterTable; /* Inherits JPH_GroupFilter */
  124. /* Enums */
  125. typedef enum JPH_PhysicsUpdateError {
  126. JPH_PhysicsUpdateError_None = 0,
  127. JPH_PhysicsUpdateError_ManifoldCacheFull = 1 << 0,
  128. JPH_PhysicsUpdateError_BodyPairCacheFull = 1 << 1,
  129. JPH_PhysicsUpdateError_ContactConstraintsFull = 1 << 2,
  130. _JPH_PhysicsUpdateError_Count,
  131. _JPH_PhysicsUpdateError_Force32 = 0x7fffffff
  132. } JPH_PhysicsUpdateError;
  133. typedef enum JPH_BodyType {
  134. JPH_BodyType_Rigid = 0,
  135. JPH_BodyType_Soft = 1,
  136. _JPH_BodyType_Count,
  137. _JPH_BodyType_Force32 = 0x7fffffff
  138. } JPH_BodyType;
  139. typedef enum JPH_MotionType {
  140. JPH_MotionType_Static = 0,
  141. JPH_MotionType_Kinematic = 1,
  142. JPH_MotionType_Dynamic = 2,
  143. _JPH_MotionType_Count,
  144. _JPH_MotionType_Force32 = 0x7fffffff
  145. } JPH_MotionType;
  146. typedef enum JPH_Activation
  147. {
  148. JPH_Activation_Activate = 0,
  149. JPH_Activation_DontActivate = 1,
  150. _JPH_Activation_Count,
  151. _JPH_Activation_Force32 = 0x7fffffff
  152. } JPH_Activation;
  153. typedef enum JPH_ValidateResult {
  154. JPH_ValidateResult_AcceptAllContactsForThisBodyPair = 0,
  155. JPH_ValidateResult_AcceptContact = 1,
  156. JPH_ValidateResult_RejectContact = 2,
  157. JPH_ValidateResult_RejectAllContactsForThisBodyPair = 3,
  158. _JPH_ValidateResult_Count,
  159. _JPH_ValidateResult_Force32 = 0x7fffffff
  160. } JPH_ValidateResult;
  161. typedef enum JPH_ShapeType {
  162. JPH_ShapeType_Convex = 0,
  163. JPH_ShapeType_Compound = 1,
  164. JPH_ShapeType_Decorated = 2,
  165. JPH_ShapeType_Mesh = 3,
  166. JPH_ShapeType_HeightField = 4,
  167. JPH_ShapeType_SoftBody = 5,
  168. JPH_ShapeType_User1 = 6,
  169. JPH_ShapeType_User2 = 7,
  170. JPH_ShapeType_User3 = 8,
  171. JPH_ShapeType_User4 = 9,
  172. _JPH_ShapeType_Count,
  173. _JPH_ShapeType_Force32 = 0x7fffffff
  174. } JPH_ShapeType;
  175. typedef enum JPH_ShapeSubType {
  176. JPH_ShapeSubType_Sphere = 0,
  177. JPH_ShapeSubType_Box = 1,
  178. JPH_ShapeSubType_Triangle = 2,
  179. JPH_ShapeSubType_Capsule = 3,
  180. JPH_ShapeSubType_TaperedCapsule = 4,
  181. JPH_ShapeSubType_Cylinder = 5,
  182. JPH_ShapeSubType_ConvexHull = 6,
  183. JPH_ShapeSubType_StaticCompound = 7,
  184. JPH_ShapeSubType_MutableCompound = 8,
  185. JPH_ShapeSubType_RotatedTranslated = 9,
  186. JPH_ShapeSubType_Scaled = 10,
  187. JPH_ShapeSubType_OffsetCenterOfMass = 11,
  188. JPH_ShapeSubType_Mesh = 12,
  189. JPH_ShapeSubType_HeightField = 13,
  190. JPH_ShapeSubType_SoftBody = 14,
  191. _JPH_ShapeSubType_Count,
  192. _JPH_ShapeSubType_Force32 = 0x7fffffff
  193. } JPH_ShapeSubType;
  194. typedef enum JPH_ConstraintType {
  195. JPH_ConstraintType_Constraint = 0,
  196. JPH_ConstraintType_TwoBodyConstraint = 1,
  197. _JPH_ConstraintType_Count,
  198. _JPH_ConstraintType_Force32 = 0x7fffffff
  199. } JPH_ConstraintType;
  200. typedef enum JPH_ConstraintSubType {
  201. JPH_ConstraintSubType_Fixed = 0,
  202. JPH_ConstraintSubType_Point = 1,
  203. JPH_ConstraintSubType_Hinge = 2,
  204. JPH_ConstraintSubType_Slider = 3,
  205. JPH_ConstraintSubType_Distance = 4,
  206. JPH_ConstraintSubType_Cone = 5,
  207. JPH_ConstraintSubType_SwingTwist = 6,
  208. JPH_ConstraintSubType_SixDOF = 7,
  209. JPH_ConstraintSubType_Path = 8,
  210. JPH_ConstraintSubType_Vehicle = 9,
  211. JPH_ConstraintSubType_RackAndPinion = 10,
  212. JPH_ConstraintSubType_Gear = 11,
  213. JPH_ConstraintSubType_Pulley = 12,
  214. JPH_ConstraintSubType_User1 = 13,
  215. JPH_ConstraintSubType_User2 = 14,
  216. JPH_ConstraintSubType_User3 = 15,
  217. JPH_ConstraintSubType_User4 = 16,
  218. _JPH_ConstraintSubType_Count,
  219. _JPH_ConstraintSubType_Force32 = 0x7fffffff
  220. } JPH_ConstraintSubType;
  221. typedef enum JPH_ConstraintSpace {
  222. JPH_ConstraintSpace_LocalToBodyCOM = 0,
  223. JPH_ConstraintSpace_WorldSpace = 1,
  224. _JPH_ConstraintSpace_Count,
  225. _JPH_ConstraintSpace_Force32 = 0x7fffffff
  226. } JPH_ConstraintSpace;
  227. typedef enum JPH_MotionQuality {
  228. JPH_MotionQuality_Discrete = 0,
  229. JPH_MotionQuality_LinearCast = 1,
  230. _JPH_MotionQuality_Count,
  231. _JPH_MotionQuality_Force32 = 0x7fffffff
  232. } JPH_MotionQuality;
  233. typedef enum JPH_OverrideMassProperties {
  234. JPH_OverrideMassProperties_CalculateMassAndInertia,
  235. JPH_OverrideMassProperties_CalculateInertia,
  236. JPH_OverrideMassProperties_MassAndInertiaProvided,
  237. _JPH_JPH_OverrideMassProperties_Count,
  238. _JPH_JPH_OverrideMassProperties_Force32 = 0x7FFFFFFF
  239. } JPH_OverrideMassProperties;
  240. typedef enum JPH_AllowedDOFs {
  241. JPH_AllowedDOFs_All = 0b111111,
  242. JPH_AllowedDOFs_TranslationX = 0b000001,
  243. JPH_AllowedDOFs_TranslationY = 0b000010,
  244. JPH_AllowedDOFs_TranslationZ = 0b000100,
  245. JPH_AllowedDOFs_RotationX = 0b001000,
  246. JPH_AllowedDOFs_RotationY = 0b010000,
  247. JPH_AllowedDOFs_RotationZ = 0b100000,
  248. JPH_AllowedDOFs_Plane2D = JPH_AllowedDOFs_TranslationX | JPH_AllowedDOFs_TranslationY | JPH_AllowedDOFs_RotationZ,
  249. _JPH_AllowedDOFs_Count,
  250. _JPH_AllowedDOFs_Force32 = 0x7FFFFFFF
  251. } JPH_AllowedDOFs;
  252. typedef enum JPH_GroundState {
  253. JPH_GroundState_OnGround = 0,
  254. JPH_GroundState_OnSteepGround = 1,
  255. JPH_GroundState_NotSupported = 2,
  256. JPH_GroundState_InAir = 3,
  257. _JPH_GroundState_Count,
  258. _JPH_GroundState_Force32 = 0x7FFFFFFF
  259. } JPH_GroundState;
  260. typedef enum JPH_BackFaceMode {
  261. JPH_BackFaceMode_IgnoreBackFaces,
  262. JPH_BackFaceMode_CollideWithBackFaces,
  263. _JPH_BackFaceMode_Count,
  264. _JPH_BackFaceMode_Force32 = 0x7FFFFFFF
  265. } JPH_BackFaceMode;
  266. typedef enum JPH_ActiveEdgeMode {
  267. JPH_ActiveEdgeMode_CollideOnlyWithActive,
  268. JPH_ActiveEdgeMode_CollideWithAll,
  269. _JPH_ActiveEdgeMode_Count,
  270. _JPH_ActiveEdgeMode_Force32 = 0x7FFFFFFF
  271. } JPH_ActiveEdgeMode;
  272. typedef enum JPH_CollectFacesMode {
  273. JPH_CollectFacesMode_CollectFaces,
  274. JPH_CollectFacesMode_NoFaces,
  275. _JPH_CollectFacesMode_Count,
  276. _JPH_CollectFacesMode_Force32 = 0x7FFFFFFF
  277. } JPH_CollectFacesMode;
  278. typedef enum JPH_MotorState {
  279. JPH_MotorState_Off = 0,
  280. JPH_MotorState_Velocity = 1,
  281. JPH_MotorState_Position = 2,
  282. _JPH_MotorState_Count,
  283. _JPH_MotorState_Force32 = 0x7FFFFFFF
  284. } JPH_MotorState;
  285. typedef enum JPH_CollisionCollectorType {
  286. JPH_CollisionCollectorType_AllHit = 0,
  287. JPH_CollisionCollectorType_AllHitSorted = 1,
  288. JPH_CollisionCollectorType_ClosestHit = 2,
  289. JPH_CollisionCollectorType_AnyHit = 3,
  290. _JPH_CollisionCollectorType_Count,
  291. _JPH_CollisionCollectorType_Force32 = 0x7FFFFFFF
  292. } JPH_CollisionCollectorType;
  293. typedef enum JPH_SwingType {
  294. JPH_SwingType_Cone,
  295. JPH_SwingType_Pyramid,
  296. _JPH_SwingType_Count,
  297. _JPH_SwingType_Force32 = 0x7FFFFFFF
  298. } JPH_SwingType;
  299. typedef enum JPH_SixDOFConstraintAxis {
  300. JPH_SixDOFConstraintAxis_TranslationX,
  301. JPH_SixDOFConstraintAxis_TranslationY,
  302. JPH_SixDOFConstraintAxis_TranslationZ,
  303. JPH_SixDOFConstraintAxis_RotationX,
  304. JPH_SixDOFConstraintAxis_RotationY,
  305. JPH_SixDOFConstraintAxis_RotationZ,
  306. _JPH_SixDOFConstraintAxis_Num,
  307. _JPH_SixDOFConstraintAxis_NumTranslation = JPH_SixDOFConstraintAxis_TranslationZ + 1,
  308. _JPH_SixDOFConstraintAxis_Force32 = 0x7FFFFFFF
  309. } JPH_SixDOFConstraintAxis;
  310. typedef enum JPH_SpringMode {
  311. JPH_SpringMode_FrequencyAndDamping = 0,
  312. JPH_SpringMode_StiffnessAndDamping = 1,
  313. _JPH_SpringMode_Count,
  314. _JPH_SpringMode_Force32 = 0x7FFFFFFF
  315. } JPH_SpringMode;
  316. /// Defines how to color soft body constraints
  317. typedef enum JPH_SoftBodyConstraintColor
  318. {
  319. JPH_SoftBodyConstraintColor_ConstraintType, /// Draw different types of constraints in different colors
  320. JPH_SoftBodyConstraintColor_ConstraintGroup, /// Draw constraints in the same group in the same color, non-parallel group will be red
  321. JPH_SoftBodyConstraintColor_ConstraintOrder, /// Draw constraints in the same group in the same color, non-parallel group will be red, and order within each group will be indicated with gradient
  322. _JPH_SoftBodyConstraintColor_Count,
  323. _JPH_SoftBodyConstraintColor_Force32 = 0x7FFFFFFF
  324. } JPH_SoftBodyConstraintColor;
  325. typedef enum JPH_BodyManager_ShapeColor
  326. {
  327. JPH_BodyManager_ShapeColor_InstanceColor, ///< Random color per instance
  328. JPH_BodyManager_ShapeColor_ShapeTypeColor, ///< Convex = green, scaled = yellow, compound = orange, mesh = red
  329. JPH_BodyManager_ShapeColor_MotionTypeColor, ///< Static = grey, keyframed = green, dynamic = random color per instance
  330. JPH_BodyManager_ShapeColor_SleepColor, ///< Static = grey, keyframed = green, dynamic = yellow, sleeping = red
  331. JPH_BodyManager_ShapeColor_IslandColor, ///< Static = grey, active = random color per island, sleeping = light grey
  332. JPH_BodyManager_ShapeColor_MaterialColor, ///< Color as defined by the PhysicsMaterial of the shape
  333. _JPH_BodyManager_ShapeColor_Count,
  334. _JPH_BodyManager_ShapeColor_Force32 = 0x7FFFFFFF
  335. } JPH_BodyManager_ShapeColor;
  336. typedef enum JPH_DebugRenderer_CastShadow {
  337. JPH_DebugRenderer_CastShadow_On = 0, ///< This shape should cast a shadow
  338. JPH_DebugRenderer_CastShadow_Off = 1, ///< This shape should not cast a shadow
  339. _JPH_DebugRenderer_CastShadow_Count,
  340. _JPH_DebugRenderer_CastShadow_Force32 = 0x7FFFFFFF
  341. } JPH_DebugRenderer_CastShadow;
  342. typedef enum JPH_DebugRenderer_DrawMode {
  343. JPH_DebugRenderer_DrawMode_Solid = 0, ///< Draw as a solid shape
  344. JPH_DebugRenderer_DrawMode_Wireframe = 1, ///< Draw as wireframe
  345. _JPH_DebugRenderer_DrawMode_Count,
  346. _JPH_DebugRenderer_DrawMode_Force32 = 0x7FFFFFFF
  347. } JPH_DebugRenderer_DrawMode;
  348. typedef enum JPH_Mesh_Shape_BuildQuality {
  349. JPH_Mesh_Shape_BuildQuality_FavorRuntimePerformance = 0,
  350. JPH_Mesh_Shape_BuildQuality_FavorBuildSpeed = 1,
  351. _JPH_Mesh_Shape_BuildQuality_Count,
  352. _JPH_Mesh_Shape_BuildQuality_Force32 = 0x7FFFFFFF
  353. } JPH_Mesh_Shape_BuildQuality;
  354. typedef enum JPH_TransmissionMode {
  355. JPH_TransmissionMode_Auto = 0,
  356. JPH_TransmissionMode_Manual = 1,
  357. _JPH_TransmissionMode_Count,
  358. _JPH_TransmissionMode_Force32 = 0x7FFFFFFF
  359. } JPH_TransmissionMode;
  360. typedef struct JPH_Vec3 {
  361. float x;
  362. float y;
  363. float z;
  364. } JPH_Vec3;
  365. typedef struct JPH_Vec4 {
  366. float x;
  367. float y;
  368. float z;
  369. float w;
  370. } JPH_Vec4;
  371. typedef struct JPH_Quat {
  372. float x;
  373. float y;
  374. float z;
  375. float w;
  376. } JPH_Quat;
  377. typedef struct JPH_Plane {
  378. JPH_Vec3 normal;
  379. float distance;
  380. } JPH_Plane;
  381. typedef struct JPH_Mat4 {
  382. JPH_Vec4 column[4];
  383. } JPH_Mat4;
  384. typedef struct JPH_Point {
  385. float x;
  386. float y;
  387. } JPH_Point;
  388. #if defined(JPH_DOUBLE_PRECISION)
  389. typedef struct JPH_RVec3 {
  390. double x;
  391. double y;
  392. double z;
  393. } JPH_RVec3;
  394. typedef struct JPH_RMat4 {
  395. JPH_Vec4 column[3];
  396. JPH_RVec3 column3;
  397. } JPH_RMat4;
  398. #else
  399. typedef JPH_Vec3 JPH_RVec3;
  400. typedef JPH_Mat4 JPH_RMat4;
  401. #endif
  402. typedef uint32_t JPH_Color;
  403. typedef struct JPH_AABox {
  404. JPH_Vec3 min;
  405. JPH_Vec3 max;
  406. } JPH_AABox;
  407. typedef struct JPH_Triangle {
  408. JPH_Vec3 v1;
  409. JPH_Vec3 v2;
  410. JPH_Vec3 v3;
  411. uint32_t materialIndex;
  412. } JPH_Triangle;
  413. typedef struct JPH_IndexedTriangleNoMaterial {
  414. uint32_t i1;
  415. uint32_t i2;
  416. uint32_t i3;
  417. } JPH_IndexedTriangleNoMaterial;
  418. typedef struct JPH_IndexedTriangle {
  419. uint32_t i1;
  420. uint32_t i2;
  421. uint32_t i3;
  422. uint32_t materialIndex;
  423. uint32_t userData;
  424. } JPH_IndexedTriangle;
  425. typedef struct JPH_MassProperties {
  426. float mass;
  427. JPH_Mat4 inertia;
  428. } JPH_MassProperties;
  429. typedef struct JPH_ContactSettings {
  430. float combinedFriction;
  431. float combinedRestitution;
  432. float invMassScale1;
  433. float invInertiaScale1;
  434. float invMassScale2;
  435. float invInertiaScale2;
  436. JPH_Bool isSensor;
  437. JPH_Vec3 relativeLinearSurfaceVelocity;
  438. JPH_Vec3 relativeAngularSurfaceVelocity;
  439. } JPH_ContactSettings;
  440. typedef struct JPH_CollideSettingsBase {
  441. /// How active edges (edges that a moving object should bump into) are handled
  442. JPH_ActiveEdgeMode activeEdgeMode/* = JPH_ActiveEdgeMode_CollideOnlyWithActive*/;
  443. /// If colliding faces should be collected or only the collision point
  444. JPH_CollectFacesMode collectFacesMode/* = JPH_CollectFacesMode_NoFaces*/;
  445. /// If objects are closer than this distance, they are considered to be colliding (used for GJK) (unit: meter)
  446. float collisionTolerance/* = JPH_DEFAULT_COLLISION_TOLERANCE*/;
  447. /// A factor that determines the accuracy of the penetration depth calculation. If the change of the squared distance is less than tolerance * current_penetration_depth^2 the algorithm will terminate. (unit: dimensionless)
  448. float penetrationTolerance/* = JPH_DEFAULT_PENETRATION_TOLERANCE*/;
  449. /// When mActiveEdgeMode is CollideOnlyWithActive a movement direction can be provided. When hitting an inactive edge, the system will select the triangle normal as penetration depth only if it impedes the movement less than with the calculated penetration depth.
  450. JPH_Vec3 activeEdgeMovementDirection/* = Vec3::sZero()*/;
  451. } JPH_CollideSettingsBase;
  452. /* CollideShapeSettings */
  453. typedef struct JPH_CollideShapeSettings {
  454. JPH_CollideSettingsBase base; /* Inherits JPH_CollideSettingsBase */
  455. /// When > 0 contacts in the vicinity of the query shape can be found. All nearest contacts that are not further away than this distance will be found (unit: meter)
  456. float maxSeparationDistance/* = 0.0f*/;
  457. /// How backfacing triangles should be treated
  458. JPH_BackFaceMode backFaceMode/* = JPH_BackFaceMode_IgnoreBackFaces*/;
  459. } JPH_CollideShapeSettings;
  460. /* ShapeCastSettings */
  461. typedef struct JPH_ShapeCastSettings {
  462. JPH_CollideSettingsBase base; /* Inherits JPH_CollideSettingsBase */
  463. /// How backfacing triangles should be treated (should we report moving from back to front for triangle based shapes, e.g. for MeshShape/HeightFieldShape?)
  464. JPH_BackFaceMode backFaceModeTriangles/* = JPH_BackFaceMode_IgnoreBackFaces*/;
  465. /// How backfacing convex objects should be treated (should we report starting inside an object and moving out?)
  466. JPH_BackFaceMode backFaceModeConvex/* = JPH_BackFaceMode_IgnoreBackFaces*/;
  467. /// Indicates if we want to shrink the shape by the convex radius and then expand it again. This speeds up collision detection and gives a more accurate normal at the cost of a more 'rounded' shape.
  468. bool useShrunkenShapeAndConvexRadius/* = false*/;
  469. /// When true, and the shape is intersecting at the beginning of the cast (fraction = 0) then this will calculate the deepest penetration point (costing additional CPU time)
  470. bool returnDeepestPoint/* = false*/;
  471. } JPH_ShapeCastSettings;
  472. typedef struct JPH_RayCastSettings {
  473. /// How backfacing triangles should be treated (should we report back facing hits for triangle based shapes, e.g. MeshShape/HeightFieldShape?)
  474. JPH_BackFaceMode backFaceModeTriangles/* = JPH_BackFaceMode_IgnoreBackFaces*/;
  475. /// How backfacing convex objects should be treated (should we report back facing hits for convex shapes?)
  476. JPH_BackFaceMode backFaceModeConvex/* = JPH_BackFaceMode_IgnoreBackFaces*/;
  477. /// If convex shapes should be treated as solid. When true, a ray starting inside a convex shape will generate a hit at fraction 0.
  478. bool treatConvexAsSolid/* = true*/;
  479. } JPH_RayCastSettings;
  480. typedef struct JPH_SpringSettings {
  481. JPH_SpringMode mode;
  482. float frequencyOrStiffness;
  483. float damping;
  484. } JPH_SpringSettings;
  485. typedef struct JPH_MotorSettings {
  486. JPH_SpringSettings springSettings;
  487. float minForceLimit;
  488. float maxForceLimit;
  489. float minTorqueLimit;
  490. float maxTorqueLimit;
  491. } JPH_MotorSettings;
  492. typedef struct JPH_SubShapeIDPair {
  493. JPH_BodyID Body1ID;
  494. JPH_SubShapeID subShapeID1;
  495. JPH_BodyID Body2ID;
  496. JPH_SubShapeID subShapeID2;
  497. } JPH_SubShapeIDPair;
  498. typedef struct JPH_BroadPhaseCastResult {
  499. JPH_BodyID bodyID;
  500. float fraction;
  501. } JPH_BroadPhaseCastResult;
  502. typedef struct JPH_RayCastResult {
  503. JPH_BodyID bodyID;
  504. float fraction;
  505. JPH_SubShapeID subShapeID2;
  506. } JPH_RayCastResult;
  507. typedef struct JPH_CollidePointResult {
  508. JPH_BodyID bodyID;
  509. JPH_SubShapeID subShapeID2;
  510. } JPH_CollidePointResult;
  511. typedef struct JPH_CollideShapeResult {
  512. JPH_Vec3 contactPointOn1;
  513. JPH_Vec3 contactPointOn2;
  514. JPH_Vec3 penetrationAxis;
  515. float penetrationDepth;
  516. JPH_SubShapeID subShapeID1;
  517. JPH_SubShapeID subShapeID2;
  518. JPH_BodyID bodyID2;
  519. uint32_t shape1FaceCount;
  520. JPH_Vec3* shape1Faces;
  521. uint32_t shape2FaceCount;
  522. JPH_Vec3* shape2Faces;
  523. } JPH_CollideShapeResult;
  524. typedef struct JPH_ShapeCastResult {
  525. JPH_Vec3 contactPointOn1;
  526. JPH_Vec3 contactPointOn2;
  527. JPH_Vec3 penetrationAxis;
  528. float penetrationDepth;
  529. JPH_SubShapeID subShapeID1;
  530. JPH_SubShapeID subShapeID2;
  531. JPH_BodyID bodyID2;
  532. float fraction;
  533. bool isBackFaceHit;
  534. } JPH_ShapeCastResult;
  535. typedef struct JPH_DrawSettings {
  536. bool drawGetSupportFunction; ///< Draw the GetSupport() function, used for convex collision detection
  537. bool drawSupportDirection; ///< When drawing the support function, also draw which direction mapped to a specific support point
  538. bool drawGetSupportingFace; ///< Draw the faces that were found colliding during collision detection
  539. bool drawShape; ///< Draw the shapes of all bodies
  540. bool drawShapeWireframe; ///< When mDrawShape is true and this is true, the shapes will be drawn in wireframe instead of solid.
  541. JPH_BodyManager_ShapeColor drawShapeColor; ///< Coloring scheme to use for shapes
  542. bool drawBoundingBox; ///< Draw a bounding box per body
  543. bool drawCenterOfMassTransform; ///< Draw the center of mass for each body
  544. bool drawWorldTransform; ///< Draw the world transform (which may differ from its center of mass) of each body
  545. bool drawVelocity; ///< Draw the velocity vector for each body
  546. bool drawMassAndInertia; ///< Draw the mass and inertia (as the box equivalent) for each body
  547. bool drawSleepStats; ///< Draw stats regarding the sleeping algorithm of each body
  548. bool drawSoftBodyVertices; ///< Draw the vertices of soft bodies
  549. bool drawSoftBodyVertexVelocities; ///< Draw the velocities of the vertices of soft bodies
  550. bool drawSoftBodyEdgeConstraints; ///< Draw the edge constraints of soft bodies
  551. bool drawSoftBodyBendConstraints; ///< Draw the bend constraints of soft bodies
  552. bool drawSoftBodyVolumeConstraints; ///< Draw the volume constraints of soft bodies
  553. bool drawSoftBodySkinConstraints; ///< Draw the skin constraints of soft bodies
  554. bool drawSoftBodyLRAConstraints; ///< Draw the LRA constraints of soft bodies
  555. bool drawSoftBodyPredictedBounds; ///< Draw the predicted bounds of soft bodies
  556. JPH_SoftBodyConstraintColor drawSoftBodyConstraintColor; ///< Coloring scheme to use for soft body constraints
  557. } JPH_DrawSettings;
  558. typedef struct JPH_SupportingFace {
  559. uint32_t count;
  560. JPH_Vec3 vertices[32];
  561. } JPH_SupportingFace;
  562. typedef struct JPH_CollisionGroup {
  563. const JPH_GroupFilter* groupFilter;
  564. JPH_CollisionGroupID groupID;
  565. JPH_CollisionSubGroupID subGroupID;
  566. } JPH_CollisionGroup;
  567. typedef void JPH_CastRayResultCallback(void* context, const JPH_RayCastResult* result);
  568. typedef void JPH_RayCastBodyResultCallback(void* context, const JPH_BroadPhaseCastResult* result);
  569. typedef void JPH_CollideShapeBodyResultCallback(void* context, const JPH_BodyID result);
  570. typedef void JPH_CollidePointResultCallback(void* context, const JPH_CollidePointResult* result);
  571. typedef void JPH_CollideShapeResultCallback(void* context, const JPH_CollideShapeResult* result);
  572. typedef void JPH_CastShapeResultCallback(void* context, const JPH_ShapeCastResult* result);
  573. typedef float JPH_CastRayCollectorCallback(void* context, const JPH_RayCastResult* result);
  574. typedef float JPH_RayCastBodyCollectorCallback(void* context, const JPH_BroadPhaseCastResult* result);
  575. typedef float JPH_CollideShapeBodyCollectorCallback(void* context, const JPH_BodyID result);
  576. typedef float JPH_CollidePointCollectorCallback(void* context, const JPH_CollidePointResult* result);
  577. typedef float JPH_CollideShapeCollectorCallback(void* context, const JPH_CollideShapeResult* result);
  578. typedef float JPH_CastShapeCollectorCallback(void* context, const JPH_ShapeCastResult* result);
  579. typedef struct JPH_CollisionEstimationResultImpulse {
  580. float contactImpulse;
  581. float frictionImpulse1;
  582. float frictionImpulse2;
  583. } JPH_CollisionEstimationResultImpulse;
  584. typedef struct JPH_CollisionEstimationResult {
  585. JPH_Vec3 linearVelocity1;
  586. JPH_Vec3 angularVelocity1;
  587. JPH_Vec3 linearVelocity2;
  588. JPH_Vec3 angularVelocity2;
  589. JPH_Vec3 tangent1;
  590. JPH_Vec3 tangent2;
  591. uint32_t impulseCount;
  592. JPH_CollisionEstimationResultImpulse* impulses;
  593. } JPH_CollisionEstimationResult;
  594. typedef struct JPH_BodyActivationListener JPH_BodyActivationListener;
  595. typedef struct JPH_BodyDrawFilter JPH_BodyDrawFilter;
  596. typedef struct JPH_SharedMutex JPH_SharedMutex;
  597. typedef struct JPH_DebugRenderer JPH_DebugRenderer;
  598. /* Constraint */
  599. typedef struct JPH_Constraint JPH_Constraint;
  600. typedef struct JPH_TwoBodyConstraint JPH_TwoBodyConstraint;
  601. typedef struct JPH_FixedConstraint JPH_FixedConstraint;
  602. typedef struct JPH_DistanceConstraint JPH_DistanceConstraint;
  603. typedef struct JPH_PointConstraint JPH_PointConstraint;
  604. typedef struct JPH_HingeConstraint JPH_HingeConstraint;
  605. typedef struct JPH_SliderConstraint JPH_SliderConstraint;
  606. typedef struct JPH_ConeConstraint JPH_ConeConstraint;
  607. typedef struct JPH_SwingTwistConstraint JPH_SwingTwistConstraint;
  608. typedef struct JPH_SixDOFConstraint JPH_SixDOFConstraint;
  609. typedef struct JPH_GearConstraint JPH_GearConstraint;
  610. /* Character, CharacterVirtual */
  611. typedef struct JPH_CharacterBase JPH_CharacterBase;
  612. typedef struct JPH_Character JPH_Character; /* Inherits JPH_CharacterBase */
  613. typedef struct JPH_CharacterVirtual JPH_CharacterVirtual; /* Inherits JPH_CharacterBase */
  614. typedef struct JPH_CharacterContactListener JPH_CharacterContactListener;
  615. typedef struct JPH_CharacterVsCharacterCollision JPH_CharacterVsCharacterCollision;
  616. /* Skeleton/Ragdoll */
  617. typedef struct JPH_Skeleton JPH_Skeleton;
  618. typedef struct JPH_SkeletonPose JPH_SkeletonPose;
  619. typedef struct JPH_SkeletalAnimation JPH_SkeletalAnimation;
  620. typedef struct JPH_SkeletonMapper JPH_SkeletonMapper;
  621. typedef struct JPH_RagdollSettings JPH_RagdollSettings;
  622. typedef struct JPH_Ragdoll JPH_Ragdoll;
  623. typedef struct JPH_ConstraintSettings {
  624. bool enabled;
  625. uint32_t constraintPriority;
  626. uint32_t numVelocityStepsOverride;
  627. uint32_t numPositionStepsOverride;
  628. float drawConstraintSize;
  629. uint64_t userData;
  630. } JPH_ConstraintSettings;
  631. typedef struct JPH_FixedConstraintSettings {
  632. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  633. JPH_ConstraintSpace space;
  634. bool autoDetectPoint;
  635. JPH_RVec3 point1;
  636. JPH_Vec3 axisX1;
  637. JPH_Vec3 axisY1;
  638. JPH_RVec3 point2;
  639. JPH_Vec3 axisX2;
  640. JPH_Vec3 axisY2;
  641. } JPH_FixedConstraintSettings;
  642. typedef struct JPH_DistanceConstraintSettings {
  643. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  644. JPH_ConstraintSpace space;
  645. JPH_RVec3 point1;
  646. JPH_RVec3 point2;
  647. float minDistance;
  648. float maxDistance;
  649. JPH_SpringSettings limitsSpringSettings;
  650. } JPH_DistanceConstraintSettings;
  651. typedef struct JPH_PointConstraintSettings {
  652. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  653. JPH_ConstraintSpace space;
  654. JPH_RVec3 point1;
  655. JPH_RVec3 point2;
  656. } JPH_PointConstraintSettings;
  657. typedef struct JPH_HingeConstraintSettings {
  658. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  659. JPH_ConstraintSpace space;
  660. JPH_RVec3 point1;
  661. JPH_Vec3 hingeAxis1;
  662. JPH_Vec3 normalAxis1;
  663. JPH_RVec3 point2;
  664. JPH_Vec3 hingeAxis2;
  665. JPH_Vec3 normalAxis2;
  666. float limitsMin;
  667. float limitsMax;
  668. JPH_SpringSettings limitsSpringSettings;
  669. float maxFrictionTorque;
  670. JPH_MotorSettings motorSettings;
  671. } JPH_HingeConstraintSettings;
  672. typedef struct JPH_SliderConstraintSettings {
  673. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  674. JPH_ConstraintSpace space;
  675. bool autoDetectPoint;
  676. JPH_RVec3 point1;
  677. JPH_Vec3 sliderAxis1;
  678. JPH_Vec3 normalAxis1;
  679. JPH_RVec3 point2;
  680. JPH_Vec3 sliderAxis2;
  681. JPH_Vec3 normalAxis2;
  682. float limitsMin;
  683. float limitsMax;
  684. JPH_SpringSettings limitsSpringSettings;
  685. float maxFrictionForce;
  686. JPH_MotorSettings motorSettings;
  687. } JPH_SliderConstraintSettings;
  688. typedef struct JPH_ConeConstraintSettings {
  689. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  690. JPH_ConstraintSpace space;
  691. JPH_RVec3 point1;
  692. JPH_Vec3 twistAxis1;
  693. JPH_RVec3 point2;
  694. JPH_Vec3 twistAxis2;
  695. float halfConeAngle;
  696. } JPH_ConeConstraintSettings;
  697. typedef struct JPH_SwingTwistConstraintSettings {
  698. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  699. JPH_ConstraintSpace space;
  700. JPH_RVec3 position1;
  701. JPH_Vec3 twistAxis1;
  702. JPH_Vec3 planeAxis1;
  703. JPH_RVec3 position2;
  704. JPH_Vec3 twistAxis2;
  705. JPH_Vec3 planeAxis2;
  706. JPH_SwingType swingType;
  707. float normalHalfConeAngle;
  708. float planeHalfConeAngle;
  709. float twistMinAngle;
  710. float twistMaxAngle;
  711. float maxFrictionTorque;
  712. JPH_MotorSettings swingMotorSettings;
  713. JPH_MotorSettings twistMotorSettings;
  714. } JPH_SwingTwistConstraintSettings;
  715. typedef struct JPH_SixDOFConstraintSettings {
  716. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  717. JPH_ConstraintSpace space;
  718. JPH_RVec3 position1;
  719. JPH_Vec3 axisX1;
  720. JPH_Vec3 axisY1;
  721. JPH_RVec3 position2;
  722. JPH_Vec3 axisX2;
  723. JPH_Vec3 axisY2;
  724. float maxFriction[_JPH_SixDOFConstraintAxis_Num];
  725. JPH_SwingType swingType;
  726. float limitMin[_JPH_SixDOFConstraintAxis_Num];
  727. float limitMax[_JPH_SixDOFConstraintAxis_Num];
  728. JPH_SpringSettings limitsSpringSettings[_JPH_SixDOFConstraintAxis_NumTranslation];
  729. JPH_MotorSettings motorSettings[_JPH_SixDOFConstraintAxis_Num];
  730. } JPH_SixDOFConstraintSettings;
  731. typedef struct JPH_GearConstraintSettings {
  732. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  733. JPH_ConstraintSpace space;
  734. JPH_Vec3 hingeAxis1;
  735. JPH_Vec3 hingeAxis2;
  736. float ratio;
  737. } JPH_GearConstraintSettings;
  738. typedef struct JPH_BodyLockRead {
  739. const JPH_BodyLockInterface* lockInterface;
  740. JPH_SharedMutex* mutex;
  741. const JPH_Body* body;
  742. } JPH_BodyLockRead;
  743. typedef struct JPH_BodyLockWrite {
  744. const JPH_BodyLockInterface* lockInterface;
  745. JPH_SharedMutex* mutex;
  746. JPH_Body* body;
  747. } JPH_BodyLockWrite;
  748. typedef struct JPH_BodyLockMultiRead JPH_BodyLockMultiRead;
  749. typedef struct JPH_BodyLockMultiWrite JPH_BodyLockMultiWrite;
  750. typedef struct JPH_ExtendedUpdateSettings {
  751. JPH_Vec3 stickToFloorStepDown;
  752. JPH_Vec3 walkStairsStepUp;
  753. float walkStairsMinStepForward;
  754. float walkStairsStepForwardTest;
  755. float walkStairsCosAngleForwardContact;
  756. JPH_Vec3 walkStairsStepDownExtra;
  757. } JPH_ExtendedUpdateSettings;
  758. typedef struct JPH_CharacterBaseSettings {
  759. JPH_Vec3 up;
  760. JPH_Plane supportingVolume;
  761. float maxSlopeAngle;
  762. bool enhancedInternalEdgeRemoval;
  763. const JPH_Shape* shape;
  764. } JPH_CharacterBaseSettings;
  765. /* Character */
  766. typedef struct JPH_CharacterSettings {
  767. JPH_CharacterBaseSettings base; /* Inherits JPH_CharacterBaseSettings */
  768. JPH_ObjectLayer layer;
  769. float mass;
  770. float friction;
  771. float gravityFactor;
  772. JPH_AllowedDOFs allowedDOFs;
  773. } JPH_CharacterSettings;
  774. /* CharacterVirtual */
  775. typedef struct JPH_CharacterVirtualSettings {
  776. JPH_CharacterBaseSettings base; /* Inherits JPH_CharacterBaseSettings */
  777. JPH_CharacterID ID;
  778. float mass;
  779. float maxStrength;
  780. JPH_Vec3 shapeOffset;
  781. JPH_BackFaceMode backFaceMode;
  782. float predictiveContactDistance;
  783. uint32_t maxCollisionIterations;
  784. uint32_t maxConstraintIterations;
  785. float minTimeRemaining;
  786. float collisionTolerance;
  787. float characterPadding;
  788. uint32_t maxNumHits;
  789. float hitReductionCosMaxAngle;
  790. float penetrationRecoverySpeed;
  791. const JPH_Shape* innerBodyShape;
  792. JPH_BodyID innerBodyIDOverride;
  793. JPH_ObjectLayer innerBodyLayer;
  794. } JPH_CharacterVirtualSettings;
  795. typedef struct JPH_CharacterContactSettings {
  796. bool canPushCharacter;
  797. bool canReceiveImpulses;
  798. } JPH_CharacterContactSettings;
  799. typedef struct JPH_CharacterVirtualContact {
  800. uint64_t hash;
  801. JPH_BodyID bodyB;
  802. JPH_CharacterID characterIDB;
  803. JPH_SubShapeID subShapeIDB;
  804. JPH_RVec3 position;
  805. JPH_Vec3 linearVelocity;
  806. JPH_Vec3 contactNormal;
  807. JPH_Vec3 surfaceNormal;
  808. float distance;
  809. float fraction;
  810. JPH_MotionType motionTypeB;
  811. bool isSensorB;
  812. const JPH_CharacterVirtual* characterB;
  813. uint64_t userData;
  814. const JPH_PhysicsMaterial* material;
  815. bool hadCollision;
  816. bool wasDiscarded;
  817. bool canPushCharacter;
  818. } JPH_CharacterVirtualContact;
  819. typedef void(JPH_API_CALL* JPH_TraceFunc)(const char* message);
  820. typedef bool(JPH_API_CALL* JPH_AssertFailureFunc)(const char* expression, const char* message, const char* file, uint32_t line);
  821. typedef void JPH_JobFunction(void* arg);
  822. typedef void JPH_QueueJobCallback(void* context, JPH_JobFunction* job, void* arg);
  823. typedef void JPH_QueueJobsCallback(void* context, JPH_JobFunction* job, void** args, uint32_t count);
  824. typedef struct JobSystemThreadPoolConfig {
  825. uint32_t maxJobs;
  826. uint32_t maxBarriers;
  827. int32_t numThreads;
  828. } JobSystemThreadPoolConfig;
  829. typedef struct JPH_JobSystemConfig {
  830. void* context;
  831. JPH_QueueJobCallback* queueJob;
  832. JPH_QueueJobsCallback* queueJobs;
  833. uint32_t maxConcurrency;
  834. uint32_t maxBarriers;
  835. } JPH_JobSystemConfig;
  836. typedef struct JPH_JobSystem JPH_JobSystem;
  837. /* Calculate max tire impulses by combining friction, slip, and suspension impulse. Note that the actual applied impulse may be lower (e.g. when the vehicle is stationary on a horizontal surface the actual impulse applied will be 0) */
  838. typedef void (JPH_API_CALL* JPH_TireMaxImpulseCallback)(
  839. void* userData,
  840. uint32_t wheelIndex,
  841. float* outLongitudinalImpulse,
  842. float* outLateralImpulse,
  843. float suspensionImpulse,
  844. float longitudinalFriction,
  845. float lateralFriction,
  846. float longitudinalSlip,
  847. float lateralSlip,
  848. float deltaTime);
  849. JPH_CAPI JPH_JobSystem* JPH_JobSystemThreadPool_Create(const JobSystemThreadPoolConfig* config);
  850. JPH_CAPI JPH_JobSystem* JPH_JobSystemCallback_Create(const JPH_JobSystemConfig* config);
  851. JPH_CAPI void JPH_JobSystem_Destroy(JPH_JobSystem* jobSystem);
  852. JPH_CAPI bool JPH_Init(void);
  853. JPH_CAPI void JPH_Shutdown(void);
  854. JPH_CAPI void JPH_SetTraceHandler(JPH_TraceFunc handler);
  855. JPH_CAPI void JPH_SetAssertFailureHandler(JPH_AssertFailureFunc handler);
  856. /* Structs free members */
  857. JPH_CAPI void JPH_CollideShapeResult_FreeMembers(JPH_CollideShapeResult* result);
  858. JPH_CAPI void JPH_CollisionEstimationResult_FreeMembers(JPH_CollisionEstimationResult* result);
  859. /* JPH_BroadPhaseLayerInterface */
  860. JPH_CAPI JPH_BroadPhaseLayerInterface* JPH_BroadPhaseLayerInterfaceMask_Create(uint32_t numBroadPhaseLayers);
  861. JPH_CAPI void JPH_BroadPhaseLayerInterfaceMask_ConfigureLayer(JPH_BroadPhaseLayerInterface* bpInterface, JPH_BroadPhaseLayer broadPhaseLayer, uint32_t groupsToInclude, uint32_t groupsToExclude);
  862. JPH_CAPI JPH_BroadPhaseLayerInterface* JPH_BroadPhaseLayerInterfaceTable_Create(uint32_t numObjectLayers, uint32_t numBroadPhaseLayers);
  863. JPH_CAPI void JPH_BroadPhaseLayerInterfaceTable_MapObjectToBroadPhaseLayer(JPH_BroadPhaseLayerInterface* bpInterface, JPH_ObjectLayer objectLayer, JPH_BroadPhaseLayer broadPhaseLayer);
  864. /* JPH_ObjectLayerPairFilter */
  865. JPH_CAPI JPH_ObjectLayerPairFilter* JPH_ObjectLayerPairFilterMask_Create(void);
  866. JPH_CAPI JPH_ObjectLayer JPH_ObjectLayerPairFilterMask_GetObjectLayer(uint32_t group, uint32_t mask);
  867. JPH_CAPI uint32_t JPH_ObjectLayerPairFilterMask_GetGroup(JPH_ObjectLayer layer);
  868. JPH_CAPI uint32_t JPH_ObjectLayerPairFilterMask_GetMask(JPH_ObjectLayer layer);
  869. JPH_CAPI JPH_ObjectLayerPairFilter* JPH_ObjectLayerPairFilterTable_Create(uint32_t numObjectLayers);
  870. JPH_CAPI void JPH_ObjectLayerPairFilterTable_DisableCollision(JPH_ObjectLayerPairFilter* objectFilter, JPH_ObjectLayer layer1, JPH_ObjectLayer layer2);
  871. JPH_CAPI void JPH_ObjectLayerPairFilterTable_EnableCollision(JPH_ObjectLayerPairFilter* objectFilter, JPH_ObjectLayer layer1, JPH_ObjectLayer layer2);
  872. JPH_CAPI bool JPH_ObjectLayerPairFilterTable_ShouldCollide(JPH_ObjectLayerPairFilter* objectFilter, JPH_ObjectLayer layer1, JPH_ObjectLayer layer2);
  873. /* JPH_ObjectVsBroadPhaseLayerFilter */
  874. JPH_CAPI JPH_ObjectVsBroadPhaseLayerFilter* JPH_ObjectVsBroadPhaseLayerFilterMask_Create(const JPH_BroadPhaseLayerInterface* broadPhaseLayerInterface);
  875. JPH_CAPI JPH_ObjectVsBroadPhaseLayerFilter* JPH_ObjectVsBroadPhaseLayerFilterTable_Create(
  876. JPH_BroadPhaseLayerInterface* broadPhaseLayerInterface, uint32_t numBroadPhaseLayers,
  877. JPH_ObjectLayerPairFilter* objectLayerPairFilter, uint32_t numObjectLayers);
  878. JPH_CAPI void JPH_DrawSettings_InitDefault(JPH_DrawSettings* settings);
  879. /* JPH_PhysicsSystem */
  880. typedef struct JPH_PhysicsSystemSettings {
  881. uint32_t maxBodies; /* 10240 */
  882. uint32_t numBodyMutexes; /* 0 */
  883. uint32_t maxBodyPairs; /* 65536 */
  884. uint32_t maxContactConstraints; /* 10240 */
  885. uint32_t _padding;
  886. JPH_BroadPhaseLayerInterface* broadPhaseLayerInterface;
  887. JPH_ObjectLayerPairFilter* objectLayerPairFilter;
  888. JPH_ObjectVsBroadPhaseLayerFilter* objectVsBroadPhaseLayerFilter;
  889. } JPH_PhysicsSystemSettings;
  890. typedef struct JPH_PhysicsSettings {
  891. int maxInFlightBodyPairs;
  892. int stepListenersBatchSize;
  893. int stepListenerBatchesPerJob;
  894. float baumgarte;
  895. float speculativeContactDistance;
  896. float penetrationSlop;
  897. float linearCastThreshold;
  898. float linearCastMaxPenetration;
  899. float manifoldTolerance;
  900. float maxPenetrationDistance;
  901. float bodyPairCacheMaxDeltaPositionSq;
  902. float bodyPairCacheCosMaxDeltaRotationDiv2;
  903. float contactNormalCosMaxDeltaRotation;
  904. float contactPointPreserveLambdaMaxDistSq;
  905. uint32_t numVelocitySteps;
  906. uint32_t numPositionSteps;
  907. float minVelocityForRestitution;
  908. float timeBeforeSleep;
  909. float pointVelocitySleepThreshold;
  910. bool deterministicSimulation;
  911. bool constraintWarmStart;
  912. bool useBodyPairContactCache;
  913. bool useManifoldReduction;
  914. bool useLargeIslandSplitter;
  915. bool allowSleeping;
  916. bool checkActiveEdges;
  917. } JPH_PhysicsSettings;
  918. JPH_CAPI JPH_PhysicsSystem* JPH_PhysicsSystem_Create(const JPH_PhysicsSystemSettings* settings);
  919. JPH_CAPI void JPH_PhysicsSystem_Destroy(JPH_PhysicsSystem* system);
  920. JPH_CAPI void JPH_PhysicsSystem_SetPhysicsSettings(JPH_PhysicsSystem* system, JPH_PhysicsSettings* settings);
  921. JPH_CAPI void JPH_PhysicsSystem_GetPhysicsSettings(JPH_PhysicsSystem* system, JPH_PhysicsSettings* result);
  922. JPH_CAPI void JPH_PhysicsSystem_OptimizeBroadPhase(JPH_PhysicsSystem* system);
  923. JPH_CAPI JPH_PhysicsUpdateError JPH_PhysicsSystem_Update(JPH_PhysicsSystem* system, float deltaTime, int collisionSteps, JPH_JobSystem* jobSystem);
  924. JPH_CAPI JPH_BodyInterface* JPH_PhysicsSystem_GetBodyInterface(JPH_PhysicsSystem* system);
  925. JPH_CAPI JPH_BodyInterface* JPH_PhysicsSystem_GetBodyInterfaceNoLock(JPH_PhysicsSystem* system);
  926. JPH_CAPI const JPH_BodyLockInterface* JPH_PhysicsSystem_GetBodyLockInterface(const JPH_PhysicsSystem* system);
  927. JPH_CAPI const JPH_BodyLockInterface* JPH_PhysicsSystem_GetBodyLockInterfaceNoLock(const JPH_PhysicsSystem* system);
  928. JPH_CAPI const JPH_BroadPhaseQuery* JPH_PhysicsSystem_GetBroadPhaseQuery(const JPH_PhysicsSystem* system);
  929. JPH_CAPI const JPH_NarrowPhaseQuery* JPH_PhysicsSystem_GetNarrowPhaseQuery(const JPH_PhysicsSystem* system);
  930. JPH_CAPI const JPH_NarrowPhaseQuery* JPH_PhysicsSystem_GetNarrowPhaseQueryNoLock(const JPH_PhysicsSystem* system);
  931. JPH_CAPI void JPH_PhysicsSystem_SetContactListener(JPH_PhysicsSystem* system, JPH_ContactListener* listener);
  932. JPH_CAPI void JPH_PhysicsSystem_SetBodyActivationListener(JPH_PhysicsSystem* system, JPH_BodyActivationListener* listener);
  933. JPH_CAPI void JPH_PhysicsSystem_SetSimShapeFilter(JPH_PhysicsSystem* system, const JPH_SimShapeFilter* filter);
  934. JPH_CAPI bool JPH_PhysicsSystem_WereBodiesInContact(const JPH_PhysicsSystem* system, JPH_BodyID body1, JPH_BodyID body2);
  935. JPH_CAPI uint32_t JPH_PhysicsSystem_GetNumBodies(const JPH_PhysicsSystem* system);
  936. JPH_CAPI uint32_t JPH_PhysicsSystem_GetNumActiveBodies(const JPH_PhysicsSystem* system, JPH_BodyType type);
  937. JPH_CAPI uint32_t JPH_PhysicsSystem_GetMaxBodies(const JPH_PhysicsSystem* system);
  938. JPH_CAPI uint32_t JPH_PhysicsSystem_GetNumConstraints(const JPH_PhysicsSystem* system);
  939. JPH_CAPI void JPH_PhysicsSystem_SetGravity(JPH_PhysicsSystem* system, const JPH_Vec3* value);
  940. JPH_CAPI void JPH_PhysicsSystem_GetGravity(JPH_PhysicsSystem* system, JPH_Vec3* result);
  941. JPH_CAPI void JPH_PhysicsSystem_AddConstraint(JPH_PhysicsSystem* system, JPH_Constraint* constraint);
  942. JPH_CAPI void JPH_PhysicsSystem_RemoveConstraint(JPH_PhysicsSystem* system, JPH_Constraint* constraint);
  943. JPH_CAPI void JPH_PhysicsSystem_AddConstraints(JPH_PhysicsSystem* system, JPH_Constraint** constraints, uint32_t count);
  944. JPH_CAPI void JPH_PhysicsSystem_RemoveConstraints(JPH_PhysicsSystem* system, JPH_Constraint** constraints, uint32_t count);
  945. JPH_CAPI void JPH_PhysicsSystem_AddStepListener(JPH_PhysicsSystem* system, JPH_PhysicsStepListener* listener);
  946. JPH_CAPI void JPH_PhysicsSystem_RemoveStepListener(JPH_PhysicsSystem* system, JPH_PhysicsStepListener* listener);
  947. JPH_CAPI void JPH_PhysicsSystem_GetBodies(const JPH_PhysicsSystem* system, JPH_BodyID* ids, uint32_t count);
  948. JPH_CAPI void JPH_PhysicsSystem_GetConstraints(const JPH_PhysicsSystem* system, const JPH_Constraint** constraints, uint32_t count);
  949. JPH_CAPI void JPH_PhysicsSystem_ActivateBodiesInAABox(JPH_PhysicsSystem* system, const JPH_AABox* box, JPH_ObjectLayer layer);
  950. JPH_CAPI void JPH_PhysicsSystem_DrawBodies(JPH_PhysicsSystem* system, const JPH_DrawSettings* settings, JPH_DebugRenderer* renderer, const JPH_BodyDrawFilter* bodyFilter /* = nullptr */);
  951. JPH_CAPI void JPH_PhysicsSystem_DrawConstraints(JPH_PhysicsSystem* system, JPH_DebugRenderer* renderer);
  952. JPH_CAPI void JPH_PhysicsSystem_DrawConstraintLimits(JPH_PhysicsSystem* system, JPH_DebugRenderer* renderer);
  953. JPH_CAPI void JPH_PhysicsSystem_DrawConstraintReferenceFrame(JPH_PhysicsSystem* system, JPH_DebugRenderer* renderer);
  954. /* PhysicsStepListener */
  955. typedef struct JPH_PhysicsStepListenerContext {
  956. float deltaTime;
  957. JPH_Bool isFirstStep;
  958. JPH_Bool isLastStep;
  959. JPH_PhysicsSystem* physicsSystem;
  960. } JPH_PhysicsStepListenerContext;
  961. typedef struct JPH_PhysicsStepListener_Procs {
  962. void(JPH_API_CALL* OnStep)(void* userData, const JPH_PhysicsStepListenerContext* context);
  963. } JPH_PhysicsStepListener_Procs;
  964. JPH_CAPI void JPH_PhysicsStepListener_SetProcs(const JPH_PhysicsStepListener_Procs* procs);
  965. JPH_CAPI JPH_PhysicsStepListener* JPH_PhysicsStepListener_Create(void* userData);
  966. JPH_CAPI void JPH_PhysicsStepListener_Destroy(JPH_PhysicsStepListener* listener);
  967. /* Math */
  968. JPH_CAPI float JPH_Math_Sin(float value);
  969. JPH_CAPI float JPH_Math_Cos(float value);
  970. JPH_CAPI void JPH_Quat_FromTo(const JPH_Vec3* from, const JPH_Vec3* to, JPH_Quat* quat);
  971. JPH_CAPI void JPH_Quat_GetAxisAngle(const JPH_Quat* quat, JPH_Vec3* outAxis, float* outAngle);
  972. JPH_CAPI void JPH_Quat_GetEulerAngles(const JPH_Quat* quat, JPH_Vec3* result);
  973. JPH_CAPI void JPH_Quat_RotateAxisX(const JPH_Quat* quat, JPH_Vec3* result);
  974. JPH_CAPI void JPH_Quat_RotateAxisY(const JPH_Quat* quat, JPH_Vec3* result);
  975. JPH_CAPI void JPH_Quat_RotateAxisZ(const JPH_Quat* quat, JPH_Vec3* result);
  976. JPH_CAPI void JPH_Quat_Inversed(const JPH_Quat* quat, JPH_Quat* result);
  977. JPH_CAPI void JPH_Quat_GetPerpendicular(const JPH_Quat* quat, JPH_Quat* result);
  978. JPH_CAPI float JPH_Quat_GetRotationAngle(const JPH_Quat* quat, const JPH_Vec3* axis);
  979. JPH_CAPI void JPH_Quat_FromEulerAngles(const JPH_Vec3* angles, JPH_Quat* result);
  980. JPH_CAPI void JPH_Quat_Add(const JPH_Quat* q1, const JPH_Quat* q2, JPH_Quat* result);
  981. JPH_CAPI void JPH_Quat_Subtract(const JPH_Quat* q1, const JPH_Quat* q2, JPH_Quat* result);
  982. JPH_CAPI void JPH_Quat_Multiply(const JPH_Quat* q1, const JPH_Quat* q2, JPH_Quat* result);
  983. JPH_CAPI void JPH_Quat_MultiplyScalar(const JPH_Quat* q, float scalar, JPH_Quat* result);
  984. JPH_CAPI void JPH_Quat_DivideScalar(const JPH_Quat* q, float scalar, JPH_Quat* result);
  985. JPH_CAPI void JPH_Quat_Dot(const JPH_Quat* q1, const JPH_Quat* q2, float* result);
  986. JPH_CAPI void JPH_Quat_Conjugated(const JPH_Quat* quat, JPH_Quat* result);
  987. JPH_CAPI void JPH_Quat_GetTwist(const JPH_Quat* quat, const JPH_Vec3* axis, JPH_Quat* result);
  988. JPH_CAPI void JPH_Quat_GetSwingTwist(const JPH_Quat* quat, JPH_Quat* outSwing, JPH_Quat* outTwist);
  989. JPH_CAPI void JPH_Quat_Lerp(const JPH_Quat* from, const JPH_Quat* to, float fraction, JPH_Quat* result);
  990. JPH_CAPI void JPH_Quat_Slerp(const JPH_Quat* from, const JPH_Quat* to, float fraction, JPH_Quat* result);
  991. JPH_CAPI void JPH_Quat_Rotate(const JPH_Quat* quat, const JPH_Vec3* vec, JPH_Vec3* result);
  992. JPH_CAPI void JPH_Quat_InverseRotate(const JPH_Quat* quat, const JPH_Vec3* vec, JPH_Vec3* result);
  993. JPH_CAPI void JPH_Vec3_AxisX(JPH_Vec3* result);
  994. JPH_CAPI void JPH_Vec3_AxisY(JPH_Vec3* result);
  995. JPH_CAPI void JPH_Vec3_AxisZ(JPH_Vec3* result);
  996. JPH_CAPI bool JPH_Vec3_IsClose(const JPH_Vec3* v1, const JPH_Vec3* v2, float maxDistSq);
  997. JPH_CAPI bool JPH_Vec3_IsNearZero(const JPH_Vec3* v, float maxDistSq);
  998. JPH_CAPI bool JPH_Vec3_IsNormalized(const JPH_Vec3* v, float tolerance);
  999. JPH_CAPI bool JPH_Vec3_IsNaN(const JPH_Vec3* v);
  1000. JPH_CAPI void JPH_Vec3_Negate(const JPH_Vec3* v, JPH_Vec3* result);
  1001. JPH_CAPI void JPH_Vec3_Normalized(const JPH_Vec3* v, JPH_Vec3* result);
  1002. JPH_CAPI void JPH_Vec3_Cross(const JPH_Vec3* v1, const JPH_Vec3* v2, JPH_Vec3* result);
  1003. JPH_CAPI void JPH_Vec3_Abs(const JPH_Vec3* v, JPH_Vec3* result);
  1004. JPH_CAPI float JPH_Vec3_Length(const JPH_Vec3* v);
  1005. JPH_CAPI float JPH_Vec3_LengthSquared(const JPH_Vec3* v);
  1006. JPH_CAPI void JPH_Vec3_DotProduct(const JPH_Vec3* v1, const JPH_Vec3* v2, float* result);
  1007. JPH_CAPI void JPH_Vec3_Normalize(const JPH_Vec3* v, JPH_Vec3* result);
  1008. JPH_CAPI void JPH_Vec3_Add(const JPH_Vec3* v1, const JPH_Vec3* v2, JPH_Vec3* result);
  1009. JPH_CAPI void JPH_Vec3_Subtract(const JPH_Vec3* v1, const JPH_Vec3* v2, JPH_Vec3* result);
  1010. JPH_CAPI void JPH_Vec3_Multiply(const JPH_Vec3* v1, const JPH_Vec3* v2, JPH_Vec3* result);
  1011. JPH_CAPI void JPH_Vec3_MultiplyScalar(const JPH_Vec3* v, float scalar, JPH_Vec3* result);
  1012. JPH_CAPI void JPH_Vec3_MultiplyMatrix(const JPH_Mat4* left, const JPH_Vec3* right, JPH_Vec3* result);
  1013. JPH_CAPI void JPH_Vec3_Divide(const JPH_Vec3* v1, const JPH_Vec3* v2, JPH_Vec3* result);
  1014. JPH_CAPI void JPH_Vec3_DivideScalar(const JPH_Vec3* v, float scalar, JPH_Vec3* result);
  1015. JPH_CAPI void JPH_Mat4_Add(const JPH_Mat4* m1, const JPH_Mat4* m2, JPH_Mat4* result);
  1016. JPH_CAPI void JPH_Mat4_Subtract(const JPH_Mat4* m1, const JPH_Mat4* m2, JPH_Mat4* result);
  1017. JPH_CAPI void JPH_Mat4_Multiply(const JPH_Mat4* m1, const JPH_Mat4* m2, JPH_Mat4* result);
  1018. JPH_CAPI void JPH_Mat4_MultiplyScalar(const JPH_Mat4* m, float scalar, JPH_Mat4* result);
  1019. JPH_CAPI void JPH_Mat4_Zero(JPH_Mat4* result);
  1020. JPH_CAPI void JPH_Mat4_Identity(JPH_Mat4* result);
  1021. JPH_CAPI void JPH_Mat4_Rotation(JPH_Mat4* result, const JPH_Quat* rotation);
  1022. JPH_CAPI void JPH_Mat4_Rotation2(JPH_Mat4* result, const JPH_Vec3* axis, float angle);
  1023. JPH_CAPI void JPH_Mat4_Translation(JPH_Mat4* result, const JPH_Vec3* translation);
  1024. JPH_CAPI void JPH_Mat4_RotationTranslation(JPH_Mat4* result, const JPH_Quat* rotation, const JPH_Vec3* translation);
  1025. JPH_CAPI void JPH_Mat4_InverseRotationTranslation(JPH_Mat4* result, const JPH_Quat* rotation, const JPH_Vec3* translation);
  1026. JPH_CAPI void JPH_Mat4_Scale(JPH_Mat4* result, const JPH_Vec3* scale);
  1027. JPH_CAPI void JPH_Mat4_Transposed(const JPH_Mat4* m, JPH_Mat4* result);
  1028. JPH_CAPI void JPH_Mat4_Inversed(const JPH_Mat4* matrix, JPH_Mat4* result);
  1029. JPH_CAPI void JPH_Mat4_GetAxisX(const JPH_Mat4* matrix, JPH_Vec3* result);
  1030. JPH_CAPI void JPH_Mat4_GetAxisY(const JPH_Mat4* matrix, JPH_Vec3* result);
  1031. JPH_CAPI void JPH_Mat4_GetAxisZ(const JPH_Mat4* matrix, JPH_Vec3* result);
  1032. JPH_CAPI void JPH_Mat4_GetTranslation(const JPH_Mat4* matrix, JPH_Vec3* result);
  1033. JPH_CAPI void JPH_Mat4_GetQuaternion(const JPH_Mat4* matrix, JPH_Quat* result);
  1034. #if defined(JPH_DOUBLE_PRECISION)
  1035. JPH_CAPI void JPH_RMat4_Zero(JPH_RMat4* result);
  1036. JPH_CAPI void JPH_RMat4_Identity(JPH_RMat4* result);
  1037. JPH_CAPI void JPH_RMat4_Rotation(JPH_RMat4* result, const JPH_Quat* rotation);
  1038. JPH_CAPI void JPH_RMat4_Translation(JPH_RMat4* result, const JPH_RVec3* translation);
  1039. JPH_CAPI void JPH_RMat4_RotationTranslation(JPH_RMat4* result, const JPH_Quat* rotation, const JPH_RVec3* translation);
  1040. JPH_CAPI void JPH_RMat4_InverseRotationTranslation(JPH_RMat4* result, const JPH_Quat* rotation, const JPH_RVec3* translation);
  1041. JPH_CAPI void JPH_RMat4_Scale(JPH_RMat4* result, const JPH_Vec3* scale);
  1042. JPH_CAPI void JPH_RMat4_Inversed(const JPH_RMat4* m, JPH_RMat4* result);
  1043. #endif /* defined(JPH_DOUBLE_PRECISION) */
  1044. /* Material */
  1045. JPH_CAPI JPH_PhysicsMaterial* JPH_PhysicsMaterial_Create(const char* name, uint32_t color);
  1046. JPH_CAPI void JPH_PhysicsMaterial_Destroy(JPH_PhysicsMaterial* material);
  1047. JPH_CAPI const char* JPH_PhysicsMaterial_GetDebugName(const JPH_PhysicsMaterial* material);
  1048. JPH_CAPI uint32_t JPH_PhysicsMaterial_GetDebugColor(const JPH_PhysicsMaterial* material);
  1049. /* GroupFilter/GroupFilterTable */
  1050. JPH_CAPI void JPH_GroupFilter_Destroy(JPH_GroupFilter* groupFilter);
  1051. JPH_CAPI bool JPH_GroupFilter_CanCollide(JPH_GroupFilter* groupFilter, const JPH_CollisionGroup* group1, const JPH_CollisionGroup* group2);
  1052. JPH_CAPI JPH_GroupFilterTable* JPH_GroupFilterTable_Create(uint32_t numSubGroups/* = 0*/);
  1053. JPH_CAPI void JPH_GroupFilterTable_DisableCollision(JPH_GroupFilterTable* table, JPH_CollisionSubGroupID subGroup1, JPH_CollisionSubGroupID subGroup2);
  1054. JPH_CAPI void JPH_GroupFilterTable_EnableCollision(JPH_GroupFilterTable* table, JPH_CollisionSubGroupID subGroup1, JPH_CollisionSubGroupID subGroup2);
  1055. JPH_CAPI bool JPH_GroupFilterTable_IsCollisionEnabled(JPH_GroupFilterTable* table, JPH_CollisionSubGroupID subGroup1, JPH_CollisionSubGroupID subGroup2);
  1056. /* ShapeSettings */
  1057. JPH_CAPI void JPH_ShapeSettings_Destroy(JPH_ShapeSettings* settings);
  1058. JPH_CAPI uint64_t JPH_ShapeSettings_GetUserData(const JPH_ShapeSettings* settings);
  1059. JPH_CAPI void JPH_ShapeSettings_SetUserData(JPH_ShapeSettings* settings, uint64_t userData);
  1060. /* Shape */
  1061. JPH_CAPI void JPH_Shape_Draw(const JPH_Shape* shape, JPH_DebugRenderer* renderer, const JPH_RMat4* centerOfMassTransform, const JPH_Vec3* scale, JPH_Color color, bool useMaterialColors, bool drawWireframe);
  1062. JPH_CAPI void JPH_Shape_Destroy(JPH_Shape* shape);
  1063. JPH_CAPI JPH_ShapeType JPH_Shape_GetType(const JPH_Shape* shape);
  1064. JPH_CAPI JPH_ShapeSubType JPH_Shape_GetSubType(const JPH_Shape* shape);
  1065. JPH_CAPI uint64_t JPH_Shape_GetUserData(const JPH_Shape* shape);
  1066. JPH_CAPI void JPH_Shape_SetUserData(JPH_Shape* shape, uint64_t userData);
  1067. JPH_CAPI bool JPH_Shape_MustBeStatic(const JPH_Shape* shape);
  1068. JPH_CAPI void JPH_Shape_GetCenterOfMass(const JPH_Shape* shape, JPH_Vec3* result);
  1069. JPH_CAPI void JPH_Shape_GetLocalBounds(const JPH_Shape* shape, JPH_AABox* result);
  1070. JPH_CAPI uint32_t JPH_Shape_GetSubShapeIDBitsRecursive(const JPH_Shape* shape);
  1071. JPH_CAPI void JPH_Shape_GetWorldSpaceBounds(const JPH_Shape* shape, JPH_RMat4* centerOfMassTransform, JPH_Vec3* scale, JPH_AABox* result);
  1072. JPH_CAPI float JPH_Shape_GetInnerRadius(const JPH_Shape* shape);
  1073. JPH_CAPI void JPH_Shape_GetMassProperties(const JPH_Shape* shape, JPH_MassProperties* result);
  1074. JPH_CAPI const JPH_Shape* JPH_Shape_GetLeafShape(const JPH_Shape* shape, JPH_SubShapeID subShapeID, JPH_SubShapeID* remainder);
  1075. JPH_CAPI const JPH_PhysicsMaterial* JPH_Shape_GetMaterial(const JPH_Shape* shape, JPH_SubShapeID subShapeID);
  1076. JPH_CAPI void JPH_Shape_GetSurfaceNormal(const JPH_Shape* shape, JPH_SubShapeID subShapeID, JPH_Vec3* localPosition, JPH_Vec3* normal);
  1077. JPH_CAPI void JPH_Shape_GetSupportingFace(const JPH_Shape* shape, const JPH_SubShapeID subShapeID, const JPH_Vec3* direction, const JPH_Vec3* scale, const JPH_Mat4* centerOfMassTransform, JPH_SupportingFace* outVertices);
  1078. JPH_CAPI float JPH_Shape_GetVolume(const JPH_Shape* shape);
  1079. JPH_CAPI bool JPH_Shape_IsValidScale(const JPH_Shape* shape, const JPH_Vec3* scale);
  1080. JPH_CAPI void JPH_Shape_MakeScaleValid(const JPH_Shape* shape, const JPH_Vec3* scale, JPH_Vec3* result);
  1081. JPH_CAPI JPH_Shape* JPH_Shape_ScaleShape(const JPH_Shape* shape, const JPH_Vec3* scale);
  1082. JPH_CAPI bool JPH_Shape_CastRay(const JPH_Shape* shape, const JPH_Vec3* origin, const JPH_Vec3* direction, JPH_RayCastResult* hit);
  1083. JPH_CAPI bool JPH_Shape_CastRay2(const JPH_Shape* shape, const JPH_Vec3* origin, const JPH_Vec3* direction, const JPH_RayCastSettings* rayCastSettings, JPH_CollisionCollectorType collectorType, JPH_CastRayResultCallback* callback, void* userData, const JPH_ShapeFilter* shapeFilter);
  1084. JPH_CAPI bool JPH_Shape_CollidePoint(const JPH_Shape* shape, const JPH_Vec3* point, const JPH_ShapeFilter* shapeFilter);
  1085. JPH_CAPI bool JPH_Shape_CollidePoint2(const JPH_Shape* shape, const JPH_Vec3* point, JPH_CollisionCollectorType collectorType, JPH_CollidePointResultCallback* callback, void* userData, const JPH_ShapeFilter* shapeFilter);
  1086. /* JPH_ConvexShape */
  1087. JPH_CAPI float JPH_ConvexShapeSettings_GetDensity(const JPH_ConvexShapeSettings* shape);
  1088. JPH_CAPI void JPH_ConvexShapeSettings_SetDensity(JPH_ConvexShapeSettings* shape, float value);
  1089. JPH_CAPI float JPH_ConvexShape_GetDensity(const JPH_ConvexShape* shape);
  1090. JPH_CAPI void JPH_ConvexShape_SetDensity(JPH_ConvexShape* shape, float inDensity);
  1091. /* BoxShape */
  1092. JPH_CAPI JPH_BoxShapeSettings* JPH_BoxShapeSettings_Create(const JPH_Vec3* halfExtent, float convexRadius);
  1093. JPH_CAPI JPH_BoxShape* JPH_BoxShapeSettings_CreateShape(const JPH_BoxShapeSettings* settings);
  1094. JPH_CAPI JPH_BoxShape* JPH_BoxShape_Create(const JPH_Vec3* halfExtent, float convexRadius);
  1095. JPH_CAPI void JPH_BoxShape_GetHalfExtent(const JPH_BoxShape* shape, JPH_Vec3* halfExtent);
  1096. JPH_CAPI float JPH_BoxShape_GetConvexRadius(const JPH_BoxShape* shape);
  1097. /* SphereShape */
  1098. JPH_CAPI JPH_SphereShapeSettings* JPH_SphereShapeSettings_Create(float radius);
  1099. JPH_CAPI JPH_SphereShape* JPH_SphereShapeSettings_CreateShape(const JPH_SphereShapeSettings* settings);
  1100. JPH_CAPI float JPH_SphereShapeSettings_GetRadius(const JPH_SphereShapeSettings* settings);
  1101. JPH_CAPI void JPH_SphereShapeSettings_SetRadius(JPH_SphereShapeSettings* settings, float radius);
  1102. JPH_CAPI JPH_SphereShape* JPH_SphereShape_Create(float radius);
  1103. JPH_CAPI float JPH_SphereShape_GetRadius(const JPH_SphereShape* shape);
  1104. /* PlaneShape */
  1105. JPH_CAPI JPH_PlaneShapeSettings* JPH_PlaneShapeSettings_Create(const JPH_Plane* plane, const JPH_PhysicsMaterial* material, float halfExtent);
  1106. JPH_CAPI JPH_PlaneShape* JPH_PlaneShapeSettings_CreateShape(const JPH_PlaneShapeSettings* settings);
  1107. JPH_CAPI JPH_PlaneShape* JPH_PlaneShape_Create(const JPH_Plane* plane, const JPH_PhysicsMaterial* material, float halfExtent);
  1108. JPH_CAPI void JPH_PlaneShape_GetPlane(const JPH_PlaneShape* shape, JPH_Plane* result);
  1109. JPH_CAPI float JPH_PlaneShape_GetHalfExtent(const JPH_PlaneShape* shape);
  1110. /* TriangleShape */
  1111. JPH_CAPI JPH_TriangleShapeSettings* JPH_TriangleShapeSettings_Create(const JPH_Vec3* v1, const JPH_Vec3* v2, const JPH_Vec3* v3, float convexRadius);
  1112. JPH_CAPI JPH_TriangleShape* JPH_TriangleShapeSettings_CreateShape(const JPH_TriangleShapeSettings* settings);
  1113. JPH_CAPI JPH_TriangleShape* JPH_TriangleShape_Create(const JPH_Vec3* v1, const JPH_Vec3* v2, const JPH_Vec3* v3, float convexRadius);
  1114. JPH_CAPI float JPH_TriangleShape_GetConvexRadius(const JPH_TriangleShape* shape);
  1115. JPH_CAPI void JPH_TriangleShape_GetVertex1(const JPH_TriangleShape* shape, JPH_Vec3* result);
  1116. JPH_CAPI void JPH_TriangleShape_GetVertex2(const JPH_TriangleShape* shape, JPH_Vec3* result);
  1117. JPH_CAPI void JPH_TriangleShape_GetVertex3(const JPH_TriangleShape* shape, JPH_Vec3* result);
  1118. /* CapsuleShape */
  1119. JPH_CAPI JPH_CapsuleShapeSettings* JPH_CapsuleShapeSettings_Create(float halfHeightOfCylinder, float radius);
  1120. JPH_CAPI JPH_CapsuleShape* JPH_CapsuleShapeSettings_CreateShape(const JPH_CapsuleShapeSettings* settings);
  1121. JPH_CAPI JPH_CapsuleShape* JPH_CapsuleShape_Create(float halfHeightOfCylinder, float radius);
  1122. JPH_CAPI float JPH_CapsuleShape_GetRadius(const JPH_CapsuleShape* shape);
  1123. JPH_CAPI float JPH_CapsuleShape_GetHalfHeightOfCylinder(const JPH_CapsuleShape* shape);
  1124. /* CylinderShape */
  1125. JPH_CAPI JPH_CylinderShapeSettings* JPH_CylinderShapeSettings_Create(float halfHeight, float radius, float convexRadius);
  1126. JPH_CAPI JPH_CylinderShape* JPH_CylinderShapeSettings_CreateShape(const JPH_CylinderShapeSettings* settings);
  1127. JPH_CAPI JPH_CylinderShape* JPH_CylinderShape_Create(float halfHeight, float radius);
  1128. JPH_CAPI float JPH_CylinderShape_GetRadius(const JPH_CylinderShape* shape);
  1129. JPH_CAPI float JPH_CylinderShape_GetHalfHeight(const JPH_CylinderShape* shape);
  1130. /* TaperedCylinderShape */
  1131. JPH_CAPI JPH_TaperedCylinderShapeSettings* JPH_TaperedCylinderShapeSettings_Create(float halfHeightOfTaperedCylinder, float topRadius, float bottomRadius, float convexRadius/* = cDefaultConvexRadius*/, const JPH_PhysicsMaterial* material /* = NULL*/);
  1132. JPH_CAPI JPH_TaperedCylinderShape* JPH_TaperedCylinderShapeSettings_CreateShape(const JPH_TaperedCylinderShapeSettings* settings);
  1133. JPH_CAPI float JPH_TaperedCylinderShape_GetTopRadius(const JPH_TaperedCylinderShape* shape);
  1134. JPH_CAPI float JPH_TaperedCylinderShape_GetBottomRadius(const JPH_TaperedCylinderShape* shape);
  1135. JPH_CAPI float JPH_TaperedCylinderShape_GetConvexRadius(const JPH_TaperedCylinderShape* shape);
  1136. JPH_CAPI float JPH_TaperedCylinderShape_GetHalfHeight(const JPH_TaperedCylinderShape* shape);
  1137. /* ConvexHullShape */
  1138. JPH_CAPI JPH_ConvexHullShapeSettings* JPH_ConvexHullShapeSettings_Create(const JPH_Vec3* points, uint32_t pointsCount, float maxConvexRadius);
  1139. JPH_CAPI JPH_ConvexHullShape* JPH_ConvexHullShapeSettings_CreateShape(const JPH_ConvexHullShapeSettings* settings);
  1140. JPH_CAPI uint32_t JPH_ConvexHullShape_GetNumPoints(const JPH_ConvexHullShape* shape);
  1141. JPH_CAPI void JPH_ConvexHullShape_GetPoint(const JPH_ConvexHullShape* shape, uint32_t index, JPH_Vec3* result);
  1142. JPH_CAPI uint32_t JPH_ConvexHullShape_GetNumFaces(const JPH_ConvexHullShape* shape);
  1143. JPH_CAPI uint32_t JPH_ConvexHullShape_GetNumVerticesInFace(const JPH_ConvexHullShape* shape, uint32_t faceIndex);
  1144. JPH_CAPI uint32_t JPH_ConvexHullShape_GetFaceVertices(const JPH_ConvexHullShape* shape, uint32_t faceIndex, uint32_t maxVertices, uint32_t* vertices);
  1145. /* MeshShape */
  1146. JPH_CAPI JPH_MeshShapeSettings* JPH_MeshShapeSettings_Create(const JPH_Triangle* triangles, uint32_t triangleCount);
  1147. JPH_CAPI JPH_MeshShapeSettings* JPH_MeshShapeSettings_Create2(const JPH_Vec3* vertices, uint32_t verticesCount, const JPH_IndexedTriangle* triangles, uint32_t triangleCount);
  1148. JPH_CAPI uint32_t JPH_MeshShapeSettings_GetMaxTrianglesPerLeaf(const JPH_MeshShapeSettings* settings);
  1149. JPH_CAPI void JPH_MeshShapeSettings_SetMaxTrianglesPerLeaf(JPH_MeshShapeSettings* settings, uint32_t value);
  1150. JPH_CAPI float JPH_MeshShapeSettings_GetActiveEdgeCosThresholdAngle(const JPH_MeshShapeSettings* settings);
  1151. JPH_CAPI void JPH_MeshShapeSettings_SetActiveEdgeCosThresholdAngle(JPH_MeshShapeSettings* settings, float value);
  1152. JPH_CAPI bool JPH_MeshShapeSettings_GetPerTriangleUserData(const JPH_MeshShapeSettings* settings);
  1153. JPH_CAPI void JPH_MeshShapeSettings_SetPerTriangleUserData(JPH_MeshShapeSettings* settings, bool value);
  1154. JPH_CAPI JPH_Mesh_Shape_BuildQuality JPH_MeshShapeSettings_GetBuildQuality(const JPH_MeshShapeSettings* settings);
  1155. JPH_CAPI void JPH_MeshShapeSettings_SetBuildQuality(JPH_MeshShapeSettings* settings, JPH_Mesh_Shape_BuildQuality value);
  1156. JPH_CAPI void JPH_MeshShapeSettings_Sanitize(JPH_MeshShapeSettings* settings);
  1157. JPH_CAPI JPH_MeshShape* JPH_MeshShapeSettings_CreateShape(const JPH_MeshShapeSettings* settings);
  1158. JPH_CAPI uint32_t JPH_MeshShape_GetTriangleUserData(const JPH_MeshShape* shape, JPH_SubShapeID id);
  1159. /* HeightFieldShape */
  1160. JPH_CAPI JPH_HeightFieldShapeSettings* JPH_HeightFieldShapeSettings_Create(const float* samples, const JPH_Vec3* offset, const JPH_Vec3* scale, uint32_t sampleCount, const uint8_t* materialIndices);
  1161. JPH_CAPI void JPH_HeightFieldShapeSettings_DetermineMinAndMaxSample(const JPH_HeightFieldShapeSettings* settings, float* pOutMinValue, float* pOutMaxValue, float* pOutQuantizationScale);
  1162. JPH_CAPI uint32_t JPH_HeightFieldShapeSettings_CalculateBitsPerSampleForError(const JPH_HeightFieldShapeSettings* settings, float maxError);
  1163. JPH_CAPI void JPH_HeightFieldShapeSettings_GetOffset(const JPH_HeightFieldShapeSettings* shape, JPH_Vec3* result);
  1164. JPH_CAPI void JPH_HeightFieldShapeSettings_SetOffset(JPH_HeightFieldShapeSettings* settings, const JPH_Vec3* value);
  1165. JPH_CAPI void JPH_HeightFieldShapeSettings_GetScale(const JPH_HeightFieldShapeSettings* shape, JPH_Vec3* result);
  1166. JPH_CAPI void JPH_HeightFieldShapeSettings_SetScale(JPH_HeightFieldShapeSettings* settings, const JPH_Vec3* value);
  1167. JPH_CAPI uint32_t JPH_HeightFieldShapeSettings_GetSampleCount(const JPH_HeightFieldShapeSettings* settings);
  1168. JPH_CAPI void JPH_HeightFieldShapeSettings_SetSampleCount(JPH_HeightFieldShapeSettings* settings, uint32_t value);
  1169. JPH_CAPI float JPH_HeightFieldShapeSettings_GetMinHeightValue(const JPH_HeightFieldShapeSettings* settings);
  1170. JPH_CAPI void JPH_HeightFieldShapeSettings_SetMinHeightValue(JPH_HeightFieldShapeSettings* settings, float value);
  1171. JPH_CAPI float JPH_HeightFieldShapeSettings_GetMaxHeightValue(const JPH_HeightFieldShapeSettings* settings);
  1172. JPH_CAPI void JPH_HeightFieldShapeSettings_SetMaxHeightValue(JPH_HeightFieldShapeSettings* settings, float value);
  1173. JPH_CAPI uint32_t JPH_HeightFieldShapeSettings_GetBlockSize(const JPH_HeightFieldShapeSettings* settings);
  1174. JPH_CAPI void JPH_HeightFieldShapeSettings_SetBlockSize(JPH_HeightFieldShapeSettings* settings, uint32_t value);
  1175. JPH_CAPI uint32_t JPH_HeightFieldShapeSettings_GetBitsPerSample(const JPH_HeightFieldShapeSettings* settings);
  1176. JPH_CAPI void JPH_HeightFieldShapeSettings_SetBitsPerSample(JPH_HeightFieldShapeSettings* settings, uint32_t value);
  1177. JPH_CAPI float JPH_HeightFieldShapeSettings_GetActiveEdgeCosThresholdAngle(const JPH_HeightFieldShapeSettings* settings);
  1178. JPH_CAPI void JPH_HeightFieldShapeSettings_SetActiveEdgeCosThresholdAngle(JPH_HeightFieldShapeSettings* settings, float value);
  1179. JPH_CAPI JPH_HeightFieldShape* JPH_HeightFieldShapeSettings_CreateShape(JPH_HeightFieldShapeSettings* settings);
  1180. JPH_CAPI uint32_t JPH_HeightFieldShape_GetSampleCount(const JPH_HeightFieldShape* shape);
  1181. JPH_CAPI uint32_t JPH_HeightFieldShape_GetBlockSize(const JPH_HeightFieldShape* shape);
  1182. JPH_CAPI const JPH_PhysicsMaterial* JPH_HeightFieldShape_GetMaterial(const JPH_HeightFieldShape* shape, uint32_t x, uint32_t y);
  1183. JPH_CAPI void JPH_HeightFieldShape_GetPosition(const JPH_HeightFieldShape* shape, uint32_t x, uint32_t y, JPH_Vec3* result);
  1184. JPH_CAPI bool JPH_HeightFieldShape_IsNoCollision(const JPH_HeightFieldShape* shape, uint32_t x, uint32_t y);
  1185. JPH_CAPI bool JPH_HeightFieldShape_ProjectOntoSurface(const JPH_HeightFieldShape* shape, const JPH_Vec3* localPosition, JPH_Vec3* outSurfacePosition, JPH_SubShapeID* outSubShapeID);
  1186. JPH_CAPI float JPH_HeightFieldShape_GetMinHeightValue(const JPH_HeightFieldShape* shape);
  1187. JPH_CAPI float JPH_HeightFieldShape_GetMaxHeightValue(const JPH_HeightFieldShape* shape);
  1188. /* TaperedCapsuleShape */
  1189. JPH_CAPI JPH_TaperedCapsuleShapeSettings* JPH_TaperedCapsuleShapeSettings_Create(float halfHeightOfTaperedCylinder, float topRadius, float bottomRadius);
  1190. JPH_CAPI JPH_TaperedCapsuleShape* JPH_TaperedCapsuleShapeSettings_CreateShape(JPH_TaperedCapsuleShapeSettings* settings);
  1191. JPH_CAPI float JPH_TaperedCapsuleShape_GetTopRadius(const JPH_TaperedCapsuleShape* shape);
  1192. JPH_CAPI float JPH_TaperedCapsuleShape_GetBottomRadius(const JPH_TaperedCapsuleShape* shape);
  1193. JPH_CAPI float JPH_TaperedCapsuleShape_GetHalfHeight(const JPH_TaperedCapsuleShape* shape);
  1194. /* CompoundShape */
  1195. JPH_CAPI void JPH_CompoundShapeSettings_AddShape(JPH_CompoundShapeSettings* settings, const JPH_Vec3* position, const JPH_Quat* rotation, const JPH_ShapeSettings* shapeSettings, uint32_t userData);
  1196. JPH_CAPI void JPH_CompoundShapeSettings_AddShape2(JPH_CompoundShapeSettings* settings, const JPH_Vec3* position, const JPH_Quat* rotation, const JPH_Shape* shape, uint32_t userData);
  1197. JPH_CAPI uint32_t JPH_CompoundShape_GetNumSubShapes(const JPH_CompoundShape* shape);
  1198. JPH_CAPI void JPH_CompoundShape_GetSubShape(const JPH_CompoundShape* shape, uint32_t index, const JPH_Shape** subShape, JPH_Vec3* positionCOM, JPH_Quat* rotation, uint32_t* userData);
  1199. JPH_CAPI uint32_t JPH_CompoundShape_GetSubShapeIndexFromID(const JPH_CompoundShape* shape, JPH_SubShapeID id, JPH_SubShapeID* remainder);
  1200. /* StaticCompoundShape */
  1201. JPH_CAPI JPH_StaticCompoundShapeSettings* JPH_StaticCompoundShapeSettings_Create(void);
  1202. JPH_CAPI JPH_StaticCompoundShape* JPH_StaticCompoundShape_Create(const JPH_StaticCompoundShapeSettings* settings);
  1203. /* MutableCompoundShape */
  1204. JPH_CAPI JPH_MutableCompoundShapeSettings* JPH_MutableCompoundShapeSettings_Create(void);
  1205. JPH_CAPI JPH_MutableCompoundShape* JPH_MutableCompoundShape_Create(const JPH_MutableCompoundShapeSettings* settings);
  1206. JPH_CAPI uint32_t JPH_MutableCompoundShape_AddShape(JPH_MutableCompoundShape* shape, const JPH_Vec3* position, const JPH_Quat* rotation, const JPH_Shape* child, uint32_t userData /* = 0 */, uint32_t index /* = UINT32_MAX */);
  1207. JPH_CAPI void JPH_MutableCompoundShape_RemoveShape(JPH_MutableCompoundShape* shape, uint32_t index);
  1208. JPH_CAPI void JPH_MutableCompoundShape_ModifyShape(JPH_MutableCompoundShape* shape, uint32_t index, const JPH_Vec3* position, const JPH_Quat* rotation);
  1209. JPH_CAPI void JPH_MutableCompoundShape_ModifyShape2(JPH_MutableCompoundShape* shape, uint32_t index, const JPH_Vec3* position, const JPH_Quat* rotation, const JPH_Shape* newShape);
  1210. JPH_CAPI void JPH_MutableCompoundShape_AdjustCenterOfMass(JPH_MutableCompoundShape* shape);
  1211. /* DecoratedShape */
  1212. JPH_CAPI const JPH_Shape* JPH_DecoratedShape_GetInnerShape(const JPH_DecoratedShape* shape);
  1213. /* RotatedTranslatedShape */
  1214. JPH_CAPI JPH_RotatedTranslatedShapeSettings* JPH_RotatedTranslatedShapeSettings_Create(const JPH_Vec3* position, const JPH_Quat* rotation, const JPH_ShapeSettings* shapeSettings);
  1215. JPH_CAPI JPH_RotatedTranslatedShapeSettings* JPH_RotatedTranslatedShapeSettings_Create2(const JPH_Vec3* position, const JPH_Quat* rotation, const JPH_Shape* shape);
  1216. JPH_CAPI JPH_RotatedTranslatedShape* JPH_RotatedTranslatedShapeSettings_CreateShape(const JPH_RotatedTranslatedShapeSettings* settings);
  1217. JPH_CAPI JPH_RotatedTranslatedShape* JPH_RotatedTranslatedShape_Create(const JPH_Vec3* position, const JPH_Quat* rotation, const JPH_Shape* shape);
  1218. JPH_CAPI void JPH_RotatedTranslatedShape_GetPosition(const JPH_RotatedTranslatedShape* shape, JPH_Vec3* position);
  1219. JPH_CAPI void JPH_RotatedTranslatedShape_GetRotation(const JPH_RotatedTranslatedShape* shape, JPH_Quat* rotation);
  1220. /* ScaledShape */
  1221. JPH_CAPI JPH_ScaledShapeSettings* JPH_ScaledShapeSettings_Create(const JPH_ShapeSettings* shapeSettings, const JPH_Vec3* scale);
  1222. JPH_CAPI JPH_ScaledShapeSettings* JPH_ScaledShapeSettings_Create2(const JPH_Shape* shape, const JPH_Vec3* scale);
  1223. JPH_CAPI JPH_ScaledShape* JPH_ScaledShapeSettings_CreateShape(const JPH_ScaledShapeSettings* settings);
  1224. JPH_CAPI JPH_ScaledShape* JPH_ScaledShape_Create(const JPH_Shape* shape, const JPH_Vec3* scale);
  1225. JPH_CAPI void JPH_ScaledShape_GetScale(const JPH_ScaledShape* shape, JPH_Vec3* result);
  1226. /* OffsetCenterOfMassShape */
  1227. JPH_CAPI JPH_OffsetCenterOfMassShapeSettings* JPH_OffsetCenterOfMassShapeSettings_Create(const JPH_Vec3* offset, const JPH_ShapeSettings* shapeSettings);
  1228. JPH_CAPI JPH_OffsetCenterOfMassShapeSettings* JPH_OffsetCenterOfMassShapeSettings_Create2(const JPH_Vec3* offset, const JPH_Shape* shape);
  1229. JPH_CAPI JPH_OffsetCenterOfMassShape* JPH_OffsetCenterOfMassShapeSettings_CreateShape(const JPH_OffsetCenterOfMassShapeSettings* settings);
  1230. JPH_CAPI JPH_OffsetCenterOfMassShape* JPH_OffsetCenterOfMassShape_Create(const JPH_Vec3* offset, const JPH_Shape* shape);
  1231. JPH_CAPI void JPH_OffsetCenterOfMassShape_GetOffset(const JPH_OffsetCenterOfMassShape* shape, JPH_Vec3* result);
  1232. /* EmptyShape */
  1233. JPH_CAPI JPH_EmptyShapeSettings* JPH_EmptyShapeSettings_Create(const JPH_Vec3* centerOfMass);
  1234. JPH_CAPI JPH_EmptyShape* JPH_EmptyShapeSettings_CreateShape(const JPH_EmptyShapeSettings* settings);
  1235. /* JPH_BodyCreationSettings */
  1236. JPH_CAPI JPH_BodyCreationSettings* JPH_BodyCreationSettings_Create(void);
  1237. JPH_CAPI JPH_BodyCreationSettings* JPH_BodyCreationSettings_Create2(const JPH_ShapeSettings* settings,
  1238. const JPH_RVec3* position,
  1239. const JPH_Quat* rotation,
  1240. JPH_MotionType motionType,
  1241. JPH_ObjectLayer objectLayer);
  1242. JPH_CAPI JPH_BodyCreationSettings* JPH_BodyCreationSettings_Create3(const JPH_Shape* shape,
  1243. const JPH_RVec3* position,
  1244. const JPH_Quat* rotation,
  1245. JPH_MotionType motionType,
  1246. JPH_ObjectLayer objectLayer);
  1247. JPH_CAPI void JPH_BodyCreationSettings_Destroy(JPH_BodyCreationSettings* settings);
  1248. JPH_CAPI void JPH_BodyCreationSettings_GetPosition(JPH_BodyCreationSettings* settings, JPH_RVec3* result);
  1249. JPH_CAPI void JPH_BodyCreationSettings_SetPosition(JPH_BodyCreationSettings* settings, const JPH_RVec3* value);
  1250. JPH_CAPI void JPH_BodyCreationSettings_GetRotation(JPH_BodyCreationSettings* settings, JPH_Quat* result);
  1251. JPH_CAPI void JPH_BodyCreationSettings_SetRotation(JPH_BodyCreationSettings* settings, const JPH_Quat* value);
  1252. JPH_CAPI void JPH_BodyCreationSettings_GetLinearVelocity(JPH_BodyCreationSettings* settings, JPH_Vec3* velocity);
  1253. JPH_CAPI void JPH_BodyCreationSettings_SetLinearVelocity(JPH_BodyCreationSettings* settings, const JPH_Vec3* velocity);
  1254. JPH_CAPI void JPH_BodyCreationSettings_GetAngularVelocity(JPH_BodyCreationSettings* settings, JPH_Vec3* velocity);
  1255. JPH_CAPI void JPH_BodyCreationSettings_SetAngularVelocity(JPH_BodyCreationSettings* settings, const JPH_Vec3* velocity);
  1256. JPH_CAPI uint64_t JPH_BodyCreationSettings_GetUserData(const JPH_BodyCreationSettings* settings);
  1257. JPH_CAPI void JPH_BodyCreationSettings_SetUserData(JPH_BodyCreationSettings* settings, uint64_t value);
  1258. JPH_CAPI JPH_ObjectLayer JPH_BodyCreationSettings_GetObjectLayer(const JPH_BodyCreationSettings* settings);
  1259. JPH_CAPI void JPH_BodyCreationSettings_SetObjectLayer(JPH_BodyCreationSettings* settings, JPH_ObjectLayer value);
  1260. JPH_CAPI void JPH_BodyCreationSettings_GetCollisionGroup(const JPH_BodyCreationSettings* settings, JPH_CollisionGroup* result);
  1261. JPH_CAPI void JPH_BodyCreationSettings_SetCollisionGroup(JPH_BodyCreationSettings* settings, const JPH_CollisionGroup* value);
  1262. JPH_CAPI JPH_MotionType JPH_BodyCreationSettings_GetMotionType(const JPH_BodyCreationSettings* settings);
  1263. JPH_CAPI void JPH_BodyCreationSettings_SetMotionType(JPH_BodyCreationSettings* settings, JPH_MotionType value);
  1264. JPH_CAPI JPH_AllowedDOFs JPH_BodyCreationSettings_GetAllowedDOFs(const JPH_BodyCreationSettings* settings);
  1265. JPH_CAPI void JPH_BodyCreationSettings_SetAllowedDOFs(JPH_BodyCreationSettings* settings, JPH_AllowedDOFs value);
  1266. JPH_CAPI bool JPH_BodyCreationSettings_GetAllowDynamicOrKinematic(const JPH_BodyCreationSettings* settings);
  1267. JPH_CAPI void JPH_BodyCreationSettings_SetAllowDynamicOrKinematic(JPH_BodyCreationSettings* settings, bool value);
  1268. JPH_CAPI bool JPH_BodyCreationSettings_GetIsSensor(const JPH_BodyCreationSettings* settings);
  1269. JPH_CAPI void JPH_BodyCreationSettings_SetIsSensor(JPH_BodyCreationSettings* settings, bool value);
  1270. JPH_CAPI bool JPH_BodyCreationSettings_GetCollideKinematicVsNonDynamic(const JPH_BodyCreationSettings* settings);
  1271. JPH_CAPI void JPH_BodyCreationSettings_SetCollideKinematicVsNonDynamic(JPH_BodyCreationSettings* settings, bool value);
  1272. JPH_CAPI bool JPH_BodyCreationSettings_GetUseManifoldReduction(const JPH_BodyCreationSettings* settings);
  1273. JPH_CAPI void JPH_BodyCreationSettings_SetUseManifoldReduction(JPH_BodyCreationSettings* settings, bool value);
  1274. JPH_CAPI bool JPH_BodyCreationSettings_GetApplyGyroscopicForce(const JPH_BodyCreationSettings* settings);
  1275. JPH_CAPI void JPH_BodyCreationSettings_SetApplyGyroscopicForce(JPH_BodyCreationSettings* settings, bool value);
  1276. JPH_CAPI JPH_MotionQuality JPH_BodyCreationSettings_GetMotionQuality(const JPH_BodyCreationSettings* settings);
  1277. JPH_CAPI void JPH_BodyCreationSettings_SetMotionQuality(JPH_BodyCreationSettings* settings, JPH_MotionQuality value);
  1278. JPH_CAPI bool JPH_BodyCreationSettings_GetEnhancedInternalEdgeRemoval(const JPH_BodyCreationSettings* settings);
  1279. JPH_CAPI void JPH_BodyCreationSettings_SetEnhancedInternalEdgeRemoval(JPH_BodyCreationSettings* settings, bool value);
  1280. JPH_CAPI bool JPH_BodyCreationSettings_GetAllowSleeping(const JPH_BodyCreationSettings* settings);
  1281. JPH_CAPI void JPH_BodyCreationSettings_SetAllowSleeping(JPH_BodyCreationSettings* settings, bool value);
  1282. JPH_CAPI float JPH_BodyCreationSettings_GetFriction(const JPH_BodyCreationSettings* settings);
  1283. JPH_CAPI void JPH_BodyCreationSettings_SetFriction(JPH_BodyCreationSettings* settings, float value);
  1284. JPH_CAPI float JPH_BodyCreationSettings_GetRestitution(const JPH_BodyCreationSettings* settings);
  1285. JPH_CAPI void JPH_BodyCreationSettings_SetRestitution(JPH_BodyCreationSettings* settings, float value);
  1286. JPH_CAPI float JPH_BodyCreationSettings_GetLinearDamping(const JPH_BodyCreationSettings* settings);
  1287. JPH_CAPI void JPH_BodyCreationSettings_SetLinearDamping(JPH_BodyCreationSettings* settings, float value);
  1288. JPH_CAPI float JPH_BodyCreationSettings_GetAngularDamping(const JPH_BodyCreationSettings* settings);
  1289. JPH_CAPI void JPH_BodyCreationSettings_SetAngularDamping(JPH_BodyCreationSettings* settings, float value);
  1290. JPH_CAPI float JPH_BodyCreationSettings_GetMaxLinearVelocity(const JPH_BodyCreationSettings* settings);
  1291. JPH_CAPI void JPH_BodyCreationSettings_SetMaxLinearVelocity(JPH_BodyCreationSettings* settings, float value);
  1292. JPH_CAPI float JPH_BodyCreationSettings_GetMaxAngularVelocity(const JPH_BodyCreationSettings* settings);
  1293. JPH_CAPI void JPH_BodyCreationSettings_SetMaxAngularVelocity(JPH_BodyCreationSettings* settings, float value);
  1294. JPH_CAPI float JPH_BodyCreationSettings_GetGravityFactor(const JPH_BodyCreationSettings* settings);
  1295. JPH_CAPI void JPH_BodyCreationSettings_SetGravityFactor(JPH_BodyCreationSettings* settings, float value);
  1296. JPH_CAPI uint32_t JPH_BodyCreationSettings_GetNumVelocityStepsOverride(const JPH_BodyCreationSettings* settings);
  1297. JPH_CAPI void JPH_BodyCreationSettings_SetNumVelocityStepsOverride(JPH_BodyCreationSettings* settings, uint32_t value);
  1298. JPH_CAPI uint32_t JPH_BodyCreationSettings_GetNumPositionStepsOverride(const JPH_BodyCreationSettings* settings);
  1299. JPH_CAPI void JPH_BodyCreationSettings_SetNumPositionStepsOverride(JPH_BodyCreationSettings* settings, uint32_t value);
  1300. JPH_CAPI JPH_OverrideMassProperties JPH_BodyCreationSettings_GetOverrideMassProperties(const JPH_BodyCreationSettings* settings);
  1301. JPH_CAPI void JPH_BodyCreationSettings_SetOverrideMassProperties(JPH_BodyCreationSettings* settings, JPH_OverrideMassProperties value);
  1302. JPH_CAPI float JPH_BodyCreationSettings_GetInertiaMultiplier(const JPH_BodyCreationSettings* settings);
  1303. JPH_CAPI void JPH_BodyCreationSettings_SetInertiaMultiplier(JPH_BodyCreationSettings* settings, float value);
  1304. JPH_CAPI void JPH_BodyCreationSettings_GetMassPropertiesOverride(const JPH_BodyCreationSettings* settings, JPH_MassProperties* result);
  1305. JPH_CAPI void JPH_BodyCreationSettings_SetMassPropertiesOverride(JPH_BodyCreationSettings* settings, const JPH_MassProperties* massProperties);
  1306. /* JPH_SoftBodyCreationSettings */
  1307. JPH_CAPI JPH_SoftBodyCreationSettings* JPH_SoftBodyCreationSettings_Create(void);
  1308. JPH_CAPI void JPH_SoftBodyCreationSettings_Destroy(JPH_SoftBodyCreationSettings* settings);
  1309. /* JPH_Constraint */
  1310. JPH_CAPI void JPH_Constraint_Destroy(JPH_Constraint* constraint);
  1311. JPH_CAPI JPH_ConstraintType JPH_Constraint_GetType(const JPH_Constraint* constraint);
  1312. JPH_CAPI JPH_ConstraintSubType JPH_Constraint_GetSubType(const JPH_Constraint* constraint);
  1313. JPH_CAPI uint32_t JPH_Constraint_GetConstraintPriority(const JPH_Constraint* constraint);
  1314. JPH_CAPI void JPH_Constraint_SetConstraintPriority(JPH_Constraint* constraint, uint32_t priority);
  1315. JPH_CAPI uint32_t JPH_Constraint_GetNumVelocityStepsOverride(const JPH_Constraint* constraint);
  1316. JPH_CAPI void JPH_Constraint_SetNumVelocityStepsOverride(JPH_Constraint* constraint, uint32_t value);
  1317. JPH_CAPI uint32_t JPH_Constraint_GetNumPositionStepsOverride(const JPH_Constraint* constraint);
  1318. JPH_CAPI void JPH_Constraint_SetNumPositionStepsOverride(JPH_Constraint* constraint, uint32_t value);
  1319. JPH_CAPI bool JPH_Constraint_GetEnabled(const JPH_Constraint* constraint);
  1320. JPH_CAPI void JPH_Constraint_SetEnabled(JPH_Constraint* constraint, bool enabled);
  1321. JPH_CAPI uint64_t JPH_Constraint_GetUserData(const JPH_Constraint* constraint);
  1322. JPH_CAPI void JPH_Constraint_SetUserData(JPH_Constraint* constraint, uint64_t userData);
  1323. JPH_CAPI void JPH_Constraint_NotifyShapeChanged(JPH_Constraint* constraint, JPH_BodyID bodyID, JPH_Vec3* deltaCOM);
  1324. JPH_CAPI void JPH_Constraint_ResetWarmStart(JPH_Constraint* constraint);
  1325. JPH_CAPI bool JPH_Constraint_IsActive(const JPH_Constraint* constraint);
  1326. JPH_CAPI void JPH_Constraint_SetupVelocityConstraint(JPH_Constraint* constraint, float deltaTime);
  1327. JPH_CAPI void JPH_Constraint_WarmStartVelocityConstraint(JPH_Constraint* constraint, float warmStartImpulseRatio);
  1328. JPH_CAPI bool JPH_Constraint_SolveVelocityConstraint(JPH_Constraint* constraint, float deltaTime);
  1329. JPH_CAPI bool JPH_Constraint_SolvePositionConstraint(JPH_Constraint* constraint, float deltaTime, float baumgarte);
  1330. /* JPH_TwoBodyConstraint */
  1331. JPH_CAPI JPH_Body* JPH_TwoBodyConstraint_GetBody1(const JPH_TwoBodyConstraint* constraint);
  1332. JPH_CAPI JPH_Body* JPH_TwoBodyConstraint_GetBody2(const JPH_TwoBodyConstraint* constraint);
  1333. JPH_CAPI void JPH_TwoBodyConstraint_GetConstraintToBody1Matrix(const JPH_TwoBodyConstraint* constraint, JPH_Mat4* result);
  1334. JPH_CAPI void JPH_TwoBodyConstraint_GetConstraintToBody2Matrix(const JPH_TwoBodyConstraint* constraint, JPH_Mat4* result);
  1335. /* JPH_FixedConstraint */
  1336. JPH_CAPI void JPH_FixedConstraintSettings_Init(JPH_FixedConstraintSettings* settings);
  1337. JPH_CAPI JPH_FixedConstraint* JPH_FixedConstraint_Create(const JPH_FixedConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1338. JPH_CAPI void JPH_FixedConstraint_GetSettings(const JPH_FixedConstraint* constraint, JPH_FixedConstraintSettings* settings);
  1339. JPH_CAPI void JPH_FixedConstraint_GetTotalLambdaPosition(const JPH_FixedConstraint* constraint, JPH_Vec3* result);
  1340. JPH_CAPI void JPH_FixedConstraint_GetTotalLambdaRotation(const JPH_FixedConstraint* constraint, JPH_Vec3* result);
  1341. /* JPH_DistanceConstraint */
  1342. JPH_CAPI void JPH_DistanceConstraintSettings_Init(JPH_DistanceConstraintSettings* settings);
  1343. JPH_CAPI JPH_DistanceConstraint* JPH_DistanceConstraint_Create(const JPH_DistanceConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1344. JPH_CAPI void JPH_DistanceConstraint_GetSettings(const JPH_DistanceConstraint* constraint, JPH_DistanceConstraintSettings* settings);
  1345. JPH_CAPI void JPH_DistanceConstraint_SetDistance(JPH_DistanceConstraint* constraint, float minDistance, float maxDistance);
  1346. JPH_CAPI float JPH_DistanceConstraint_GetMinDistance(JPH_DistanceConstraint* constraint);
  1347. JPH_CAPI float JPH_DistanceConstraint_GetMaxDistance(JPH_DistanceConstraint* constraint);
  1348. JPH_CAPI void JPH_DistanceConstraint_GetLimitsSpringSettings(JPH_DistanceConstraint* constraint, JPH_SpringSettings* result);
  1349. JPH_CAPI void JPH_DistanceConstraint_SetLimitsSpringSettings(JPH_DistanceConstraint* constraint, JPH_SpringSettings* settings);
  1350. JPH_CAPI float JPH_DistanceConstraint_GetTotalLambdaPosition(const JPH_DistanceConstraint* constraint);
  1351. /* JPH_PointConstraint */
  1352. JPH_CAPI void JPH_PointConstraintSettings_Init(JPH_PointConstraintSettings* settings);
  1353. JPH_CAPI JPH_PointConstraint* JPH_PointConstraint_Create(const JPH_PointConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1354. JPH_CAPI void JPH_PointConstraint_GetSettings(const JPH_PointConstraint* constraint, JPH_PointConstraintSettings* settings);
  1355. JPH_CAPI void JPH_PointConstraint_SetPoint1(JPH_PointConstraint* constraint, JPH_ConstraintSpace space, JPH_RVec3* value);
  1356. JPH_CAPI void JPH_PointConstraint_SetPoint2(JPH_PointConstraint* constraint, JPH_ConstraintSpace space, JPH_RVec3* value);
  1357. JPH_CAPI void JPH_PointConstraint_GetLocalSpacePoint1(const JPH_PointConstraint* constraint, JPH_Vec3* result);
  1358. JPH_CAPI void JPH_PointConstraint_GetLocalSpacePoint2(const JPH_PointConstraint* constraint, JPH_Vec3* result);
  1359. JPH_CAPI void JPH_PointConstraint_GetTotalLambdaPosition(const JPH_PointConstraint* constraint, JPH_Vec3* result);
  1360. /* JPH_HingeConstraint */
  1361. JPH_CAPI void JPH_HingeConstraintSettings_Init(JPH_HingeConstraintSettings* settings);
  1362. JPH_CAPI JPH_HingeConstraint* JPH_HingeConstraint_Create(const JPH_HingeConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1363. JPH_CAPI void JPH_HingeConstraint_GetSettings(JPH_HingeConstraint* constraint, JPH_HingeConstraintSettings* settings);
  1364. JPH_CAPI void JPH_HingeConstraint_GetLocalSpacePoint1(const JPH_HingeConstraint* constraint, JPH_Vec3* result);
  1365. JPH_CAPI void JPH_HingeConstraint_GetLocalSpacePoint2(const JPH_HingeConstraint* constraint, JPH_Vec3* result);
  1366. JPH_CAPI void JPH_HingeConstraint_GetLocalSpaceHingeAxis1(const JPH_HingeConstraint* constraint, JPH_Vec3* result);
  1367. JPH_CAPI void JPH_HingeConstraint_GetLocalSpaceHingeAxis2(const JPH_HingeConstraint* constraint, JPH_Vec3* result);
  1368. JPH_CAPI void JPH_HingeConstraint_GetLocalSpaceNormalAxis1(const JPH_HingeConstraint* constraint, JPH_Vec3* result);
  1369. JPH_CAPI void JPH_HingeConstraint_GetLocalSpaceNormalAxis2(const JPH_HingeConstraint* constraint, JPH_Vec3* result);
  1370. JPH_CAPI float JPH_HingeConstraint_GetCurrentAngle(JPH_HingeConstraint* constraint);
  1371. JPH_CAPI void JPH_HingeConstraint_SetMaxFrictionTorque(JPH_HingeConstraint* constraint, float frictionTorque);
  1372. JPH_CAPI float JPH_HingeConstraint_GetMaxFrictionTorque(JPH_HingeConstraint* constraint);
  1373. JPH_CAPI void JPH_HingeConstraint_SetMotorSettings(JPH_HingeConstraint* constraint, JPH_MotorSettings* settings);
  1374. JPH_CAPI void JPH_HingeConstraint_GetMotorSettings(JPH_HingeConstraint* constraint, JPH_MotorSettings* result);
  1375. JPH_CAPI void JPH_HingeConstraint_SetMotorState(JPH_HingeConstraint* constraint, JPH_MotorState state);
  1376. JPH_CAPI JPH_MotorState JPH_HingeConstraint_GetMotorState(JPH_HingeConstraint* constraint);
  1377. JPH_CAPI void JPH_HingeConstraint_SetTargetAngularVelocity(JPH_HingeConstraint* constraint, float angularVelocity);
  1378. JPH_CAPI float JPH_HingeConstraint_GetTargetAngularVelocity(JPH_HingeConstraint* constraint);
  1379. JPH_CAPI void JPH_HingeConstraint_SetTargetAngle(JPH_HingeConstraint* constraint, float angle);
  1380. JPH_CAPI float JPH_HingeConstraint_GetTargetAngle(JPH_HingeConstraint* constraint);
  1381. JPH_CAPI void JPH_HingeConstraint_SetLimits(JPH_HingeConstraint* constraint, float inLimitsMin, float inLimitsMax);
  1382. JPH_CAPI float JPH_HingeConstraint_GetLimitsMin(JPH_HingeConstraint* constraint);
  1383. JPH_CAPI float JPH_HingeConstraint_GetLimitsMax(JPH_HingeConstraint* constraint);
  1384. JPH_CAPI bool JPH_HingeConstraint_HasLimits(JPH_HingeConstraint* constraint);
  1385. JPH_CAPI void JPH_HingeConstraint_GetLimitsSpringSettings(JPH_HingeConstraint* constraint, JPH_SpringSettings* result);
  1386. JPH_CAPI void JPH_HingeConstraint_SetLimitsSpringSettings(JPH_HingeConstraint* constraint, JPH_SpringSettings* settings);
  1387. JPH_CAPI void JPH_HingeConstraint_GetTotalLambdaPosition(const JPH_HingeConstraint* constraint, JPH_Vec3* result);
  1388. JPH_CAPI void JPH_HingeConstraint_GetTotalLambdaRotation(const JPH_HingeConstraint* constraint, float rotation[2]);
  1389. JPH_CAPI float JPH_HingeConstraint_GetTotalLambdaRotationLimits(const JPH_HingeConstraint* constraint);
  1390. JPH_CAPI float JPH_HingeConstraint_GetTotalLambdaMotor(const JPH_HingeConstraint* constraint);
  1391. /* JPH_SliderConstraint */
  1392. JPH_CAPI void JPH_SliderConstraintSettings_Init(JPH_SliderConstraintSettings* settings);
  1393. JPH_CAPI void JPH_SliderConstraintSettings_SetSliderAxis(JPH_SliderConstraintSettings* settings, const JPH_Vec3* axis);
  1394. JPH_CAPI JPH_SliderConstraint* JPH_SliderConstraint_Create(const JPH_SliderConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1395. JPH_CAPI void JPH_SliderConstraint_GetSettings(JPH_SliderConstraint* constraint, JPH_SliderConstraintSettings* settings);
  1396. JPH_CAPI float JPH_SliderConstraint_GetCurrentPosition(JPH_SliderConstraint* constraint);
  1397. JPH_CAPI void JPH_SliderConstraint_SetMaxFrictionForce(JPH_SliderConstraint* constraint, float frictionForce);
  1398. JPH_CAPI float JPH_SliderConstraint_GetMaxFrictionForce(JPH_SliderConstraint* constraint);
  1399. JPH_CAPI void JPH_SliderConstraint_SetMotorSettings(JPH_SliderConstraint* constraint, JPH_MotorSettings* settings);
  1400. JPH_CAPI void JPH_SliderConstraint_GetMotorSettings(const JPH_SliderConstraint* constraint, JPH_MotorSettings* result);
  1401. JPH_CAPI void JPH_SliderConstraint_SetMotorState(JPH_SliderConstraint* constraint, JPH_MotorState state);
  1402. JPH_CAPI JPH_MotorState JPH_SliderConstraint_GetMotorState(JPH_SliderConstraint* constraint);
  1403. JPH_CAPI void JPH_SliderConstraint_SetTargetVelocity(JPH_SliderConstraint* constraint, float velocity);
  1404. JPH_CAPI float JPH_SliderConstraint_GetTargetVelocity(JPH_SliderConstraint* constraint);
  1405. JPH_CAPI void JPH_SliderConstraint_SetTargetPosition(JPH_SliderConstraint* constraint, float position);
  1406. JPH_CAPI float JPH_SliderConstraint_GetTargetPosition(JPH_SliderConstraint* constraint);
  1407. JPH_CAPI void JPH_SliderConstraint_SetLimits(JPH_SliderConstraint* constraint, float inLimitsMin, float inLimitsMax);
  1408. JPH_CAPI float JPH_SliderConstraint_GetLimitsMin(JPH_SliderConstraint* constraint);
  1409. JPH_CAPI float JPH_SliderConstraint_GetLimitsMax(JPH_SliderConstraint* constraint);
  1410. JPH_CAPI bool JPH_SliderConstraint_HasLimits(JPH_SliderConstraint* constraint);
  1411. JPH_CAPI void JPH_SliderConstraint_GetLimitsSpringSettings(JPH_SliderConstraint* constraint, JPH_SpringSettings* result);
  1412. JPH_CAPI void JPH_SliderConstraint_SetLimitsSpringSettings(JPH_SliderConstraint* constraint, JPH_SpringSettings* settings);
  1413. JPH_CAPI void JPH_SliderConstraint_GetTotalLambdaPosition(const JPH_SliderConstraint* constraint, float position[2]);
  1414. JPH_CAPI float JPH_SliderConstraint_GetTotalLambdaPositionLimits(const JPH_SliderConstraint* constraint);
  1415. JPH_CAPI void JPH_SliderConstraint_GetTotalLambdaRotation(const JPH_SliderConstraint* constraint, JPH_Vec3* result);
  1416. JPH_CAPI float JPH_SliderConstraint_GetTotalLambdaMotor(const JPH_SliderConstraint* constraint);
  1417. /* JPH_ConeConstraint */
  1418. JPH_CAPI void JPH_ConeConstraintSettings_Init(JPH_ConeConstraintSettings* settings);
  1419. JPH_CAPI JPH_ConeConstraint* JPH_ConeConstraint_Create(const JPH_ConeConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1420. JPH_CAPI void JPH_ConeConstraint_GetSettings(JPH_ConeConstraint* constraint, JPH_ConeConstraintSettings* settings);
  1421. JPH_CAPI void JPH_ConeConstraint_SetHalfConeAngle(JPH_ConeConstraint* constraint, float halfConeAngle);
  1422. JPH_CAPI float JPH_ConeConstraint_GetCosHalfConeAngle(const JPH_ConeConstraint* constraint);
  1423. JPH_CAPI void JPH_ConeConstraint_GetTotalLambdaPosition(const JPH_ConeConstraint* constraint, JPH_Vec3* result);
  1424. JPH_CAPI float JPH_ConeConstraint_GetTotalLambdaRotation(const JPH_ConeConstraint* constraint);
  1425. /* JPH_SwingTwistConstraint */
  1426. JPH_CAPI void JPH_SwingTwistConstraintSettings_Init(JPH_SwingTwistConstraintSettings* settings);
  1427. JPH_CAPI JPH_SwingTwistConstraint* JPH_SwingTwistConstraint_Create(const JPH_SwingTwistConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1428. JPH_CAPI void JPH_SwingTwistConstraint_GetSettings(JPH_SwingTwistConstraint* constraint, JPH_SwingTwistConstraintSettings* settings);
  1429. JPH_CAPI float JPH_SwingTwistConstraint_GetNormalHalfConeAngle(JPH_SwingTwistConstraint* constraint);
  1430. JPH_CAPI void JPH_SwingTwistConstraint_GetTotalLambdaPosition(const JPH_SwingTwistConstraint* constraint, JPH_Vec3* result);
  1431. JPH_CAPI float JPH_SwingTwistConstraint_GetTotalLambdaTwist(const JPH_SwingTwistConstraint* constraint);
  1432. JPH_CAPI float JPH_SwingTwistConstraint_GetTotalLambdaSwingY(const JPH_SwingTwistConstraint* constraint);
  1433. JPH_CAPI float JPH_SwingTwistConstraint_GetTotalLambdaSwingZ(const JPH_SwingTwistConstraint* constraint);
  1434. JPH_CAPI void JPH_SwingTwistConstraint_GetTotalLambdaMotor(const JPH_SwingTwistConstraint* constraint, JPH_Vec3* result);
  1435. /* JPH_SixDOFConstraint */
  1436. JPH_CAPI void JPH_SixDOFConstraintSettings_Init(JPH_SixDOFConstraintSettings* settings);
  1437. JPH_CAPI void JPH_SixDOFConstraintSettings_MakeFreeAxis(JPH_SixDOFConstraintSettings* settings, JPH_SixDOFConstraintAxis axis);
  1438. JPH_CAPI bool JPH_SixDOFConstraintSettings_IsFreeAxis(const JPH_SixDOFConstraintSettings* settings, JPH_SixDOFConstraintAxis axis);
  1439. JPH_CAPI void JPH_SixDOFConstraintSettings_MakeFixedAxis(JPH_SixDOFConstraintSettings* settings, JPH_SixDOFConstraintAxis axis);
  1440. JPH_CAPI bool JPH_SixDOFConstraintSettings_IsFixedAxis(const JPH_SixDOFConstraintSettings* settings, JPH_SixDOFConstraintAxis axis);
  1441. JPH_CAPI void JPH_SixDOFConstraintSettings_SetLimitedAxis(JPH_SixDOFConstraintSettings* settings, JPH_SixDOFConstraintAxis axis, float min, float max);
  1442. JPH_CAPI JPH_SixDOFConstraint* JPH_SixDOFConstraint_Create(const JPH_SixDOFConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1443. JPH_CAPI void JPH_SixDOFConstraint_GetSettings(JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintSettings* settings);
  1444. JPH_CAPI float JPH_SixDOFConstraint_GetLimitsMin(JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis);
  1445. JPH_CAPI float JPH_SixDOFConstraint_GetLimitsMax(JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis);
  1446. JPH_CAPI void JPH_SixDOFConstraint_GetTotalLambdaPosition(const JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1447. JPH_CAPI void JPH_SixDOFConstraint_GetTotalLambdaRotation(const JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1448. JPH_CAPI void JPH_SixDOFConstraint_GetTotalLambdaMotorTranslation(const JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1449. JPH_CAPI void JPH_SixDOFConstraint_GetTotalLambdaMotorRotation(const JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1450. JPH_CAPI void JPH_SixDOFConstraint_GetTranslationLimitsMin(const JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1451. JPH_CAPI void JPH_SixDOFConstraint_GetTranslationLimitsMax(const JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1452. JPH_CAPI void JPH_SixDOFConstraint_GetRotationLimitsMin(const JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1453. JPH_CAPI void JPH_SixDOFConstraint_GetRotationLimitsMax(const JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1454. JPH_CAPI bool JPH_SixDOFConstraint_IsFixedAxis(const JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis);
  1455. JPH_CAPI bool JPH_SixDOFConstraint_IsFreeAxis(const JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis);
  1456. JPH_CAPI void JPH_SixDOFConstraint_GetLimitsSpringSettings(JPH_SixDOFConstraint* constraint, JPH_SpringSettings* result, JPH_SixDOFConstraintAxis axis);
  1457. JPH_CAPI void JPH_SixDOFConstraint_SetLimitsSpringSettings(JPH_SixDOFConstraint* constraint, JPH_SpringSettings* settings, JPH_SixDOFConstraintAxis axis);
  1458. JPH_CAPI void JPH_SixDOFConstraint_SetMaxFriction(JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis, float inFriction);
  1459. JPH_CAPI float JPH_SixDOFConstraint_GetMaxFriction(JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis);
  1460. JPH_CAPI void JPH_SixDOFConstraint_GetRotationInConstraintSpace(JPH_SixDOFConstraint* constraint, JPH_Quat* result);
  1461. JPH_CAPI void JPH_SixDOFConstraint_GetMotorSettings(JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis, JPH_MotorSettings* settings);
  1462. JPH_CAPI void JPH_SixDOFConstraint_SetMotorState(JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis, JPH_MotorState state);
  1463. JPH_CAPI JPH_MotorState JPH_SixDOFConstraint_GetMotorState(JPH_SixDOFConstraint* constraint, JPH_SixDOFConstraintAxis axis);
  1464. JPH_CAPI void JPH_SixDOFConstraint_SetTargetVelocityCS(JPH_SixDOFConstraint* constraint, JPH_Vec3* inVelocity);
  1465. JPH_CAPI void JPH_SixDOFConstraint_GetTargetVelocityCS(JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1466. JPH_CAPI void JPH_SixDOFConstraint_SetTargetAngularVelocityCS(JPH_SixDOFConstraint* constraint, JPH_Vec3* inAngularVelocity);
  1467. JPH_CAPI void JPH_SixDOFConstraint_GetTargetAngularVelocityCS(JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1468. JPH_CAPI void JPH_SixDOFConstraint_SetTargetPositionCS(JPH_SixDOFConstraint* constraint, JPH_Vec3* inPosition);
  1469. JPH_CAPI void JPH_SixDOFConstraint_GetTargetPositionCS(JPH_SixDOFConstraint* constraint, JPH_Vec3* result);
  1470. JPH_CAPI void JPH_SixDOFConstraint_SetTargetOrientationCS(JPH_SixDOFConstraint* constraint, JPH_Quat* inOrientation);
  1471. JPH_CAPI void JPH_SixDOFConstraint_GetTargetOrientationCS(JPH_SixDOFConstraint* constraint, JPH_Quat* result);
  1472. JPH_CAPI void JPH_SixDOFConstraint_SetTargetOrientationBS(JPH_SixDOFConstraint* constraint, JPH_Quat* inOrientation);
  1473. /* JPH_GearConstraint */
  1474. JPH_CAPI void JPH_GearConstraintSettings_Init(JPH_GearConstraintSettings* settings);
  1475. JPH_CAPI JPH_GearConstraint* JPH_GearConstraint_Create(const JPH_GearConstraintSettings* settings, JPH_Body* body1, JPH_Body* body2);
  1476. JPH_CAPI void JPH_GearConstraint_GetSettings(JPH_GearConstraint* constraint, JPH_GearConstraintSettings* settings);
  1477. JPH_CAPI void JPH_GearConstraint_SetConstraints(JPH_GearConstraint* constraint, const JPH_Constraint* gear1, const JPH_Constraint* gear2);
  1478. JPH_CAPI float JPH_GearConstraint_GetTotalLambda(const JPH_GearConstraint* constraint);
  1479. /* BodyInterface */
  1480. JPH_CAPI void JPH_BodyInterface_DestroyBody(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1481. JPH_CAPI JPH_BodyID JPH_BodyInterface_CreateAndAddBody(JPH_BodyInterface* bodyInterface, const JPH_BodyCreationSettings* settings, JPH_Activation activationMode);
  1482. JPH_CAPI JPH_Body* JPH_BodyInterface_CreateBody(JPH_BodyInterface* bodyInterface, const JPH_BodyCreationSettings* settings);
  1483. JPH_CAPI JPH_Body* JPH_BodyInterface_CreateBodyWithID(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, const JPH_BodyCreationSettings* settings);
  1484. JPH_CAPI JPH_Body* JPH_BodyInterface_CreateBodyWithoutID(JPH_BodyInterface* bodyInterface, const JPH_BodyCreationSettings* settings);
  1485. JPH_CAPI void JPH_BodyInterface_DestroyBodyWithoutID(JPH_BodyInterface* bodyInterface, JPH_Body* body);
  1486. JPH_CAPI bool JPH_BodyInterface_AssignBodyID(JPH_BodyInterface* bodyInterface, JPH_Body* body);
  1487. JPH_CAPI bool JPH_BodyInterface_AssignBodyID2(JPH_BodyInterface* bodyInterface, JPH_Body* body, JPH_BodyID bodyID);
  1488. JPH_CAPI JPH_Body* JPH_BodyInterface_UnassignBodyID(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1489. JPH_CAPI JPH_Body* JPH_BodyInterface_CreateSoftBody(JPH_BodyInterface* bodyInterface, const JPH_SoftBodyCreationSettings* settings);
  1490. JPH_CAPI JPH_Body* JPH_BodyInterface_CreateSoftBodyWithID(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, const JPH_SoftBodyCreationSettings* settings);
  1491. JPH_CAPI JPH_Body* JPH_BodyInterface_CreateSoftBodyWithoutID(JPH_BodyInterface* bodyInterface, const JPH_SoftBodyCreationSettings* settings);
  1492. JPH_CAPI JPH_BodyID JPH_BodyInterface_CreateAndAddSoftBody(JPH_BodyInterface* bodyInterface, const JPH_SoftBodyCreationSettings* settings, JPH_Activation activationMode);
  1493. JPH_CAPI void JPH_BodyInterface_AddBody(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, JPH_Activation activationMode);
  1494. JPH_CAPI void JPH_BodyInterface_RemoveBody(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1495. JPH_CAPI void JPH_BodyInterface_RemoveAndDestroyBody(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1496. JPH_CAPI bool JPH_BodyInterface_IsAdded(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1497. JPH_CAPI JPH_BodyType JPH_BodyInterface_GetBodyType(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1498. JPH_CAPI void JPH_BodyInterface_SetLinearVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, const JPH_Vec3* velocity);
  1499. JPH_CAPI void JPH_BodyInterface_GetLinearVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, JPH_Vec3* velocity);
  1500. JPH_CAPI void JPH_BodyInterface_GetCenterOfMassPosition(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, JPH_RVec3* position);
  1501. JPH_CAPI JPH_MotionType JPH_BodyInterface_GetMotionType(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1502. JPH_CAPI void JPH_BodyInterface_SetMotionType(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, JPH_MotionType motionType, JPH_Activation activationMode);
  1503. JPH_CAPI float JPH_BodyInterface_GetRestitution(const JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1504. JPH_CAPI void JPH_BodyInterface_SetRestitution(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, float restitution);
  1505. JPH_CAPI float JPH_BodyInterface_GetFriction(const JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID);
  1506. JPH_CAPI void JPH_BodyInterface_SetFriction(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyID, float friction);
  1507. JPH_CAPI void JPH_BodyInterface_SetPosition(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_RVec3* position, JPH_Activation activationMode);
  1508. JPH_CAPI void JPH_BodyInterface_GetPosition(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_RVec3* result);
  1509. JPH_CAPI void JPH_BodyInterface_SetRotation(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Quat* rotation, JPH_Activation activationMode);
  1510. JPH_CAPI void JPH_BodyInterface_GetRotation(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Quat* result);
  1511. JPH_CAPI void JPH_BodyInterface_SetPositionAndRotation(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, const JPH_RVec3* position, const JPH_Quat* rotation, JPH_Activation activationMode);
  1512. JPH_CAPI void JPH_BodyInterface_SetPositionAndRotationWhenChanged(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, const JPH_RVec3* position, const JPH_Quat* rotation, JPH_Activation activationMode);
  1513. JPH_CAPI void JPH_BodyInterface_GetPositionAndRotation(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_RVec3* position, JPH_Quat* rotation);
  1514. JPH_CAPI void JPH_BodyInterface_SetPositionRotationAndVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_RVec3* position, JPH_Quat* rotation, JPH_Vec3* linearVelocity, JPH_Vec3* angularVelocity);
  1515. JPH_CAPI void JPH_BodyInterface_GetCollisionGroup(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_CollisionGroup* result);
  1516. JPH_CAPI void JPH_BodyInterface_SetCollisionGroup(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, const JPH_CollisionGroup* group);
  1517. JPH_CAPI const JPH_Shape* JPH_BodyInterface_GetShape(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId);
  1518. JPH_CAPI void JPH_BodyInterface_SetShape(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, const JPH_Shape* shape, bool updateMassProperties, JPH_Activation activationMode);
  1519. JPH_CAPI void JPH_BodyInterface_NotifyShapeChanged(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* previousCenterOfMass, bool updateMassProperties, JPH_Activation activationMode);
  1520. JPH_CAPI void JPH_BodyInterface_ActivateBody(JPH_BodyInterface* bodyInterface, const JPH_BodyID bodyId);
  1521. JPH_CAPI void JPH_BodyInterface_ActivateBodies(JPH_BodyInterface* bodyInterface, const JPH_BodyID* bodyIDs, uint32_t count);
  1522. JPH_CAPI void JPH_BodyInterface_ActivateBodiesInAABox(JPH_BodyInterface* bodyInterface, const JPH_AABox* box, const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter, const JPH_ObjectLayerFilter* objectLayerFilter);
  1523. JPH_CAPI void JPH_BodyInterface_DeactivateBody(JPH_BodyInterface* bodyInterface, const JPH_BodyID bodyId);
  1524. JPH_CAPI void JPH_BodyInterface_DeactivateBodies(JPH_BodyInterface* bodyInterface, const JPH_BodyID* bodyIDs, uint32_t count);
  1525. JPH_CAPI bool JPH_BodyInterface_IsActive(const JPH_BodyInterface* bodyInterface, const JPH_BodyID bodyID);
  1526. JPH_CAPI void JPH_BodyInterface_ResetSleepTimer(JPH_BodyInterface* bodyInterface, const JPH_BodyID bodyID);
  1527. JPH_CAPI JPH_ObjectLayer JPH_BodyInterface_GetObjectLayer(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId);
  1528. JPH_CAPI void JPH_BodyInterface_SetObjectLayer(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_ObjectLayer layer);
  1529. JPH_CAPI void JPH_BodyInterface_GetWorldTransform(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_RMat4* result);
  1530. JPH_CAPI void JPH_BodyInterface_GetCenterOfMassTransform(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_RMat4* result);
  1531. JPH_CAPI void JPH_BodyInterface_MoveKinematic(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_RVec3* targetPosition, JPH_Quat* targetRotation, float deltaTime);
  1532. JPH_CAPI bool JPH_BodyInterface_ApplyBuoyancyImpulse(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, const JPH_RVec3* surfacePosition, const JPH_Vec3* surfaceNormal, float buoyancy, float linearDrag, float angularDrag, const JPH_Vec3* fluidVelocity, const JPH_Vec3* gravity, float deltaTime);
  1533. JPH_CAPI void JPH_BodyInterface_SetLinearAndAngularVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* linearVelocity, JPH_Vec3* angularVelocity);
  1534. JPH_CAPI void JPH_BodyInterface_GetLinearAndAngularVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* linearVelocity, JPH_Vec3* angularVelocity);
  1535. JPH_CAPI void JPH_BodyInterface_AddLinearVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* linearVelocity);
  1536. JPH_CAPI void JPH_BodyInterface_AddLinearAndAngularVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* linearVelocity, JPH_Vec3* angularVelocity);
  1537. JPH_CAPI void JPH_BodyInterface_SetAngularVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* angularVelocity);
  1538. JPH_CAPI void JPH_BodyInterface_GetAngularVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* angularVelocity);
  1539. JPH_CAPI void JPH_BodyInterface_GetPointVelocity(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_RVec3* point, JPH_Vec3* velocity);
  1540. JPH_CAPI void JPH_BodyInterface_AddForce(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* force);
  1541. JPH_CAPI void JPH_BodyInterface_AddForce2(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* force, JPH_RVec3* point);
  1542. JPH_CAPI void JPH_BodyInterface_AddTorque(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* torque);
  1543. JPH_CAPI void JPH_BodyInterface_AddForceAndTorque(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* force, JPH_Vec3* torque);
  1544. JPH_CAPI void JPH_BodyInterface_AddImpulse(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* impulse);
  1545. JPH_CAPI void JPH_BodyInterface_AddImpulse2(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* impulse, JPH_RVec3* point);
  1546. JPH_CAPI void JPH_BodyInterface_AddAngularImpulse(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Vec3* angularImpulse);
  1547. JPH_CAPI void JPH_BodyInterface_SetMotionQuality(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_MotionQuality quality);
  1548. JPH_CAPI JPH_MotionQuality JPH_BodyInterface_GetMotionQuality(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId);
  1549. JPH_CAPI void JPH_BodyInterface_GetInverseInertia(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_Mat4* result);
  1550. JPH_CAPI void JPH_BodyInterface_SetGravityFactor(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, float value);
  1551. JPH_CAPI float JPH_BodyInterface_GetGravityFactor(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId);
  1552. JPH_CAPI void JPH_BodyInterface_SetUseManifoldReduction(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, bool value);
  1553. JPH_CAPI bool JPH_BodyInterface_GetUseManifoldReduction(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId);
  1554. JPH_CAPI void JPH_BodyInterface_SetUserData(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, uint64_t inUserData);
  1555. JPH_CAPI uint64_t JPH_BodyInterface_GetUserData(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId);
  1556. JPH_CAPI void JPH_BodyInterface_SetIsSensor(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, bool value);
  1557. JPH_CAPI bool JPH_BodyInterface_IsSensor(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId);
  1558. JPH_CAPI const JPH_PhysicsMaterial* JPH_BodyInterface_GetMaterial(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId, JPH_SubShapeID subShapeID);
  1559. JPH_CAPI void JPH_BodyInterface_InvalidateContactCache(JPH_BodyInterface* bodyInterface, JPH_BodyID bodyId);
  1560. //--------------------------------------------------------------------------------------------------
  1561. // JPH_BodyLockInterface
  1562. //--------------------------------------------------------------------------------------------------
  1563. JPH_CAPI void JPH_BodyLockInterface_LockRead(const JPH_BodyLockInterface* lockInterface, JPH_BodyID bodyID, JPH_BodyLockRead* outLock);
  1564. JPH_CAPI void JPH_BodyLockInterface_UnlockRead(const JPH_BodyLockInterface* lockInterface, JPH_BodyLockRead* ioLock);
  1565. JPH_CAPI void JPH_BodyLockInterface_LockWrite(const JPH_BodyLockInterface* lockInterface, JPH_BodyID bodyID, JPH_BodyLockWrite* outLock);
  1566. JPH_CAPI void JPH_BodyLockInterface_UnlockWrite(const JPH_BodyLockInterface* lockInterface, JPH_BodyLockWrite* ioLock);
  1567. JPH_CAPI JPH_BodyLockMultiRead* JPH_BodyLockInterface_LockMultiRead(const JPH_BodyLockInterface* lockInterface, const JPH_BodyID* bodyIDs, uint32_t count);
  1568. JPH_CAPI void JPH_BodyLockMultiRead_Destroy(JPH_BodyLockMultiRead* ioLock);
  1569. JPH_CAPI const JPH_Body* JPH_BodyLockMultiRead_GetBody(JPH_BodyLockMultiRead* ioLock, uint32_t bodyIndex);
  1570. JPH_CAPI JPH_BodyLockMultiWrite* JPH_BodyLockInterface_LockMultiWrite(const JPH_BodyLockInterface* lockInterface, const JPH_BodyID* bodyIDs, uint32_t count);
  1571. JPH_CAPI void JPH_BodyLockMultiWrite_Destroy(JPH_BodyLockMultiWrite* ioLock);
  1572. JPH_CAPI JPH_Body* JPH_BodyLockMultiWrite_GetBody(JPH_BodyLockMultiWrite* ioLock, uint32_t bodyIndex);
  1573. //--------------------------------------------------------------------------------------------------
  1574. // JPH_MotionProperties
  1575. //--------------------------------------------------------------------------------------------------
  1576. JPH_CAPI JPH_AllowedDOFs JPH_MotionProperties_GetAllowedDOFs(const JPH_MotionProperties* properties);
  1577. JPH_CAPI void JPH_MotionProperties_SetLinearDamping(JPH_MotionProperties* properties, float damping);
  1578. JPH_CAPI float JPH_MotionProperties_GetLinearDamping(const JPH_MotionProperties* properties);
  1579. JPH_CAPI void JPH_MotionProperties_SetAngularDamping(JPH_MotionProperties* properties, float damping);
  1580. JPH_CAPI float JPH_MotionProperties_GetAngularDamping(const JPH_MotionProperties* properties);
  1581. JPH_CAPI void JPH_MotionProperties_SetMassProperties(JPH_MotionProperties* properties, JPH_AllowedDOFs allowedDOFs, const JPH_MassProperties* massProperties);
  1582. JPH_CAPI float JPH_MotionProperties_GetInverseMassUnchecked(JPH_MotionProperties* properties);
  1583. JPH_CAPI void JPH_MotionProperties_SetInverseMass(JPH_MotionProperties* properties, float inverseMass);
  1584. JPH_CAPI void JPH_MotionProperties_GetInverseInertiaDiagonal(JPH_MotionProperties* properties, JPH_Vec3* result);
  1585. JPH_CAPI void JPH_MotionProperties_GetInertiaRotation(JPH_MotionProperties* properties, JPH_Quat* result);
  1586. JPH_CAPI void JPH_MotionProperties_SetInverseInertia(JPH_MotionProperties* properties, JPH_Vec3* diagonal, JPH_Quat* rot);
  1587. JPH_CAPI void JPH_MotionProperties_ScaleToMass(JPH_MotionProperties* properties, float mass);
  1588. //--------------------------------------------------------------------------------------------------
  1589. // JPH_RayCast
  1590. //--------------------------------------------------------------------------------------------------
  1591. JPH_CAPI void JPH_RayCast_GetPointOnRay(const JPH_Vec3* origin, const JPH_Vec3* direction, float fraction, JPH_Vec3* result);
  1592. JPH_CAPI void JPH_RRayCast_GetPointOnRay(const JPH_RVec3* origin, const JPH_Vec3* direction, float fraction, JPH_RVec3* result);
  1593. //--------------------------------------------------------------------------------------------------
  1594. // JPH_MassProperties
  1595. //--------------------------------------------------------------------------------------------------
  1596. JPH_CAPI void JPH_MassProperties_DecomposePrincipalMomentsOfInertia(JPH_MassProperties* properties, JPH_Mat4* rotation, JPH_Vec3* diagonal);
  1597. JPH_CAPI void JPH_MassProperties_ScaleToMass(JPH_MassProperties* properties, float mass);
  1598. JPH_CAPI void JPH_MassProperties_GetEquivalentSolidBoxSize(float mass, const JPH_Vec3* inertiaDiagonal, JPH_Vec3* result);
  1599. //--------------------------------------------------------------------------------------------------
  1600. // JPH_CollideShapeSettings
  1601. //--------------------------------------------------------------------------------------------------
  1602. JPH_CAPI void JPH_CollideShapeSettings_Init(JPH_CollideShapeSettings* settings);
  1603. //--------------------------------------------------------------------------------------------------
  1604. // JPH_ShapeCastSettings
  1605. //--------------------------------------------------------------------------------------------------
  1606. JPH_CAPI void JPH_ShapeCastSettings_Init(JPH_ShapeCastSettings* settings);
  1607. //--------------------------------------------------------------------------------------------------
  1608. // JPH_BroadPhaseQuery
  1609. //--------------------------------------------------------------------------------------------------
  1610. JPH_CAPI bool JPH_BroadPhaseQuery_CastRay(const JPH_BroadPhaseQuery* query,
  1611. const JPH_Vec3* origin, const JPH_Vec3* direction,
  1612. JPH_RayCastBodyCollectorCallback* callback, void* userData,
  1613. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1614. const JPH_ObjectLayerFilter* objectLayerFilter);
  1615. JPH_CAPI bool JPH_BroadPhaseQuery_CastRay2(const JPH_BroadPhaseQuery* query,
  1616. const JPH_Vec3* origin, const JPH_Vec3* direction,
  1617. JPH_CollisionCollectorType collectorType,
  1618. JPH_RayCastBodyResultCallback* callback, void* userData,
  1619. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1620. const JPH_ObjectLayerFilter* objectLayerFilter);
  1621. JPH_CAPI bool JPH_BroadPhaseQuery_CollideAABox(const JPH_BroadPhaseQuery* query,
  1622. const JPH_AABox* box, JPH_CollideShapeBodyCollectorCallback* callback, void* userData,
  1623. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1624. const JPH_ObjectLayerFilter* objectLayerFilter);
  1625. JPH_CAPI bool JPH_BroadPhaseQuery_CollideSphere(const JPH_BroadPhaseQuery* query,
  1626. const JPH_Vec3* center, float radius, JPH_CollideShapeBodyCollectorCallback* callback, void* userData,
  1627. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1628. const JPH_ObjectLayerFilter* objectLayerFilter);
  1629. JPH_CAPI bool JPH_BroadPhaseQuery_CollidePoint(const JPH_BroadPhaseQuery* query,
  1630. const JPH_Vec3* point, JPH_CollideShapeBodyCollectorCallback* callback, void* userData,
  1631. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1632. const JPH_ObjectLayerFilter* objectLayerFilter);
  1633. //--------------------------------------------------------------------------------------------------
  1634. // JPH_NarrowPhaseQuery
  1635. //--------------------------------------------------------------------------------------------------
  1636. JPH_CAPI bool JPH_NarrowPhaseQuery_CastRay(const JPH_NarrowPhaseQuery* query,
  1637. const JPH_RVec3* origin, const JPH_Vec3* direction,
  1638. JPH_RayCastResult* hit,
  1639. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1640. const JPH_ObjectLayerFilter* objectLayerFilter,
  1641. const JPH_BodyFilter* bodyFilter);
  1642. JPH_CAPI bool JPH_NarrowPhaseQuery_CastRay2(const JPH_NarrowPhaseQuery* query,
  1643. const JPH_RVec3* origin, const JPH_Vec3* direction,
  1644. const JPH_RayCastSettings* rayCastSettings,
  1645. JPH_CastRayCollectorCallback* callback, void* userData,
  1646. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1647. const JPH_ObjectLayerFilter* objectLayerFilter,
  1648. const JPH_BodyFilter* bodyFilter,
  1649. const JPH_ShapeFilter* shapeFilter);
  1650. JPH_CAPI bool JPH_NarrowPhaseQuery_CastRay3(const JPH_NarrowPhaseQuery* query,
  1651. const JPH_RVec3* origin, const JPH_Vec3* direction,
  1652. const JPH_RayCastSettings* rayCastSettings,
  1653. JPH_CollisionCollectorType collectorType,
  1654. JPH_CastRayResultCallback* callback, void* userData,
  1655. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1656. const JPH_ObjectLayerFilter* objectLayerFilter,
  1657. const JPH_BodyFilter* bodyFilter,
  1658. const JPH_ShapeFilter* shapeFilter);
  1659. JPH_CAPI bool JPH_NarrowPhaseQuery_CollidePoint(const JPH_NarrowPhaseQuery* query,
  1660. const JPH_RVec3* point,
  1661. JPH_CollidePointCollectorCallback* callback, void* userData,
  1662. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1663. const JPH_ObjectLayerFilter* objectLayerFilter,
  1664. const JPH_BodyFilter* bodyFilter,
  1665. const JPH_ShapeFilter* shapeFilter);
  1666. JPH_CAPI bool JPH_NarrowPhaseQuery_CollidePoint2(const JPH_NarrowPhaseQuery* query,
  1667. const JPH_RVec3* point,
  1668. JPH_CollisionCollectorType collectorType,
  1669. JPH_CollidePointResultCallback* callback, void* userData,
  1670. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1671. const JPH_ObjectLayerFilter* objectLayerFilter,
  1672. const JPH_BodyFilter* bodyFilter,
  1673. const JPH_ShapeFilter* shapeFilter);
  1674. JPH_CAPI bool JPH_NarrowPhaseQuery_CollideShape(const JPH_NarrowPhaseQuery* query,
  1675. const JPH_Shape* shape, const JPH_Vec3* scale, const JPH_RMat4* centerOfMassTransform,
  1676. const JPH_CollideShapeSettings* settings,
  1677. JPH_RVec3* baseOffset,
  1678. JPH_CollideShapeCollectorCallback* callback, void* userData,
  1679. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1680. const JPH_ObjectLayerFilter* objectLayerFilter,
  1681. const JPH_BodyFilter* bodyFilter,
  1682. const JPH_ShapeFilter* shapeFilter);
  1683. JPH_CAPI bool JPH_NarrowPhaseQuery_CollideShape2(const JPH_NarrowPhaseQuery* query,
  1684. const JPH_Shape* shape, const JPH_Vec3* scale, const JPH_RMat4* centerOfMassTransform,
  1685. const JPH_CollideShapeSettings* settings,
  1686. JPH_RVec3* baseOffset,
  1687. JPH_CollisionCollectorType collectorType,
  1688. JPH_CollideShapeResultCallback* callback, void* userData,
  1689. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1690. const JPH_ObjectLayerFilter* objectLayerFilter,
  1691. const JPH_BodyFilter* bodyFilter,
  1692. const JPH_ShapeFilter* shapeFilter);
  1693. JPH_CAPI bool JPH_NarrowPhaseQuery_CastShape(const JPH_NarrowPhaseQuery* query,
  1694. const JPH_Shape* shape,
  1695. const JPH_RMat4* worldTransform, const JPH_Vec3* direction,
  1696. const JPH_ShapeCastSettings* settings,
  1697. JPH_RVec3* baseOffset,
  1698. JPH_CastShapeCollectorCallback* callback, void* userData,
  1699. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1700. const JPH_ObjectLayerFilter* objectLayerFilter,
  1701. const JPH_BodyFilter* bodyFilter,
  1702. const JPH_ShapeFilter* shapeFilter);
  1703. JPH_CAPI bool JPH_NarrowPhaseQuery_CastShape2(const JPH_NarrowPhaseQuery* query,
  1704. const JPH_Shape* shape,
  1705. const JPH_RMat4* worldTransform, const JPH_Vec3* direction,
  1706. const JPH_ShapeCastSettings* settings,
  1707. JPH_RVec3* baseOffset,
  1708. JPH_CollisionCollectorType collectorType,
  1709. JPH_CastShapeResultCallback* callback, void* userData,
  1710. const JPH_BroadPhaseLayerFilter* broadPhaseLayerFilter,
  1711. const JPH_ObjectLayerFilter* objectLayerFilter,
  1712. const JPH_BodyFilter* bodyFilter,
  1713. const JPH_ShapeFilter* shapeFilter);
  1714. //--------------------------------------------------------------------------------------------------
  1715. // JPH_Body
  1716. //--------------------------------------------------------------------------------------------------
  1717. JPH_CAPI JPH_BodyID JPH_Body_GetID(const JPH_Body* body);
  1718. JPH_CAPI JPH_BodyType JPH_Body_GetBodyType(const JPH_Body* body);
  1719. JPH_CAPI bool JPH_Body_IsRigidBody(const JPH_Body* body);
  1720. JPH_CAPI bool JPH_Body_IsSoftBody(const JPH_Body* body);
  1721. JPH_CAPI bool JPH_Body_IsActive(const JPH_Body* body);
  1722. JPH_CAPI bool JPH_Body_IsStatic(const JPH_Body* body);
  1723. JPH_CAPI bool JPH_Body_IsKinematic(const JPH_Body* body);
  1724. JPH_CAPI bool JPH_Body_IsDynamic(const JPH_Body* body);
  1725. JPH_CAPI bool JPH_Body_CanBeKinematicOrDynamic(const JPH_Body* body);
  1726. JPH_CAPI void JPH_Body_SetIsSensor(JPH_Body* body, bool value);
  1727. JPH_CAPI bool JPH_Body_IsSensor(const JPH_Body* body);
  1728. JPH_CAPI void JPH_Body_SetCollideKinematicVsNonDynamic(JPH_Body* body, bool value);
  1729. JPH_CAPI bool JPH_Body_GetCollideKinematicVsNonDynamic(const JPH_Body* body);
  1730. JPH_CAPI void JPH_Body_SetUseManifoldReduction(JPH_Body* body, bool value);
  1731. JPH_CAPI bool JPH_Body_GetUseManifoldReduction(const JPH_Body* body);
  1732. JPH_CAPI bool JPH_Body_GetUseManifoldReductionWithBody(const JPH_Body* body, const JPH_Body* other);
  1733. JPH_CAPI void JPH_Body_SetApplyGyroscopicForce(JPH_Body* body, bool value);
  1734. JPH_CAPI bool JPH_Body_GetApplyGyroscopicForce(const JPH_Body* body);
  1735. JPH_CAPI void JPH_Body_SetEnhancedInternalEdgeRemoval(JPH_Body* body, bool value);
  1736. JPH_CAPI bool JPH_Body_GetEnhancedInternalEdgeRemoval(const JPH_Body* body);
  1737. JPH_CAPI bool JPH_Body_GetEnhancedInternalEdgeRemovalWithBody(const JPH_Body* body, const JPH_Body* other);
  1738. JPH_CAPI JPH_MotionType JPH_Body_GetMotionType(const JPH_Body* body);
  1739. JPH_CAPI void JPH_Body_SetMotionType(JPH_Body* body, JPH_MotionType motionType);
  1740. JPH_CAPI JPH_BroadPhaseLayer JPH_Body_GetBroadPhaseLayer(const JPH_Body* body);
  1741. JPH_CAPI JPH_ObjectLayer JPH_Body_GetObjectLayer(const JPH_Body* body);
  1742. JPH_CAPI void JPH_Body_GetCollisionGroup(const JPH_Body* body, JPH_CollisionGroup* result);
  1743. JPH_CAPI void JPH_Body_SetCollisionGroup(JPH_Body* body, const JPH_CollisionGroup* value);
  1744. JPH_CAPI bool JPH_Body_GetAllowSleeping(JPH_Body* body);
  1745. JPH_CAPI void JPH_Body_SetAllowSleeping(JPH_Body* body, bool allowSleeping);
  1746. JPH_CAPI void JPH_Body_ResetSleepTimer(JPH_Body* body);
  1747. JPH_CAPI float JPH_Body_GetFriction(const JPH_Body* body);
  1748. JPH_CAPI void JPH_Body_SetFriction(JPH_Body* body, float friction);
  1749. JPH_CAPI float JPH_Body_GetRestitution(const JPH_Body* body);
  1750. JPH_CAPI void JPH_Body_SetRestitution(JPH_Body* body, float restitution);
  1751. JPH_CAPI void JPH_Body_GetLinearVelocity(JPH_Body* body, JPH_Vec3* velocity);
  1752. JPH_CAPI void JPH_Body_SetLinearVelocity(JPH_Body* body, const JPH_Vec3* velocity);
  1753. JPH_CAPI void JPH_Body_SetLinearVelocityClamped(JPH_Body* body, const JPH_Vec3* velocity);
  1754. JPH_CAPI void JPH_Body_GetAngularVelocity(JPH_Body* body, JPH_Vec3* velocity);
  1755. JPH_CAPI void JPH_Body_SetAngularVelocity(JPH_Body* body, const JPH_Vec3* velocity);
  1756. JPH_CAPI void JPH_Body_SetAngularVelocityClamped(JPH_Body* body, const JPH_Vec3* velocity);
  1757. JPH_CAPI void JPH_Body_GetPointVelocityCOM(JPH_Body* body, const JPH_Vec3* pointRelativeToCOM, JPH_Vec3* velocity);
  1758. JPH_CAPI void JPH_Body_GetPointVelocity(JPH_Body* body, const JPH_RVec3* point, JPH_Vec3* velocity);
  1759. JPH_CAPI void JPH_Body_AddForce(JPH_Body* body, const JPH_Vec3* force);
  1760. JPH_CAPI void JPH_Body_AddForceAtPosition(JPH_Body* body, const JPH_Vec3* force, const JPH_RVec3* position);
  1761. JPH_CAPI void JPH_Body_AddTorque(JPH_Body* body, const JPH_Vec3* force);
  1762. JPH_CAPI void JPH_Body_GetAccumulatedForce(JPH_Body* body, JPH_Vec3* force);
  1763. JPH_CAPI void JPH_Body_GetAccumulatedTorque(JPH_Body* body, JPH_Vec3* force);
  1764. JPH_CAPI void JPH_Body_ResetForce(JPH_Body* body);
  1765. JPH_CAPI void JPH_Body_ResetTorque(JPH_Body* body);
  1766. JPH_CAPI void JPH_Body_ResetMotion(JPH_Body* body);
  1767. JPH_CAPI void JPH_Body_GetInverseInertia(JPH_Body* body, JPH_Mat4* result);
  1768. JPH_CAPI void JPH_Body_AddImpulse(JPH_Body* body, const JPH_Vec3* impulse);
  1769. JPH_CAPI void JPH_Body_AddImpulseAtPosition(JPH_Body* body, const JPH_Vec3* impulse, const JPH_RVec3* position);
  1770. JPH_CAPI void JPH_Body_AddAngularImpulse(JPH_Body* body, const JPH_Vec3* angularImpulse);
  1771. JPH_CAPI void JPH_Body_MoveKinematic(JPH_Body* body, JPH_RVec3* targetPosition, JPH_Quat* targetRotation, float deltaTime);
  1772. JPH_CAPI bool JPH_Body_ApplyBuoyancyImpulse(JPH_Body* body, const JPH_RVec3* surfacePosition, const JPH_Vec3* surfaceNormal, float buoyancy, float linearDrag, float angularDrag, const JPH_Vec3* fluidVelocity, const JPH_Vec3* gravity, float deltaTime);
  1773. JPH_CAPI bool JPH_Body_IsInBroadPhase(JPH_Body* body);
  1774. JPH_CAPI bool JPH_Body_IsCollisionCacheInvalid(JPH_Body* body);
  1775. JPH_CAPI const JPH_Shape* JPH_Body_GetShape(JPH_Body* body);
  1776. JPH_CAPI void JPH_Body_GetPosition(const JPH_Body* body, JPH_RVec3* result);
  1777. JPH_CAPI void JPH_Body_GetRotation(const JPH_Body* body, JPH_Quat* result);
  1778. JPH_CAPI void JPH_Body_GetWorldTransform(const JPH_Body* body, JPH_RMat4* result);
  1779. JPH_CAPI void JPH_Body_GetCenterOfMassPosition(const JPH_Body* body, JPH_RVec3* result);
  1780. JPH_CAPI void JPH_Body_GetCenterOfMassTransform(const JPH_Body* body, JPH_RMat4* result);
  1781. JPH_CAPI void JPH_Body_GetInverseCenterOfMassTransform(const JPH_Body* body, JPH_RMat4* result);
  1782. JPH_CAPI void JPH_Body_GetWorldSpaceBounds(const JPH_Body* body, JPH_AABox* result);
  1783. JPH_CAPI void JPH_Body_GetWorldSpaceSurfaceNormal(const JPH_Body* body, JPH_SubShapeID subShapeID, const JPH_RVec3* position, JPH_Vec3* normal);
  1784. JPH_CAPI JPH_MotionProperties* JPH_Body_GetMotionProperties(JPH_Body* body);
  1785. JPH_CAPI JPH_MotionProperties* JPH_Body_GetMotionPropertiesUnchecked(JPH_Body* body);
  1786. JPH_CAPI void JPH_Body_SetUserData(JPH_Body* body, uint64_t userData);
  1787. JPH_CAPI uint64_t JPH_Body_GetUserData(JPH_Body* body);
  1788. JPH_CAPI JPH_Body* JPH_Body_GetFixedToWorldBody(void);
  1789. /* JPH_BroadPhaseLayerFilter_Procs */
  1790. typedef struct JPH_BroadPhaseLayerFilter_Procs {
  1791. bool(JPH_API_CALL* ShouldCollide)(void* userData, JPH_BroadPhaseLayer layer);
  1792. } JPH_BroadPhaseLayerFilter_Procs;
  1793. JPH_CAPI void JPH_BroadPhaseLayerFilter_SetProcs(const JPH_BroadPhaseLayerFilter_Procs* procs);
  1794. JPH_CAPI JPH_BroadPhaseLayerFilter* JPH_BroadPhaseLayerFilter_Create(void* userData);
  1795. JPH_CAPI void JPH_BroadPhaseLayerFilter_Destroy(JPH_BroadPhaseLayerFilter* filter);
  1796. /* JPH_ObjectLayerFilter */
  1797. typedef struct JPH_ObjectLayerFilter_Procs {
  1798. bool(JPH_API_CALL* ShouldCollide)(void* userData, JPH_ObjectLayer layer);
  1799. } JPH_ObjectLayerFilter_Procs;
  1800. JPH_CAPI void JPH_ObjectLayerFilter_SetProcs(const JPH_ObjectLayerFilter_Procs* procs);
  1801. JPH_CAPI JPH_ObjectLayerFilter* JPH_ObjectLayerFilter_Create(void* userData);
  1802. JPH_CAPI void JPH_ObjectLayerFilter_Destroy(JPH_ObjectLayerFilter* filter);
  1803. /* JPH_BodyFilter */
  1804. typedef struct JPH_BodyFilter_Procs {
  1805. bool(JPH_API_CALL* ShouldCollide)(void* userData, JPH_BodyID bodyID);
  1806. bool(JPH_API_CALL* ShouldCollideLocked)(void* userData, const JPH_Body* bodyID);
  1807. } JPH_BodyFilter_Procs;
  1808. JPH_CAPI void JPH_BodyFilter_SetProcs(const JPH_BodyFilter_Procs* procs);
  1809. JPH_CAPI JPH_BodyFilter* JPH_BodyFilter_Create(void* userData);
  1810. JPH_CAPI void JPH_BodyFilter_Destroy(JPH_BodyFilter* filter);
  1811. /* JPH_ShapeFilter */
  1812. typedef struct JPH_ShapeFilter_Procs {
  1813. bool(JPH_API_CALL* ShouldCollide)(void* userData, const JPH_Shape* shape2, const JPH_SubShapeID* subShapeIDOfShape2);
  1814. bool(JPH_API_CALL* ShouldCollide2)(void* userData, const JPH_Shape* shape1, const JPH_SubShapeID* subShapeIDOfShape1, const JPH_Shape* shape2, const JPH_SubShapeID* subShapeIDOfShape2);
  1815. } JPH_ShapeFilter_Procs;
  1816. JPH_CAPI void JPH_ShapeFilter_SetProcs(const JPH_ShapeFilter_Procs* procs);
  1817. JPH_CAPI JPH_ShapeFilter* JPH_ShapeFilter_Create(void* userData);
  1818. JPH_CAPI void JPH_ShapeFilter_Destroy(JPH_ShapeFilter* filter);
  1819. JPH_CAPI JPH_BodyID JPH_ShapeFilter_GetBodyID2(JPH_ShapeFilter* filter);
  1820. JPH_CAPI void JPH_ShapeFilter_SetBodyID2(JPH_ShapeFilter* filter, JPH_BodyID id);
  1821. /* JPH_SimShapeFilter */
  1822. typedef struct JPH_SimShapeFilter_Procs {
  1823. bool(JPH_API_CALL* ShouldCollide)(void* userData,
  1824. const JPH_Body* body1,
  1825. const JPH_Shape* shape1,
  1826. const JPH_SubShapeID* subShapeIDOfShape1,
  1827. const JPH_Body* body2,
  1828. const JPH_Shape* shape2,
  1829. const JPH_SubShapeID* subShapeIDOfShape2
  1830. );
  1831. } JPH_SimShapeFilter_Procs;
  1832. JPH_CAPI void JPH_SimShapeFilter_SetProcs(const JPH_SimShapeFilter_Procs* procs);
  1833. JPH_CAPI JPH_SimShapeFilter* JPH_SimShapeFilter_Create(void* userData);
  1834. JPH_CAPI void JPH_SimShapeFilter_Destroy(JPH_SimShapeFilter* filter);
  1835. /* Contact listener */
  1836. typedef struct JPH_ContactListener_Procs {
  1837. JPH_ValidateResult(JPH_API_CALL* OnContactValidate)(void* userData,
  1838. const JPH_Body* body1,
  1839. const JPH_Body* body2,
  1840. const JPH_RVec3* baseOffset,
  1841. const JPH_CollideShapeResult* collisionResult);
  1842. void(JPH_API_CALL* OnContactAdded)(void* userData,
  1843. const JPH_Body* body1,
  1844. const JPH_Body* body2,
  1845. const JPH_ContactManifold* manifold,
  1846. JPH_ContactSettings* settings);
  1847. void(JPH_API_CALL* OnContactPersisted)(void* userData,
  1848. const JPH_Body* body1,
  1849. const JPH_Body* body2,
  1850. const JPH_ContactManifold* manifold,
  1851. JPH_ContactSettings* settings);
  1852. void(JPH_API_CALL* OnContactRemoved)(void* userData,
  1853. const JPH_SubShapeIDPair* subShapePair
  1854. );
  1855. } JPH_ContactListener_Procs;
  1856. JPH_CAPI void JPH_ContactListener_SetProcs(const JPH_ContactListener_Procs* procs);
  1857. JPH_CAPI JPH_ContactListener* JPH_ContactListener_Create(void* userData);
  1858. JPH_CAPI void JPH_ContactListener_Destroy(JPH_ContactListener* listener);
  1859. /* BodyActivationListener */
  1860. typedef struct JPH_BodyActivationListener_Procs {
  1861. void(JPH_API_CALL* OnBodyActivated)(void* userData, JPH_BodyID bodyID, uint64_t bodyUserData);
  1862. void(JPH_API_CALL* OnBodyDeactivated)(void* userData, JPH_BodyID bodyID, uint64_t bodyUserData);
  1863. } JPH_BodyActivationListener_Procs;
  1864. JPH_CAPI void JPH_BodyActivationListener_SetProcs(const JPH_BodyActivationListener_Procs* procs);
  1865. JPH_CAPI JPH_BodyActivationListener* JPH_BodyActivationListener_Create(void* userData);
  1866. JPH_CAPI void JPH_BodyActivationListener_Destroy(JPH_BodyActivationListener* listener);
  1867. /* JPH_BodyDrawFilter */
  1868. typedef struct JPH_BodyDrawFilter_Procs {
  1869. bool(JPH_API_CALL* ShouldDraw)(void* userData, const JPH_Body* body);
  1870. } JPH_BodyDrawFilter_Procs;
  1871. JPH_CAPI void JPH_BodyDrawFilter_SetProcs(const JPH_BodyDrawFilter_Procs* procs);
  1872. JPH_CAPI JPH_BodyDrawFilter* JPH_BodyDrawFilter_Create(void* userData);
  1873. JPH_CAPI void JPH_BodyDrawFilter_Destroy(JPH_BodyDrawFilter* filter);
  1874. /* ContactManifold */
  1875. JPH_CAPI void JPH_ContactManifold_GetWorldSpaceNormal(const JPH_ContactManifold* manifold, JPH_Vec3* result);
  1876. JPH_CAPI float JPH_ContactManifold_GetPenetrationDepth(const JPH_ContactManifold* manifold);
  1877. JPH_CAPI JPH_SubShapeID JPH_ContactManifold_GetSubShapeID1(const JPH_ContactManifold* manifold);
  1878. JPH_CAPI JPH_SubShapeID JPH_ContactManifold_GetSubShapeID2(const JPH_ContactManifold* manifold);
  1879. JPH_CAPI uint32_t JPH_ContactManifold_GetPointCount(const JPH_ContactManifold* manifold);
  1880. JPH_CAPI void JPH_ContactManifold_GetWorldSpaceContactPointOn1(const JPH_ContactManifold* manifold, uint32_t index, JPH_RVec3* result);
  1881. JPH_CAPI void JPH_ContactManifold_GetWorldSpaceContactPointOn2(const JPH_ContactManifold* manifold, uint32_t index, JPH_RVec3* result);
  1882. /* CharacterBase */
  1883. JPH_CAPI void JPH_CharacterBase_Destroy(JPH_CharacterBase* character);
  1884. JPH_CAPI float JPH_CharacterBase_GetCosMaxSlopeAngle(JPH_CharacterBase* character);
  1885. JPH_CAPI void JPH_CharacterBase_SetMaxSlopeAngle(JPH_CharacterBase* character, float maxSlopeAngle);
  1886. JPH_CAPI void JPH_CharacterBase_GetUp(JPH_CharacterBase* character, JPH_Vec3* result);
  1887. JPH_CAPI void JPH_CharacterBase_SetUp(JPH_CharacterBase* character, const JPH_Vec3* value);
  1888. JPH_CAPI bool JPH_CharacterBase_IsSlopeTooSteep(JPH_CharacterBase* character, const JPH_Vec3* value);
  1889. JPH_CAPI const JPH_Shape* JPH_CharacterBase_GetShape(JPH_CharacterBase* character);
  1890. JPH_CAPI JPH_GroundState JPH_CharacterBase_GetGroundState(JPH_CharacterBase* character);
  1891. JPH_CAPI bool JPH_CharacterBase_IsSupported(JPH_CharacterBase* character);
  1892. JPH_CAPI void JPH_CharacterBase_GetGroundPosition(JPH_CharacterBase* character, JPH_RVec3* position);
  1893. JPH_CAPI void JPH_CharacterBase_GetGroundNormal(JPH_CharacterBase* character, JPH_Vec3* normal);
  1894. JPH_CAPI void JPH_CharacterBase_GetGroundVelocity(JPH_CharacterBase* character, JPH_Vec3* velocity);
  1895. JPH_CAPI const JPH_PhysicsMaterial* JPH_CharacterBase_GetGroundMaterial(JPH_CharacterBase* character);
  1896. JPH_CAPI JPH_BodyID JPH_CharacterBase_GetGroundBodyId(JPH_CharacterBase* character);
  1897. JPH_CAPI JPH_SubShapeID JPH_CharacterBase_GetGroundSubShapeId(JPH_CharacterBase* character);
  1898. JPH_CAPI uint64_t JPH_CharacterBase_GetGroundUserData(JPH_CharacterBase* character);
  1899. /* CharacterSettings */
  1900. JPH_CAPI void JPH_CharacterSettings_Init(JPH_CharacterSettings* settings);
  1901. /* Character */
  1902. JPH_CAPI JPH_Character* JPH_Character_Create(const JPH_CharacterSettings* settings,
  1903. const JPH_RVec3* position,
  1904. const JPH_Quat* rotation,
  1905. uint64_t userData,
  1906. JPH_PhysicsSystem* system);
  1907. JPH_CAPI void JPH_Character_AddToPhysicsSystem(JPH_Character* character, JPH_Activation activationMode /*= JPH_ActivationActivate */, bool lockBodies /* = true */);
  1908. JPH_CAPI void JPH_Character_RemoveFromPhysicsSystem(JPH_Character* character, bool lockBodies /* = true */);
  1909. JPH_CAPI void JPH_Character_Activate(JPH_Character* character, bool lockBodies /* = true */);
  1910. JPH_CAPI void JPH_Character_PostSimulation(JPH_Character* character, float maxSeparationDistance, bool lockBodies /* = true */);
  1911. JPH_CAPI void JPH_Character_SetLinearAndAngularVelocity(JPH_Character* character, JPH_Vec3* linearVelocity, JPH_Vec3* angularVelocity, bool lockBodies /* = true */);
  1912. JPH_CAPI void JPH_Character_GetLinearVelocity(JPH_Character* character, JPH_Vec3* result);
  1913. JPH_CAPI void JPH_Character_SetLinearVelocity(JPH_Character* character, const JPH_Vec3* value, bool lockBodies /* = true */);
  1914. JPH_CAPI void JPH_Character_AddLinearVelocity(JPH_Character* character, const JPH_Vec3* value, bool lockBodies /* = true */);
  1915. JPH_CAPI void JPH_Character_AddImpulse(JPH_Character* character, const JPH_Vec3* value, bool lockBodies /* = true */);
  1916. JPH_CAPI JPH_BodyID JPH_Character_GetBodyID(const JPH_Character* character);
  1917. JPH_CAPI void JPH_Character_GetPositionAndRotation(JPH_Character* character, JPH_RVec3* position, JPH_Quat* rotation, bool lockBodies /* = true */);
  1918. JPH_CAPI void JPH_Character_SetPositionAndRotation(JPH_Character* character, const JPH_RVec3* position, const JPH_Quat* rotation, JPH_Activation activationMode, bool lockBodies /* = true */);
  1919. JPH_CAPI void JPH_Character_GetPosition(JPH_Character* character, JPH_RVec3* position, bool lockBodies /* = true */);
  1920. JPH_CAPI void JPH_Character_SetPosition(JPH_Character* character, const JPH_RVec3* position, JPH_Activation activationMode, bool lockBodies /* = true */);
  1921. JPH_CAPI void JPH_Character_GetRotation(JPH_Character* character, JPH_Quat* rotation, bool lockBodies /* = true */);
  1922. JPH_CAPI void JPH_Character_SetRotation(JPH_Character* character, const JPH_Quat* rotation, JPH_Activation activationMode, bool lockBodies /* = true */);
  1923. JPH_CAPI void JPH_Character_GetCenterOfMassPosition(JPH_Character* character, JPH_RVec3* result, bool lockBodies /* = true */);
  1924. JPH_CAPI void JPH_Character_GetWorldTransform(JPH_Character* character, JPH_RMat4* result, bool lockBodies /* = true */);
  1925. JPH_CAPI JPH_ObjectLayer JPH_Character_GetLayer(const JPH_Character* character);
  1926. JPH_CAPI void JPH_Character_SetLayer(JPH_Character* character, JPH_ObjectLayer value, bool lockBodies /*= true*/);
  1927. JPH_CAPI void JPH_Character_SetShape(JPH_Character* character, const JPH_Shape* shape, float maxPenetrationDepth, bool lockBodies /*= true*/);
  1928. /* CharacterVirtualSettings */
  1929. JPH_CAPI void JPH_CharacterVirtualSettings_Init(JPH_CharacterVirtualSettings* settings);
  1930. /* CharacterVirtual */
  1931. JPH_CAPI JPH_CharacterVirtual* JPH_CharacterVirtual_Create(const JPH_CharacterVirtualSettings* settings,
  1932. const JPH_RVec3* position,
  1933. const JPH_Quat* rotation,
  1934. uint64_t userData,
  1935. JPH_PhysicsSystem* system);
  1936. JPH_CAPI JPH_CharacterID JPH_CharacterVirtual_GetID(const JPH_CharacterVirtual* character);
  1937. JPH_CAPI void JPH_CharacterVirtual_SetListener(JPH_CharacterVirtual* character, JPH_CharacterContactListener* listener);
  1938. JPH_CAPI void JPH_CharacterVirtual_SetCharacterVsCharacterCollision(JPH_CharacterVirtual* character, JPH_CharacterVsCharacterCollision* characterVsCharacterCollision);
  1939. JPH_CAPI void JPH_CharacterVirtual_GetLinearVelocity(JPH_CharacterVirtual* character, JPH_Vec3* velocity);
  1940. JPH_CAPI void JPH_CharacterVirtual_SetLinearVelocity(JPH_CharacterVirtual* character, const JPH_Vec3* velocity);
  1941. JPH_CAPI void JPH_CharacterVirtual_GetPosition(JPH_CharacterVirtual* character, JPH_RVec3* position);
  1942. JPH_CAPI void JPH_CharacterVirtual_SetPosition(JPH_CharacterVirtual* character, const JPH_RVec3* position);
  1943. JPH_CAPI void JPH_CharacterVirtual_GetRotation(JPH_CharacterVirtual* character, JPH_Quat* rotation);
  1944. JPH_CAPI void JPH_CharacterVirtual_SetRotation(JPH_CharacterVirtual* character, const JPH_Quat* rotation);
  1945. JPH_CAPI void JPH_CharacterVirtual_GetWorldTransform(JPH_CharacterVirtual* character, JPH_RMat4* result);
  1946. JPH_CAPI void JPH_CharacterVirtual_GetCenterOfMassTransform(JPH_CharacterVirtual* character, JPH_RMat4* result);
  1947. JPH_CAPI float JPH_CharacterVirtual_GetMass(JPH_CharacterVirtual* character);
  1948. JPH_CAPI void JPH_CharacterVirtual_SetMass(JPH_CharacterVirtual* character, float value);
  1949. JPH_CAPI float JPH_CharacterVirtual_GetMaxStrength(JPH_CharacterVirtual* character);
  1950. JPH_CAPI void JPH_CharacterVirtual_SetMaxStrength(JPH_CharacterVirtual* character, float value);
  1951. JPH_CAPI float JPH_CharacterVirtual_GetPenetrationRecoverySpeed(JPH_CharacterVirtual* character);
  1952. JPH_CAPI void JPH_CharacterVirtual_SetPenetrationRecoverySpeed(JPH_CharacterVirtual* character, float value);
  1953. JPH_CAPI bool JPH_CharacterVirtual_GetEnhancedInternalEdgeRemoval(JPH_CharacterVirtual* character);
  1954. JPH_CAPI void JPH_CharacterVirtual_SetEnhancedInternalEdgeRemoval(JPH_CharacterVirtual* character, bool value);
  1955. JPH_CAPI float JPH_CharacterVirtual_GetCharacterPadding(JPH_CharacterVirtual* character);
  1956. JPH_CAPI uint32_t JPH_CharacterVirtual_GetMaxNumHits(JPH_CharacterVirtual* character);
  1957. JPH_CAPI void JPH_CharacterVirtual_SetMaxNumHits(JPH_CharacterVirtual* character, uint32_t value);
  1958. JPH_CAPI float JPH_CharacterVirtual_GetHitReductionCosMaxAngle(JPH_CharacterVirtual* character);
  1959. JPH_CAPI void JPH_CharacterVirtual_SetHitReductionCosMaxAngle(JPH_CharacterVirtual* character, float value);
  1960. JPH_CAPI bool JPH_CharacterVirtual_GetMaxHitsExceeded(JPH_CharacterVirtual* character);
  1961. JPH_CAPI void JPH_CharacterVirtual_GetShapeOffset(JPH_CharacterVirtual* character, JPH_Vec3* result);
  1962. JPH_CAPI void JPH_CharacterVirtual_SetShapeOffset(JPH_CharacterVirtual* character, const JPH_Vec3* value);
  1963. JPH_CAPI uint64_t JPH_CharacterVirtual_GetUserData(const JPH_CharacterVirtual* character);
  1964. JPH_CAPI void JPH_CharacterVirtual_SetUserData(JPH_CharacterVirtual* character, uint64_t value);
  1965. JPH_CAPI JPH_BodyID JPH_CharacterVirtual_GetInnerBodyID(const JPH_CharacterVirtual* character);
  1966. JPH_CAPI void JPH_CharacterVirtual_CancelVelocityTowardsSteepSlopes(JPH_CharacterVirtual* character, const JPH_Vec3* desiredVelocity, JPH_Vec3* velocity);
  1967. JPH_CAPI void JPH_CharacterVirtual_StartTrackingContactChanges(JPH_CharacterVirtual* character);
  1968. JPH_CAPI void JPH_CharacterVirtual_FinishTrackingContactChanges(JPH_CharacterVirtual* character);
  1969. JPH_CAPI void JPH_CharacterVirtual_Update(JPH_CharacterVirtual* character, float deltaTime, JPH_ObjectLayer layer, JPH_PhysicsSystem* system, const JPH_BodyFilter* bodyFilter, const JPH_ShapeFilter* shapeFilter);
  1970. JPH_CAPI void JPH_CharacterVirtual_ExtendedUpdate(JPH_CharacterVirtual* character, float deltaTime,
  1971. const JPH_ExtendedUpdateSettings* settings, JPH_ObjectLayer layer, JPH_PhysicsSystem* system, const JPH_BodyFilter* bodyFilter, const JPH_ShapeFilter* shapeFilter);
  1972. JPH_CAPI void JPH_CharacterVirtual_RefreshContacts(JPH_CharacterVirtual* character, JPH_ObjectLayer layer, JPH_PhysicsSystem* system, const JPH_BodyFilter* bodyFilter, const JPH_ShapeFilter* shapeFilter);
  1973. JPH_CAPI bool JPH_CharacterVirtual_CanWalkStairs(JPH_CharacterVirtual* character, const JPH_Vec3* linearVelocity);
  1974. JPH_CAPI bool JPH_CharacterVirtual_WalkStairs(JPH_CharacterVirtual* character, float deltaTime,
  1975. const JPH_Vec3* stepUp, const JPH_Vec3* stepForward, const JPH_Vec3* stepForwardTest, const JPH_Vec3* stepDownExtra,
  1976. JPH_ObjectLayer layer, JPH_PhysicsSystem* system,
  1977. const JPH_BodyFilter* bodyFilter, const JPH_ShapeFilter* shapeFilter);
  1978. JPH_CAPI bool JPH_CharacterVirtual_StickToFloor(JPH_CharacterVirtual* character, const JPH_Vec3* stepDown,
  1979. JPH_ObjectLayer layer, JPH_PhysicsSystem* system,
  1980. const JPH_BodyFilter* bodyFilter, const JPH_ShapeFilter* shapeFilter);
  1981. JPH_CAPI void JPH_CharacterVirtual_UpdateGroundVelocity(JPH_CharacterVirtual* character);
  1982. JPH_CAPI bool JPH_CharacterVirtual_SetShape(JPH_CharacterVirtual* character, const JPH_Shape* shape, float maxPenetrationDepth, JPH_ObjectLayer layer, JPH_PhysicsSystem* system, const JPH_BodyFilter* bodyFilter, const JPH_ShapeFilter* shapeFilter);
  1983. JPH_CAPI void JPH_CharacterVirtual_SetInnerBodyShape(JPH_CharacterVirtual* character, const JPH_Shape* shape);
  1984. JPH_CAPI uint32_t JPH_CharacterVirtual_GetNumActiveContacts(JPH_CharacterVirtual* character);
  1985. JPH_CAPI void JPH_CharacterVirtual_GetActiveContact(JPH_CharacterVirtual* character, uint32_t index, JPH_CharacterVirtualContact* result);
  1986. JPH_CAPI bool JPH_CharacterVirtual_HasCollidedWithBody(JPH_CharacterVirtual* character, const JPH_BodyID body);
  1987. JPH_CAPI bool JPH_CharacterVirtual_HasCollidedWith(JPH_CharacterVirtual* character, const JPH_CharacterID other);
  1988. JPH_CAPI bool JPH_CharacterVirtual_HasCollidedWithCharacter(JPH_CharacterVirtual* character, const JPH_CharacterVirtual* other);
  1989. /* CharacterContactListener */
  1990. typedef struct JPH_CharacterContactListener_Procs {
  1991. void (JPH_API_CALL* OnAdjustBodyVelocity)(void* userData,
  1992. const JPH_CharacterVirtual* character,
  1993. const JPH_Body* body2,
  1994. JPH_Vec3* ioLinearVelocity,
  1995. JPH_Vec3* ioAngularVelocity);
  1996. bool(JPH_API_CALL* OnContactValidate)(void* userData,
  1997. const JPH_CharacterVirtual* character,
  1998. const JPH_BodyID bodyID2,
  1999. const JPH_SubShapeID subShapeID2);
  2000. bool(JPH_API_CALL* OnCharacterContactValidate)(void* userData,
  2001. const JPH_CharacterVirtual* character,
  2002. const JPH_CharacterVirtual* otherCharacter,
  2003. const JPH_SubShapeID subShapeID2);
  2004. void(JPH_API_CALL* OnContactAdded)(void* userData,
  2005. const JPH_CharacterVirtual* character,
  2006. const JPH_BodyID bodyID2,
  2007. const JPH_SubShapeID subShapeID2,
  2008. const JPH_RVec3* contactPosition,
  2009. const JPH_Vec3* contactNormal,
  2010. JPH_CharacterContactSettings* ioSettings);
  2011. void(JPH_API_CALL* OnContactPersisted)(void* userData,
  2012. const JPH_CharacterVirtual* character,
  2013. const JPH_BodyID bodyID2,
  2014. const JPH_SubShapeID subShapeID2,
  2015. const JPH_RVec3* contactPosition,
  2016. const JPH_Vec3* contactNormal,
  2017. JPH_CharacterContactSettings* ioSettings);
  2018. void(JPH_API_CALL* OnContactRemoved)(void* userData,
  2019. const JPH_CharacterVirtual* character,
  2020. const JPH_BodyID bodyID2,
  2021. const JPH_SubShapeID subShapeID2);
  2022. void(JPH_API_CALL* OnCharacterContactAdded)(void* userData,
  2023. const JPH_CharacterVirtual* character,
  2024. const JPH_CharacterVirtual* otherCharacter,
  2025. const JPH_SubShapeID subShapeID2,
  2026. const JPH_RVec3* contactPosition,
  2027. const JPH_Vec3* contactNormal,
  2028. JPH_CharacterContactSettings* ioSettings);
  2029. void(JPH_API_CALL* OnCharacterContactPersisted)(void* userData,
  2030. const JPH_CharacterVirtual* character,
  2031. const JPH_CharacterVirtual* otherCharacter,
  2032. const JPH_SubShapeID subShapeID2,
  2033. const JPH_RVec3* contactPosition,
  2034. const JPH_Vec3* contactNormal,
  2035. JPH_CharacterContactSettings* ioSettings);
  2036. void(JPH_API_CALL* OnCharacterContactRemoved)(void* userData,
  2037. const JPH_CharacterVirtual* character,
  2038. const JPH_CharacterID otherCharacterID,
  2039. const JPH_SubShapeID subShapeID2);
  2040. void(JPH_API_CALL* OnContactSolve)(void* userData,
  2041. const JPH_CharacterVirtual* character,
  2042. const JPH_BodyID bodyID2,
  2043. const JPH_SubShapeID subShapeID2,
  2044. const JPH_RVec3* contactPosition,
  2045. const JPH_Vec3* contactNormal,
  2046. const JPH_Vec3* contactVelocity,
  2047. const JPH_PhysicsMaterial* contactMaterial,
  2048. const JPH_Vec3* characterVelocity,
  2049. JPH_Vec3* newCharacterVelocity
  2050. );
  2051. void(JPH_API_CALL* OnCharacterContactSolve)(void* userData,
  2052. const JPH_CharacterVirtual* character,
  2053. const JPH_CharacterVirtual* otherCharacter,
  2054. const JPH_SubShapeID subShapeID2,
  2055. const JPH_RVec3* contactPosition,
  2056. const JPH_Vec3* contactNormal,
  2057. const JPH_Vec3* contactVelocity,
  2058. const JPH_PhysicsMaterial* contactMaterial,
  2059. const JPH_Vec3* characterVelocity,
  2060. JPH_Vec3* newCharacterVelocity
  2061. );
  2062. } JPH_CharacterContactListener_Procs;
  2063. JPH_CAPI void JPH_CharacterContactListener_SetProcs(const JPH_CharacterContactListener_Procs* procs);
  2064. JPH_CAPI JPH_CharacterContactListener* JPH_CharacterContactListener_Create(void* userData);
  2065. JPH_CAPI void JPH_CharacterContactListener_Destroy(JPH_CharacterContactListener* listener);
  2066. /* JPH_CharacterVsCharacterCollision */
  2067. typedef struct JPH_CharacterVsCharacterCollision_Procs {
  2068. void (JPH_API_CALL* CollideCharacter)(void* userData,
  2069. const JPH_CharacterVirtual* character,
  2070. const JPH_RMat4* centerOfMassTransform,
  2071. const JPH_CollideShapeSettings* collideShapeSettings,
  2072. const JPH_RVec3* baseOffset
  2073. );
  2074. void (JPH_API_CALL* CastCharacter)(void* userData,
  2075. const JPH_CharacterVirtual* character,
  2076. const JPH_RMat4* centerOfMassTransform,
  2077. const JPH_Vec3* direction,
  2078. const JPH_ShapeCastSettings* shapeCastSettings,
  2079. const JPH_RVec3* baseOffset
  2080. );
  2081. } JPH_CharacterVsCharacterCollision_Procs;
  2082. JPH_CAPI void JPH_CharacterVsCharacterCollision_SetProcs(const JPH_CharacterVsCharacterCollision_Procs* procs);
  2083. JPH_CAPI JPH_CharacterVsCharacterCollision* JPH_CharacterVsCharacterCollision_Create(void* userData);
  2084. JPH_CAPI JPH_CharacterVsCharacterCollision* JPH_CharacterVsCharacterCollision_CreateSimple(void);
  2085. JPH_CAPI void JPH_CharacterVsCharacterCollisionSimple_AddCharacter(JPH_CharacterVsCharacterCollision* characterVsCharacter, JPH_CharacterVirtual* character);
  2086. JPH_CAPI void JPH_CharacterVsCharacterCollisionSimple_RemoveCharacter(JPH_CharacterVsCharacterCollision* characterVsCharacter, JPH_CharacterVirtual* character);
  2087. JPH_CAPI void JPH_CharacterVsCharacterCollision_Destroy(JPH_CharacterVsCharacterCollision* listener);
  2088. /* CollisionDispatch */
  2089. JPH_CAPI bool JPH_CollisionDispatch_CollideShapeVsShape(
  2090. const JPH_Shape* shape1, const JPH_Shape* shape2,
  2091. const JPH_Vec3* scale1, const JPH_Vec3* scale2,
  2092. const JPH_Mat4* centerOfMassTransform1, const JPH_Mat4* centerOfMassTransform2,
  2093. const JPH_CollideShapeSettings* collideShapeSettings,
  2094. JPH_CollideShapeCollectorCallback* callback, void* userData, const JPH_ShapeFilter* shapeFilter);
  2095. JPH_CAPI bool JPH_CollisionDispatch_CastShapeVsShapeLocalSpace(
  2096. const JPH_Vec3* direction, const JPH_Shape* shape1, const JPH_Shape* shape2,
  2097. const JPH_Vec3* scale1InShape2LocalSpace, const JPH_Vec3* scale2,
  2098. JPH_Mat4* centerOfMassTransform1InShape2LocalSpace, JPH_Mat4* centerOfMassWorldTransform2,
  2099. const JPH_ShapeCastSettings* shapeCastSettings,
  2100. JPH_CastShapeCollectorCallback* callback, void* userData,
  2101. const JPH_ShapeFilter* shapeFilter);
  2102. JPH_CAPI bool JPH_CollisionDispatch_CastShapeVsShapeWorldSpace(
  2103. const JPH_Vec3* direction, const JPH_Shape* shape1, const JPH_Shape* shape2,
  2104. const JPH_Vec3* scale1, const JPH_Vec3* inScale2,
  2105. const JPH_Mat4* centerOfMassWorldTransform1, const JPH_Mat4* centerOfMassWorldTransform2,
  2106. const JPH_ShapeCastSettings* shapeCastSettings,
  2107. JPH_CastShapeCollectorCallback* callback, void* userData,
  2108. const JPH_ShapeFilter* shapeFilter);
  2109. /* DebugRenderer */
  2110. typedef struct JPH_DebugRenderer_Procs {
  2111. void (JPH_API_CALL* DrawLine)(void* userData, const JPH_RVec3* from, const JPH_RVec3* to, JPH_Color color);
  2112. void (JPH_API_CALL* DrawTriangle)(void* userData, const JPH_RVec3* v1, const JPH_RVec3* v2, const JPH_RVec3* v3, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow);
  2113. void (JPH_API_CALL* DrawText3D)(void* userData, const JPH_RVec3* position, const char* str, JPH_Color color, float height);
  2114. } JPH_DebugRenderer_Procs;
  2115. JPH_CAPI void JPH_DebugRenderer_SetProcs(const JPH_DebugRenderer_Procs* procs);
  2116. JPH_CAPI JPH_DebugRenderer* JPH_DebugRenderer_Create(void* userData);
  2117. JPH_CAPI void JPH_DebugRenderer_Destroy(JPH_DebugRenderer* renderer);
  2118. JPH_CAPI void JPH_DebugRenderer_NextFrame(JPH_DebugRenderer* renderer);
  2119. JPH_CAPI void JPH_DebugRenderer_SetCameraPos(JPH_DebugRenderer* renderer, const JPH_RVec3* position);
  2120. JPH_CAPI void JPH_DebugRenderer_DrawLine(JPH_DebugRenderer* renderer, const JPH_RVec3* from, const JPH_RVec3* to, JPH_Color color);
  2121. JPH_CAPI void JPH_DebugRenderer_DrawWireBox(JPH_DebugRenderer* renderer, const JPH_AABox* box, JPH_Color color);
  2122. JPH_CAPI void JPH_DebugRenderer_DrawWireBox2(JPH_DebugRenderer* renderer, const JPH_RMat4* matrix, const JPH_AABox* box, JPH_Color color);
  2123. JPH_CAPI void JPH_DebugRenderer_DrawMarker(JPH_DebugRenderer* renderer, const JPH_RVec3* position, JPH_Color color, float size);
  2124. JPH_CAPI void JPH_DebugRenderer_DrawArrow(JPH_DebugRenderer* renderer, const JPH_RVec3* from, const JPH_RVec3* to, JPH_Color color, float size);
  2125. JPH_CAPI void JPH_DebugRenderer_DrawCoordinateSystem(JPH_DebugRenderer* renderer, const JPH_RMat4* matrix, float size);
  2126. JPH_CAPI void JPH_DebugRenderer_DrawPlane(JPH_DebugRenderer* renderer, const JPH_RVec3* point, const JPH_Vec3* normal, JPH_Color color, float size);
  2127. JPH_CAPI void JPH_DebugRenderer_DrawWireTriangle(JPH_DebugRenderer* renderer, const JPH_RVec3* v1, const JPH_RVec3* v2, const JPH_RVec3* v3, JPH_Color color);
  2128. JPH_CAPI void JPH_DebugRenderer_DrawWireSphere(JPH_DebugRenderer* renderer, const JPH_RVec3* center, float radius, JPH_Color color, int level);
  2129. JPH_CAPI void JPH_DebugRenderer_DrawWireUnitSphere(JPH_DebugRenderer* renderer, const JPH_RMat4* matrix, JPH_Color color, int level);
  2130. JPH_CAPI void JPH_DebugRenderer_DrawTriangle(JPH_DebugRenderer* renderer, const JPH_RVec3* v1, const JPH_RVec3* v2, const JPH_RVec3* v3, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow);
  2131. JPH_CAPI void JPH_DebugRenderer_DrawBox(JPH_DebugRenderer* renderer, const JPH_AABox* box, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2132. JPH_CAPI void JPH_DebugRenderer_DrawBox2(JPH_DebugRenderer* renderer, const JPH_RMat4* matrix, const JPH_AABox* box, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2133. JPH_CAPI void JPH_DebugRenderer_DrawSphere(JPH_DebugRenderer* renderer, const JPH_RVec3* center, float radius, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2134. JPH_CAPI void JPH_DebugRenderer_DrawUnitSphere(JPH_DebugRenderer* renderer, JPH_RMat4 matrix, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2135. JPH_CAPI void JPH_DebugRenderer_DrawCapsule(JPH_DebugRenderer* renderer, const JPH_RMat4* matrix, float halfHeightOfCylinder, float radius, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2136. JPH_CAPI void JPH_DebugRenderer_DrawCylinder(JPH_DebugRenderer* renderer, const JPH_RMat4* matrix, float halfHeight, float radius, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2137. JPH_CAPI void JPH_DebugRenderer_DrawOpenCone(JPH_DebugRenderer* renderer, const JPH_RVec3* top, const JPH_Vec3* axis, const JPH_Vec3* perpendicular, float halfAngle, float length, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2138. JPH_CAPI void JPH_DebugRenderer_DrawSwingConeLimits(JPH_DebugRenderer* renderer, const JPH_RMat4* matrix, float swingYHalfAngle, float swingZHalfAngle, float edgeLength, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2139. JPH_CAPI void JPH_DebugRenderer_DrawSwingPyramidLimits(JPH_DebugRenderer* renderer, const JPH_RMat4* matrix, float minSwingYAngle, float maxSwingYAngle, float minSwingZAngle, float maxSwingZAngle, float edgeLength, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2140. JPH_CAPI void JPH_DebugRenderer_DrawPie(JPH_DebugRenderer* renderer, const JPH_RVec3* center, float radius, const JPH_Vec3* normal, const JPH_Vec3* axis, float minAngle, float maxAngle, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2141. JPH_CAPI void JPH_DebugRenderer_DrawTaperedCylinder(JPH_DebugRenderer* renderer, const JPH_RMat4* inMatrix, float top, float bottom, float topRadius, float bottomRadius, JPH_Color color, JPH_DebugRenderer_CastShadow castShadow, JPH_DebugRenderer_DrawMode drawMode);
  2142. /* Skeleton */
  2143. typedef struct JPH_SkeletonJoint {
  2144. const char* name;
  2145. const char* parentName;
  2146. int parentJointIndex;
  2147. } JPH_SkeletonJoint;
  2148. JPH_CAPI JPH_Skeleton* JPH_Skeleton_Create(void);
  2149. JPH_CAPI void JPH_Skeleton_Destroy(JPH_Skeleton* skeleton);
  2150. JPH_CAPI uint32_t JPH_Skeleton_AddJoint(JPH_Skeleton* skeleton, const char* name);
  2151. JPH_CAPI uint32_t JPH_Skeleton_AddJoint2(JPH_Skeleton* skeleton, const char* name, int parentIndex);
  2152. JPH_CAPI uint32_t JPH_Skeleton_AddJoint3(JPH_Skeleton* skeleton, const char* name, const char* parentName);
  2153. JPH_CAPI int JPH_Skeleton_GetJointCount(const JPH_Skeleton* skeleton);
  2154. JPH_CAPI void JPH_Skeleton_GetJoint(const JPH_Skeleton* skeleton, int index, JPH_SkeletonJoint* joint);
  2155. JPH_CAPI int JPH_Skeleton_GetJointIndex(const JPH_Skeleton* skeleton, const char* name);
  2156. JPH_CAPI void JPH_Skeleton_CalculateParentJointIndices(JPH_Skeleton* skeleton);
  2157. JPH_CAPI bool JPH_Skeleton_AreJointsCorrectlyOrdered(const JPH_Skeleton* skeleton);
  2158. /* SkeletonPose */
  2159. JPH_CAPI JPH_SkeletonPose* JPH_SkeletonPose_Create(void);
  2160. JPH_CAPI void JPH_SkeletonPose_Destroy(JPH_SkeletonPose* pose);
  2161. JPH_CAPI void JPH_SkeletonPose_SetSkeleton(JPH_SkeletonPose* pose, const JPH_Skeleton* skeleton);
  2162. JPH_CAPI const JPH_Skeleton* JPH_SkeletonPose_GetSkeleton(const JPH_SkeletonPose* pose);
  2163. JPH_CAPI void JPH_SkeletonPose_SetRootOffset(JPH_SkeletonPose* pose, const JPH_RVec3* offset);
  2164. JPH_CAPI void JPH_SkeletonPose_GetRootOffset(const JPH_SkeletonPose* pose, JPH_RVec3* result);
  2165. JPH_CAPI int JPH_SkeletonPose_GetJointCount(const JPH_SkeletonPose* pose);
  2166. JPH_CAPI void JPH_SkeletonPose_GetJointState(const JPH_SkeletonPose* pose, int index, JPH_Vec3* outTranslation, JPH_Quat* outRotation);
  2167. JPH_CAPI void JPH_SkeletonPose_SetJointState(JPH_SkeletonPose* pose, int index, const JPH_Vec3* translation, const JPH_Quat* rotation);
  2168. JPH_CAPI void JPH_SkeletonPose_GetJointMatrix(const JPH_SkeletonPose* pose, int index, JPH_Mat4* result);
  2169. JPH_CAPI void JPH_SkeletonPose_SetJointMatrix(JPH_SkeletonPose* pose, int index, const JPH_Mat4* matrix);
  2170. JPH_CAPI void JPH_SkeletonPose_GetJointMatrices(const JPH_SkeletonPose* pose, JPH_Mat4* outMatrices, int count);
  2171. JPH_CAPI void JPH_SkeletonPose_SetJointMatrices(JPH_SkeletonPose* pose, const JPH_Mat4* matrices, int count);
  2172. JPH_CAPI void JPH_SkeletonPose_CalculateJointMatrices(JPH_SkeletonPose* pose);
  2173. JPH_CAPI void JPH_SkeletonPose_CalculateJointStates(JPH_SkeletonPose* pose);
  2174. JPH_CAPI void JPH_SkeletonPose_CalculateLocalSpaceJointMatrices(const JPH_SkeletonPose* pose, JPH_Mat4* outMatrices);
  2175. /* SkeletalAnimation */
  2176. JPH_CAPI JPH_SkeletalAnimation* JPH_SkeletalAnimation_Create(void);
  2177. JPH_CAPI void JPH_SkeletalAnimation_Destroy(JPH_SkeletalAnimation* animation);
  2178. JPH_CAPI float JPH_SkeletalAnimation_GetDuration(const JPH_SkeletalAnimation* animation);
  2179. JPH_CAPI bool JPH_SkeletalAnimation_IsLooping(const JPH_SkeletalAnimation* animation);
  2180. JPH_CAPI void JPH_SkeletalAnimation_SetIsLooping(JPH_SkeletalAnimation* animation, bool looping);
  2181. JPH_CAPI void JPH_SkeletalAnimation_ScaleJoints(JPH_SkeletalAnimation* animation, float scale);
  2182. JPH_CAPI void JPH_SkeletalAnimation_Sample(const JPH_SkeletalAnimation* animation, float time, JPH_SkeletonPose* pose);
  2183. JPH_CAPI int JPH_SkeletalAnimation_GetAnimatedJointCount(const JPH_SkeletalAnimation* animation);
  2184. JPH_CAPI void JPH_SkeletalAnimation_AddAnimatedJoint(JPH_SkeletalAnimation* animation, const char* jointName);
  2185. JPH_CAPI void JPH_SkeletalAnimation_AddKeyframe(JPH_SkeletalAnimation* animation, int jointIndex, float time, const JPH_Vec3* translation, const JPH_Quat* rotation);
  2186. /* SkeletonMapper */
  2187. JPH_CAPI JPH_SkeletonMapper* JPH_SkeletonMapper_Create(void);
  2188. JPH_CAPI void JPH_SkeletonMapper_Destroy(JPH_SkeletonMapper* mapper);
  2189. JPH_CAPI void JPH_SkeletonMapper_Initialize(JPH_SkeletonMapper* mapper, const JPH_Skeleton* skeleton1, const JPH_Mat4* neutralPose1, const JPH_Skeleton* skeleton2, const JPH_Mat4* neutralPose2);
  2190. JPH_CAPI void JPH_SkeletonMapper_LockAllTranslations(JPH_SkeletonMapper* mapper, const JPH_Skeleton* skeleton2, const JPH_Mat4* neutralPose2);
  2191. JPH_CAPI void JPH_SkeletonMapper_LockTranslations(JPH_SkeletonMapper* mapper, const JPH_Skeleton* skeleton2, const bool* lockedTranslations, const JPH_Mat4* neutralPose2);
  2192. JPH_CAPI void JPH_SkeletonMapper_Map(const JPH_SkeletonMapper* mapper, const JPH_Mat4* pose1ModelSpace, const JPH_Mat4* pose2LocalSpace, JPH_Mat4* outPose2ModelSpace);
  2193. JPH_CAPI void JPH_SkeletonMapper_MapReverse(const JPH_SkeletonMapper* mapper, const JPH_Mat4* pose2ModelSpace, JPH_Mat4* outPose1ModelSpace);
  2194. JPH_CAPI int JPH_SkeletonMapper_GetMappedJointIndex(const JPH_SkeletonMapper* mapper, int joint1Index);
  2195. JPH_CAPI bool JPH_SkeletonMapper_IsJointTranslationLocked(const JPH_SkeletonMapper* mapper, int joint2Index);
  2196. /* RagdollSettings */
  2197. JPH_CAPI JPH_RagdollSettings* JPH_RagdollSettings_Create(void);
  2198. JPH_CAPI void JPH_RagdollSettings_Destroy(JPH_RagdollSettings* settings);
  2199. JPH_CAPI const JPH_Skeleton* JPH_RagdollSettings_GetSkeleton(const JPH_RagdollSettings* character);
  2200. JPH_CAPI void JPH_RagdollSettings_SetSkeleton(JPH_RagdollSettings* character, JPH_Skeleton* skeleton);
  2201. JPH_CAPI bool JPH_RagdollSettings_Stabilize(JPH_RagdollSettings* settings);
  2202. JPH_CAPI void JPH_RagdollSettings_DisableParentChildCollisions(JPH_RagdollSettings* settings, const JPH_Mat4* jointMatrices /*=nullptr*/, float minSeparationDistance/* = 0.0f*/);
  2203. JPH_CAPI void JPH_RagdollSettings_CalculateBodyIndexToConstraintIndex(JPH_RagdollSettings* settings);
  2204. JPH_CAPI int JPH_RagdollSettings_GetConstraintIndexForBodyIndex(JPH_RagdollSettings* settings, int bodyIndex);
  2205. JPH_CAPI void JPH_RagdollSettings_CalculateConstraintIndexToBodyIdxPair(JPH_RagdollSettings* settings);
  2206. JPH_CAPI void JPH_RagdollSettings_ResizeParts(JPH_RagdollSettings* settings, int count);
  2207. JPH_CAPI int JPH_RagdollSettings_GetPartCount(const JPH_RagdollSettings* settings);
  2208. JPH_CAPI void JPH_RagdollSettings_SetPartShape(JPH_RagdollSettings* settings, int partIndex, const JPH_Shape* shape);
  2209. JPH_CAPI void JPH_RagdollSettings_SetPartPosition(JPH_RagdollSettings* settings, int partIndex, const JPH_RVec3* position);
  2210. JPH_CAPI void JPH_RagdollSettings_SetPartRotation(JPH_RagdollSettings* settings, int partIndex, const JPH_Quat* rotation);
  2211. JPH_CAPI void JPH_RagdollSettings_SetPartMotionType(JPH_RagdollSettings* settings, int partIndex, JPH_MotionType motionType);
  2212. JPH_CAPI void JPH_RagdollSettings_SetPartObjectLayer(JPH_RagdollSettings* settings, int partIndex, JPH_ObjectLayer layer);
  2213. JPH_CAPI void JPH_RagdollSettings_SetPartMassProperties(JPH_RagdollSettings* settings, int partIndex, float mass);
  2214. JPH_CAPI void JPH_RagdollSettings_SetPartToParent(JPH_RagdollSettings* settings, int partIndex, const JPH_SwingTwistConstraintSettings* constraintSettings);
  2215. JPH_CAPI JPH_Ragdoll* JPH_RagdollSettings_CreateRagdoll(JPH_RagdollSettings* settings, JPH_PhysicsSystem* system, JPH_CollisionGroupID collisionGroup /*=0*/, uint64_t userData/* = 0*/);
  2216. /* Ragdoll */
  2217. JPH_CAPI void JPH_Ragdoll_Destroy(JPH_Ragdoll* ragdoll);
  2218. JPH_CAPI void JPH_Ragdoll_AddToPhysicsSystem(JPH_Ragdoll* ragdoll, JPH_Activation activationMode /*= JPH_ActivationActivate */, bool lockBodies /* = true */);
  2219. JPH_CAPI void JPH_Ragdoll_RemoveFromPhysicsSystem(JPH_Ragdoll* ragdoll, bool lockBodies /* = true */);
  2220. JPH_CAPI void JPH_Ragdoll_Activate(JPH_Ragdoll* ragdoll, bool lockBodies /* = true */);
  2221. JPH_CAPI bool JPH_Ragdoll_IsActive(const JPH_Ragdoll* ragdoll, bool lockBodies /* = true */);
  2222. JPH_CAPI void JPH_Ragdoll_ResetWarmStart(JPH_Ragdoll* ragdoll);
  2223. JPH_CAPI void JPH_Ragdoll_SetPose(JPH_Ragdoll* ragdoll, const JPH_SkeletonPose* pose, bool lockBodies /* = true */);
  2224. JPH_CAPI void JPH_Ragdoll_SetPose2(JPH_Ragdoll* ragdoll, const JPH_RVec3* rootOffset, const JPH_Mat4* jointMatrices, bool lockBodies /* = true */);
  2225. JPH_CAPI void JPH_Ragdoll_GetPose(const JPH_Ragdoll* ragdoll, JPH_SkeletonPose* outPose, bool lockBodies /* = true */);
  2226. JPH_CAPI void JPH_Ragdoll_GetPose2(const JPH_Ragdoll* ragdoll, JPH_RVec3* outRootOffset, JPH_Mat4* outJointMatrices, bool lockBodies /* = true */);
  2227. JPH_CAPI void JPH_Ragdoll_DriveToPoseUsingMotors(JPH_Ragdoll* ragdoll, const JPH_SkeletonPose* pose);
  2228. JPH_CAPI void JPH_Ragdoll_DriveToPoseUsingKinematics(JPH_Ragdoll* ragdoll, const JPH_SkeletonPose* pose, float deltaTime, bool lockBodies /* = true */);
  2229. JPH_CAPI int JPH_Ragdoll_GetBodyCount(const JPH_Ragdoll* ragdoll);
  2230. JPH_CAPI JPH_BodyID JPH_Ragdoll_GetBodyID(const JPH_Ragdoll* ragdoll, int bodyIndex);
  2231. JPH_CAPI int JPH_Ragdoll_GetConstraintCount(const JPH_Ragdoll* ragdoll);
  2232. JPH_CAPI JPH_TwoBodyConstraint* JPH_Ragdoll_GetConstraint(JPH_Ragdoll* ragdoll, int constraintIndex);
  2233. JPH_CAPI void JPH_Ragdoll_GetRootTransform(const JPH_Ragdoll* ragdoll, JPH_RVec3* outPosition, JPH_Quat* outRotation, bool lockBodies /* = true */);
  2234. JPH_CAPI const JPH_RagdollSettings* JPH_Ragdoll_GetRagdollSettings(const JPH_Ragdoll* ragdoll);
  2235. /* JPH_EstimateCollisionResponse */
  2236. JPH_CAPI void JPH_EstimateCollisionResponse(const JPH_Body* body1, const JPH_Body* body2, const JPH_ContactManifold* manifold, float combinedFriction, float combinedRestitution, float minVelocityForRestitution, uint32_t numIterations, JPH_CollisionEstimationResult* result);
  2237. /* Vehicle */
  2238. typedef struct JPH_WheelSettings JPH_WheelSettings;
  2239. typedef struct JPH_WheelSettingsWV JPH_WheelSettingsWV; /* Inherits JPH_WheelSettings */
  2240. typedef struct JPH_WheelSettingsTV JPH_WheelSettingsTV; /* Inherits JPH_WheelSettings */
  2241. typedef struct JPH_Wheel JPH_Wheel;
  2242. typedef struct JPH_WheelWV JPH_WheelWV; /* Inherits JPH_Wheel */
  2243. typedef struct JPH_WheelTV JPH_WheelTV; /* Inherits JPH_Wheel */
  2244. typedef struct JPH_VehicleEngine JPH_VehicleEngine;
  2245. typedef struct JPH_VehicleTransmission JPH_VehicleTransmission;
  2246. typedef struct JPH_VehicleTransmissionSettings JPH_VehicleTransmissionSettings;
  2247. typedef struct JPH_VehicleCollisionTester JPH_VehicleCollisionTester;
  2248. typedef struct JPH_VehicleCollisionTesterRay JPH_VehicleCollisionTesterRay; /* Inherits JPH_VehicleCollisionTester */
  2249. typedef struct JPH_VehicleCollisionTesterCastSphere JPH_VehicleCollisionTesterCastSphere; /* Inherits JPH_VehicleCollisionTester */
  2250. typedef struct JPH_VehicleCollisionTesterCastCylinder JPH_VehicleCollisionTesterCastCylinder; /* Inherits JPH_VehicleCollisionTester */
  2251. typedef struct JPH_VehicleConstraint JPH_VehicleConstraint; /* Inherits JPH_Constraint */
  2252. typedef struct JPH_VehicleControllerSettings JPH_VehicleControllerSettings;
  2253. typedef struct JPH_WheeledVehicleControllerSettings JPH_WheeledVehicleControllerSettings; /* Inherits JPH_VehicleControllerSettings */
  2254. typedef struct JPH_MotorcycleControllerSettings JPH_MotorcycleControllerSettings; /* Inherits JPH_WheeledVehicleControllerSettings */
  2255. typedef struct JPH_TrackedVehicleControllerSettings JPH_TrackedVehicleControllerSettings; /* Inherits JPH_VehicleControllerSettings */
  2256. typedef struct JPH_WheeledVehicleController JPH_WheeledVehicleController; /* Inherits JPH_VehicleController */
  2257. typedef struct JPH_MotorcycleController JPH_MotorcycleController; /* Inherits JPH_WheeledVehicleController */
  2258. typedef struct JPH_TrackedVehicleController JPH_TrackedVehicleController; /* Inherits JPH_VehicleController */
  2259. typedef struct JPH_VehicleController JPH_VehicleController;
  2260. typedef struct JPH_VehicleAntiRollBar {
  2261. int leftWheel;
  2262. int rightWheel;
  2263. float stiffness;
  2264. } JPH_VehicleAntiRollBar;
  2265. typedef struct JPH_VehicleConstraintSettings {
  2266. JPH_ConstraintSettings base; /* Inherits JPH_ConstraintSettings */
  2267. JPH_Vec3 up;
  2268. JPH_Vec3 forward;
  2269. float maxPitchRollAngle;
  2270. uint32_t wheelsCount;
  2271. JPH_WheelSettings** wheels;
  2272. uint32_t antiRollBarsCount;
  2273. const JPH_VehicleAntiRollBar* antiRollBars;
  2274. JPH_VehicleControllerSettings* controller;
  2275. } JPH_VehicleConstraintSettings;
  2276. typedef struct JPH_VehicleEngineSettings {
  2277. float maxTorque;
  2278. float minRPM;
  2279. float maxRPM;
  2280. const JPH_LinearCurve* normalizedTorque;
  2281. float inertia;
  2282. float angularDamping;
  2283. } JPH_VehicleEngineSettings;
  2284. typedef struct JPH_VehicleDifferentialSettings {
  2285. int leftWheel;
  2286. int rightWheel;
  2287. float differentialRatio;
  2288. float leftRightSplit;
  2289. float limitedSlipRatio;
  2290. float engineTorqueRatio;
  2291. } JPH_VehicleDifferentialSettings;
  2292. JPH_CAPI void JPH_VehicleConstraintSettings_Init(JPH_VehicleConstraintSettings* settings);
  2293. JPH_CAPI JPH_VehicleConstraint* JPH_VehicleConstraint_Create(JPH_Body* body, const JPH_VehicleConstraintSettings* settings);
  2294. JPH_CAPI JPH_PhysicsStepListener* JPH_VehicleConstraint_AsPhysicsStepListener(JPH_VehicleConstraint* constraint);
  2295. JPH_CAPI void JPH_VehicleConstraint_SetMaxPitchRollAngle(JPH_VehicleConstraint* constraint, float maxPitchRollAngle);
  2296. JPH_CAPI void JPH_VehicleConstraint_SetVehicleCollisionTester(JPH_VehicleConstraint* constraint, const JPH_VehicleCollisionTester* tester);
  2297. JPH_CAPI void JPH_VehicleConstraint_OverrideGravity(JPH_VehicleConstraint* constraint, const JPH_Vec3* value);
  2298. JPH_CAPI bool JPH_VehicleConstraint_IsGravityOverridden(const JPH_VehicleConstraint* constraint);
  2299. JPH_CAPI void JPH_VehicleConstraint_GetGravityOverride(const JPH_VehicleConstraint* constraint, JPH_Vec3* result);
  2300. JPH_CAPI void JPH_VehicleConstraint_ResetGravityOverride(JPH_VehicleConstraint* constraint);
  2301. JPH_CAPI void JPH_VehicleConstraint_GetLocalForward(const JPH_VehicleConstraint* constraint, JPH_Vec3* result);
  2302. JPH_CAPI void JPH_VehicleConstraint_GetLocalUp(const JPH_VehicleConstraint* constraint, JPH_Vec3* result);
  2303. JPH_CAPI void JPH_VehicleConstraint_GetWorldUp(const JPH_VehicleConstraint* constraint, JPH_Vec3* result);
  2304. JPH_CAPI const JPH_Body* JPH_VehicleConstraint_GetVehicleBody(const JPH_VehicleConstraint* constraint);
  2305. JPH_CAPI JPH_VehicleController* JPH_VehicleConstraint_GetController(JPH_VehicleConstraint* constraint);
  2306. JPH_CAPI uint32_t JPH_VehicleConstraint_GetWheelsCount(JPH_VehicleConstraint* constraint);
  2307. JPH_CAPI JPH_Wheel* JPH_VehicleConstraint_GetWheel(JPH_VehicleConstraint* constraint, uint32_t index);
  2308. JPH_CAPI void JPH_VehicleConstraint_GetWheelLocalBasis(JPH_VehicleConstraint* constraint, const JPH_Wheel* wheel, JPH_Vec3* outForward, JPH_Vec3* outUp, JPH_Vec3* outRight);
  2309. JPH_CAPI void JPH_VehicleConstraint_GetWheelLocalTransform(JPH_VehicleConstraint* constraint, uint32_t wheelIndex, const JPH_Vec3* wheelRight, const JPH_Vec3* wheelUp, JPH_Mat4* result);
  2310. JPH_CAPI void JPH_VehicleConstraint_GetWheelWorldTransform(JPH_VehicleConstraint* constraint, uint32_t wheelIndex, const JPH_Vec3* wheelRight, const JPH_Vec3* wheelUp, JPH_RMat4* result);
  2311. /* Wheel */
  2312. JPH_CAPI JPH_WheelSettings* JPH_WheelSettings_Create(void);
  2313. JPH_CAPI void JPH_WheelSettings_Destroy(JPH_WheelSettings* settings);
  2314. JPH_CAPI void JPH_WheelSettings_GetPosition(const JPH_WheelSettings* settings, JPH_Vec3* result);
  2315. JPH_CAPI void JPH_WheelSettings_SetPosition(JPH_WheelSettings* settings, const JPH_Vec3* value);
  2316. JPH_CAPI void JPH_WheelSettings_GetSuspensionForcePoint(const JPH_WheelSettings* settings, JPH_Vec3* result);
  2317. JPH_CAPI void JPH_WheelSettings_SetSuspensionForcePoint(JPH_WheelSettings* settings, const JPH_Vec3* value);
  2318. JPH_CAPI void JPH_WheelSettings_GetSuspensionDirection(const JPH_WheelSettings* settings, JPH_Vec3* result);
  2319. JPH_CAPI void JPH_WheelSettings_SetSuspensionDirection(JPH_WheelSettings* settings, const JPH_Vec3* value);
  2320. JPH_CAPI void JPH_WheelSettings_GetSteeringAxis(const JPH_WheelSettings* settings, JPH_Vec3* result);
  2321. JPH_CAPI void JPH_WheelSettings_SetSteeringAxis(JPH_WheelSettings* settings, const JPH_Vec3* value);
  2322. JPH_CAPI void JPH_WheelSettings_GetWheelUp(const JPH_WheelSettings* settings, JPH_Vec3* result);
  2323. JPH_CAPI void JPH_WheelSettings_SetWheelUp(JPH_WheelSettings* settings, const JPH_Vec3* value);
  2324. JPH_CAPI void JPH_WheelSettings_GetWheelForward(const JPH_WheelSettings* settings, JPH_Vec3* result);
  2325. JPH_CAPI void JPH_WheelSettings_SetWheelForward(JPH_WheelSettings* settings, const JPH_Vec3* value);
  2326. JPH_CAPI float JPH_WheelSettings_GetSuspensionMinLength(const JPH_WheelSettings* settings);
  2327. JPH_CAPI void JPH_WheelSettings_SetSuspensionMinLength(JPH_WheelSettings* settings, float value);
  2328. JPH_CAPI float JPH_WheelSettings_GetSuspensionMaxLength(const JPH_WheelSettings* settings);
  2329. JPH_CAPI void JPH_WheelSettings_SetSuspensionMaxLength(JPH_WheelSettings* settings, float value);
  2330. JPH_CAPI float JPH_WheelSettings_GetSuspensionPreloadLength(const JPH_WheelSettings* settings);
  2331. JPH_CAPI void JPH_WheelSettings_SetSuspensionPreloadLength(JPH_WheelSettings* settings, float value);
  2332. JPH_CAPI void JPH_WheelSettings_GetSuspensionSpring(const JPH_WheelSettings* settings, JPH_SpringSettings* result);
  2333. JPH_CAPI void JPH_WheelSettings_SetSuspensionSpring(JPH_WheelSettings* settings, JPH_SpringSettings* springSettings);
  2334. JPH_CAPI float JPH_WheelSettings_GetRadius(const JPH_WheelSettings* settings);
  2335. JPH_CAPI void JPH_WheelSettings_SetRadius(JPH_WheelSettings* settings, float value);
  2336. JPH_CAPI float JPH_WheelSettings_GetWidth(const JPH_WheelSettings* settings);
  2337. JPH_CAPI void JPH_WheelSettings_SetWidth(JPH_WheelSettings* settings, float value);
  2338. JPH_CAPI bool JPH_WheelSettings_GetEnableSuspensionForcePoint(const JPH_WheelSettings* settings);
  2339. JPH_CAPI void JPH_WheelSettings_SetEnableSuspensionForcePoint(JPH_WheelSettings* settings, bool value);
  2340. JPH_CAPI JPH_Wheel* JPH_Wheel_Create(const JPH_WheelSettings* settings);
  2341. JPH_CAPI void JPH_Wheel_Destroy(JPH_Wheel* wheel);
  2342. JPH_CAPI const JPH_WheelSettings* JPH_Wheel_GetSettings(const JPH_Wheel* wheel);
  2343. JPH_CAPI float JPH_Wheel_GetAngularVelocity(const JPH_Wheel* wheel);
  2344. JPH_CAPI void JPH_Wheel_SetAngularVelocity(JPH_Wheel* wheel, float value);
  2345. JPH_CAPI float JPH_Wheel_GetRotationAngle(const JPH_Wheel* wheel);
  2346. JPH_CAPI void JPH_Wheel_SetRotationAngle(JPH_Wheel* wheel, float value);
  2347. JPH_CAPI float JPH_Wheel_GetSteerAngle(const JPH_Wheel* wheel);
  2348. JPH_CAPI void JPH_Wheel_SetSteerAngle(JPH_Wheel* wheel, float value);
  2349. JPH_CAPI bool JPH_Wheel_HasContact(const JPH_Wheel* wheel);
  2350. JPH_CAPI JPH_BodyID JPH_Wheel_GetContactBodyID(const JPH_Wheel* wheel);
  2351. JPH_CAPI JPH_SubShapeID JPH_Wheel_GetContactSubShapeID(const JPH_Wheel* wheel);
  2352. JPH_CAPI void JPH_Wheel_GetContactPosition(const JPH_Wheel* wheel, JPH_RVec3* result);
  2353. JPH_CAPI void JPH_Wheel_GetContactPointVelocity(const JPH_Wheel* wheel, JPH_Vec3* result);
  2354. JPH_CAPI void JPH_Wheel_GetContactNormal(const JPH_Wheel* wheel, JPH_Vec3* result);
  2355. JPH_CAPI void JPH_Wheel_GetContactLongitudinal(const JPH_Wheel* wheel, JPH_Vec3* result);
  2356. JPH_CAPI void JPH_Wheel_GetContactLateral(const JPH_Wheel* wheel, JPH_Vec3* result);
  2357. JPH_CAPI float JPH_Wheel_GetSuspensionLength(const JPH_Wheel* wheel);
  2358. JPH_CAPI float JPH_Wheel_GetSuspensionLambda(const JPH_Wheel* wheel);
  2359. JPH_CAPI float JPH_Wheel_GetLongitudinalLambda(const JPH_Wheel* wheel);
  2360. JPH_CAPI float JPH_Wheel_GetLateralLambda(const JPH_Wheel* wheel);
  2361. JPH_CAPI bool JPH_Wheel_HasHitHardPoint(const JPH_Wheel* wheel);
  2362. /* VehicleAntiRollBar */
  2363. JPH_CAPI void JPH_VehicleAntiRollBar_Init(JPH_VehicleAntiRollBar* antiRollBar);
  2364. /* VehicleEngineSettings */
  2365. JPH_CAPI void JPH_VehicleEngineSettings_Init(JPH_VehicleEngineSettings* settings);
  2366. /* VehicleEngine */
  2367. JPH_CAPI void JPH_VehicleEngine_ClampRPM(JPH_VehicleEngine* engine);
  2368. JPH_CAPI float JPH_VehicleEngine_GetCurrentRPM(const JPH_VehicleEngine* engine);
  2369. JPH_CAPI void JPH_VehicleEngine_SetCurrentRPM(JPH_VehicleEngine* engine, float rpm);
  2370. JPH_CAPI float JPH_VehicleEngine_GetAngularVelocity(const JPH_VehicleEngine* engine);
  2371. JPH_CAPI float JPH_VehicleEngine_GetTorque(const JPH_VehicleEngine* engine, float acceleration);
  2372. JPH_CAPI void JPH_VehicleEngine_ApplyTorque(JPH_VehicleEngine* engine, float torque, float deltaTime);
  2373. JPH_CAPI void JPH_VehicleEngine_ApplyDamping(JPH_VehicleEngine* engine, float deltaTime);
  2374. JPH_CAPI bool JPH_VehicleEngine_AllowSleep(const JPH_VehicleEngine* engine);
  2375. /* VehicleDifferentialSettings */
  2376. JPH_CAPI void JPH_VehicleDifferentialSettings_Init(JPH_VehicleDifferentialSettings* settings);
  2377. /* VehicleTransmissionSettings */
  2378. JPH_CAPI JPH_VehicleTransmissionSettings* JPH_VehicleTransmissionSettings_Create(void);
  2379. JPH_CAPI void JPH_VehicleTransmissionSettings_Destroy(JPH_VehicleTransmissionSettings* settings);
  2380. JPH_CAPI JPH_TransmissionMode JPH_VehicleTransmissionSettings_GetMode(const JPH_VehicleTransmissionSettings* settings);
  2381. JPH_CAPI void JPH_VehicleTransmissionSettings_SetMode(JPH_VehicleTransmissionSettings* settings, JPH_TransmissionMode value);
  2382. JPH_CAPI uint32_t JPH_VehicleTransmissionSettings_GetGearRatioCount(const JPH_VehicleTransmissionSettings* settings);
  2383. JPH_CAPI float JPH_VehicleTransmissionSettings_GetGearRatio(const JPH_VehicleTransmissionSettings* settings, uint32_t index);
  2384. JPH_CAPI void JPH_VehicleTransmissionSettings_SetGearRatio(JPH_VehicleTransmissionSettings* settings, uint32_t index, float value);
  2385. JPH_CAPI const float* JPH_VehicleTransmissionSettings_GetGearRatios(const JPH_VehicleTransmissionSettings* settings);
  2386. JPH_CAPI void JPH_VehicleTransmissionSettings_SetGearRatios(JPH_VehicleTransmissionSettings* settings, const float* values, uint32_t count);
  2387. JPH_CAPI uint32_t JPH_VehicleTransmissionSettings_GetReverseGearRatioCount(const JPH_VehicleTransmissionSettings* settings);
  2388. JPH_CAPI float JPH_VehicleTransmissionSettings_GetReverseGearRatio(const JPH_VehicleTransmissionSettings* settings, uint32_t index);
  2389. JPH_CAPI void JPH_VehicleTransmissionSettings_SetReverseGearRatio(JPH_VehicleTransmissionSettings* settings, uint32_t index, float value);
  2390. JPH_CAPI const float* JPH_VehicleTransmissionSettings_GetReverseGearRatios(const JPH_VehicleTransmissionSettings* settings);
  2391. JPH_CAPI void JPH_VehicleTransmissionSettings_SetReverseGearRatios(JPH_VehicleTransmissionSettings* settings, const float* values, uint32_t count);
  2392. JPH_CAPI float JPH_VehicleTransmissionSettings_GetSwitchTime(const JPH_VehicleTransmissionSettings* settings);
  2393. JPH_CAPI void JPH_VehicleTransmissionSettings_SetSwitchTime(JPH_VehicleTransmissionSettings* settings, float value);
  2394. JPH_CAPI float JPH_VehicleTransmissionSettings_GetClutchReleaseTime(const JPH_VehicleTransmissionSettings* settings);
  2395. JPH_CAPI void JPH_VehicleTransmissionSettings_SetClutchReleaseTime(JPH_VehicleTransmissionSettings* settings, float value);
  2396. JPH_CAPI float JPH_VehicleTransmissionSettings_GetSwitchLatency(const JPH_VehicleTransmissionSettings* settings);
  2397. JPH_CAPI void JPH_VehicleTransmissionSettings_SetSwitchLatency(JPH_VehicleTransmissionSettings* settings, float value);
  2398. JPH_CAPI float JPH_VehicleTransmissionSettings_GetShiftUpRPM(const JPH_VehicleTransmissionSettings* settings);
  2399. JPH_CAPI void JPH_VehicleTransmissionSettings_SetShiftUpRPM(JPH_VehicleTransmissionSettings* settings, float value);
  2400. JPH_CAPI float JPH_VehicleTransmissionSettings_GetShiftDownRPM(const JPH_VehicleTransmissionSettings* settings);
  2401. JPH_CAPI void JPH_VehicleTransmissionSettings_SetShiftDownRPM(JPH_VehicleTransmissionSettings* settings, float value);
  2402. JPH_CAPI float JPH_VehicleTransmissionSettings_GetClutchStrength(const JPH_VehicleTransmissionSettings* settings);
  2403. JPH_CAPI void JPH_VehicleTransmissionSettings_SetClutchStrength(JPH_VehicleTransmissionSettings* settings, float value);
  2404. /* VehicleTransmission */
  2405. JPH_CAPI void JPH_VehicleTransmission_Set(JPH_VehicleTransmission* transmission, int currentGear, float clutchFriction);
  2406. JPH_CAPI void JPH_VehicleTransmission_Update(JPH_VehicleTransmission* transmission, float deltaTime, float currentRPM, float forwardInput, bool canShiftUp);
  2407. JPH_CAPI int JPH_VehicleTransmission_GetCurrentGear(const JPH_VehicleTransmission* transmission);
  2408. JPH_CAPI float JPH_VehicleTransmission_GetClutchFriction(const JPH_VehicleTransmission* transmission);
  2409. JPH_CAPI bool JPH_VehicleTransmission_IsSwitchingGear(const JPH_VehicleTransmission* transmission);
  2410. JPH_CAPI float JPH_VehicleTransmission_GetCurrentRatio(const JPH_VehicleTransmission* transmission);
  2411. JPH_CAPI bool JPH_VehicleTransmission_AllowSleep(const JPH_VehicleTransmission* transmission);
  2412. /* VehicleCollisionTester */
  2413. JPH_CAPI void JPH_VehicleCollisionTester_Destroy(JPH_VehicleCollisionTester* tester);
  2414. JPH_CAPI JPH_ObjectLayer JPH_VehicleCollisionTester_GetObjectLayer(const JPH_VehicleCollisionTester* tester);
  2415. JPH_CAPI void JPH_VehicleCollisionTester_SetObjectLayer(JPH_VehicleCollisionTester* tester, JPH_ObjectLayer value);
  2416. JPH_CAPI JPH_VehicleCollisionTesterRay* JPH_VehicleCollisionTesterRay_Create(JPH_ObjectLayer layer, const JPH_Vec3* up, float maxSlopeAngle);
  2417. JPH_CAPI JPH_VehicleCollisionTesterCastSphere* JPH_VehicleCollisionTesterCastSphere_Create(JPH_ObjectLayer layer, float radius, const JPH_Vec3* up, float maxSlopeAngle);
  2418. JPH_CAPI JPH_VehicleCollisionTesterCastCylinder* JPH_VehicleCollisionTesterCastCylinder_Create(JPH_ObjectLayer layer, float convexRadiusFraction);
  2419. /* VehicleControllerSettings/VehicleController */
  2420. JPH_CAPI void JPH_VehicleControllerSettings_Destroy(JPH_VehicleControllerSettings* settings);
  2421. JPH_CAPI const JPH_VehicleConstraint* JPH_VehicleController_GetConstraint(JPH_VehicleController* controller);
  2422. /* ---- WheelSettingsWV - WheelWV - WheeledVehicleController ---- */
  2423. JPH_CAPI JPH_WheelSettingsWV* JPH_WheelSettingsWV_Create(void);
  2424. JPH_CAPI float JPH_WheelSettingsWV_GetInertia(const JPH_WheelSettingsWV* settings);
  2425. JPH_CAPI void JPH_WheelSettingsWV_SetInertia(JPH_WheelSettingsWV* settings, float value);
  2426. JPH_CAPI float JPH_WheelSettingsWV_GetAngularDamping(const JPH_WheelSettingsWV* settings);
  2427. JPH_CAPI void JPH_WheelSettingsWV_SetAngularDamping(JPH_WheelSettingsWV* settings, float value);
  2428. JPH_CAPI float JPH_WheelSettingsWV_GetMaxSteerAngle(const JPH_WheelSettingsWV* settings);
  2429. JPH_CAPI void JPH_WheelSettingsWV_SetMaxSteerAngle(JPH_WheelSettingsWV* settings, float value);
  2430. JPH_CAPI const JPH_LinearCurve* JPH_WheelSettingsWV_GetLongitudinalFriction(const JPH_WheelSettingsWV* settings);
  2431. JPH_CAPI void JPH_WheelSettingsWV_SetLongitudinalFriction(JPH_WheelSettingsWV* settings, const JPH_LinearCurve* value);
  2432. JPH_CAPI const JPH_LinearCurve* JPH_WheelSettingsWV_GetLateralFriction(const JPH_WheelSettingsWV* settings);
  2433. JPH_CAPI void JPH_WheelSettingsWV_SetLateralFriction(JPH_WheelSettingsWV* settings, const JPH_LinearCurve* value);
  2434. JPH_CAPI float JPH_WheelSettingsWV_GetMaxBrakeTorque(const JPH_WheelSettingsWV* settings);
  2435. JPH_CAPI void JPH_WheelSettingsWV_SetMaxBrakeTorque(JPH_WheelSettingsWV* settings, float value);
  2436. JPH_CAPI float JPH_WheelSettingsWV_GetMaxHandBrakeTorque(const JPH_WheelSettingsWV* settings);
  2437. JPH_CAPI void JPH_WheelSettingsWV_SetMaxHandBrakeTorque(JPH_WheelSettingsWV* settings, float value);
  2438. JPH_CAPI JPH_WheelWV* JPH_WheelWV_Create(const JPH_WheelSettingsWV* settings);
  2439. JPH_CAPI const JPH_WheelSettingsWV* JPH_WheelWV_GetSettings(const JPH_WheelWV* wheel);
  2440. JPH_CAPI void JPH_WheelWV_ApplyTorque(JPH_WheelWV* wheel, float torque, float deltaTime);
  2441. JPH_CAPI JPH_WheeledVehicleControllerSettings* JPH_WheeledVehicleControllerSettings_Create(void);
  2442. JPH_CAPI void JPH_WheeledVehicleControllerSettings_GetEngine(const JPH_WheeledVehicleControllerSettings* settings, JPH_VehicleEngineSettings* result);
  2443. JPH_CAPI void JPH_WheeledVehicleControllerSettings_SetEngine(JPH_WheeledVehicleControllerSettings* settings, const JPH_VehicleEngineSettings* value);
  2444. JPH_CAPI const JPH_VehicleTransmissionSettings* JPH_WheeledVehicleControllerSettings_GetTransmission(const JPH_WheeledVehicleControllerSettings* settings);
  2445. JPH_CAPI void JPH_WheeledVehicleControllerSettings_SetTransmission(JPH_WheeledVehicleControllerSettings* settings, const JPH_VehicleTransmissionSettings* value);
  2446. JPH_CAPI uint32_t JPH_WheeledVehicleControllerSettings_GetDifferentialsCount(const JPH_WheeledVehicleControllerSettings* settings);
  2447. JPH_CAPI void JPH_WheeledVehicleControllerSettings_SetDifferentialsCount(JPH_WheeledVehicleControllerSettings* settings, uint32_t count);
  2448. JPH_CAPI void JPH_WheeledVehicleControllerSettings_GetDifferential(const JPH_WheeledVehicleControllerSettings* settings, uint32_t index, JPH_VehicleDifferentialSettings* result);
  2449. JPH_CAPI void JPH_WheeledVehicleControllerSettings_SetDifferential(JPH_WheeledVehicleControllerSettings* settings, uint32_t index, const JPH_VehicleDifferentialSettings* value);
  2450. JPH_CAPI void JPH_WheeledVehicleControllerSettings_SetDifferentials(JPH_WheeledVehicleControllerSettings* settings, const JPH_VehicleDifferentialSettings* values, uint32_t count);
  2451. JPH_CAPI float JPH_WheeledVehicleControllerSettings_GetDifferentialLimitedSlipRatio(const JPH_WheeledVehicleControllerSettings* settings);
  2452. JPH_CAPI void JPH_WheeledVehicleControllerSettings_SetDifferentialLimitedSlipRatio(JPH_WheeledVehicleControllerSettings* settings, float value);
  2453. JPH_CAPI void JPH_WheeledVehicleController_SetDriverInput(JPH_WheeledVehicleController* controller, float forward, float right, float brake, float handBrake);
  2454. JPH_CAPI void JPH_WheeledVehicleController_SetForwardInput(JPH_WheeledVehicleController* controller, float forward);
  2455. JPH_CAPI float JPH_WheeledVehicleController_GetForwardInput(const JPH_WheeledVehicleController* controller);
  2456. JPH_CAPI void JPH_WheeledVehicleController_SetRightInput(JPH_WheeledVehicleController* controller, float rightRatio);
  2457. JPH_CAPI float JPH_WheeledVehicleController_GetRightInput(const JPH_WheeledVehicleController* controller);
  2458. JPH_CAPI void JPH_WheeledVehicleController_SetBrakeInput(JPH_WheeledVehicleController* controller, float brakeInput);
  2459. JPH_CAPI float JPH_WheeledVehicleController_GetBrakeInput(const JPH_WheeledVehicleController* controller);
  2460. JPH_CAPI void JPH_WheeledVehicleController_SetHandBrakeInput(JPH_WheeledVehicleController* controller, float handBrakeInput);
  2461. JPH_CAPI float JPH_WheeledVehicleController_GetHandBrakeInput(const JPH_WheeledVehicleController* controller);
  2462. JPH_CAPI float JPH_WheeledVehicleController_GetWheelSpeedAtClutch(const JPH_WheeledVehicleController* controller);
  2463. JPH_CAPI void JPH_WheeledVehicleController_SetTireMaxImpulseCallback(JPH_WheeledVehicleController* controller, JPH_TireMaxImpulseCallback tireMaxImpulseCallback, void* userData);
  2464. JPH_CAPI const JPH_VehicleEngine* JPH_WheeledVehicleController_GetEngine(const JPH_WheeledVehicleController* controller);
  2465. JPH_CAPI const JPH_VehicleTransmission* JPH_WheeledVehicleController_GetTransmission(const JPH_WheeledVehicleController* controller);
  2466. /* WheelSettingsTV - WheelTV - TrackedVehicleController */
  2467. /* WheelSettingsTV - WheelTV - TrackedVehicleController */
  2468. /* VehicleTrack */
  2469. typedef struct JPH_VehicleTrackSettings JPH_VehicleTrackSettings;
  2470. typedef struct JPH_VehicleTrack JPH_VehicleTrack;
  2471. typedef enum JPH_TrackSide {
  2472. JPH_TrackSide_Left = 0,
  2473. JPH_TrackSide_Right = 1,
  2474. } JPH_TrackSide;
  2475. typedef struct JPH_VehicleTrackSettings {
  2476. uint32_t drivenWheel;
  2477. const uint32_t* wheels;
  2478. uint32_t wheelsCount;
  2479. float inertia;
  2480. float angularDamping;
  2481. float maxBrakeTorque;
  2482. float differentialRatio;
  2483. } JPH_VehicleTrackSettings;
  2484. JPH_CAPI void JPH_VehicleTrackSettings_Init(JPH_VehicleTrackSettings* settings);
  2485. JPH_CAPI float JPH_VehicleTrack_GetAngularVelocity(const JPH_VehicleTrack* track);
  2486. JPH_CAPI void JPH_VehicleTrack_SetAngularVelocity(JPH_VehicleTrack* track, float velocity);
  2487. JPH_CAPI uint32_t JPH_VehicleTrack_GetDrivenWheel(const JPH_VehicleTrack* track);
  2488. JPH_CAPI float JPH_VehicleTrack_GetInertia(const JPH_VehicleTrack* track);
  2489. JPH_CAPI float JPH_VehicleTrack_GetAngularDamping(const JPH_VehicleTrack* track);
  2490. JPH_CAPI float JPH_VehicleTrack_GetMaxBrakeTorque(const JPH_VehicleTrack* track);
  2491. JPH_CAPI float JPH_VehicleTrack_GetDifferentialRatio(const JPH_VehicleTrack* track);
  2492. JPH_CAPI const JPH_VehicleTrack* JPH_TrackedVehicleController_GetTrack(const JPH_TrackedVehicleController* controller, JPH_TrackSide side);
  2493. /* WheelSettingsTV */
  2494. JPH_CAPI JPH_WheelSettingsTV* JPH_WheelSettingsTV_Create(void);
  2495. JPH_CAPI float JPH_WheelSettingsTV_GetLongitudinalFriction(const JPH_WheelSettingsTV* settings);
  2496. JPH_CAPI void JPH_WheelSettingsTV_SetLongitudinalFriction(JPH_WheelSettingsTV* settings, float value);
  2497. JPH_CAPI float JPH_WheelSettingsTV_GetLateralFriction(const JPH_WheelSettingsTV* settings);
  2498. JPH_CAPI void JPH_WheelSettingsTV_SetLateralFriction(JPH_WheelSettingsTV* settings, float value);
  2499. JPH_CAPI JPH_WheelTV* JPH_WheelTV_Create(const JPH_WheelSettingsTV* settings);
  2500. JPH_CAPI const JPH_WheelSettingsTV* JPH_WheelTV_GetSettings(const JPH_WheelTV* wheel);
  2501. JPH_CAPI JPH_TrackedVehicleControllerSettings* JPH_TrackedVehicleControllerSettings_Create(void);
  2502. JPH_CAPI void JPH_TrackedVehicleControllerSettings_GetEngine(const JPH_TrackedVehicleControllerSettings* settings, JPH_VehicleEngineSettings* result);
  2503. JPH_CAPI void JPH_TrackedVehicleControllerSettings_SetEngine(JPH_TrackedVehicleControllerSettings* settings, const JPH_VehicleEngineSettings* value);
  2504. JPH_CAPI const JPH_VehicleTransmissionSettings* JPH_TrackedVehicleControllerSettings_GetTransmission(const JPH_TrackedVehicleControllerSettings* settings);
  2505. JPH_CAPI void JPH_TrackedVehicleControllerSettings_SetTransmission(JPH_TrackedVehicleControllerSettings* settings, const JPH_VehicleTransmissionSettings* value);
  2506. JPH_CAPI void JPH_TrackedVehicleController_SetDriverInput(JPH_TrackedVehicleController* controller, float forward, float leftRatio, float rightRatio, float brake);
  2507. JPH_CAPI float JPH_TrackedVehicleController_GetForwardInput(const JPH_TrackedVehicleController* controller);
  2508. JPH_CAPI void JPH_TrackedVehicleController_SetForwardInput(JPH_TrackedVehicleController* controller, float value);
  2509. JPH_CAPI float JPH_TrackedVehicleController_GetLeftRatio(const JPH_TrackedVehicleController* controller);
  2510. JPH_CAPI void JPH_TrackedVehicleController_SetLeftRatio(JPH_TrackedVehicleController* controller, float value);
  2511. JPH_CAPI float JPH_TrackedVehicleController_GetRightRatio(const JPH_TrackedVehicleController* controller);
  2512. JPH_CAPI void JPH_TrackedVehicleController_SetRightRatio(JPH_TrackedVehicleController* controller, float value);
  2513. JPH_CAPI float JPH_TrackedVehicleController_GetBrakeInput(const JPH_TrackedVehicleController* controller);
  2514. JPH_CAPI void JPH_TrackedVehicleController_SetBrakeInput(JPH_TrackedVehicleController* controller, float value);
  2515. JPH_CAPI const JPH_VehicleEngine* JPH_TrackedVehicleController_GetEngine(const JPH_TrackedVehicleController* controller);
  2516. JPH_CAPI const JPH_VehicleTransmission* JPH_TrackedVehicleController_GetTransmission(const JPH_TrackedVehicleController* controller);
  2517. /* MotorcycleController */
  2518. JPH_CAPI JPH_MotorcycleControllerSettings* JPH_MotorcycleControllerSettings_Create(void);
  2519. JPH_CAPI float JPH_MotorcycleControllerSettings_GetMaxLeanAngle(const JPH_MotorcycleControllerSettings* settings);
  2520. JPH_CAPI void JPH_MotorcycleControllerSettings_SetMaxLeanAngle(JPH_MotorcycleControllerSettings* settings, float value);
  2521. JPH_CAPI float JPH_MotorcycleControllerSettings_GetLeanSpringConstant(const JPH_MotorcycleControllerSettings* settings);
  2522. JPH_CAPI void JPH_MotorcycleControllerSettings_SetLeanSpringConstant(JPH_MotorcycleControllerSettings* settings, float value);
  2523. JPH_CAPI float JPH_MotorcycleControllerSettings_GetLeanSpringDamping(const JPH_MotorcycleControllerSettings* settings);
  2524. JPH_CAPI void JPH_MotorcycleControllerSettings_SetLeanSpringDamping(JPH_MotorcycleControllerSettings* settings, float value);
  2525. JPH_CAPI float JPH_MotorcycleControllerSettings_GetLeanSpringIntegrationCoefficient(const JPH_MotorcycleControllerSettings* settings);
  2526. JPH_CAPI void JPH_MotorcycleControllerSettings_SetLeanSpringIntegrationCoefficient(JPH_MotorcycleControllerSettings* settings, float value);
  2527. JPH_CAPI float JPH_MotorcycleControllerSettings_GetLeanSpringIntegrationCoefficientDecay(const JPH_MotorcycleControllerSettings* settings);
  2528. JPH_CAPI void JPH_MotorcycleControllerSettings_SetLeanSpringIntegrationCoefficientDecay(JPH_MotorcycleControllerSettings* settings, float value);
  2529. JPH_CAPI float JPH_MotorcycleControllerSettings_GetLeanSmoothingFactor(const JPH_MotorcycleControllerSettings* settings);
  2530. JPH_CAPI void JPH_MotorcycleControllerSettings_SetLeanSmoothingFactor(JPH_MotorcycleControllerSettings* settings, float value);
  2531. JPH_CAPI float JPH_MotorcycleController_GetWheelBase(const JPH_MotorcycleController* controller);
  2532. JPH_CAPI bool JPH_MotorcycleController_IsLeanControllerEnabled(const JPH_MotorcycleController* controller);
  2533. JPH_CAPI void JPH_MotorcycleController_EnableLeanController(JPH_MotorcycleController* controller, bool value);
  2534. JPH_CAPI bool JPH_MotorcycleController_IsLeanSteeringLimitEnabled(const JPH_MotorcycleController* controller);
  2535. JPH_CAPI void JPH_MotorcycleController_EnableLeanSteeringLimit(JPH_MotorcycleController* controller, bool value);
  2536. JPH_CAPI float JPH_MotorcycleController_GetLeanSpringConstant(const JPH_MotorcycleController* controller);
  2537. JPH_CAPI void JPH_MotorcycleController_SetLeanSpringConstant(JPH_MotorcycleController* controller, float value);
  2538. JPH_CAPI float JPH_MotorcycleController_GetLeanSpringDamping(const JPH_MotorcycleController* controller);
  2539. JPH_CAPI void JPH_MotorcycleController_SetLeanSpringDamping(JPH_MotorcycleController* controller, float value);
  2540. JPH_CAPI float JPH_MotorcycleController_GetLeanSpringIntegrationCoefficient(const JPH_MotorcycleController* controller);
  2541. JPH_CAPI void JPH_MotorcycleController_SetLeanSpringIntegrationCoefficient(JPH_MotorcycleController* controller, float value);
  2542. JPH_CAPI float JPH_MotorcycleController_GetLeanSpringIntegrationCoefficientDecay(const JPH_MotorcycleController* controller);
  2543. JPH_CAPI void JPH_MotorcycleController_SetLeanSpringIntegrationCoefficientDecay(JPH_MotorcycleController* controller, float value);
  2544. JPH_CAPI float JPH_MotorcycleController_GetLeanSmoothingFactor(const JPH_MotorcycleController* controller);
  2545. JPH_CAPI void JPH_MotorcycleController_SetLeanSmoothingFactor(JPH_MotorcycleController* controller, float value);
  2546. /* LinearCurve */
  2547. JPH_CAPI JPH_LinearCurve* JPH_LinearCurve_Create(void);
  2548. JPH_CAPI void JPH_LinearCurve_Destroy(JPH_LinearCurve* curve);
  2549. JPH_CAPI void JPH_LinearCurve_Clear(JPH_LinearCurve* curve);
  2550. JPH_CAPI void JPH_LinearCurve_Reserve(JPH_LinearCurve* curve, uint32_t numPoints);
  2551. JPH_CAPI void JPH_LinearCurve_AddPoint(JPH_LinearCurve* curve, float x, float y);
  2552. JPH_CAPI void JPH_LinearCurve_Sort(JPH_LinearCurve* curve);
  2553. JPH_CAPI float JPH_LinearCurve_GetMinX(const JPH_LinearCurve* curve);
  2554. JPH_CAPI float JPH_LinearCurve_GetMaxX(const JPH_LinearCurve* curve);
  2555. JPH_CAPI float JPH_LinearCurve_GetValue(const JPH_LinearCurve* curve, float x);
  2556. JPH_CAPI uint32_t JPH_LinearCurve_GetPointCount(const JPH_LinearCurve* curve);
  2557. JPH_CAPI void JPH_LinearCurve_GetPoint(const JPH_LinearCurve* curve, uint32_t index, JPH_Point* result);
  2558. JPH_CAPI void JPH_LinearCurve_GetPoints(const JPH_LinearCurve* curve, JPH_Point* points, uint32_t* count);
  2559. #endif /* JOLT_C_H_ */