@bloomengine/engine 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (562) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -0
  3. package/native/android/Cargo.lock +1848 -0
  4. package/native/android/Cargo.toml +20 -0
  5. package/native/android/src/lib.rs +1747 -0
  6. package/native/ios/Cargo.lock +1688 -0
  7. package/native/ios/Cargo.toml +19 -0
  8. package/native/ios/src/lib.rs +2258 -0
  9. package/native/linux/Cargo.lock +1719 -0
  10. package/native/linux/Cargo.toml +22 -0
  11. package/native/linux/src/lib.rs +2236 -0
  12. package/native/macos/Cargo.lock +3310 -0
  13. package/native/macos/Cargo.toml +29 -0
  14. package/native/macos/src/lib.rs +3444 -0
  15. package/native/shared/Cargo.lock +1898 -0
  16. package/native/shared/Cargo.toml +42 -0
  17. package/native/shared/assets/default_font.ttf +0 -0
  18. package/native/shared/build.rs +77 -0
  19. package/native/shared/shaders/common/fog.wgsl +16 -0
  20. package/native/shared/shaders/common/imposter.wgsl +112 -0
  21. package/native/shared/shaders/common/pbr.wgsl +186 -0
  22. package/native/shared/shaders/common/shadows.wgsl +77 -0
  23. package/native/shared/shaders/common/sky.wgsl +8 -0
  24. package/native/shared/shaders/common/tonemap.wgsl +25 -0
  25. package/native/shared/shaders/impulse_field.wgsl +53 -0
  26. package/native/shared/shaders/material_abi.wgsl +360 -0
  27. package/native/shared/shaders/materials/test_minimal.wgsl +42 -0
  28. package/native/shared/src/audio.rs +363 -0
  29. package/native/shared/src/custom_shaders.rs +104 -0
  30. package/native/shared/src/drs.rs +211 -0
  31. package/native/shared/src/engine.rs +186 -0
  32. package/native/shared/src/frame_callbacks.rs +88 -0
  33. package/native/shared/src/geometry.rs +236 -0
  34. package/native/shared/src/handles.rs +76 -0
  35. package/native/shared/src/input.rs +273 -0
  36. package/native/shared/src/jolt_sys.rs +822 -0
  37. package/native/shared/src/lib.rs +43 -0
  38. package/native/shared/src/models.rs +1941 -0
  39. package/native/shared/src/physics_jolt.rs +1528 -0
  40. package/native/shared/src/picking.rs +298 -0
  41. package/native/shared/src/postfx.rs +339 -0
  42. package/native/shared/src/profiler.rs +416 -0
  43. package/native/shared/src/renderer/atmosphere_lut.rs +573 -0
  44. package/native/shared/src/renderer/brdf_lut.rs +154 -0
  45. package/native/shared/src/renderer/formats.rs +778 -0
  46. package/native/shared/src/renderer/graph.rs +465 -0
  47. package/native/shared/src/renderer/hot_reload.rs +390 -0
  48. package/native/shared/src/renderer/impulse_field.rs +455 -0
  49. package/native/shared/src/renderer/material_pipeline.rs +604 -0
  50. package/native/shared/src/renderer/material_system.rs +2106 -0
  51. package/native/shared/src/renderer/mod.rs +13923 -0
  52. package/native/shared/src/renderer/planar_reflection.rs +458 -0
  53. package/native/shared/src/renderer/post_pass.rs +249 -0
  54. package/native/shared/src/renderer/shader_include.rs +205 -0
  55. package/native/shared/src/renderer/shader_library.rs +134 -0
  56. package/native/shared/src/renderer/shaders.rs +5855 -0
  57. package/native/shared/src/renderer/transient.rs +576 -0
  58. package/native/shared/src/renderer/types.rs +259 -0
  59. package/native/shared/src/renderer/util.rs +151 -0
  60. package/native/shared/src/scene.rs +1066 -0
  61. package/native/shared/src/sdf_cache.rs +274 -0
  62. package/native/shared/src/shadows.rs +551 -0
  63. package/native/shared/src/staging.rs +90 -0
  64. package/native/shared/src/string_header.rs +35 -0
  65. package/native/shared/src/text_renderer.rs +456 -0
  66. package/native/shared/src/textures.rs +154 -0
  67. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp +242 -0
  68. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h +121 -0
  69. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h +296 -0
  70. package/native/third_party/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h +323 -0
  71. package/native/third_party/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h +555 -0
  72. package/native/third_party/JoltPhysics/Jolt/ConfigurationString.h +112 -0
  73. package/native/third_party/JoltPhysics/Jolt/Core/ARMNeon.h +94 -0
  74. package/native/third_party/JoltPhysics/Jolt/Core/Array.h +713 -0
  75. package/native/third_party/JoltPhysics/Jolt/Core/Atomics.h +44 -0
  76. package/native/third_party/JoltPhysics/Jolt/Core/BinaryHeap.h +96 -0
  77. package/native/third_party/JoltPhysics/Jolt/Core/ByteBuffer.h +74 -0
  78. package/native/third_party/JoltPhysics/Jolt/Core/Color.cpp +38 -0
  79. package/native/third_party/JoltPhysics/Jolt/Core/Color.h +98 -0
  80. package/native/third_party/JoltPhysics/Jolt/Core/Core.h +652 -0
  81. package/native/third_party/JoltPhysics/Jolt/Core/FPControlWord.h +143 -0
  82. package/native/third_party/JoltPhysics/Jolt/Core/FPException.h +96 -0
  83. package/native/third_party/JoltPhysics/Jolt/Core/FPFlushDenormals.h +43 -0
  84. package/native/third_party/JoltPhysics/Jolt/Core/Factory.cpp +92 -0
  85. package/native/third_party/JoltPhysics/Jolt/Core/Factory.h +54 -0
  86. package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.h +122 -0
  87. package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.inl +215 -0
  88. package/native/third_party/JoltPhysics/Jolt/Core/HashCombine.h +234 -0
  89. package/native/third_party/JoltPhysics/Jolt/Core/HashTable.h +876 -0
  90. package/native/third_party/JoltPhysics/Jolt/Core/InsertionSort.h +58 -0
  91. package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.cpp +27 -0
  92. package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.h +38 -0
  93. package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.h +311 -0
  94. package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.inl +56 -0
  95. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.cpp +65 -0
  96. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.h +62 -0
  97. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.cpp +364 -0
  98. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.h +101 -0
  99. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.cpp +230 -0
  100. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.h +85 -0
  101. package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.cpp +51 -0
  102. package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.h +67 -0
  103. package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.h +182 -0
  104. package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.inl +351 -0
  105. package/native/third_party/JoltPhysics/Jolt/Core/Memory.cpp +85 -0
  106. package/native/third_party/JoltPhysics/Jolt/Core/Memory.h +85 -0
  107. package/native/third_party/JoltPhysics/Jolt/Core/Mutex.h +223 -0
  108. package/native/third_party/JoltPhysics/Jolt/Core/MutexArray.h +98 -0
  109. package/native/third_party/JoltPhysics/Jolt/Core/NonCopyable.h +18 -0
  110. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.cpp +677 -0
  111. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.h +301 -0
  112. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.inl +90 -0
  113. package/native/third_party/JoltPhysics/Jolt/Core/QuickSort.h +137 -0
  114. package/native/third_party/JoltPhysics/Jolt/Core/RTTI.cpp +149 -0
  115. package/native/third_party/JoltPhysics/Jolt/Core/RTTI.h +436 -0
  116. package/native/third_party/JoltPhysics/Jolt/Core/Reference.h +244 -0
  117. package/native/third_party/JoltPhysics/Jolt/Core/Result.h +174 -0
  118. package/native/third_party/JoltPhysics/Jolt/Core/STLAlignedAllocator.h +72 -0
  119. package/native/third_party/JoltPhysics/Jolt/Core/STLAllocator.h +127 -0
  120. package/native/third_party/JoltPhysics/Jolt/Core/STLLocalAllocator.h +170 -0
  121. package/native/third_party/JoltPhysics/Jolt/Core/STLTempAllocator.h +80 -0
  122. package/native/third_party/JoltPhysics/Jolt/Core/ScopeExit.h +49 -0
  123. package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.cpp +135 -0
  124. package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.h +68 -0
  125. package/native/third_party/JoltPhysics/Jolt/Core/StaticArray.h +329 -0
  126. package/native/third_party/JoltPhysics/Jolt/Core/StreamIn.h +120 -0
  127. package/native/third_party/JoltPhysics/Jolt/Core/StreamOut.h +97 -0
  128. package/native/third_party/JoltPhysics/Jolt/Core/StreamUtils.h +168 -0
  129. package/native/third_party/JoltPhysics/Jolt/Core/StreamWrapper.h +53 -0
  130. package/native/third_party/JoltPhysics/Jolt/Core/StridedPtr.h +63 -0
  131. package/native/third_party/JoltPhysics/Jolt/Core/StringTools.cpp +101 -0
  132. package/native/third_party/JoltPhysics/Jolt/Core/StringTools.h +38 -0
  133. package/native/third_party/JoltPhysics/Jolt/Core/TempAllocator.h +209 -0
  134. package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.cpp +37 -0
  135. package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.h +58 -0
  136. package/native/third_party/JoltPhysics/Jolt/Core/UnorderedMap.h +80 -0
  137. package/native/third_party/JoltPhysics/Jolt/Core/UnorderedSet.h +32 -0
  138. package/native/third_party/JoltPhysics/Jolt/Geometry/AABox.h +313 -0
  139. package/native/third_party/JoltPhysics/Jolt/Geometry/AABox4.h +224 -0
  140. package/native/third_party/JoltPhysics/Jolt/Geometry/ClipPoly.h +200 -0
  141. package/native/third_party/JoltPhysics/Jolt/Geometry/ClosestPoint.h +498 -0
  142. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.cpp +1467 -0
  143. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.h +276 -0
  144. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.cpp +335 -0
  145. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.h +105 -0
  146. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexSupport.h +188 -0
  147. package/native/third_party/JoltPhysics/Jolt/Geometry/EPAConvexHullBuilder.h +845 -0
  148. package/native/third_party/JoltPhysics/Jolt/Geometry/EPAPenetrationDepth.h +557 -0
  149. package/native/third_party/JoltPhysics/Jolt/Geometry/Ellipse.h +77 -0
  150. package/native/third_party/JoltPhysics/Jolt/Geometry/GJKClosestPoint.h +945 -0
  151. package/native/third_party/JoltPhysics/Jolt/Geometry/IndexedTriangle.h +130 -0
  152. package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.cpp +222 -0
  153. package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.h +19 -0
  154. package/native/third_party/JoltPhysics/Jolt/Geometry/MortonCode.h +40 -0
  155. package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.cpp +178 -0
  156. package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.h +39 -0
  157. package/native/third_party/JoltPhysics/Jolt/Geometry/Plane.h +104 -0
  158. package/native/third_party/JoltPhysics/Jolt/Geometry/RayAABox.h +241 -0
  159. package/native/third_party/JoltPhysics/Jolt/Geometry/RayCapsule.h +37 -0
  160. package/native/third_party/JoltPhysics/Jolt/Geometry/RayCylinder.h +101 -0
  161. package/native/third_party/JoltPhysics/Jolt/Geometry/RaySphere.h +96 -0
  162. package/native/third_party/JoltPhysics/Jolt/Geometry/RayTriangle.h +158 -0
  163. package/native/third_party/JoltPhysics/Jolt/Geometry/Sphere.h +72 -0
  164. package/native/third_party/JoltPhysics/Jolt/Geometry/Triangle.h +34 -0
  165. package/native/third_party/JoltPhysics/Jolt/Jolt.cmake +703 -0
  166. package/native/third_party/JoltPhysics/Jolt/Jolt.h +16 -0
  167. package/native/third_party/JoltPhysics/Jolt/Jolt.natvis +116 -0
  168. package/native/third_party/JoltPhysics/Jolt/Math/BVec16.h +99 -0
  169. package/native/third_party/JoltPhysics/Jolt/Math/BVec16.inl +177 -0
  170. package/native/third_party/JoltPhysics/Jolt/Math/DMat44.h +158 -0
  171. package/native/third_party/JoltPhysics/Jolt/Math/DMat44.inl +310 -0
  172. package/native/third_party/JoltPhysics/Jolt/Math/DVec3.h +291 -0
  173. package/native/third_party/JoltPhysics/Jolt/Math/DVec3.inl +941 -0
  174. package/native/third_party/JoltPhysics/Jolt/Math/Double3.h +48 -0
  175. package/native/third_party/JoltPhysics/Jolt/Math/DynMatrix.h +31 -0
  176. package/native/third_party/JoltPhysics/Jolt/Math/EigenValueSymmetric.h +177 -0
  177. package/native/third_party/JoltPhysics/Jolt/Math/FindRoot.h +42 -0
  178. package/native/third_party/JoltPhysics/Jolt/Math/Float2.h +36 -0
  179. package/native/third_party/JoltPhysics/Jolt/Math/Float3.h +50 -0
  180. package/native/third_party/JoltPhysics/Jolt/Math/Float4.h +44 -0
  181. package/native/third_party/JoltPhysics/Jolt/Math/GaussianElimination.h +102 -0
  182. package/native/third_party/JoltPhysics/Jolt/Math/HalfFloat.h +208 -0
  183. package/native/third_party/JoltPhysics/Jolt/Math/Mat44.h +243 -0
  184. package/native/third_party/JoltPhysics/Jolt/Math/Mat44.inl +952 -0
  185. package/native/third_party/JoltPhysics/Jolt/Math/Math.h +208 -0
  186. package/native/third_party/JoltPhysics/Jolt/Math/MathTypes.h +32 -0
  187. package/native/third_party/JoltPhysics/Jolt/Math/Matrix.h +259 -0
  188. package/native/third_party/JoltPhysics/Jolt/Math/Quat.h +268 -0
  189. package/native/third_party/JoltPhysics/Jolt/Math/Quat.inl +406 -0
  190. package/native/third_party/JoltPhysics/Jolt/Math/Real.h +44 -0
  191. package/native/third_party/JoltPhysics/Jolt/Math/Swizzle.h +19 -0
  192. package/native/third_party/JoltPhysics/Jolt/Math/Trigonometry.h +79 -0
  193. package/native/third_party/JoltPhysics/Jolt/Math/UVec4.h +232 -0
  194. package/native/third_party/JoltPhysics/Jolt/Math/UVec4.inl +636 -0
  195. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.cpp +71 -0
  196. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.h +308 -0
  197. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.inl +942 -0
  198. package/native/third_party/JoltPhysics/Jolt/Math/Vec4.h +320 -0
  199. package/native/third_party/JoltPhysics/Jolt/Math/Vec4.inl +1152 -0
  200. package/native/third_party/JoltPhysics/Jolt/Math/Vector.h +211 -0
  201. package/native/third_party/JoltPhysics/Jolt/ObjectStream/GetPrimitiveTypeOfType.h +54 -0
  202. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.cpp +38 -0
  203. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.h +337 -0
  204. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.cpp +252 -0
  205. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.h +57 -0
  206. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.cpp +165 -0
  207. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.h +57 -0
  208. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.cpp +635 -0
  209. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.h +148 -0
  210. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.cpp +166 -0
  211. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.h +101 -0
  212. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.cpp +418 -0
  213. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.h +55 -0
  214. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.cpp +255 -0
  215. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.h +62 -0
  216. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTypes.h +26 -0
  217. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttribute.h +111 -0
  218. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeEnum.h +67 -0
  219. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeTyped.h +60 -0
  220. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.cpp +15 -0
  221. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.h +170 -0
  222. package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.cpp +70 -0
  223. package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.h +45 -0
  224. package/native/third_party/JoltPhysics/Jolt/Physics/Body/AllowedDOFs.h +68 -0
  225. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.cpp +426 -0
  226. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.h +452 -0
  227. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.inl +197 -0
  228. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyAccess.h +68 -0
  229. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyActivationListener.h +28 -0
  230. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp +234 -0
  231. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.h +124 -0
  232. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyFilter.h +130 -0
  233. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyID.h +101 -0
  234. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.cpp +1099 -0
  235. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.h +324 -0
  236. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLock.h +111 -0
  237. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockInterface.h +134 -0
  238. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockMulti.h +120 -0
  239. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.cpp +1220 -0
  240. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.h +403 -0
  241. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyPair.h +36 -0
  242. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyType.h +19 -0
  243. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.cpp +185 -0
  244. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.h +58 -0
  245. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.cpp +92 -0
  246. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.h +308 -0
  247. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.inl +178 -0
  248. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionQuality.h +31 -0
  249. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionType.h +17 -0
  250. package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.cpp +354 -0
  251. package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.h +159 -0
  252. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.cpp +59 -0
  253. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.h +157 -0
  254. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterID.h +98 -0
  255. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.cpp +1933 -0
  256. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.h +752 -0
  257. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/AABoxCast.h +20 -0
  258. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdgeMode.h +17 -0
  259. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdges.h +114 -0
  260. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BackFaceMode.h +16 -0
  261. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp +16 -0
  262. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.h +109 -0
  263. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp +313 -0
  264. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h +38 -0
  265. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h +148 -0
  266. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h +92 -0
  267. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h +64 -0
  268. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp +629 -0
  269. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h +108 -0
  270. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h +56 -0
  271. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h +35 -0
  272. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h +66 -0
  273. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.cpp +1768 -0
  274. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.h +389 -0
  275. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.cpp +107 -0
  276. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.h +46 -0
  277. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastResult.h +37 -0
  278. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.cpp +223 -0
  279. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.h +49 -0
  280. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollectFacesMode.h +16 -0
  281. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.cpp +155 -0
  282. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.h +56 -0
  283. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollidePointResult.h +25 -0
  284. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShape.h +106 -0
  285. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShapeVsShapePerLeaf.h +94 -0
  286. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVertexIterator.h +110 -0
  287. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h +102 -0
  288. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.cpp +121 -0
  289. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.h +50 -0
  290. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollector.h +109 -0
  291. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollectorImpl.h +219 -0
  292. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.cpp +107 -0
  293. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.h +97 -0
  294. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.cpp +35 -0
  295. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.h +97 -0
  296. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ContactListener.h +143 -0
  297. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.cpp +213 -0
  298. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.h +48 -0
  299. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.cpp +32 -0
  300. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.h +46 -0
  301. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.cpp +38 -0
  302. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.h +130 -0
  303. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/InternalEdgeRemovingCollector.h +279 -0
  304. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp +271 -0
  305. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h +44 -0
  306. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.cpp +448 -0
  307. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.h +77 -0
  308. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.cpp +62 -0
  309. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.h +110 -0
  310. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayer.h +111 -0
  311. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterMask.h +52 -0
  312. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterTable.h +78 -0
  313. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.cpp +35 -0
  314. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.h +57 -0
  315. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.cpp +38 -0
  316. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.h +37 -0
  317. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/RayCast.h +87 -0
  318. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.cpp +318 -0
  319. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.h +115 -0
  320. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.cpp +438 -0
  321. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.h +129 -0
  322. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.cpp +433 -0
  323. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.h +354 -0
  324. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h +461 -0
  325. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.cpp +1311 -0
  326. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.h +202 -0
  327. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.cpp +566 -0
  328. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.h +150 -0
  329. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.cpp +418 -0
  330. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.h +126 -0
  331. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.cpp +87 -0
  332. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.h +80 -0
  333. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.cpp +64 -0
  334. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.h +75 -0
  335. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/GetTrianglesContext.h +248 -0
  336. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp +2754 -0
  337. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.h +380 -0
  338. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.cpp +1305 -0
  339. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.h +228 -0
  340. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp +596 -0
  341. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.h +176 -0
  342. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp +217 -0
  343. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h +140 -0
  344. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.cpp +541 -0
  345. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.h +147 -0
  346. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h +319 -0
  347. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp +333 -0
  348. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h +161 -0
  349. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaleHelpers.h +83 -0
  350. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.cpp +238 -0
  351. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.h +145 -0
  352. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.cpp +325 -0
  353. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.h +466 -0
  354. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.cpp +347 -0
  355. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.h +125 -0
  356. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp +674 -0
  357. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.h +139 -0
  358. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeID.h +138 -0
  359. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeIDPair.h +65 -0
  360. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp +453 -0
  361. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.gliffy +1 -0
  362. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h +135 -0
  363. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp +691 -0
  364. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.h +132 -0
  365. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.cpp +430 -0
  366. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.h +143 -0
  367. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeCast.h +173 -0
  368. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeFilter.h +73 -0
  369. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilter.h +40 -0
  370. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilterWrapper.h +58 -0
  371. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SortReverseAndStore.h +48 -0
  372. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.cpp +180 -0
  373. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.h +194 -0
  374. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/CalculateSolverSteps.h +70 -0
  375. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.cpp +246 -0
  376. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.h +133 -0
  377. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.cpp +73 -0
  378. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.h +243 -0
  379. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.cpp +289 -0
  380. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.h +100 -0
  381. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h +257 -0
  382. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h +682 -0
  383. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h +276 -0
  384. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h +195 -0
  385. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h +222 -0
  386. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h +246 -0
  387. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h +239 -0
  388. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h +196 -0
  389. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h +283 -0
  390. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h +246 -0
  391. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SpringPart.h +169 -0
  392. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h +597 -0
  393. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.cpp +1804 -0
  394. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.h +524 -0
  395. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.cpp +266 -0
  396. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.h +120 -0
  397. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.cpp +215 -0
  398. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.h +96 -0
  399. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.cpp +188 -0
  400. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.h +116 -0
  401. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.cpp +443 -0
  402. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.h +205 -0
  403. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.cpp +43 -0
  404. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.h +66 -0
  405. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.cpp +458 -0
  406. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.h +191 -0
  407. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.cpp +85 -0
  408. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.h +76 -0
  409. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.cpp +308 -0
  410. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.h +54 -0
  411. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.cpp +157 -0
  412. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.h +94 -0
  413. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.cpp +253 -0
  414. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.h +137 -0
  415. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.cpp +189 -0
  416. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.h +118 -0
  417. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.cpp +900 -0
  418. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.h +289 -0
  419. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.cpp +501 -0
  420. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.h +198 -0
  421. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.cpp +35 -0
  422. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.h +70 -0
  423. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.cpp +524 -0
  424. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.h +197 -0
  425. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.cpp +56 -0
  426. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.h +65 -0
  427. package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.cpp +17 -0
  428. package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.h +159 -0
  429. package/native/third_party/JoltPhysics/Jolt/Physics/EActivation.h +16 -0
  430. package/native/third_party/JoltPhysics/Jolt/Physics/EPhysicsUpdateError.h +37 -0
  431. package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.cpp +492 -0
  432. package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.h +144 -0
  433. package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.cpp +582 -0
  434. package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.h +187 -0
  435. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsLock.h +169 -0
  436. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.cpp +261 -0
  437. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.h +104 -0
  438. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSettings.h +125 -0
  439. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsStepListener.h +37 -0
  440. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.cpp +2915 -0
  441. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.h +391 -0
  442. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.cpp +25 -0
  443. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.h +176 -0
  444. package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.cpp +744 -0
  445. package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.h +245 -0
  446. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyContactListener.h +55 -0
  447. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp +128 -0
  448. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.h +75 -0
  449. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyManifold.h +74 -0
  450. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp +1501 -0
  451. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.h +333 -0
  452. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.cpp +354 -0
  453. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.h +73 -0
  454. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp +1487 -0
  455. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.h +390 -0
  456. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyUpdateContext.h +63 -0
  457. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyVertex.h +36 -0
  458. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorder.h +136 -0
  459. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.cpp +90 -0
  460. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.h +50 -0
  461. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.cpp +306 -0
  462. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.h +119 -0
  463. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.cpp +547 -0
  464. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.h +169 -0
  465. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp +33 -0
  466. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.h +33 -0
  467. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.cpp +376 -0
  468. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.h +146 -0
  469. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.cpp +703 -0
  470. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.h +252 -0
  471. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.cpp +17 -0
  472. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.h +87 -0
  473. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.cpp +81 -0
  474. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.h +39 -0
  475. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.cpp +122 -0
  476. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.h +93 -0
  477. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.cpp +52 -0
  478. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.h +56 -0
  479. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.cpp +159 -0
  480. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.h +87 -0
  481. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.cpp +93 -0
  482. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.h +148 -0
  483. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.cpp +866 -0
  484. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.h +205 -0
  485. package/native/third_party/JoltPhysics/Jolt/RegisterTypes.cpp +204 -0
  486. package/native/third_party/JoltPhysics/Jolt/RegisterTypes.h +29 -0
  487. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.cpp +1107 -0
  488. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.h +383 -0
  489. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.cpp +168 -0
  490. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.h +48 -0
  491. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.cpp +158 -0
  492. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.h +130 -0
  493. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.cpp +80 -0
  494. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.h +88 -0
  495. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.cpp +165 -0
  496. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.h +91 -0
  497. package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.cpp +82 -0
  498. package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.h +72 -0
  499. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.cpp +237 -0
  500. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.h +145 -0
  501. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.cpp +87 -0
  502. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.h +82 -0
  503. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.cpp +73 -0
  504. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.h +84 -0
  505. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp +139 -0
  506. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.h +52 -0
  507. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.cpp +43 -0
  508. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.h +28 -0
  509. package/native/third_party/JoltPhysics/LICENSE +7 -0
  510. package/native/third_party/JoltPhysics/README.md +173 -0
  511. package/native/third_party/bloom_jolt/CMakeLists.txt +78 -0
  512. package/native/third_party/bloom_jolt/include/bloom_jolt.h +519 -0
  513. package/native/third_party/bloom_jolt/src/bloom_jolt.cpp +1780 -0
  514. package/native/tvos/Cargo.lock +1692 -0
  515. package/native/tvos/Cargo.toml +22 -0
  516. package/native/tvos/src/lib.rs +3179 -0
  517. package/native/watchos/Cargo.lock +16 -0
  518. package/native/watchos/Cargo.toml +19 -0
  519. package/native/watchos/shaders/bloom_postfx.metal +99 -0
  520. package/native/watchos/src/BloomWatchApp.swift +1236 -0
  521. package/native/watchos/src/BloomWatchAudio.swift +179 -0
  522. package/native/watchos/src/audio.rs +55 -0
  523. package/native/watchos/src/draw_list.rs +223 -0
  524. package/native/watchos/src/ffi_stubs.rs +454 -0
  525. package/native/watchos/src/lib.rs +1013 -0
  526. package/native/watchos/src/models.rs +746 -0
  527. package/native/watchos/src/postfx.rs +91 -0
  528. package/native/watchos/src/scene.rs +534 -0
  529. package/native/watchos/src/textures.rs +184 -0
  530. package/native/web/Cargo.lock +1656 -0
  531. package/native/web/Cargo.toml +38 -0
  532. package/native/web/bloom_glue.js +218 -0
  533. package/native/web/build.sh +101 -0
  534. package/native/web/index.html +390 -0
  535. package/native/web/jolt_bridge.js +1311 -0
  536. package/native/web/src/lib.rs +2739 -0
  537. package/native/windows/Cargo.lock +1813 -0
  538. package/native/windows/Cargo.toml +31 -0
  539. package/native/windows/src/lib.rs +1933 -0
  540. package/package.json +558 -0
  541. package/src/audio/index.ts +151 -0
  542. package/src/core/colors.ts +56 -0
  543. package/src/core/index.ts +903 -0
  544. package/src/core/keys.ts +63 -0
  545. package/src/core/types.ts +102 -0
  546. package/src/index.ts +158 -0
  547. package/src/math/index.ts +502 -0
  548. package/src/mobile/index.ts +294 -0
  549. package/src/models/index.ts +859 -0
  550. package/src/physics/index.ts +1072 -0
  551. package/src/scene/index.ts +570 -0
  552. package/src/shapes/index.ts +120 -0
  553. package/src/text/index.ts +48 -0
  554. package/src/textures/index.ts +173 -0
  555. package/src/world/index.ts +22 -0
  556. package/src/world/loader.ts +385 -0
  557. package/src/world/prefab.ts +205 -0
  558. package/src/world/saver.ts +61 -0
  559. package/src/world/terrain.ts +254 -0
  560. package/src/world/types.ts +136 -0
  561. package/src/world/validate.ts +202 -0
  562. package/src/world/version.ts +47 -0
