@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,501 @@
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/Constraints/SliderConstraint.h>
8
+ #include <Jolt/Physics/Body/Body.h>
9
+ #include <Jolt/ObjectStream/TypeDeclarations.h>
10
+ #include <Jolt/Core/StreamIn.h>
11
+ #include <Jolt/Core/StreamOut.h>
12
+ #ifdef JPH_DEBUG_RENDERER
13
+ #include <Jolt/Renderer/DebugRenderer.h>
14
+ #endif // JPH_DEBUG_RENDERER
15
+
16
+ JPH_NAMESPACE_BEGIN
17
+
18
+ using namespace literals;
19
+
20
+ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(SliderConstraintSettings)
21
+ {
22
+ JPH_ADD_BASE_CLASS(SliderConstraintSettings, TwoBodyConstraintSettings)
23
+
24
+ JPH_ADD_ENUM_ATTRIBUTE(SliderConstraintSettings, mSpace)
25
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mAutoDetectPoint)
26
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mPoint1)
27
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mSliderAxis1)
28
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mNormalAxis1)
29
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mPoint2)
30
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mSliderAxis2)
31
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mNormalAxis2)
32
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mLimitsMin)
33
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mLimitsMax)
34
+ JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(SliderConstraintSettings, mLimitsSpringSettings.mMode, "mSpringMode")
35
+ JPH_ADD_ATTRIBUTE_WITH_ALIAS(SliderConstraintSettings, mLimitsSpringSettings.mFrequency, "mFrequency") // Renaming attributes to stay compatible with old versions of the library
36
+ JPH_ADD_ATTRIBUTE_WITH_ALIAS(SliderConstraintSettings, mLimitsSpringSettings.mDamping, "mDamping")
37
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mMaxFrictionForce)
38
+ JPH_ADD_ATTRIBUTE(SliderConstraintSettings, mMotorSettings)
39
+ }
40
+
41
+ void SliderConstraintSettings::SetSliderAxis(Vec3Arg inSliderAxis)
42
+ {
43
+ JPH_ASSERT(mSpace == EConstraintSpace::WorldSpace);
44
+
45
+ mSliderAxis1 = mSliderAxis2 = inSliderAxis;
46
+ mNormalAxis1 = mNormalAxis2 = inSliderAxis.GetNormalizedPerpendicular();
47
+ }
48
+
49
+ void SliderConstraintSettings::SaveBinaryState(StreamOut &inStream) const
50
+ {
51
+ ConstraintSettings::SaveBinaryState(inStream);
52
+
53
+ inStream.Write(mSpace);
54
+ inStream.Write(mAutoDetectPoint);
55
+ inStream.Write(mPoint1);
56
+ inStream.Write(mSliderAxis1);
57
+ inStream.Write(mNormalAxis1);
58
+ inStream.Write(mPoint2);
59
+ inStream.Write(mSliderAxis2);
60
+ inStream.Write(mNormalAxis2);
61
+ inStream.Write(mLimitsMin);
62
+ inStream.Write(mLimitsMax);
63
+ inStream.Write(mMaxFrictionForce);
64
+ mLimitsSpringSettings.SaveBinaryState(inStream);
65
+ mMotorSettings.SaveBinaryState(inStream);
66
+ }
67
+
68
+ void SliderConstraintSettings::RestoreBinaryState(StreamIn &inStream)
69
+ {
70
+ ConstraintSettings::RestoreBinaryState(inStream);
71
+
72
+ inStream.Read(mSpace);
73
+ inStream.Read(mAutoDetectPoint);
74
+ inStream.Read(mPoint1);
75
+ inStream.Read(mSliderAxis1);
76
+ inStream.Read(mNormalAxis1);
77
+ inStream.Read(mPoint2);
78
+ inStream.Read(mSliderAxis2);
79
+ inStream.Read(mNormalAxis2);
80
+ inStream.Read(mLimitsMin);
81
+ inStream.Read(mLimitsMax);
82
+ inStream.Read(mMaxFrictionForce);
83
+ mLimitsSpringSettings.RestoreBinaryState(inStream);
84
+ mMotorSettings.RestoreBinaryState(inStream);
85
+ }
86
+
87
+ TwoBodyConstraint *SliderConstraintSettings::Create(Body &inBody1, Body &inBody2) const
88
+ {
89
+ return new SliderConstraint(inBody1, inBody2, *this);
90
+ }
91
+
92
+ SliderConstraint::SliderConstraint(Body &inBody1, Body &inBody2, const SliderConstraintSettings &inSettings) :
93
+ TwoBodyConstraint(inBody1, inBody2, inSettings),
94
+ mMaxFrictionForce(inSettings.mMaxFrictionForce),
95
+ mMotorSettings(inSettings.mMotorSettings)
96
+ {
97
+ // Store inverse of initial rotation from body 1 to body 2 in body 1 space
98
+ mInvInitialOrientation = RotationEulerConstraintPart::sGetInvInitialOrientationXY(inSettings.mSliderAxis1, inSettings.mNormalAxis1, inSettings.mSliderAxis2, inSettings.mNormalAxis2);
99
+
100
+ if (inSettings.mSpace == EConstraintSpace::WorldSpace)
101
+ {
102
+ RMat44 inv_transform1 = inBody1.GetInverseCenterOfMassTransform();
103
+ RMat44 inv_transform2 = inBody2.GetInverseCenterOfMassTransform();
104
+
105
+ if (inSettings.mAutoDetectPoint)
106
+ {
107
+ // Determine anchor point: If any of the bodies can never be dynamic use the other body as anchor point
108
+ RVec3 anchor;
109
+ if (!inBody1.CanBeKinematicOrDynamic())
110
+ anchor = inBody2.GetCenterOfMassPosition();
111
+ else if (!inBody2.CanBeKinematicOrDynamic())
112
+ anchor = inBody1.GetCenterOfMassPosition();
113
+ else
114
+ {
115
+ // Otherwise use weighted anchor point towards the lightest body
116
+ Real inv_m1 = Real(inBody1.GetMotionPropertiesUnchecked()->GetInverseMassUnchecked());
117
+ Real inv_m2 = Real(inBody2.GetMotionPropertiesUnchecked()->GetInverseMassUnchecked());
118
+ Real total_inv_mass = inv_m1 + inv_m2;
119
+ if (total_inv_mass != 0.0_r)
120
+ anchor = (inv_m1 * inBody1.GetCenterOfMassPosition() + inv_m2 * inBody2.GetCenterOfMassPosition()) / total_inv_mass;
121
+ else
122
+ anchor = inBody1.GetCenterOfMassPosition();
123
+ }
124
+
125
+ // Store local positions
126
+ mLocalSpacePosition1 = Vec3(inv_transform1 * anchor);
127
+ mLocalSpacePosition2 = Vec3(inv_transform2 * anchor);
128
+ }
129
+ else
130
+ {
131
+ // Store local positions
132
+ mLocalSpacePosition1 = Vec3(inv_transform1 * inSettings.mPoint1);
133
+ mLocalSpacePosition2 = Vec3(inv_transform2 * inSettings.mPoint2);
134
+ }
135
+
136
+ // If all properties were specified in world space, take them to local space now
137
+ mLocalSpaceSliderAxis1 = inv_transform1.Multiply3x3(inSettings.mSliderAxis1).Normalized();
138
+ mLocalSpaceNormal1 = inv_transform1.Multiply3x3(inSettings.mNormalAxis1).Normalized();
139
+
140
+ // Constraints were specified in world space, so we should have replaced c1 with q10^-1 c1 and c2 with q20^-1 c2
141
+ // => r0^-1 = (q20^-1 c2) (q10^-1 c1)^1 = q20^-1 (c2 c1^-1) q10
142
+ mInvInitialOrientation = inBody2.GetRotation().Conjugated() * mInvInitialOrientation * inBody1.GetRotation();
143
+ }
144
+ else
145
+ {
146
+ // Store local positions
147
+ mLocalSpacePosition1 = Vec3(inSettings.mPoint1);
148
+ mLocalSpacePosition2 = Vec3(inSettings.mPoint2);
149
+
150
+ // Store local space axis
151
+ mLocalSpaceSliderAxis1 = inSettings.mSliderAxis1;
152
+ mLocalSpaceNormal1 = inSettings.mNormalAxis1;
153
+ }
154
+
155
+ // Calculate 2nd local space normal
156
+ mLocalSpaceNormal2 = mLocalSpaceSliderAxis1.Cross(mLocalSpaceNormal1);
157
+
158
+ // Store limits
159
+ JPH_ASSERT(inSettings.mLimitsMin != inSettings.mLimitsMax || inSettings.mLimitsSpringSettings.mFrequency > 0.0f, "Better use a fixed constraint");
160
+ SetLimits(inSettings.mLimitsMin, inSettings.mLimitsMax);
161
+
162
+ // Store spring settings
163
+ SetLimitsSpringSettings(inSettings.mLimitsSpringSettings);
164
+ }
165
+
166
+ void SliderConstraint::NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM)
167
+ {
168
+ if (mBody1->GetID() == inBodyID)
169
+ mLocalSpacePosition1 -= inDeltaCOM;
170
+ else if (mBody2->GetID() == inBodyID)
171
+ mLocalSpacePosition2 -= inDeltaCOM;
172
+ }
173
+
174
+ float SliderConstraint::GetCurrentPosition() const
175
+ {
176
+ // See: CalculateR1R2U and CalculateSlidingAxisAndPosition
177
+ Vec3 r1 = mBody1->GetRotation() * mLocalSpacePosition1;
178
+ Vec3 r2 = mBody2->GetRotation() * mLocalSpacePosition2;
179
+ Vec3 u = Vec3(mBody2->GetCenterOfMassPosition() - mBody1->GetCenterOfMassPosition()) + r2 - r1;
180
+ return u.Dot(mBody1->GetRotation() * mLocalSpaceSliderAxis1);
181
+ }
182
+
183
+ void SliderConstraint::SetLimits(float inLimitsMin, float inLimitsMax)
184
+ {
185
+ JPH_ASSERT(inLimitsMin <= 0.0f);
186
+ JPH_ASSERT(inLimitsMax >= 0.0f);
187
+ mLimitsMin = inLimitsMin;
188
+ mLimitsMax = inLimitsMax;
189
+ mHasLimits = mLimitsMin != -FLT_MAX || mLimitsMax != FLT_MAX;
190
+ }
191
+
192
+ void SliderConstraint::CalculateR1R2U(Mat44Arg inRotation1, Mat44Arg inRotation2)
193
+ {
194
+ // Calculate points relative to body
195
+ mR1 = inRotation1 * mLocalSpacePosition1;
196
+ mR2 = inRotation2 * mLocalSpacePosition2;
197
+
198
+ // Calculate X2 + R2 - X1 - R1
199
+ mU = Vec3(mBody2->GetCenterOfMassPosition() - mBody1->GetCenterOfMassPosition()) + mR2 - mR1;
200
+ }
201
+
202
+ void SliderConstraint::CalculatePositionConstraintProperties(Mat44Arg inRotation1, Mat44Arg inRotation2)
203
+ {
204
+ // Calculate world space normals
205
+ mN1 = inRotation1 * mLocalSpaceNormal1;
206
+ mN2 = inRotation1 * mLocalSpaceNormal2;
207
+
208
+ mPositionConstraintPart.CalculateConstraintProperties(*mBody1, inRotation1, mR1 + mU, *mBody2, inRotation2, mR2, mN1, mN2);
209
+ }
210
+
211
+ void SliderConstraint::CalculateSlidingAxisAndPosition(Mat44Arg inRotation1)
212
+ {
213
+ if (mHasLimits || mMotorState != EMotorState::Off || mMaxFrictionForce > 0.0f)
214
+ {
215
+ // Calculate world space slider axis
216
+ mWorldSpaceSliderAxis = inRotation1 * mLocalSpaceSliderAxis1;
217
+
218
+ // Calculate slide distance along axis
219
+ mD = mU.Dot(mWorldSpaceSliderAxis);
220
+ }
221
+ }
222
+
223
+ void SliderConstraint::CalculatePositionLimitsConstraintProperties(float inDeltaTime)
224
+ {
225
+ // Check if distance is within limits
226
+ bool below_min = mD <= mLimitsMin;
227
+ if (mHasLimits && (below_min || mD >= mLimitsMax))
228
+ mPositionLimitsConstraintPart.CalculateConstraintPropertiesWithSettings(inDeltaTime, *mBody1, mR1 + mU, *mBody2, mR2, mWorldSpaceSliderAxis, 0.0f, mD - (below_min? mLimitsMin : mLimitsMax), mLimitsSpringSettings);
229
+ else
230
+ mPositionLimitsConstraintPart.Deactivate();
231
+ }
232
+
233
+ void SliderConstraint::CalculateMotorConstraintProperties(float inDeltaTime)
234
+ {
235
+ switch (mMotorState)
236
+ {
237
+ case EMotorState::Off:
238
+ if (mMaxFrictionForce > 0.0f)
239
+ mMotorConstraintPart.CalculateConstraintProperties(*mBody1, mR1 + mU, *mBody2, mR2, mWorldSpaceSliderAxis);
240
+ else
241
+ mMotorConstraintPart.Deactivate();
242
+ break;
243
+
244
+ case EMotorState::Velocity:
245
+ mMotorConstraintPart.CalculateConstraintProperties(*mBody1, mR1 + mU, *mBody2, mR2, mWorldSpaceSliderAxis, -mTargetVelocity);
246
+ break;
247
+
248
+ case EMotorState::Position:
249
+ if (mMotorSettings.mSpringSettings.HasStiffness())
250
+ mMotorConstraintPart.CalculateConstraintPropertiesWithSettings(inDeltaTime, *mBody1, mR1 + mU, *mBody2, mR2, mWorldSpaceSliderAxis, 0.0f, mD - mTargetPosition, mMotorSettings.mSpringSettings);
251
+ else
252
+ mMotorConstraintPart.Deactivate();
253
+ break;
254
+ }
255
+ }
256
+
257
+ void SliderConstraint::SetupVelocityConstraint(float inDeltaTime)
258
+ {
259
+ // Calculate constraint properties that are constant while bodies don't move
260
+ Mat44 rotation1 = Mat44::sRotation(mBody1->GetRotation());
261
+ Mat44 rotation2 = Mat44::sRotation(mBody2->GetRotation());
262
+ CalculateR1R2U(rotation1, rotation2);
263
+ CalculatePositionConstraintProperties(rotation1, rotation2);
264
+ mRotationConstraintPart.CalculateConstraintProperties(*mBody1, rotation1, *mBody2, rotation2);
265
+ CalculateSlidingAxisAndPosition(rotation1);
266
+ CalculatePositionLimitsConstraintProperties(inDeltaTime);
267
+ CalculateMotorConstraintProperties(inDeltaTime);
268
+ }
269
+
270
+ void SliderConstraint::ResetWarmStart()
271
+ {
272
+ mMotorConstraintPart.Deactivate();
273
+ mPositionConstraintPart.Deactivate();
274
+ mRotationConstraintPart.Deactivate();
275
+ mPositionLimitsConstraintPart.Deactivate();
276
+ }
277
+
278
+ void SliderConstraint::WarmStartVelocityConstraint(float inWarmStartImpulseRatio)
279
+ {
280
+ // Warm starting: Apply previous frame impulse
281
+ mMotorConstraintPart.WarmStart(*mBody1, *mBody2, mWorldSpaceSliderAxis, inWarmStartImpulseRatio);
282
+ mPositionConstraintPart.WarmStart(*mBody1, *mBody2, mN1, mN2, inWarmStartImpulseRatio);
283
+ mRotationConstraintPart.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
284
+ mPositionLimitsConstraintPart.WarmStart(*mBody1, *mBody2, mWorldSpaceSliderAxis, inWarmStartImpulseRatio);
285
+ }
286
+
287
+ bool SliderConstraint::SolveVelocityConstraint(float inDeltaTime)
288
+ {
289
+ // Solve motor
290
+ bool motor = false;
291
+ if (mMotorConstraintPart.IsActive())
292
+ {
293
+ switch (mMotorState)
294
+ {
295
+ case EMotorState::Off:
296
+ {
297
+ float max_lambda = mMaxFrictionForce * inDeltaTime;
298
+ motor = mMotorConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2, mWorldSpaceSliderAxis, -max_lambda, max_lambda);
299
+ break;
300
+ }
301
+
302
+ case EMotorState::Velocity:
303
+ case EMotorState::Position:
304
+ motor = mMotorConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2, mWorldSpaceSliderAxis, inDeltaTime * mMotorSettings.mMinForceLimit, inDeltaTime * mMotorSettings.mMaxForceLimit);
305
+ break;
306
+ }
307
+ }
308
+
309
+ // Solve position constraint along 2 axis
310
+ bool pos = mPositionConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2, mN1, mN2);
311
+
312
+ // Solve rotation constraint
313
+ bool rot = mRotationConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2);
314
+
315
+ // Solve limits along slider axis
316
+ bool limit = false;
317
+ if (mPositionLimitsConstraintPart.IsActive())
318
+ {
319
+ float min_lambda, max_lambda;
320
+ if (mLimitsMin == mLimitsMax)
321
+ {
322
+ min_lambda = -FLT_MAX;
323
+ max_lambda = FLT_MAX;
324
+ }
325
+ else if (mD <= mLimitsMin)
326
+ {
327
+ min_lambda = 0.0f;
328
+ max_lambda = FLT_MAX;
329
+ }
330
+ else
331
+ {
332
+ min_lambda = -FLT_MAX;
333
+ max_lambda = 0.0f;
334
+ }
335
+ limit = mPositionLimitsConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2, mWorldSpaceSliderAxis, min_lambda, max_lambda);
336
+ }
337
+
338
+ return motor || pos || rot || limit;
339
+ }
340
+
341
+ bool SliderConstraint::SolvePositionConstraint(float inDeltaTime, float inBaumgarte)
342
+ {
343
+ // Motor operates on velocities only, don't call SolvePositionConstraint
344
+
345
+ // Solve position constraint along 2 axis
346
+ Mat44 rotation1 = Mat44::sRotation(mBody1->GetRotation());
347
+ Mat44 rotation2 = Mat44::sRotation(mBody2->GetRotation());
348
+ CalculateR1R2U(rotation1, rotation2);
349
+ CalculatePositionConstraintProperties(rotation1, rotation2);
350
+ bool pos = mPositionConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, mU, mN1, mN2, inBaumgarte);
351
+
352
+ // Solve rotation constraint
353
+ mRotationConstraintPart.CalculateConstraintProperties(*mBody1, Mat44::sRotation(mBody1->GetRotation()), *mBody2, Mat44::sRotation(mBody2->GetRotation()));
354
+ bool rot = mRotationConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, mInvInitialOrientation, inBaumgarte);
355
+
356
+ // Solve limits along slider axis
357
+ bool limit = false;
358
+ if (mHasLimits && mLimitsSpringSettings.mFrequency <= 0.0f)
359
+ {
360
+ rotation1 = Mat44::sRotation(mBody1->GetRotation());
361
+ rotation2 = Mat44::sRotation(mBody2->GetRotation());
362
+ CalculateR1R2U(rotation1, rotation2);
363
+ CalculateSlidingAxisAndPosition(rotation1);
364
+ CalculatePositionLimitsConstraintProperties(inDeltaTime);
365
+ if (mPositionLimitsConstraintPart.IsActive())
366
+ {
367
+ if (mD <= mLimitsMin)
368
+ limit = mPositionLimitsConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, mWorldSpaceSliderAxis, mD - mLimitsMin, inBaumgarte);
369
+ else
370
+ {
371
+ JPH_ASSERT(mD >= mLimitsMax);
372
+ limit = mPositionLimitsConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, mWorldSpaceSliderAxis, mD - mLimitsMax, inBaumgarte);
373
+ }
374
+ }
375
+ }
376
+
377
+ return pos || rot || limit;
378
+ }
379
+
380
+ #ifdef JPH_DEBUG_RENDERER
381
+ void SliderConstraint::DrawConstraint(DebugRenderer *inRenderer) const
382
+ {
383
+ RMat44 transform1 = mBody1->GetCenterOfMassTransform();
384
+ RMat44 transform2 = mBody2->GetCenterOfMassTransform();
385
+
386
+ // Transform the local positions into world space
387
+ Vec3 slider_axis = transform1.Multiply3x3(mLocalSpaceSliderAxis1);
388
+ RVec3 position1 = transform1 * mLocalSpacePosition1;
389
+ RVec3 position2 = transform2 * mLocalSpacePosition2;
390
+
391
+ // Draw constraint
392
+ inRenderer->DrawMarker(position1, Color::sRed, 0.1f);
393
+ inRenderer->DrawMarker(position2, Color::sGreen, 0.1f);
394
+ inRenderer->DrawLine(position1, position2, Color::sGreen);
395
+
396
+ // Draw motor
397
+ switch (mMotorState)
398
+ {
399
+ case EMotorState::Position:
400
+ inRenderer->DrawMarker(position1 + mTargetPosition * slider_axis, Color::sYellow, 1.0f);
401
+ break;
402
+
403
+ case EMotorState::Velocity:
404
+ {
405
+ Vec3 cur_vel = (mBody2->GetLinearVelocity() - mBody1->GetLinearVelocity()).Dot(slider_axis) * slider_axis;
406
+ inRenderer->DrawLine(position2, position2 + cur_vel, Color::sBlue);
407
+ inRenderer->DrawArrow(position2 + cur_vel, position2 + mTargetVelocity * slider_axis, Color::sRed, 0.1f);
408
+ break;
409
+ }
410
+
411
+ case EMotorState::Off:
412
+ break;
413
+ }
414
+ }
415
+
416
+ void SliderConstraint::DrawConstraintLimits(DebugRenderer *inRenderer) const
417
+ {
418
+ if (mHasLimits)
419
+ {
420
+ RMat44 transform1 = mBody1->GetCenterOfMassTransform();
421
+ RMat44 transform2 = mBody2->GetCenterOfMassTransform();
422
+
423
+ // Transform the local positions into world space
424
+ Vec3 slider_axis = transform1.Multiply3x3(mLocalSpaceSliderAxis1);
425
+ RVec3 position1 = transform1 * mLocalSpacePosition1;
426
+ RVec3 position2 = transform2 * mLocalSpacePosition2;
427
+
428
+ // Calculate the limits in world space
429
+ RVec3 limits_min = position1 + mLimitsMin * slider_axis;
430
+ RVec3 limits_max = position1 + mLimitsMax * slider_axis;
431
+
432
+ inRenderer->DrawLine(limits_min, position1, Color::sWhite);
433
+ inRenderer->DrawLine(position2, limits_max, Color::sWhite);
434
+
435
+ inRenderer->DrawMarker(limits_min, Color::sWhite, 0.1f);
436
+ inRenderer->DrawMarker(limits_max, Color::sWhite, 0.1f);
437
+ }
438
+ }
439
+ #endif // JPH_DEBUG_RENDERER
440
+
441
+ void SliderConstraint::SaveState(StateRecorder &inStream) const
442
+ {
443
+ TwoBodyConstraint::SaveState(inStream);
444
+
445
+ mMotorConstraintPart.SaveState(inStream);
446
+ mPositionConstraintPart.SaveState(inStream);
447
+ mRotationConstraintPart.SaveState(inStream);
448
+ mPositionLimitsConstraintPart.SaveState(inStream);
449
+
450
+ inStream.Write(mMotorState);
451
+ inStream.Write(mTargetVelocity);
452
+ inStream.Write(mTargetPosition);
453
+ }
454
+
455
+ void SliderConstraint::RestoreState(StateRecorder &inStream)
456
+ {
457
+ TwoBodyConstraint::RestoreState(inStream);
458
+
459
+ mMotorConstraintPart.RestoreState(inStream);
460
+ mPositionConstraintPart.RestoreState(inStream);
461
+ mRotationConstraintPart.RestoreState(inStream);
462
+ mPositionLimitsConstraintPart.RestoreState(inStream);
463
+
464
+ inStream.Read(mMotorState);
465
+ inStream.Read(mTargetVelocity);
466
+ inStream.Read(mTargetPosition);
467
+ }
468
+
469
+ Ref<ConstraintSettings> SliderConstraint::GetConstraintSettings() const
470
+ {
471
+ SliderConstraintSettings *settings = new SliderConstraintSettings;
472
+ ToConstraintSettings(*settings);
473
+ settings->mSpace = EConstraintSpace::LocalToBodyCOM;
474
+ settings->mPoint1 = RVec3(mLocalSpacePosition1);
475
+ settings->mSliderAxis1 = mLocalSpaceSliderAxis1;
476
+ settings->mNormalAxis1 = mLocalSpaceNormal1;
477
+ settings->mPoint2 = RVec3(mLocalSpacePosition2);
478
+ Mat44 inv_initial_rotation = Mat44::sRotation(mInvInitialOrientation);
479
+ settings->mSliderAxis2 = inv_initial_rotation.Multiply3x3(mLocalSpaceSliderAxis1);
480
+ settings->mNormalAxis2 = inv_initial_rotation.Multiply3x3(mLocalSpaceNormal1);
481
+ settings->mLimitsMin = mLimitsMin;
482
+ settings->mLimitsMax = mLimitsMax;
483
+ settings->mLimitsSpringSettings = mLimitsSpringSettings;
484
+ settings->mMaxFrictionForce = mMaxFrictionForce;
485
+ settings->mMotorSettings = mMotorSettings;
486
+ return settings;
487
+ }
488
+
489
+ Mat44 SliderConstraint::GetConstraintToBody1Matrix() const
490
+ {
491
+ return Mat44(Vec4(mLocalSpaceSliderAxis1, 0), Vec4(mLocalSpaceNormal1, 0), Vec4(mLocalSpaceNormal2, 0), Vec4(mLocalSpacePosition1, 1));
492
+ }
493
+
494
+ Mat44 SliderConstraint::GetConstraintToBody2Matrix() const
495
+ {
496
+ Mat44 mat = Mat44::sRotation(mInvInitialOrientation).Multiply3x3(Mat44(Vec4(mLocalSpaceSliderAxis1, 0), Vec4(mLocalSpaceNormal1, 0), Vec4(mLocalSpaceNormal2, 0), Vec4(0, 0, 0, 1)));
497
+ mat.SetTranslation(mLocalSpacePosition2);
498
+ return mat;
499
+ }
500
+
501
+ JPH_NAMESPACE_END
@@ -0,0 +1,198 @@
1
+ // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2
+ // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
3
+ // SPDX-License-Identifier: MIT
4
+
5
+ #pragma once
6
+
7
+ #include <Jolt/Physics/Constraints/TwoBodyConstraint.h>
8
+ #include <Jolt/Physics/Constraints/MotorSettings.h>
9
+ #include <Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h>
10
+ #include <Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h>
11
+ #include <Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h>
12
+
13
+ JPH_NAMESPACE_BEGIN
14
+
15
+ /// Slider constraint settings, used to create a slider constraint
16
+ class JPH_EXPORT SliderConstraintSettings final : public TwoBodyConstraintSettings
17
+ {
18
+ JPH_DECLARE_SERIALIZABLE_VIRTUAL(JPH_EXPORT, SliderConstraintSettings)
19
+
20
+ public:
21
+ // See: ConstraintSettings::SaveBinaryState
22
+ virtual void SaveBinaryState(StreamOut &inStream) const override;
23
+
24
+ /// Create an instance of this constraint.
25
+ /// Note that the rotation constraint will be solved from body 1. This means that if body 1 and body 2 have different masses / inertias (kinematic body = infinite mass / inertia), body 1 should be the heaviest body.
26
+ virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
27
+
28
+ /// Simple way of setting the slider and normal axis in world space (assumes the bodies are already oriented correctly when the constraint is created)
29
+ void SetSliderAxis(Vec3Arg inSliderAxis);
30
+
31
+ /// This determines in which space the constraint is setup, all properties below should be in the specified space
32
+ EConstraintSpace mSpace = EConstraintSpace::WorldSpace;
33
+
34
+ /// When mSpace is WorldSpace mPoint1 and mPoint2 can be automatically calculated based on the positions of the bodies when the constraint is created (the current relative position/orientation is chosen as the '0' position). Set this to false if you want to supply the attachment points yourself.
35
+ bool mAutoDetectPoint = false;
36
+
37
+ /// Body 1 constraint reference frame (space determined by mSpace).
38
+ /// Slider axis is the axis along which movement is possible (direction), normal axis is a perpendicular vector to define the frame.
39
+ RVec3 mPoint1 = RVec3::sZero();
40
+ Vec3 mSliderAxis1 = Vec3::sAxisX();
41
+ Vec3 mNormalAxis1 = Vec3::sAxisY();
42
+
43
+ /// Body 2 constraint reference frame (space determined by mSpace)
44
+ RVec3 mPoint2 = RVec3::sZero();
45
+ Vec3 mSliderAxis2 = Vec3::sAxisX();
46
+ Vec3 mNormalAxis2 = Vec3::sAxisY();
47
+
48
+ /// When the bodies move so that mPoint1 coincides with mPoint2 the slider position is defined to be 0, movement will be limited between [mLimitsMin, mLimitsMax] where mLimitsMin e [-inf, 0] and mLimitsMax e [0, inf]
49
+ float mLimitsMin = -FLT_MAX;
50
+ float mLimitsMax = FLT_MAX;
51
+
52
+ /// When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.
53
+ SpringSettings mLimitsSpringSettings;
54
+
55
+ /// Maximum amount of friction force to apply (N) when not driven by a motor.
56
+ float mMaxFrictionForce = 0.0f;
57
+
58
+ /// In case the constraint is powered, this determines the motor settings around the sliding axis
59
+ MotorSettings mMotorSettings;
60
+
61
+ protected:
62
+ // See: ConstraintSettings::RestoreBinaryState
63
+ virtual void RestoreBinaryState(StreamIn &inStream) override;
64
+ };
65
+
66
+ /// A slider constraint allows movement in only 1 axis (and no rotation). Also known as a prismatic constraint.
67
+ class JPH_EXPORT SliderConstraint final : public TwoBodyConstraint
68
+ {
69
+ public:
70
+ JPH_OVERRIDE_NEW_DELETE
71
+
72
+ /// Construct slider constraint
73
+ SliderConstraint(Body &inBody1, Body &inBody2, const SliderConstraintSettings &inSettings);
74
+
75
+ // Generic interface of a constraint
76
+ virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Slider; }
77
+ virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
78
+ virtual void SetupVelocityConstraint(float inDeltaTime) override;
79
+ virtual void ResetWarmStart() override;
80
+ virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
81
+ virtual bool SolveVelocityConstraint(float inDeltaTime) override;
82
+ virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
83
+ #ifdef JPH_DEBUG_RENDERER
84
+ virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
85
+ virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const override;
86
+ #endif // JPH_DEBUG_RENDERER
87
+ virtual void SaveState(StateRecorder &inStream) const override;
88
+ virtual void RestoreState(StateRecorder &inStream) override;
89
+ virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
90
+
91
+ // See: TwoBodyConstraint
92
+ virtual Mat44 GetConstraintToBody1Matrix() const override;
93
+ virtual Mat44 GetConstraintToBody2Matrix() const override;
94
+
95
+ /// Get the current distance from the rest position
96
+ float GetCurrentPosition() const;
97
+
98
+ /// Friction control
99
+ void SetMaxFrictionForce(float inFrictionForce) { mMaxFrictionForce = inFrictionForce; }
100
+ float GetMaxFrictionForce() const { return mMaxFrictionForce; }
101
+
102
+ /// Motor settings
103
+ MotorSettings & GetMotorSettings() { return mMotorSettings; }
104
+ const MotorSettings & GetMotorSettings() const { return mMotorSettings; }
105
+
106
+ // Motor controls
107
+ void SetMotorState(EMotorState inState) { JPH_ASSERT(inState == EMotorState::Off || mMotorSettings.IsValid()); mMotorState = inState; }
108
+ EMotorState GetMotorState() const { return mMotorState; }
109
+ void SetTargetVelocity(float inVelocity) { mTargetVelocity = inVelocity; }
110
+ float GetTargetVelocity() const { return mTargetVelocity; }
111
+ void SetTargetPosition(float inPosition) { mTargetPosition = mHasLimits? Clamp(inPosition, mLimitsMin, mLimitsMax) : inPosition; }
112
+ float GetTargetPosition() const { return mTargetPosition; }
113
+
114
+ /// Update the limits of the slider constraint (see SliderConstraintSettings)
115
+ void SetLimits(float inLimitsMin, float inLimitsMax);
116
+ float GetLimitsMin() const { return mLimitsMin; }
117
+ float GetLimitsMax() const { return mLimitsMax; }
118
+ bool HasLimits() const { return mHasLimits; }
119
+
120
+ /// Update the limits spring settings
121
+ const SpringSettings & GetLimitsSpringSettings() const { return mLimitsSpringSettings; }
122
+ SpringSettings & GetLimitsSpringSettings() { return mLimitsSpringSettings; }
123
+ void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings) { mLimitsSpringSettings = inLimitsSpringSettings; }
124
+
125
+ ///@name Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)
126
+ inline Vector<2> GetTotalLambdaPosition() const { return mPositionConstraintPart.GetTotalLambda(); }
127
+ inline float GetTotalLambdaPositionLimits() const { return mPositionLimitsConstraintPart.GetTotalLambda(); }
128
+ inline Vec3 GetTotalLambdaRotation() const { return mRotationConstraintPart.GetTotalLambda(); }
129
+ inline float GetTotalLambdaMotor() const { return mMotorConstraintPart.GetTotalLambda(); }
130
+
131
+ private:
132
+ // Internal helper function to calculate the values below
133
+ void CalculateR1R2U(Mat44Arg inRotation1, Mat44Arg inRotation2);
134
+ void CalculateSlidingAxisAndPosition(Mat44Arg inRotation1);
135
+ void CalculatePositionConstraintProperties(Mat44Arg inRotation1, Mat44Arg inRotation2);
136
+ void CalculatePositionLimitsConstraintProperties(float inDeltaTime);
137
+ void CalculateMotorConstraintProperties(float inDeltaTime);
138
+
139
+ // CONFIGURATION PROPERTIES FOLLOW
140
+
141
+ // Local space constraint positions
142
+ Vec3 mLocalSpacePosition1;
143
+ Vec3 mLocalSpacePosition2;
144
+
145
+ // Local space sliding direction
146
+ Vec3 mLocalSpaceSliderAxis1;
147
+
148
+ // Local space normals to the sliding direction (in body 1 space)
149
+ Vec3 mLocalSpaceNormal1;
150
+ Vec3 mLocalSpaceNormal2;
151
+
152
+ // Inverse of initial rotation from body 1 to body 2 in body 1 space
153
+ Quat mInvInitialOrientation;
154
+
155
+ // Slider limits
156
+ bool mHasLimits;
157
+ float mLimitsMin;
158
+ float mLimitsMax;
159
+
160
+ // Soft constraint limits
161
+ SpringSettings mLimitsSpringSettings;
162
+
163
+ // Friction
164
+ float mMaxFrictionForce;
165
+
166
+ // Motor controls
167
+ MotorSettings mMotorSettings;
168
+ EMotorState mMotorState = EMotorState::Off;
169
+ float mTargetVelocity = 0.0f;
170
+ float mTargetPosition = 0.0f;
171
+
172
+ // RUN TIME PROPERTIES FOLLOW
173
+
174
+ // Positions where the point constraint acts on (middle point between center of masses)
175
+ Vec3 mR1;
176
+ Vec3 mR2;
177
+
178
+ // X2 + R2 - X1 - R1
179
+ Vec3 mU;
180
+
181
+ // World space sliding direction
182
+ Vec3 mWorldSpaceSliderAxis;
183
+
184
+ // Normals to the slider axis
185
+ Vec3 mN1;
186
+ Vec3 mN2;
187
+
188
+ // Distance along the slide axis
189
+ float mD = 0.0f;
190
+
191
+ // The constraint parts
192
+ DualAxisConstraintPart mPositionConstraintPart;
193
+ RotationEulerConstraintPart mRotationConstraintPart;
194
+ AxisConstraintPart mPositionLimitsConstraintPart;
195
+ AxisConstraintPart mMotorConstraintPart;
196
+ };
197
+
198
+ JPH_NAMESPACE_END