@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,443 @@
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/HingeConstraint.h>
8
+ #include <Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h>
9
+ #include <Jolt/Physics/Body/Body.h>
10
+ #include <Jolt/ObjectStream/TypeDeclarations.h>
11
+ #include <Jolt/Core/StreamIn.h>
12
+ #include <Jolt/Core/StreamOut.h>
13
+ #ifdef JPH_DEBUG_RENDERER
14
+ #include <Jolt/Renderer/DebugRenderer.h>
15
+ #endif // JPH_DEBUG_RENDERER
16
+
17
+ JPH_NAMESPACE_BEGIN
18
+
19
+ JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(HingeConstraintSettings)
20
+ {
21
+ JPH_ADD_BASE_CLASS(HingeConstraintSettings, TwoBodyConstraintSettings)
22
+
23
+ JPH_ADD_ENUM_ATTRIBUTE(HingeConstraintSettings, mSpace)
24
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mPoint1)
25
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mHingeAxis1)
26
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mNormalAxis1)
27
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mPoint2)
28
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mHingeAxis2)
29
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mNormalAxis2)
30
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mLimitsMin)
31
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mLimitsMax)
32
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mLimitsSpringSettings)
33
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mMaxFrictionTorque)
34
+ JPH_ADD_ATTRIBUTE(HingeConstraintSettings, mMotorSettings)
35
+ }
36
+
37
+ void HingeConstraintSettings::SaveBinaryState(StreamOut &inStream) const
38
+ {
39
+ ConstraintSettings::SaveBinaryState(inStream);
40
+
41
+ inStream.Write(mSpace);
42
+ inStream.Write(mPoint1);
43
+ inStream.Write(mHingeAxis1);
44
+ inStream.Write(mNormalAxis1);
45
+ inStream.Write(mPoint2);
46
+ inStream.Write(mHingeAxis2);
47
+ inStream.Write(mNormalAxis2);
48
+ inStream.Write(mLimitsMin);
49
+ inStream.Write(mLimitsMax);
50
+ inStream.Write(mMaxFrictionTorque);
51
+ mLimitsSpringSettings.SaveBinaryState(inStream);
52
+ mMotorSettings.SaveBinaryState(inStream);
53
+ }
54
+
55
+ void HingeConstraintSettings::RestoreBinaryState(StreamIn &inStream)
56
+ {
57
+ ConstraintSettings::RestoreBinaryState(inStream);
58
+
59
+ inStream.Read(mSpace);
60
+ inStream.Read(mPoint1);
61
+ inStream.Read(mHingeAxis1);
62
+ inStream.Read(mNormalAxis1);
63
+ inStream.Read(mPoint2);
64
+ inStream.Read(mHingeAxis2);
65
+ inStream.Read(mNormalAxis2);
66
+ inStream.Read(mLimitsMin);
67
+ inStream.Read(mLimitsMax);
68
+ inStream.Read(mMaxFrictionTorque);
69
+ mLimitsSpringSettings.RestoreBinaryState(inStream);
70
+ mMotorSettings.RestoreBinaryState(inStream);}
71
+
72
+ TwoBodyConstraint *HingeConstraintSettings::Create(Body &inBody1, Body &inBody2) const
73
+ {
74
+ return new HingeConstraint(inBody1, inBody2, *this);
75
+ }
76
+
77
+ HingeConstraint::HingeConstraint(Body &inBody1, Body &inBody2, const HingeConstraintSettings &inSettings) :
78
+ TwoBodyConstraint(inBody1, inBody2, inSettings),
79
+ mMaxFrictionTorque(inSettings.mMaxFrictionTorque),
80
+ mMotorSettings(inSettings.mMotorSettings)
81
+ {
82
+ // Store limits
83
+ JPH_ASSERT(inSettings.mLimitsMin != inSettings.mLimitsMax || inSettings.mLimitsSpringSettings.mFrequency > 0.0f, "Better use a fixed constraint in this case");
84
+ SetLimits(inSettings.mLimitsMin, inSettings.mLimitsMax);
85
+
86
+ // Store inverse of initial rotation from body 1 to body 2 in body 1 space
87
+ mInvInitialOrientation = RotationEulerConstraintPart::sGetInvInitialOrientationXZ(inSettings.mNormalAxis1, inSettings.mHingeAxis1, inSettings.mNormalAxis2, inSettings.mHingeAxis2);
88
+
89
+ if (inSettings.mSpace == EConstraintSpace::WorldSpace)
90
+ {
91
+ // If all properties were specified in world space, take them to local space now
92
+ RMat44 inv_transform1 = inBody1.GetInverseCenterOfMassTransform();
93
+ mLocalSpacePosition1 = Vec3(inv_transform1 * inSettings.mPoint1);
94
+ mLocalSpaceHingeAxis1 = inv_transform1.Multiply3x3(inSettings.mHingeAxis1).Normalized();
95
+ mLocalSpaceNormalAxis1 = inv_transform1.Multiply3x3(inSettings.mNormalAxis1).Normalized();
96
+
97
+ RMat44 inv_transform2 = inBody2.GetInverseCenterOfMassTransform();
98
+ mLocalSpacePosition2 = Vec3(inv_transform2 * inSettings.mPoint2);
99
+ mLocalSpaceHingeAxis2 = inv_transform2.Multiply3x3(inSettings.mHingeAxis2).Normalized();
100
+ mLocalSpaceNormalAxis2 = inv_transform2.Multiply3x3(inSettings.mNormalAxis2).Normalized();
101
+
102
+ // Constraints were specified in world space, so we should have replaced c1 with q10^-1 c1 and c2 with q20^-1 c2
103
+ // => r0^-1 = (q20^-1 c2) (q10^-1 c1)^1 = q20^-1 (c2 c1^-1) q10
104
+ mInvInitialOrientation = inBody2.GetRotation().Conjugated() * mInvInitialOrientation * inBody1.GetRotation();
105
+ }
106
+ else
107
+ {
108
+ mLocalSpacePosition1 = Vec3(inSettings.mPoint1);
109
+ mLocalSpaceHingeAxis1 = inSettings.mHingeAxis1;
110
+ mLocalSpaceNormalAxis1 = inSettings.mNormalAxis1;
111
+
112
+ mLocalSpacePosition2 = Vec3(inSettings.mPoint2);
113
+ mLocalSpaceHingeAxis2 = inSettings.mHingeAxis2;
114
+ mLocalSpaceNormalAxis2 = inSettings.mNormalAxis2;
115
+ }
116
+
117
+ // Store spring settings
118
+ SetLimitsSpringSettings(inSettings.mLimitsSpringSettings);
119
+ }
120
+
121
+ void HingeConstraint::NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM)
122
+ {
123
+ if (mBody1->GetID() == inBodyID)
124
+ mLocalSpacePosition1 -= inDeltaCOM;
125
+ else if (mBody2->GetID() == inBodyID)
126
+ mLocalSpacePosition2 -= inDeltaCOM;
127
+ }
128
+
129
+ float HingeConstraint::GetCurrentAngle() const
130
+ {
131
+ // See: CalculateA1AndTheta
132
+ Quat rotation1 = mBody1->GetRotation();
133
+ Quat diff = mBody2->GetRotation() * mInvInitialOrientation * rotation1.Conjugated();
134
+ return diff.GetRotationAngle(rotation1 * mLocalSpaceHingeAxis1);
135
+ }
136
+
137
+ void HingeConstraint::SetTargetOrientationBS(QuatArg inOrientation)
138
+ {
139
+ // See: CalculateA1AndTheta
140
+ //
141
+ // The rotation between body 1 and 2 can be written as:
142
+ //
143
+ // q2 = q1 rh1 r0
144
+ //
145
+ // where rh1 is a rotation around local hinge axis 1, also:
146
+ //
147
+ // q2 = q1 inOrientation
148
+ //
149
+ // This means:
150
+ //
151
+ // rh1 r0 = inOrientation <=> rh1 = inOrientation * r0^-1
152
+ Quat rh1 = inOrientation * mInvInitialOrientation;
153
+ SetTargetAngle(rh1.GetRotationAngle(mLocalSpaceHingeAxis1));
154
+ }
155
+
156
+ void HingeConstraint::SetLimits(float inLimitsMin, float inLimitsMax)
157
+ {
158
+ JPH_ASSERT(inLimitsMin <= 0.0f && inLimitsMin >= -JPH_PI);
159
+ JPH_ASSERT(inLimitsMax >= 0.0f && inLimitsMax <= JPH_PI);
160
+ mLimitsMin = inLimitsMin;
161
+ mLimitsMax = inLimitsMax;
162
+ mHasLimits = mLimitsMin > -JPH_PI || mLimitsMax < JPH_PI;
163
+ }
164
+
165
+ void HingeConstraint::CalculateA1AndTheta()
166
+ {
167
+ if (mHasLimits || mMotorState != EMotorState::Off || mMaxFrictionTorque > 0.0f)
168
+ {
169
+ Quat rotation1 = mBody1->GetRotation();
170
+
171
+ // Calculate relative rotation in world space
172
+ //
173
+ // The rest rotation is:
174
+ //
175
+ // q2 = q1 r0
176
+ //
177
+ // But the actual rotation is
178
+ //
179
+ // q2 = diff q1 r0
180
+ // <=> diff = q2 r0^-1 q1^-1
181
+ //
182
+ // Where:
183
+ // q1 = current rotation of body 1
184
+ // q2 = current rotation of body 2
185
+ // diff = relative rotation in world space
186
+ Quat diff = mBody2->GetRotation() * mInvInitialOrientation * rotation1.Conjugated();
187
+
188
+ // Calculate hinge axis in world space
189
+ mA1 = rotation1 * mLocalSpaceHingeAxis1;
190
+
191
+ // Get rotation angle around the hinge axis
192
+ mTheta = diff.GetRotationAngle(mA1);
193
+ }
194
+ }
195
+
196
+ void HingeConstraint::CalculateRotationLimitsConstraintProperties(float inDeltaTime)
197
+ {
198
+ // Apply constraint if outside of limits
199
+ if (mHasLimits && (mTheta <= mLimitsMin || mTheta >= mLimitsMax))
200
+ mRotationLimitsConstraintPart.CalculateConstraintPropertiesWithSettings(inDeltaTime, *mBody1, *mBody2, mA1, 0.0f, GetSmallestAngleToLimit(), mLimitsSpringSettings);
201
+ else
202
+ mRotationLimitsConstraintPart.Deactivate();
203
+ }
204
+
205
+ void HingeConstraint::CalculateMotorConstraintProperties(float inDeltaTime)
206
+ {
207
+ switch (mMotorState)
208
+ {
209
+ case EMotorState::Off:
210
+ if (mMaxFrictionTorque > 0.0f)
211
+ mMotorConstraintPart.CalculateConstraintProperties(*mBody1, *mBody2, mA1);
212
+ else
213
+ mMotorConstraintPart.Deactivate();
214
+ break;
215
+
216
+ case EMotorState::Velocity:
217
+ mMotorConstraintPart.CalculateConstraintProperties(*mBody1, *mBody2, mA1, -mTargetAngularVelocity);
218
+ break;
219
+
220
+ case EMotorState::Position:
221
+ if (mMotorSettings.mSpringSettings.HasStiffness())
222
+ mMotorConstraintPart.CalculateConstraintPropertiesWithSettings(inDeltaTime, *mBody1, *mBody2, mA1, 0.0f, CenterAngleAroundZero(mTheta - mTargetAngle), mMotorSettings.mSpringSettings);
223
+ else
224
+ mMotorConstraintPart.Deactivate();
225
+ break;
226
+ }
227
+ }
228
+
229
+ void HingeConstraint::SetupVelocityConstraint(float inDeltaTime)
230
+ {
231
+ // Cache constraint values that are valid until the bodies move
232
+ Mat44 rotation1 = Mat44::sRotation(mBody1->GetRotation());
233
+ Mat44 rotation2 = Mat44::sRotation(mBody2->GetRotation());
234
+ mPointConstraintPart.CalculateConstraintProperties(*mBody1, rotation1, mLocalSpacePosition1, *mBody2, rotation2, mLocalSpacePosition2);
235
+ mRotationConstraintPart.CalculateConstraintProperties(*mBody1, rotation1, rotation1.Multiply3x3(mLocalSpaceHingeAxis1), *mBody2, rotation2, rotation2.Multiply3x3(mLocalSpaceHingeAxis2));
236
+ CalculateA1AndTheta();
237
+ CalculateRotationLimitsConstraintProperties(inDeltaTime);
238
+ CalculateMotorConstraintProperties(inDeltaTime);
239
+ }
240
+
241
+ void HingeConstraint::ResetWarmStart()
242
+ {
243
+ mMotorConstraintPart.Deactivate();
244
+ mPointConstraintPart.Deactivate();
245
+ mRotationConstraintPart.Deactivate();
246
+ mRotationLimitsConstraintPart.Deactivate();
247
+ }
248
+
249
+ void HingeConstraint::WarmStartVelocityConstraint(float inWarmStartImpulseRatio)
250
+ {
251
+ // Warm starting: Apply previous frame impulse
252
+ mMotorConstraintPart.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
253
+ mPointConstraintPart.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
254
+ mRotationConstraintPart.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
255
+ mRotationLimitsConstraintPart.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
256
+ }
257
+
258
+ float HingeConstraint::GetSmallestAngleToLimit() const
259
+ {
260
+ float dist_to_min = CenterAngleAroundZero(mTheta - mLimitsMin);
261
+ float dist_to_max = CenterAngleAroundZero(mTheta - mLimitsMax);
262
+ return abs(dist_to_min) < abs(dist_to_max)? dist_to_min : dist_to_max;
263
+ }
264
+
265
+ bool HingeConstraint::IsMinLimitClosest() const
266
+ {
267
+ float dist_to_min = CenterAngleAroundZero(mTheta - mLimitsMin);
268
+ float dist_to_max = CenterAngleAroundZero(mTheta - mLimitsMax);
269
+ return abs(dist_to_min) < abs(dist_to_max);
270
+ }
271
+
272
+ bool HingeConstraint::SolveVelocityConstraint(float inDeltaTime)
273
+ {
274
+ // Solve motor
275
+ bool motor = false;
276
+ if (mMotorConstraintPart.IsActive())
277
+ {
278
+ switch (mMotorState)
279
+ {
280
+ case EMotorState::Off:
281
+ {
282
+ float max_lambda = mMaxFrictionTorque * inDeltaTime;
283
+ motor = mMotorConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2, mA1, -max_lambda, max_lambda);
284
+ break;
285
+ }
286
+
287
+ case EMotorState::Velocity:
288
+ case EMotorState::Position:
289
+ motor = mMotorConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2, mA1, inDeltaTime * mMotorSettings.mMinTorqueLimit, inDeltaTime * mMotorSettings.mMaxTorqueLimit);
290
+ break;
291
+ }
292
+ }
293
+
294
+ // Solve point constraint
295
+ bool pos = mPointConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2);
296
+
297
+ // Solve rotation constraint
298
+ bool rot = mRotationConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2);
299
+
300
+ // Solve rotation limits
301
+ bool limit = false;
302
+ if (mRotationLimitsConstraintPart.IsActive())
303
+ {
304
+ float min_lambda, max_lambda;
305
+ if (mLimitsMin == mLimitsMax)
306
+ {
307
+ min_lambda = -FLT_MAX;
308
+ max_lambda = FLT_MAX;
309
+ }
310
+ else if (IsMinLimitClosest())
311
+ {
312
+ min_lambda = 0.0f;
313
+ max_lambda = FLT_MAX;
314
+ }
315
+ else
316
+ {
317
+ min_lambda = -FLT_MAX;
318
+ max_lambda = 0.0f;
319
+ }
320
+ limit = mRotationLimitsConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2, mA1, min_lambda, max_lambda);
321
+ }
322
+
323
+ return motor || pos || rot || limit;
324
+ }
325
+
326
+ bool HingeConstraint::SolvePositionConstraint(float inDeltaTime, float inBaumgarte)
327
+ {
328
+ // Motor operates on velocities only, don't call SolvePositionConstraint
329
+
330
+ // Solve point constraint
331
+ mPointConstraintPart.CalculateConstraintProperties(*mBody1, Mat44::sRotation(mBody1->GetRotation()), mLocalSpacePosition1, *mBody2, Mat44::sRotation(mBody2->GetRotation()), mLocalSpacePosition2);
332
+ bool pos = mPointConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, inBaumgarte);
333
+
334
+ // Solve rotation constraint
335
+ Mat44 rotation1 = Mat44::sRotation(mBody1->GetRotation()); // Note that previous call to GetRotation() is out of date since the rotation has changed
336
+ Mat44 rotation2 = Mat44::sRotation(mBody2->GetRotation());
337
+ mRotationConstraintPart.CalculateConstraintProperties(*mBody1, rotation1, rotation1.Multiply3x3(mLocalSpaceHingeAxis1), *mBody2, rotation2, rotation2.Multiply3x3(mLocalSpaceHingeAxis2));
338
+ bool rot = mRotationConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, inBaumgarte);
339
+
340
+ // Solve rotation limits
341
+ bool limit = false;
342
+ if (mHasLimits && mLimitsSpringSettings.mFrequency <= 0.0f)
343
+ {
344
+ CalculateA1AndTheta();
345
+ CalculateRotationLimitsConstraintProperties(inDeltaTime);
346
+ if (mRotationLimitsConstraintPart.IsActive())
347
+ limit = mRotationLimitsConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, GetSmallestAngleToLimit(), inBaumgarte);
348
+ }
349
+
350
+ return pos || rot || limit;
351
+ }
352
+
353
+ #ifdef JPH_DEBUG_RENDERER
354
+ void HingeConstraint::DrawConstraint(DebugRenderer *inRenderer) const
355
+ {
356
+ RMat44 transform1 = mBody1->GetCenterOfMassTransform();
357
+ RMat44 transform2 = mBody2->GetCenterOfMassTransform();
358
+
359
+ // Draw constraint
360
+ RVec3 constraint_pos1 = transform1 * mLocalSpacePosition1;
361
+ inRenderer->DrawMarker(constraint_pos1, Color::sRed, 0.1f);
362
+ inRenderer->DrawLine(constraint_pos1, transform1 * (mLocalSpacePosition1 + mDrawConstraintSize * mLocalSpaceHingeAxis1), Color::sRed);
363
+
364
+ RVec3 constraint_pos2 = transform2 * mLocalSpacePosition2;
365
+ inRenderer->DrawMarker(constraint_pos2, Color::sGreen, 0.1f);
366
+ inRenderer->DrawLine(constraint_pos2, transform2 * (mLocalSpacePosition2 + mDrawConstraintSize * mLocalSpaceHingeAxis2), Color::sGreen);
367
+ inRenderer->DrawLine(constraint_pos2, transform2 * (mLocalSpacePosition2 + mDrawConstraintSize * mLocalSpaceNormalAxis2), Color::sWhite);
368
+ }
369
+
370
+ void HingeConstraint::DrawConstraintLimits(DebugRenderer *inRenderer) const
371
+ {
372
+ if (mHasLimits && mLimitsMax > mLimitsMin)
373
+ {
374
+ // Get constraint properties in world space
375
+ RMat44 transform1 = mBody1->GetCenterOfMassTransform();
376
+ RVec3 position1 = transform1 * mLocalSpacePosition1;
377
+ Vec3 hinge_axis1 = transform1.Multiply3x3(mLocalSpaceHingeAxis1);
378
+ Vec3 normal_axis1 = transform1.Multiply3x3(mLocalSpaceNormalAxis1);
379
+
380
+ inRenderer->DrawPie(position1, mDrawConstraintSize, hinge_axis1, normal_axis1, mLimitsMin, mLimitsMax, Color::sPurple, DebugRenderer::ECastShadow::Off);
381
+ }
382
+ }
383
+ #endif // JPH_DEBUG_RENDERER
384
+
385
+ void HingeConstraint::SaveState(StateRecorder &inStream) const
386
+ {
387
+ TwoBodyConstraint::SaveState(inStream);
388
+
389
+ mMotorConstraintPart.SaveState(inStream);
390
+ mRotationConstraintPart.SaveState(inStream);
391
+ mPointConstraintPart.SaveState(inStream);
392
+ mRotationLimitsConstraintPart.SaveState(inStream);
393
+
394
+ inStream.Write(mMotorState);
395
+ inStream.Write(mTargetAngularVelocity);
396
+ inStream.Write(mTargetAngle);
397
+ }
398
+
399
+ void HingeConstraint::RestoreState(StateRecorder &inStream)
400
+ {
401
+ TwoBodyConstraint::RestoreState(inStream);
402
+
403
+ mMotorConstraintPart.RestoreState(inStream);
404
+ mRotationConstraintPart.RestoreState(inStream);
405
+ mPointConstraintPart.RestoreState(inStream);
406
+ mRotationLimitsConstraintPart.RestoreState(inStream);
407
+
408
+ inStream.Read(mMotorState);
409
+ inStream.Read(mTargetAngularVelocity);
410
+ inStream.Read(mTargetAngle);
411
+ }
412
+
413
+
414
+ Ref<ConstraintSettings> HingeConstraint::GetConstraintSettings() const
415
+ {
416
+ HingeConstraintSettings *settings = new HingeConstraintSettings;
417
+ ToConstraintSettings(*settings);
418
+ settings->mSpace = EConstraintSpace::LocalToBodyCOM;
419
+ settings->mPoint1 = RVec3(mLocalSpacePosition1);
420
+ settings->mHingeAxis1 = mLocalSpaceHingeAxis1;
421
+ settings->mNormalAxis1 = mLocalSpaceNormalAxis1;
422
+ settings->mPoint2 = RVec3(mLocalSpacePosition2);
423
+ settings->mHingeAxis2 = mLocalSpaceHingeAxis2;
424
+ settings->mNormalAxis2 = mLocalSpaceNormalAxis2;
425
+ settings->mLimitsMin = mLimitsMin;
426
+ settings->mLimitsMax = mLimitsMax;
427
+ settings->mLimitsSpringSettings = mLimitsSpringSettings;
428
+ settings->mMaxFrictionTorque = mMaxFrictionTorque;
429
+ settings->mMotorSettings = mMotorSettings;
430
+ return settings;
431
+ }
432
+
433
+ Mat44 HingeConstraint::GetConstraintToBody1Matrix() const
434
+ {
435
+ return Mat44(Vec4(mLocalSpaceHingeAxis1, 0), Vec4(mLocalSpaceNormalAxis1, 0), Vec4(mLocalSpaceHingeAxis1.Cross(mLocalSpaceNormalAxis1), 0), Vec4(mLocalSpacePosition1, 1));
436
+ }
437
+
438
+ Mat44 HingeConstraint::GetConstraintToBody2Matrix() const
439
+ {
440
+ return Mat44(Vec4(mLocalSpaceHingeAxis2, 0), Vec4(mLocalSpaceNormalAxis2, 0), Vec4(mLocalSpaceHingeAxis2.Cross(mLocalSpaceNormalAxis2), 0), Vec4(mLocalSpacePosition2, 1));
441
+ }
442
+
443
+ JPH_NAMESPACE_END
@@ -0,0 +1,205 @@
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/PointConstraintPart.h>
10
+ #include <Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h>
11
+ #include <Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h>
12
+
13
+ JPH_NAMESPACE_BEGIN
14
+
15
+ /// Hinge constraint settings, used to create a hinge constraint
16
+ class JPH_EXPORT HingeConstraintSettings final : public TwoBodyConstraintSettings
17
+ {
18
+ JPH_DECLARE_SERIALIZABLE_VIRTUAL(JPH_EXPORT, HingeConstraintSettings)
19
+
20
+ public:
21
+ // See: ConstraintSettings::SaveBinaryState
22
+ virtual void SaveBinaryState(StreamOut &inStream) const override;
23
+
24
+ /// Create an instance of this constraint
25
+ virtual TwoBodyConstraint * Create(Body &inBody1, Body &inBody2) const override;
26
+
27
+ /// This determines in which space the constraint is setup, all properties below should be in the specified space
28
+ EConstraintSpace mSpace = EConstraintSpace::WorldSpace;
29
+
30
+ /// Body 1 constraint reference frame (space determined by mSpace).
31
+ /// Hinge axis is the axis where rotation is allowed.
32
+ /// When the normal axis of both bodies align in world space, the hinge angle is defined to be 0.
33
+ /// mHingeAxis1 and mNormalAxis1 should be perpendicular. mHingeAxis2 and mNormalAxis2 should also be perpendicular.
34
+ /// If you configure the joint in world space and create both bodies with a relative rotation you want to be defined as zero,
35
+ /// you can simply set mHingeAxis1 = mHingeAxis2 and mNormalAxis1 = mNormalAxis2.
36
+ RVec3 mPoint1 = RVec3::sZero();
37
+ Vec3 mHingeAxis1 = Vec3::sAxisY();
38
+ Vec3 mNormalAxis1 = Vec3::sAxisX();
39
+
40
+ /// Body 2 constraint reference frame (space determined by mSpace)
41
+ RVec3 mPoint2 = RVec3::sZero();
42
+ Vec3 mHingeAxis2 = Vec3::sAxisY();
43
+ Vec3 mNormalAxis2 = Vec3::sAxisX();
44
+
45
+ /// Rotation around the hinge axis will be limited between [mLimitsMin, mLimitsMax] where mLimitsMin e [-pi, 0] and mLimitsMax e [0, pi].
46
+ /// Both angles are in radians.
47
+ float mLimitsMin = -JPH_PI;
48
+ float mLimitsMax = JPH_PI;
49
+
50
+ /// When enabled, this makes the limits soft. When the constraint exceeds the limits, a spring force will pull it back.
51
+ SpringSettings mLimitsSpringSettings;
52
+
53
+ /// Maximum amount of torque (N m) to apply as friction when the constraint is not powered by a motor
54
+ float mMaxFrictionTorque = 0.0f;
55
+
56
+ /// In case the constraint is powered, this determines the motor settings around the hinge axis
57
+ MotorSettings mMotorSettings;
58
+
59
+ protected:
60
+ // See: ConstraintSettings::RestoreBinaryState
61
+ virtual void RestoreBinaryState(StreamIn &inStream) override;
62
+ };
63
+
64
+ /// A hinge constraint constrains 2 bodies on a single point and allows only a single axis of rotation
65
+ class JPH_EXPORT HingeConstraint final : public TwoBodyConstraint
66
+ {
67
+ public:
68
+ JPH_OVERRIDE_NEW_DELETE
69
+
70
+ /// Construct hinge constraint
71
+ HingeConstraint(Body &inBody1, Body &inBody2, const HingeConstraintSettings &inSettings);
72
+
73
+ // Generic interface of a constraint
74
+ virtual EConstraintSubType GetSubType() const override { return EConstraintSubType::Hinge; }
75
+ virtual void NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM) override;
76
+ virtual void SetupVelocityConstraint(float inDeltaTime) override;
77
+ virtual void ResetWarmStart() override;
78
+ virtual void WarmStartVelocityConstraint(float inWarmStartImpulseRatio) override;
79
+ virtual bool SolveVelocityConstraint(float inDeltaTime) override;
80
+ virtual bool SolvePositionConstraint(float inDeltaTime, float inBaumgarte) override;
81
+ #ifdef JPH_DEBUG_RENDERER
82
+ virtual void DrawConstraint(DebugRenderer *inRenderer) const override;
83
+ virtual void DrawConstraintLimits(DebugRenderer *inRenderer) const override;
84
+ #endif // JPH_DEBUG_RENDERER
85
+ virtual void SaveState(StateRecorder &inStream) const override;
86
+ virtual void RestoreState(StateRecorder &inStream) override;
87
+ virtual Ref<ConstraintSettings> GetConstraintSettings() const override;
88
+
89
+ // See: TwoBodyConstraint
90
+ virtual Mat44 GetConstraintToBody1Matrix() const override;
91
+ virtual Mat44 GetConstraintToBody2Matrix() const override;
92
+
93
+ /// Get the attachment point for body 1 relative to body 1 COM (transform by Body::GetCenterOfMassTransform to take to world space)
94
+ inline Vec3 GetLocalSpacePoint1() const { return mLocalSpacePosition1; }
95
+
96
+ /// Get the attachment point for body 2 relative to body 2 COM (transform by Body::GetCenterOfMassTransform to take to world space)
97
+ inline Vec3 GetLocalSpacePoint2() const { return mLocalSpacePosition2; }
98
+
99
+ // Local space hinge directions (transform direction by Body::GetCenterOfMassTransform to take to world space)
100
+ Vec3 GetLocalSpaceHingeAxis1() const { return mLocalSpaceHingeAxis1; }
101
+ Vec3 GetLocalSpaceHingeAxis2() const { return mLocalSpaceHingeAxis2; }
102
+
103
+ // Local space normal directions (transform direction by Body::GetCenterOfMassTransform to take to world space)
104
+ Vec3 GetLocalSpaceNormalAxis1() const { return mLocalSpaceNormalAxis1; }
105
+ Vec3 GetLocalSpaceNormalAxis2() const { return mLocalSpaceNormalAxis2; }
106
+
107
+ /// Get the current rotation angle from the rest position
108
+ float GetCurrentAngle() const;
109
+
110
+ // Friction control
111
+ void SetMaxFrictionTorque(float inFrictionTorque) { mMaxFrictionTorque = inFrictionTorque; }
112
+ float GetMaxFrictionTorque() const { return mMaxFrictionTorque; }
113
+
114
+ // Motor settings
115
+ MotorSettings & GetMotorSettings() { return mMotorSettings; }
116
+ const MotorSettings & GetMotorSettings() const { return mMotorSettings; }
117
+
118
+ // Motor controls
119
+ void SetMotorState(EMotorState inState) { JPH_ASSERT(inState == EMotorState::Off || mMotorSettings.IsValid()); mMotorState = inState; }
120
+ EMotorState GetMotorState() const { return mMotorState; }
121
+ void SetTargetAngularVelocity(float inAngularVelocity) { mTargetAngularVelocity = inAngularVelocity; } ///< rad/s
122
+ float GetTargetAngularVelocity() const { return mTargetAngularVelocity; }
123
+ void SetTargetAngle(float inAngle) { mTargetAngle = mHasLimits? Clamp(inAngle, mLimitsMin, mLimitsMax) : inAngle; } ///< rad
124
+ float GetTargetAngle() const { return mTargetAngle; }
125
+
126
+ /// Set the target orientation in body space (R2 = R1 * inOrientation, where R1 and R2 are the world space rotations for body 1 and 2).
127
+ /// Calculates the local space target angle and calls SetTargetAngle. Motor state must be EMotorState::Position for this to have any effect.
128
+ /// May set the wrong angle if inOrientation contains large rotations around other axis than the hinge axis.
129
+ void SetTargetOrientationBS(QuatArg inOrientation);
130
+
131
+ /// Update the rotation limits of the hinge, value in radians (see HingeConstraintSettings)
132
+ void SetLimits(float inLimitsMin, float inLimitsMax);
133
+ float GetLimitsMin() const { return mLimitsMin; }
134
+ float GetLimitsMax() const { return mLimitsMax; }
135
+ bool HasLimits() const { return mHasLimits; }
136
+
137
+ /// Update the limits spring settings
138
+ const SpringSettings & GetLimitsSpringSettings() const { return mLimitsSpringSettings; }
139
+ SpringSettings & GetLimitsSpringSettings() { return mLimitsSpringSettings; }
140
+ void SetLimitsSpringSettings(const SpringSettings &inLimitsSpringSettings) { mLimitsSpringSettings = inLimitsSpringSettings; }
141
+
142
+ ///@name Get Lagrange multiplier from last physics update (the linear/angular impulse applied to satisfy the constraint)
143
+ inline Vec3 GetTotalLambdaPosition() const { return mPointConstraintPart.GetTotalLambda(); }
144
+ inline Vector<2> GetTotalLambdaRotation() const { return mRotationConstraintPart.GetTotalLambda(); }
145
+ inline float GetTotalLambdaRotationLimits() const { return mRotationLimitsConstraintPart.GetTotalLambda(); }
146
+ inline float GetTotalLambdaMotor() const { return mMotorConstraintPart.GetTotalLambda(); }
147
+
148
+ private:
149
+ // Internal helper function to calculate the values below
150
+ void CalculateA1AndTheta();
151
+ void CalculateRotationLimitsConstraintProperties(float inDeltaTime);
152
+ void CalculateMotorConstraintProperties(float inDeltaTime);
153
+ inline float GetSmallestAngleToLimit() const;
154
+ inline bool IsMinLimitClosest() const;
155
+
156
+ // CONFIGURATION PROPERTIES FOLLOW
157
+
158
+ // Local space constraint positions
159
+ Vec3 mLocalSpacePosition1;
160
+ Vec3 mLocalSpacePosition2;
161
+
162
+ // Local space hinge directions
163
+ Vec3 mLocalSpaceHingeAxis1;
164
+ Vec3 mLocalSpaceHingeAxis2;
165
+
166
+ // Local space normal direction (direction relative to which to draw constraint limits)
167
+ Vec3 mLocalSpaceNormalAxis1;
168
+ Vec3 mLocalSpaceNormalAxis2;
169
+
170
+ // Inverse of initial relative orientation between bodies (which defines hinge angle = 0)
171
+ Quat mInvInitialOrientation;
172
+
173
+ // Hinge limits
174
+ bool mHasLimits;
175
+ float mLimitsMin;
176
+ float mLimitsMax;
177
+
178
+ // Soft constraint limits
179
+ SpringSettings mLimitsSpringSettings;
180
+
181
+ // Friction
182
+ float mMaxFrictionTorque;
183
+
184
+ // Motor controls
185
+ MotorSettings mMotorSettings;
186
+ EMotorState mMotorState = EMotorState::Off;
187
+ float mTargetAngularVelocity = 0.0f;
188
+ float mTargetAngle = 0.0f;
189
+
190
+ // RUN TIME PROPERTIES FOLLOW
191
+
192
+ // Current rotation around the hinge axis
193
+ float mTheta = 0.0f;
194
+
195
+ // World space hinge axis for body 1
196
+ Vec3 mA1;
197
+
198
+ // The constraint parts
199
+ PointConstraintPart mPointConstraintPart;
200
+ HingeRotationConstraintPart mRotationConstraintPart;
201
+ AngleConstraintPart mRotationLimitsConstraintPart;
202
+ AngleConstraintPart mMotorConstraintPart;
203
+ };
204
+
205
+ JPH_NAMESPACE_END
@@ -0,0 +1,43 @@
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/MotorSettings.h>
8
+ #include <Jolt/ObjectStream/TypeDeclarations.h>
9
+ #include <Jolt/Core/StreamIn.h>
10
+ #include <Jolt/Core/StreamOut.h>
11
+
12
+ JPH_NAMESPACE_BEGIN
13
+
14
+ JPH_IMPLEMENT_SERIALIZABLE_NON_VIRTUAL(MotorSettings)
15
+ {
16
+ JPH_ADD_ENUM_ATTRIBUTE_WITH_ALIAS(MotorSettings, mSpringSettings.mMode, "mSpringMode")
17
+ JPH_ADD_ATTRIBUTE_WITH_ALIAS(MotorSettings, mSpringSettings.mFrequency, "mFrequency") // Renaming attributes to stay compatible with old versions of the library
18
+ JPH_ADD_ATTRIBUTE_WITH_ALIAS(MotorSettings, mSpringSettings.mDamping, "mDamping")
19
+ JPH_ADD_ATTRIBUTE(MotorSettings, mMinForceLimit)
20
+ JPH_ADD_ATTRIBUTE(MotorSettings, mMaxForceLimit)
21
+ JPH_ADD_ATTRIBUTE(MotorSettings, mMinTorqueLimit)
22
+ JPH_ADD_ATTRIBUTE(MotorSettings, mMaxTorqueLimit)
23
+ }
24
+
25
+ void MotorSettings::SaveBinaryState(StreamOut &inStream) const
26
+ {
27
+ mSpringSettings.SaveBinaryState(inStream);
28
+ inStream.Write(mMinForceLimit);
29
+ inStream.Write(mMaxForceLimit);
30
+ inStream.Write(mMinTorqueLimit);
31
+ inStream.Write(mMaxTorqueLimit);
32
+ }
33
+
34
+ void MotorSettings::RestoreBinaryState(StreamIn &inStream)
35
+ {
36
+ mSpringSettings.RestoreBinaryState(inStream);
37
+ inStream.Read(mMinForceLimit);
38
+ inStream.Read(mMaxForceLimit);
39
+ inStream.Read(mMinTorqueLimit);
40
+ inStream.Read(mMaxTorqueLimit);
41
+ }
42
+
43
+ JPH_NAMESPACE_END