@@ -0,0 +1,1099 @@
1
+ // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2
+ // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
3
+ // SPDX-License-Identifier: MIT
4
+
5
+ #include <Jolt/Jolt.h>
6
+
7
+ #include <Jolt/Physics/Body/BodyInterface.h>
8
+ #include <Jolt/Physics/Collision/BroadPhase/BroadPhase.h>
9
+ #include <Jolt/Physics/Collision/CollisionCollectorImpl.h>
10
+ #include <Jolt/Physics/Body/Body.h>
11
+ #include <Jolt/Physics/Body/BodyManager.h>
12
+ #include <Jolt/Physics/Body/BodyCreationSettings.h>
13
+ #include <Jolt/Physics/Body/BodyLock.h>
14
+ #include <Jolt/Physics/Body/BodyLockMulti.h>
15
+ #include <Jolt/Physics/Collision/PhysicsMaterial.h>
16
+ #include <Jolt/Physics/Constraints/TwoBodyConstraint.h>
17
+
18
+ JPH_NAMESPACE_BEGIN
19
+
20
+ void BodyInterface::ActivateBodyInternal(Body &ioBody) const
21
+ {
22
+ // Activate body or reset its sleep timer.
23
+ // Note that BodyManager::ActivateBodies also resets the sleep timer internally, but we avoid a mutex lock if the body is already active by calling ResetSleepTimer directly.
24
+ if (!ioBody.IsActive())
25
+ mBodyManager->ActivateBodies(&ioBody.GetID(), 1);
26
+ else
27
+ ioBody.ResetSleepTimer();
28
+ }
29
+
30
+ Body *BodyInterface::CreateBody(const BodyCreationSettings &inSettings)
31
+ {
32
+ Body *body = mBodyManager->AllocateBody(inSettings);
33
+ if (!mBodyManager->AddBody(body))
34
+ {
35
+ mBodyManager->FreeBody(body);
36
+ return nullptr;
37
+ }
38
+ return body;
39
+ }
40
+
41
+ Body *BodyInterface::CreateSoftBody(const SoftBodyCreationSettings &inSettings)
42
+ {
43
+ Body *body = mBodyManager->AllocateSoftBody(inSettings);
44
+ if (!mBodyManager->AddBody(body))
45
+ {
46
+ mBodyManager->FreeBody(body);
47
+ return nullptr;
48
+ }
49
+ return body;
50
+ }
51
+
52
+ Body *BodyInterface::CreateBodyWithID(const BodyID &inBodyID, const BodyCreationSettings &inSettings)
53
+ {
54
+ Body *body = mBodyManager->AllocateBody(inSettings);
55
+ if (!mBodyManager->AddBodyWithCustomID(body, inBodyID))
56
+ {
57
+ mBodyManager->FreeBody(body);
58
+ return nullptr;
59
+ }
60
+ return body;
61
+ }
62
+
63
+ Body *BodyInterface::CreateSoftBodyWithID(const BodyID &inBodyID, const SoftBodyCreationSettings &inSettings)
64
+ {
65
+ Body *body = mBodyManager->AllocateSoftBody(inSettings);
66
+ if (!mBodyManager->AddBodyWithCustomID(body, inBodyID))
67
+ {
68
+ mBodyManager->FreeBody(body);
69
+ return nullptr;
70
+ }
71
+ return body;
72
+ }
73
+
74
+ Body *BodyInterface::CreateBodyWithoutID(const BodyCreationSettings &inSettings) const
75
+ {
76
+ return mBodyManager->AllocateBody(inSettings);
77
+ }
78
+
79
+ Body *BodyInterface::CreateSoftBodyWithoutID(const SoftBodyCreationSettings &inSettings) const
80
+ {
81
+ return mBodyManager->AllocateSoftBody(inSettings);
82
+ }
83
+
84
+ void BodyInterface::DestroyBodyWithoutID(Body *inBody) const
85
+ {
86
+ mBodyManager->FreeBody(inBody);
87
+ }
88
+
89
+ bool BodyInterface::AssignBodyID(Body *ioBody)
90
+ {
91
+ return mBodyManager->AddBody(ioBody);
92
+ }
93
+
94
+ bool BodyInterface::AssignBodyID(Body *ioBody, const BodyID &inBodyID)
95
+ {
96
+ return mBodyManager->AddBodyWithCustomID(ioBody, inBodyID);
97
+ }
98
+
99
+ Body *BodyInterface::UnassignBodyID(const BodyID &inBodyID)
100
+ {
101
+ Body *body = nullptr;
102
+ mBodyManager->RemoveBodies(&inBodyID, 1, &body);
103
+ return body;
104
+ }
105
+
106
+ void BodyInterface::UnassignBodyIDs(const BodyID *inBodyIDs, int inNumber, Body **outBodies)
107
+ {
108
+ mBodyManager->RemoveBodies(inBodyIDs, inNumber, outBodies);
109
+ }
110
+
111
+ void BodyInterface::DestroyBody(const BodyID &inBodyID)
112
+ {
113
+ mBodyManager->DestroyBodies(&inBodyID, 1);
114
+ }
115
+
116
+ void BodyInterface::DestroyBodies(const BodyID *inBodyIDs, int inNumber)
117
+ {
118
+ mBodyManager->DestroyBodies(inBodyIDs, inNumber);
119
+ }
120
+
121
+ void BodyInterface::AddBody(const BodyID &inBodyID, EActivation inActivationMode)
122
+ {
123
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
124
+ if (lock.Succeeded())
125
+ {
126
+ const Body &body = lock.GetBody();
127
+
128
+ // Add to broadphase
129
+ BodyID id = inBodyID;
130
+ BroadPhase::AddState add_state = mBroadPhase->AddBodiesPrepare(&id, 1);
131
+ mBroadPhase->AddBodiesFinalize(&id, 1, add_state);
132
+
133
+ // Optionally activate body
134
+ if (inActivationMode == EActivation::Activate && !body.IsStatic())
135
+ mBodyManager->ActivateBodies(&inBodyID, 1);
136
+ }
137
+ }
138
+
139
+ void BodyInterface::RemoveBody(const BodyID &inBodyID)
140
+ {
141
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
142
+ if (lock.SucceededAndIsInBroadPhase())
143
+ {
144
+ const Body &body = lock.GetBody();
145
+
146
+ // Deactivate body
147
+ if (body.IsActive())
148
+ mBodyManager->DeactivateBodies(&inBodyID, 1);
149
+
150
+ // Remove from broadphase
151
+ BodyID id = inBodyID;
152
+ mBroadPhase->RemoveBodies(&id, 1);
153
+ }
154
+ }
155
+
156
+ bool BodyInterface::IsAdded(const BodyID &inBodyID) const
157
+ {
158
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
159
+ return lock.SucceededAndIsInBroadPhase();
160
+ }
161
+
162
+ BodyID BodyInterface::CreateAndAddBody(const BodyCreationSettings &inSettings, EActivation inActivationMode)
163
+ {
164
+ const Body *b = CreateBody(inSettings);
165
+ if (b == nullptr)
166
+ return BodyID(); // Out of bodies
167
+ AddBody(b->GetID(), inActivationMode);
168
+ return b->GetID();
169
+ }
170
+
171
+ BodyID BodyInterface::CreateAndAddSoftBody(const SoftBodyCreationSettings &inSettings, EActivation inActivationMode)
172
+ {
173
+ const Body *b = CreateSoftBody(inSettings);
174
+ if (b == nullptr)
175
+ return BodyID(); // Out of bodies
176
+ AddBody(b->GetID(), inActivationMode);
177
+ return b->GetID();
178
+ }
179
+
180
+ BodyInterface::AddState BodyInterface::AddBodiesPrepare(BodyID *ioBodies, int inNumber)
181
+ {
182
+ return mBroadPhase->AddBodiesPrepare(ioBodies, inNumber);
183
+ }
184
+
185
+ void BodyInterface::AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState, EActivation inActivationMode)
186
+ {
187
+ BodyLockMultiWrite lock(*mBodyLockInterface, ioBodies, inNumber);
188
+
189
+ // Add to broadphase
190
+ mBroadPhase->AddBodiesFinalize(ioBodies, inNumber, inAddState);
191
+
192
+ // Optionally activate bodies
193
+ if (inActivationMode == EActivation::Activate)
194
+ mBodyManager->ActivateBodies(ioBodies, inNumber);
195
+ }
196
+
197
+ void BodyInterface::AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState)
198
+ {
199
+ mBroadPhase->AddBodiesAbort(ioBodies, inNumber, inAddState);
200
+ }
201
+
202
+ void BodyInterface::RemoveBodies(BodyID *ioBodies, int inNumber)
203
+ {
204
+ BodyLockMultiWrite lock(*mBodyLockInterface, ioBodies, inNumber);
205
+
206
+ // Deactivate bodies
207
+ mBodyManager->DeactivateBodies(ioBodies, inNumber);
208
+
209
+ // Remove from broadphase
210
+ mBroadPhase->RemoveBodies(ioBodies, inNumber);
211
+ }
212
+
213
+ void BodyInterface::ActivateBody(const BodyID &inBodyID)
214
+ {
215
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
216
+ if (lock.Succeeded())
217
+ {
218
+ Body &body = lock.GetBody();
219
+ ActivateBodyInternal(body);
220
+ }
221
+ }
222
+
223
+ void BodyInterface::ActivateBodies(const BodyID *inBodyIDs, int inNumber)
224
+ {
225
+ BodyLockMultiWrite lock(*mBodyLockInterface, inBodyIDs, inNumber);
226
+
227
+ mBodyManager->ActivateBodies(inBodyIDs, inNumber);
228
+ }
229
+
230
+ void BodyInterface::ActivateBodiesInAABox(const AABox &inBox, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter)
231
+ {
232
+ AllHitCollisionCollector<CollideShapeBodyCollector> collector;
233
+ mBroadPhase->CollideAABox(inBox, collector, inBroadPhaseLayerFilter, inObjectLayerFilter);
234
+ ActivateBodies(collector.mHits.data(), (int)collector.mHits.size());
235
+ }
236
+
237
+ void BodyInterface::DeactivateBody(const BodyID &inBodyID)
238
+ {
239
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
240
+ if (lock.Succeeded())
241
+ {
242
+ const Body &body = lock.GetBody();
243
+
244
+ if (body.IsActive())
245
+ mBodyManager->DeactivateBodies(&inBodyID, 1);
246
+ }
247
+ }
248
+
249
+ void BodyInterface::DeactivateBodies(const BodyID *inBodyIDs, int inNumber)
250
+ {
251
+ BodyLockMultiWrite lock(*mBodyLockInterface, inBodyIDs, inNumber);
252
+
253
+ mBodyManager->DeactivateBodies(inBodyIDs, inNumber);
254
+ }
255
+
256
+ bool BodyInterface::IsActive(const BodyID &inBodyID) const
257
+ {
258
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
259
+ return lock.Succeeded() && lock.GetBody().IsActive();
260
+ }
261
+
262
+ void BodyInterface::ResetSleepTimer(const BodyID &inBodyID)
263
+ {
264
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
265
+ if (lock.Succeeded())
266
+ lock.GetBody().ResetSleepTimer();
267
+ }
268
+
269
+ TwoBodyConstraint *BodyInterface::CreateConstraint(const TwoBodyConstraintSettings *inSettings, const BodyID &inBodyID1, const BodyID &inBodyID2)
270
+ {
271
+ BodyID constraint_bodies[] = { inBodyID1, inBodyID2 };
272
+ BodyLockMultiWrite lock(*mBodyLockInterface, constraint_bodies, 2);
273
+
274
+ Body *body1 = lock.GetBody(0);
275
+ Body *body2 = lock.GetBody(1);
276
+
277
+ JPH_ASSERT(body1 != body2);
278
+ JPH_ASSERT(body1 != nullptr || body2 != nullptr);
279
+
280
+ return inSettings->Create(body1 != nullptr? *body1 : Body::sFixedToWorld, body2 != nullptr? *body2 : Body::sFixedToWorld);
281
+ }
282
+
283
+ void BodyInterface::ActivateConstraint(const TwoBodyConstraint *inConstraint)
284
+ {
285
+ BodyID bodies[] = { inConstraint->GetBody1()->GetID(), inConstraint->GetBody2()->GetID() };
286
+ ActivateBodies(bodies, 2);
287
+ }
288
+
289
+ RefConst<Shape> BodyInterface::GetShape(const BodyID &inBodyID) const
290
+ {
291
+ RefConst<Shape> shape;
292
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
293
+ if (lock.Succeeded())
294
+ shape = lock.GetBody().GetShape();
295
+ return shape;
296
+ }
297
+
298
+ void BodyInterface::SetShape(const BodyID &inBodyID, const Shape *inShape, bool inUpdateMassProperties, EActivation inActivationMode) const
299
+ {
300
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
301
+ if (lock.Succeeded())
302
+ {
303
+ Body &body = lock.GetBody();
304
+
305
+ // Check if shape actually changed
306
+ if (body.GetShape() != inShape)
307
+ {
308
+ // Update the shape
309
+ body.SetShapeInternal(inShape, inUpdateMassProperties);
310
+
311
+ // Notify broadphase of change
312
+ if (body.IsInBroadPhase())
313
+ {
314
+ // Flag collision cache invalid for this body
315
+ mBodyManager->InvalidateContactCacheForBody(body);
316
+
317
+ BodyID id = body.GetID();
318
+ mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
319
+
320
+ // Optionally activate body
321
+ if (inActivationMode == EActivation::Activate && !body.IsStatic())
322
+ ActivateBodyInternal(body);
323
+ }
324
+ }
325
+ }
326
+ }
327
+
328
+ void BodyInterface::NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties, EActivation inActivationMode) const
329
+ {
330
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
331
+ if (lock.Succeeded())
332
+ {
333
+ Body &body = lock.GetBody();
334
+
335
+ // Update center of mass, mass and inertia
336
+ body.UpdateCenterOfMassInternal(inPreviousCenterOfMass, inUpdateMassProperties);
337
+
338
+ // Recalculate bounding box
339
+ body.CalculateWorldSpaceBoundsInternal();
340
+
341
+ // Notify broadphase of change
342
+ if (body.IsInBroadPhase())
343
+ {
344
+ // Flag collision cache invalid for this body
345
+ mBodyManager->InvalidateContactCacheForBody(body);
346
+
347
+ BodyID id = body.GetID();
348
+ mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
349
+
350
+ // Optionally activate body
351
+ if (inActivationMode == EActivation::Activate && !body.IsStatic())
352
+ ActivateBodyInternal(body);
353
+ }
354
+ }
355
+ }
356
+
357
+ void BodyInterface::SetObjectLayer(const BodyID &inBodyID, ObjectLayer inLayer)
358
+ {
359
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
360
+ if (lock.Succeeded())
361
+ {
362
+ Body &body = lock.GetBody();
363
+
364
+ // Check if layer actually changed, updating the broadphase is rather expensive
365
+ if (body.GetObjectLayer() != inLayer)
366
+ {
367
+ // Update the layer on the body
368
+ mBodyManager->SetBodyObjectLayerInternal(body, inLayer);
369
+
370
+ // Notify broadphase of change
371
+ if (body.IsInBroadPhase())
372
+ {
373
+ BodyID id = body.GetID();
374
+ mBroadPhase->NotifyBodiesLayerChanged(&id, 1);
375
+ }
376
+ }
377
+ }
378
+ }
379
+
380
+ ObjectLayer BodyInterface::GetObjectLayer(const BodyID &inBodyID) const
381
+ {
382
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
383
+ if (lock.Succeeded())
384
+ return lock.GetBody().GetObjectLayer();
385
+ else
386
+ return cObjectLayerInvalid;
387
+ }
388
+
389
+ void BodyInterface::SetPositionAndRotation(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode)
390
+ {
391
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
392
+ if (lock.Succeeded())
393
+ {
394
+ Body &body = lock.GetBody();
395
+
396
+ // Update the position
397
+ body.SetPositionAndRotationInternal(inPosition, inRotation);
398
+
399
+ // Notify broadphase of change
400
+ if (body.IsInBroadPhase())
401
+ {
402
+ BodyID id = body.GetID();
403
+ mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
404
+
405
+ // Optionally activate body
406
+ if (inActivationMode == EActivation::Activate && !body.IsStatic())
407
+ ActivateBodyInternal(body);
408
+ }
409
+ }
410
+ }
411
+
412
+ void BodyInterface::SetPositionAndRotationWhenChanged(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode)
413
+ {
414
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
415
+ if (lock.Succeeded())
416
+ {
417
+ Body &body = lock.GetBody();
418
+
419
+ // Check if there is enough change
420
+ if (!body.GetPosition().IsClose(inPosition)
421
+ || !body.GetRotation().IsClose(inRotation))
422
+ {
423
+ // Update the position
424
+ body.SetPositionAndRotationInternal(inPosition, inRotation);
425
+
426
+ // Notify broadphase of change
427
+ if (body.IsInBroadPhase())
428
+ {
429
+ BodyID id = body.GetID();
430
+ mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
431
+
432
+ // Optionally activate body
433
+ if (inActivationMode == EActivation::Activate && !body.IsStatic())
434
+ ActivateBodyInternal(body);
435
+ }
436
+ }
437
+ }
438
+ }
439
+
440
+ void BodyInterface::GetPositionAndRotation(const BodyID &inBodyID, RVec3 &outPosition, Quat &outRotation) const
441
+ {
442
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
443
+ if (lock.Succeeded())
444
+ {
445
+ const Body &body = lock.GetBody();
446
+ outPosition = body.GetPosition();
447
+ outRotation = body.GetRotation();
448
+ }
449
+ else
450
+ {
451
+ outPosition = RVec3::sZero();
452
+ outRotation = Quat::sIdentity();
453
+ }
454
+ }
455
+
456
+ void BodyInterface::SetPosition(const BodyID &inBodyID, RVec3Arg inPosition, EActivation inActivationMode)
457
+ {
458
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
459
+ if (lock.Succeeded())
460
+ {
461
+ Body &body = lock.GetBody();
462
+
463
+ // Update the position
464
+ body.SetPositionAndRotationInternal(inPosition, body.GetRotation());
465
+
466
+ // Notify broadphase of change
467
+ if (body.IsInBroadPhase())
468
+ {
469
+ BodyID id = body.GetID();
470
+ mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
471
+
472
+ // Optionally activate body
473
+ if (inActivationMode == EActivation::Activate && !body.IsStatic())
474
+ ActivateBodyInternal(body);
475
+ }
476
+ }
477
+ }
478
+
479
+ RVec3 BodyInterface::GetPosition(const BodyID &inBodyID) const
480
+ {
481
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
482
+ if (lock.Succeeded())
483
+ return lock.GetBody().GetPosition();
484
+ else
485
+ return RVec3::sZero();
486
+ }
487
+
488
+ RVec3 BodyInterface::GetCenterOfMassPosition(const BodyID &inBodyID) const
489
+ {
490
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
491
+ if (lock.Succeeded())
492
+ return lock.GetBody().GetCenterOfMassPosition();
493
+ else
494
+ return RVec3::sZero();
495
+ }
496
+
497
+ void BodyInterface::SetRotation(const BodyID &inBodyID, QuatArg inRotation, EActivation inActivationMode)
498
+ {
499
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
500
+ if (lock.Succeeded())
501
+ {
502
+ Body &body = lock.GetBody();
503
+
504
+ // Update the position
505
+ body.SetPositionAndRotationInternal(body.GetPosition(), inRotation);
506
+
507
+ // Notify broadphase of change
508
+ if (body.IsInBroadPhase())
509
+ {
510
+ BodyID id = body.GetID();
511
+ mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
512
+
513
+ // Optionally activate body
514
+ if (inActivationMode == EActivation::Activate && !body.IsStatic())
515
+ ActivateBodyInternal(body);
516
+ }
517
+ }
518
+ }
519
+
520
+ Quat BodyInterface::GetRotation(const BodyID &inBodyID) const
521
+ {
522
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
523
+ if (lock.Succeeded())
524
+ return lock.GetBody().GetRotation();
525
+ else
526
+ return Quat::sIdentity();
527
+ }
528
+
529
+ RMat44 BodyInterface::GetWorldTransform(const BodyID &inBodyID) const
530
+ {
531
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
532
+ if (lock.Succeeded())
533
+ return lock.GetBody().GetWorldTransform();
534
+ else
535
+ return RMat44::sIdentity();
536
+ }
537
+
538
+ RMat44 BodyInterface::GetCenterOfMassTransform(const BodyID &inBodyID) const
539
+ {
540
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
541
+ if (lock.Succeeded())
542
+ return lock.GetBody().GetCenterOfMassTransform();
543
+ else
544
+ return RMat44::sIdentity();
545
+ }
546
+
547
+ void BodyInterface::MoveKinematic(const BodyID &inBodyID, RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)
548
+ {
549
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
550
+ if (lock.Succeeded())
551
+ {
552
+ Body &body = lock.GetBody();
553
+
554
+ body.MoveKinematic(inTargetPosition, inTargetRotation, inDeltaTime);
555
+
556
+ if (!body.IsActive() && (!body.GetLinearVelocity().IsNearZero() || !body.GetAngularVelocity().IsNearZero()) && body.IsInBroadPhase())
557
+ mBodyManager->ActivateBodies(&inBodyID, 1);
558
+ }
559
+ }
560
+
561
+ void BodyInterface::SetLinearAndAngularVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
562
+ {
563
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
564
+ if (lock.Succeeded())
565
+ {
566
+ Body &body = lock.GetBody();
567
+ if (!body.IsStatic())
568
+ {
569
+ body.SetLinearVelocityClamped(inLinearVelocity);
570
+ body.SetAngularVelocityClamped(inAngularVelocity);
571
+
572
+ if (!body.IsActive() && (!inLinearVelocity.IsNearZero() || !inAngularVelocity.IsNearZero()) && body.IsInBroadPhase())
573
+ mBodyManager->ActivateBodies(&inBodyID, 1);
574
+ }
575
+ }
576
+ }
577
+
578
+ void BodyInterface::GetLinearAndAngularVelocity(const BodyID &inBodyID, Vec3 &outLinearVelocity, Vec3 &outAngularVelocity) const
579
+ {
580
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
581
+ if (lock.Succeeded())
582
+ {
583
+ const Body &body = lock.GetBody();
584
+ if (!body.IsStatic())
585
+ {
586
+ outLinearVelocity = body.GetLinearVelocity();
587
+ outAngularVelocity = body.GetAngularVelocity();
588
+ return;
589
+ }
590
+ }
591
+
592
+ outLinearVelocity = outAngularVelocity = Vec3::sZero();
593
+ }
594
+
595
+ void BodyInterface::SetLinearVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity)
596
+ {
597
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
598
+ if (lock.Succeeded())
599
+ {
600
+ Body &body = lock.GetBody();
601
+ if (!body.IsStatic())
602
+ {
603
+ body.SetLinearVelocityClamped(inLinearVelocity);
604
+
605
+ if (!body.IsActive() && !inLinearVelocity.IsNearZero() && body.IsInBroadPhase())
606
+ mBodyManager->ActivateBodies(&inBodyID, 1);
607
+ }
608
+ }
609
+ }
610
+
611
+ Vec3 BodyInterface::GetLinearVelocity(const BodyID &inBodyID) const
612
+ {
613
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
614
+ if (lock.Succeeded())
615
+ {
616
+ const Body &body = lock.GetBody();
617
+ if (!body.IsStatic())
618
+ return body.GetLinearVelocity();
619
+ }
620
+
621
+ return Vec3::sZero();
622
+ }
623
+
624
+ void BodyInterface::AddLinearVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity)
625
+ {
626
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
627
+ if (lock.Succeeded())
628
+ {
629
+ Body &body = lock.GetBody();
630
+ if (!body.IsStatic())
631
+ {
632
+ body.SetLinearVelocityClamped(body.GetLinearVelocity() + inLinearVelocity);
633
+
634
+ if (!body.IsActive() && !body.GetLinearVelocity().IsNearZero() && body.IsInBroadPhase())
635
+ mBodyManager->ActivateBodies(&inBodyID, 1);
636
+ }
637
+ }
638
+ }
639
+
640
+ void BodyInterface::AddLinearAndAngularVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
641
+ {
642
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
643
+ if (lock.Succeeded())
644
+ {
645
+ Body &body = lock.GetBody();
646
+ if (!body.IsStatic())
647
+ {
648
+ body.SetLinearVelocityClamped(body.GetLinearVelocity() + inLinearVelocity);
649
+ body.SetAngularVelocityClamped(body.GetAngularVelocity() + inAngularVelocity);
650
+
651
+ if (!body.IsActive() && (!body.GetLinearVelocity().IsNearZero() || !body.GetAngularVelocity().IsNearZero()) && body.IsInBroadPhase())
652
+ mBodyManager->ActivateBodies(&inBodyID, 1);
653
+ }
654
+ }
655
+ }
656
+
657
+ void BodyInterface::SetAngularVelocity(const BodyID &inBodyID, Vec3Arg inAngularVelocity)
658
+ {
659
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
660
+ if (lock.Succeeded())
661
+ {
662
+ Body &body = lock.GetBody();
663
+ if (!body.IsStatic())
664
+ {
665
+ body.SetAngularVelocityClamped(inAngularVelocity);
666
+
667
+ if (!body.IsActive() && !inAngularVelocity.IsNearZero() && body.IsInBroadPhase())
668
+ mBodyManager->ActivateBodies(&inBodyID, 1);
669
+ }
670
+ }
671
+ }
672
+
673
+ Vec3 BodyInterface::GetAngularVelocity(const BodyID &inBodyID) const
674
+ {
675
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
676
+ if (lock.Succeeded())
677
+ {
678
+ const Body &body = lock.GetBody();
679
+ if (!body.IsStatic())
680
+ return body.GetAngularVelocity();
681
+ }
682
+
683
+ return Vec3::sZero();
684
+ }
685
+
686
+ Vec3 BodyInterface::GetPointVelocity(const BodyID &inBodyID, RVec3Arg inPoint) const
687
+ {
688
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
689
+ if (lock.Succeeded())
690
+ {
691
+ const Body &body = lock.GetBody();
692
+ if (!body.IsStatic())
693
+ return body.GetPointVelocity(inPoint);
694
+ }
695
+
696
+ return Vec3::sZero();
697
+ }
698
+
699
+ void BodyInterface::AddForce(const BodyID &inBodyID, Vec3Arg inForce, EActivation inActivationMode)
700
+ {
701
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
702
+ if (lock.Succeeded())
703
+ {
704
+ Body &body = lock.GetBody();
705
+ if (body.IsDynamic() && (inActivationMode == EActivation::Activate || body.IsActive()))
706
+ {
707
+ body.AddForce(inForce);
708
+
709
+ if (inActivationMode == EActivation::Activate)
710
+ ActivateBodyInternal(body);
711
+ }
712
+ }
713
+ }
714
+
715
+ void BodyInterface::AddForce(const BodyID &inBodyID, Vec3Arg inForce, RVec3Arg inPoint, EActivation inActivationMode)
716
+ {
717
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
718
+ if (lock.Succeeded())
719
+ {
720
+ Body &body = lock.GetBody();
721
+ if (body.IsDynamic() && (inActivationMode == EActivation::Activate || body.IsActive()))
722
+ {
723
+ body.AddForce(inForce, inPoint);
724
+
725
+ if (inActivationMode == EActivation::Activate)
726
+ ActivateBodyInternal(body);
727
+ }
728
+ }
729
+ }
730
+
731
+ void BodyInterface::AddTorque(const BodyID &inBodyID, Vec3Arg inTorque, EActivation inActivationMode)
732
+ {
733
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
734
+ if (lock.Succeeded())
735
+ {
736
+ Body &body = lock.GetBody();
737
+ if (body.IsDynamic() && (inActivationMode == EActivation::Activate || body.IsActive()))
738
+ {
739
+ body.AddTorque(inTorque);
740
+
741
+ if (inActivationMode == EActivation::Activate)
742
+ ActivateBodyInternal(body);
743
+ }
744
+ }
745
+ }
746
+
747
+ void BodyInterface::AddForceAndTorque(const BodyID &inBodyID, Vec3Arg inForce, Vec3Arg inTorque, EActivation inActivationMode)
748
+ {
749
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
750
+ if (lock.Succeeded())
751
+ {
752
+ Body &body = lock.GetBody();
753
+ if (body.IsDynamic() && (inActivationMode == EActivation::Activate || body.IsActive()))
754
+ {
755
+ body.AddForce(inForce);
756
+ body.AddTorque(inTorque);
757
+
758
+ if (inActivationMode == EActivation::Activate)
759
+ ActivateBodyInternal(body);
760
+ }
761
+ }
762
+ }
763
+
764
+ void BodyInterface::AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse)
765
+ {
766
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
767
+ if (lock.Succeeded())
768
+ {
769
+ Body &body = lock.GetBody();
770
+ if (body.IsDynamic())
771
+ {
772
+ body.AddImpulse(inImpulse);
773
+
774
+ if (!body.IsActive())
775
+ mBodyManager->ActivateBodies(&inBodyID, 1);
776
+ }
777
+ }
778
+ }
779
+
780
+ void BodyInterface::AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse, RVec3Arg inPoint)
781
+ {
782
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
783
+ if (lock.Succeeded())
784
+ {
785
+ Body &body = lock.GetBody();
786
+ if (body.IsDynamic())
787
+ {
788
+ body.AddImpulse(inImpulse, inPoint);
789
+
790
+ if (!body.IsActive())
791
+ mBodyManager->ActivateBodies(&inBodyID, 1);
792
+ }
793
+ }
794
+ }
795
+
796
+ void BodyInterface::AddAngularImpulse(const BodyID &inBodyID, Vec3Arg inAngularImpulse)
797
+ {
798
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
799
+ if (lock.Succeeded())
800
+ {
801
+ Body &body = lock.GetBody();
802
+ if (body.IsDynamic())
803
+ {
804
+ body.AddAngularImpulse(inAngularImpulse);
805
+
806
+ if (!body.IsActive())
807
+ mBodyManager->ActivateBodies(&inBodyID, 1);
808
+ }
809
+ }
810
+ }
811
+
812
+ bool BodyInterface::ApplyBuoyancyImpulse(const BodyID &inBodyID, RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)
813
+ {
814
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
815
+ if (lock.Succeeded())
816
+ {
817
+ Body &body = lock.GetBody();
818
+ if (body.IsDynamic()
819
+ && body.ApplyBuoyancyImpulse(inSurfacePosition, inSurfaceNormal, inBuoyancy, inLinearDrag, inAngularDrag, inFluidVelocity, inGravity, inDeltaTime))
820
+ {
821
+ ActivateBodyInternal(body);
822
+ return true;
823
+ }
824
+ }
825
+
826
+ return false;
827
+ }
828
+
829
+ void BodyInterface::SetPositionRotationAndVelocity(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
830
+ {
831
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
832
+ if (lock.Succeeded())
833
+ {
834
+ Body &body = lock.GetBody();
835
+
836
+ // Update the position
837
+ body.SetPositionAndRotationInternal(inPosition, inRotation);
838
+
839
+ // Notify broadphase of change
840
+ if (body.IsInBroadPhase())
841
+ {
842
+ BodyID id = body.GetID();
843
+ mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
844
+ }
845
+
846
+ if (!body.IsStatic())
847
+ {
848
+ body.SetLinearVelocityClamped(inLinearVelocity);
849
+ body.SetAngularVelocityClamped(inAngularVelocity);
850
+
851
+ // Optionally activate body
852
+ if (!body.IsActive() && (!inLinearVelocity.IsNearZero() || !inAngularVelocity.IsNearZero()) && body.IsInBroadPhase())
853
+ mBodyManager->ActivateBodies(&inBodyID, 1);
854
+ }
855
+ }
856
+ }
857
+
858
+ void BodyInterface::SetMotionType(const BodyID &inBodyID, EMotionType inMotionType, EActivation inActivationMode)
859
+ {
860
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
861
+ if (lock.Succeeded())
862
+ {
863
+ Body &body = lock.GetBody();
864
+
865
+ // Deactivate if we're making the body static
866
+ if (body.IsActive() && inMotionType == EMotionType::Static)
867
+ mBodyManager->DeactivateBodies(&inBodyID, 1);
868
+
869
+ body.SetMotionType(inMotionType);
870
+
871
+ // Activate body if requested
872
+ if (inMotionType != EMotionType::Static && inActivationMode == EActivation::Activate && body.IsInBroadPhase())
873
+ ActivateBodyInternal(body);
874
+ }
875
+ }
876
+
877
+ EBodyType BodyInterface::GetBodyType(const BodyID &inBodyID) const
878
+ {
879
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
880
+ if (lock.Succeeded())
881
+ return lock.GetBody().GetBodyType();
882
+ else
883
+ return EBodyType::RigidBody;
884
+ }
885
+
886
+ EMotionType BodyInterface::GetMotionType(const BodyID &inBodyID) const
887
+ {
888
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
889
+ if (lock.Succeeded())
890
+ return lock.GetBody().GetMotionType();
891
+ else
892
+ return EMotionType::Static;
893
+ }
894
+
895
+ void BodyInterface::SetMotionQuality(const BodyID &inBodyID, EMotionQuality inMotionQuality)
896
+ {
897
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
898
+ if (lock.Succeeded())
899
+ mBodyManager->SetMotionQuality(lock.GetBody(), inMotionQuality);
900
+ }
901
+
902
+ EMotionQuality BodyInterface::GetMotionQuality(const BodyID &inBodyID) const
903
+ {
904
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
905
+ if (lock.Succeeded() && !lock.GetBody().IsStatic())
906
+ return lock.GetBody().GetMotionProperties()->GetMotionQuality();
907
+ else
908
+ return EMotionQuality::Discrete;
909
+ }
910
+
911
+ Mat44 BodyInterface::GetInverseInertia(const BodyID &inBodyID) const
912
+ {
913
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
914
+ if (lock.Succeeded())
915
+ return lock.GetBody().GetInverseInertia();
916
+ else
917
+ return Mat44::sIdentity();
918
+ }
919
+
920
+ void BodyInterface::SetRestitution(const BodyID &inBodyID, float inRestitution)
921
+ {
922
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
923
+ if (lock.Succeeded())
924
+ lock.GetBody().SetRestitution(inRestitution);
925
+ }
926
+
927
+ float BodyInterface::GetRestitution(const BodyID &inBodyID) const
928
+ {
929
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
930
+ if (lock.Succeeded())
931
+ return lock.GetBody().GetRestitution();
932
+ else
933
+ return 0.0f;
934
+ }
935
+
936
+ void BodyInterface::SetFriction(const BodyID &inBodyID, float inFriction)
937
+ {
938
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
939
+ if (lock.Succeeded())
940
+ lock.GetBody().SetFriction(inFriction);
941
+ }
942
+
943
+ float BodyInterface::GetFriction(const BodyID &inBodyID) const
944
+ {
945
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
946
+ if (lock.Succeeded())
947
+ return lock.GetBody().GetFriction();
948
+ else
949
+ return 0.0f;
950
+ }
951
+
952
+ void BodyInterface::SetGravityFactor(const BodyID &inBodyID, float inGravityFactor)
953
+ {
954
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
955
+ if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
956
+ lock.GetBody().GetMotionPropertiesUnchecked()->SetGravityFactor(inGravityFactor);
957
+ }
958
+
959
+ float BodyInterface::GetGravityFactor(const BodyID &inBodyID) const
960
+ {
961
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
962
+ if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
963
+ return lock.GetBody().GetMotionPropertiesUnchecked()->GetGravityFactor();
964
+ else
965
+ return 1.0f;
966
+ }
967
+
968
+ void BodyInterface::SetMaxLinearVelocity(const BodyID &inBodyID, float inLinearVelocity)
969
+ {
970
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
971
+ if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
972
+ lock.GetBody().GetMotionPropertiesUnchecked()->SetMaxLinearVelocity(inLinearVelocity);
973
+ }
974
+
975
+ float BodyInterface::GetMaxLinearVelocity(const BodyID &inBodyID) const
976
+ {
977
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
978
+ if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
979
+ return lock.GetBody().GetMotionPropertiesUnchecked()->GetMaxLinearVelocity();
980
+ else
981
+ return 500.0f;
982
+ }
983
+
984
+ void BodyInterface::SetMaxAngularVelocity(const BodyID &inBodyID, float inAngularVelocity)
985
+ {
986
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
987
+ if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
988
+ lock.GetBody().GetMotionPropertiesUnchecked()->SetMaxAngularVelocity(inAngularVelocity);
989
+ }
990
+
991
+ float BodyInterface::GetMaxAngularVelocity(const BodyID &inBodyID) const
992
+ {
993
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
994
+ if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
995
+ return lock.GetBody().GetMotionPropertiesUnchecked()->GetMaxAngularVelocity();
996
+ else
997
+ return 0.25f * JPH_PI * 60.0f;
998
+ }
999
+
1000
+ void BodyInterface::SetUseManifoldReduction(const BodyID &inBodyID, bool inUseReduction)
1001
+ {
1002
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
1003
+ if (lock.Succeeded())
1004
+ {
1005
+ Body &body = lock.GetBody();
1006
+ if (body.GetUseManifoldReduction() != inUseReduction)
1007
+ {
1008
+ body.SetUseManifoldReduction(inUseReduction);
1009
+
1010
+ // Flag collision cache invalid for this body
1011
+ if (body.IsInBroadPhase())
1012
+ mBodyManager->InvalidateContactCacheForBody(body);
1013
+ }
1014
+ }
1015
+ }
1016
+
1017
+ bool BodyInterface::GetUseManifoldReduction(const BodyID &inBodyID) const
1018
+ {
1019
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
1020
+ if (lock.Succeeded())
1021
+ return lock.GetBody().GetUseManifoldReduction();
1022
+ else
1023
+ return true;
1024
+ }
1025
+
1026
+ void BodyInterface::SetIsSensor(const BodyID &inBodyID, bool inIsSensor)
1027
+ {
1028
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
1029
+ if (lock.Succeeded())
1030
+ lock.GetBody().SetIsSensor(inIsSensor);
1031
+ }
1032
+
1033
+ bool BodyInterface::IsSensor(const BodyID &inBodyID) const
1034
+ {
1035
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
1036
+ if (lock.Succeeded())
1037
+ return lock.GetBody().IsSensor();
1038
+ else
1039
+ return false;
1040
+ }
1041
+
1042
+ void BodyInterface::SetCollisionGroup(const BodyID &inBodyID, const CollisionGroup &inCollisionGroup)
1043
+ {
1044
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
1045
+ if (lock.Succeeded())
1046
+ lock.GetBody().SetCollisionGroup(inCollisionGroup);
1047
+ }
1048
+
1049
+ const CollisionGroup &BodyInterface::GetCollisionGroup(const BodyID &inBodyID) const
1050
+ {
1051
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
1052
+ if (lock.Succeeded())
1053
+ return lock.GetBody().GetCollisionGroup();
1054
+ else
1055
+ return CollisionGroup::sInvalid;
1056
+ }
1057
+
1058
+ TransformedShape BodyInterface::GetTransformedShape(const BodyID &inBodyID) const
1059
+ {
1060
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
1061
+ if (lock.Succeeded())
1062
+ return lock.GetBody().GetTransformedShape();
1063
+ else
1064
+ return TransformedShape();
1065
+ }
1066
+
1067
+ uint64 BodyInterface::GetUserData(const BodyID &inBodyID) const
1068
+ {
1069
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
1070
+ if (lock.Succeeded())
1071
+ return lock.GetBody().GetUserData();
1072
+ else
1073
+ return 0;
1074
+ }
1075
+
1076
+ void BodyInterface::SetUserData(const BodyID &inBodyID, uint64 inUserData) const
1077
+ {
1078
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
1079
+ if (lock.Succeeded())
1080
+ lock.GetBody().SetUserData(inUserData);
1081
+ }
1082
+
1083
+ const PhysicsMaterial *BodyInterface::GetMaterial(const BodyID &inBodyID, const SubShapeID &inSubShapeID) const
1084
+ {
1085
+ BodyLockRead lock(*mBodyLockInterface, inBodyID);
1086
+ if (lock.Succeeded())
1087
+ return lock.GetBody().GetShape()->GetMaterial(inSubShapeID);
1088
+ else
1089
+ return PhysicsMaterial::sDefault;
1090
+ }
1091
+
1092
+ void BodyInterface::InvalidateContactCache(const BodyID &inBodyID)
1093
+ {
1094
+ BodyLockWrite lock(*mBodyLockInterface, inBodyID);
1095
+ if (lock.SucceededAndIsInBroadPhase())
1096
+ mBodyManager->InvalidateContactCacheForBody(lock.GetBody());
1097
+ }
1098
+
1099
+ JPH_NAMESPACE_END