@bloomengine/engine 0.4.0 → 0.4.2

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 (527) hide show
  1. package/native/tvos/metal-patched/Cargo.toml +178 -0
  2. package/native/tvos/metal-patched/LICENSE-APACHE +201 -0
  3. package/native/tvos/metal-patched/LICENSE-MIT +25 -0
  4. package/native/tvos/metal-patched/src/acceleration_structure.rs +667 -0
  5. package/native/tvos/metal-patched/src/acceleration_structure_pass.rs +108 -0
  6. package/native/tvos/metal-patched/src/argument.rs +366 -0
  7. package/native/tvos/metal-patched/src/blitpass.rs +102 -0
  8. package/native/tvos/metal-patched/src/buffer.rs +71 -0
  9. package/native/tvos/metal-patched/src/capturedescriptor.rs +76 -0
  10. package/native/tvos/metal-patched/src/capturemanager.rs +113 -0
  11. package/native/tvos/metal-patched/src/commandbuffer.rs +192 -0
  12. package/native/tvos/metal-patched/src/commandqueue.rs +44 -0
  13. package/native/tvos/metal-patched/src/computepass.rs +107 -0
  14. package/native/tvos/metal-patched/src/constants.rs +152 -0
  15. package/native/tvos/metal-patched/src/counters.rs +119 -0
  16. package/native/tvos/metal-patched/src/depthstencil.rs +190 -0
  17. package/native/tvos/metal-patched/src/device.rs +2134 -0
  18. package/native/tvos/metal-patched/src/drawable.rs +39 -0
  19. package/native/tvos/metal-patched/src/encoder.rs +2041 -0
  20. package/native/tvos/metal-patched/src/heap.rs +281 -0
  21. package/native/tvos/metal-patched/src/indirect_encoder.rs +344 -0
  22. package/native/tvos/metal-patched/src/lib.rs +657 -0
  23. package/native/tvos/metal-patched/src/library.rs +902 -0
  24. package/native/tvos/metal-patched/src/mps.rs +575 -0
  25. package/native/tvos/metal-patched/src/pipeline/compute.rs +475 -0
  26. package/native/tvos/metal-patched/src/pipeline/mod.rs +71 -0
  27. package/native/tvos/metal-patched/src/pipeline/render.rs +762 -0
  28. package/native/tvos/metal-patched/src/renderpass.rs +443 -0
  29. package/native/tvos/metal-patched/src/resource.rs +182 -0
  30. package/native/tvos/metal-patched/src/sampler.rs +165 -0
  31. package/native/tvos/metal-patched/src/sync.rs +178 -0
  32. package/native/tvos/metal-patched/src/texture.rs +352 -0
  33. package/native/tvos/metal-patched/src/types.rs +90 -0
  34. package/native/tvos/metal-patched/src/vertexdescriptor.rs +250 -0
  35. package/package.json +8 -11
  36. package/native/third_party/JoltPhysics/Build/Android/PerformanceTest/build.gradle +0 -51
  37. package/native/third_party/JoltPhysics/Build/Android/PerformanceTest/src/main/AndroidManifest.xml +0 -20
  38. package/native/third_party/JoltPhysics/Build/Android/PerformanceTest/src/main/cpp/CMakeLists.txt +0 -20
  39. package/native/third_party/JoltPhysics/Build/Android/UnitTests/build.gradle +0 -51
  40. package/native/third_party/JoltPhysics/Build/Android/UnitTests/src/main/AndroidManifest.xml +0 -20
  41. package/native/third_party/JoltPhysics/Build/Android/UnitTests/src/main/cpp/CMakeLists.txt +0 -20
  42. package/native/third_party/JoltPhysics/Build/Android/build.gradle +0 -17
  43. package/native/third_party/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.jar +0 -0
  44. package/native/third_party/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.properties +0 -5
  45. package/native/third_party/JoltPhysics/Build/Android/gradle.properties +0 -21
  46. package/native/third_party/JoltPhysics/Build/Android/gradlew +0 -185
  47. package/native/third_party/JoltPhysics/Build/Android/gradlew.bat +0 -89
  48. package/native/third_party/JoltPhysics/Build/Android/settings.gradle +0 -10
  49. package/native/third_party/JoltPhysics/Build/CMakeLists.txt +0 -449
  50. package/native/third_party/JoltPhysics/Build/README.md +0 -250
  51. package/native/third_party/JoltPhysics/Build/cmake_linux_clang_gcc.sh +0 -28
  52. package/native/third_party/JoltPhysics/Build/cmake_linux_emscripten.sh +0 -19
  53. package/native/third_party/JoltPhysics/Build/cmake_linux_mingw.sh +0 -19
  54. package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl.bat +0 -3
  55. package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_32bit.bat +0 -3
  56. package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_arm.bat +0 -3
  57. package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_arm_32bit.bat +0 -4
  58. package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_cross_platform_deterministic.bat +0 -3
  59. package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_double.bat +0 -3
  60. package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_no_object_stream.bat +0 -3
  61. package/native/third_party/JoltPhysics/Build/cmake_vs2022_clang.bat +0 -10
  62. package/native/third_party/JoltPhysics/Build/cmake_vs2022_clang_cross_platform_deterministic.bat +0 -10
  63. package/native/third_party/JoltPhysics/Build/cmake_vs2022_clang_double.bat +0 -10
  64. package/native/third_party/JoltPhysics/Build/cmake_vs2022_uwp.bat +0 -5
  65. package/native/third_party/JoltPhysics/Build/cmake_vs2022_uwp_arm.bat +0 -5
  66. package/native/third_party/JoltPhysics/Build/cmake_vs2026_cl.bat +0 -3
  67. package/native/third_party/JoltPhysics/Build/cmake_vs2026_cl_cross_platform_deterministic.bat +0 -3
  68. package/native/third_party/JoltPhysics/Build/cmake_vs2026_cl_double.bat +0 -3
  69. package/native/third_party/JoltPhysics/Build/cmake_vs2026_clang.bat +0 -10
  70. package/native/third_party/JoltPhysics/Build/cmake_vs2026_clang_cross_platform_deterministic.bat +0 -10
  71. package/native/third_party/JoltPhysics/Build/cmake_vs2026_clang_double.bat +0 -10
  72. package/native/third_party/JoltPhysics/Build/cmake_windows_mingw.sh +0 -19
  73. package/native/third_party/JoltPhysics/Build/cmake_xcode_ios.sh +0 -4
  74. package/native/third_party/JoltPhysics/Build/cmake_xcode_macos.sh +0 -4
  75. package/native/third_party/JoltPhysics/Build/iOS/JoltViewerInfo.plist +0 -34
  76. package/native/third_party/JoltPhysics/Build/iOS/SamplesInfo.plist +0 -34
  77. package/native/third_party/JoltPhysics/Build/iOS/UnitTestsInfo.plist +0 -34
  78. package/native/third_party/JoltPhysics/Build/macOS/icon.icns +0 -0
  79. package/native/third_party/JoltPhysics/Build/macos_install_vulkan_sdk.sh +0 -13
  80. package/native/third_party/JoltPhysics/Build/ubuntu24_install_vulkan_sdk.sh +0 -4
  81. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp +0 -242
  82. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h +0 -121
  83. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h +0 -296
  84. package/native/third_party/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h +0 -323
  85. package/native/third_party/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h +0 -555
  86. package/native/third_party/JoltPhysics/Jolt/ConfigurationString.h +0 -112
  87. package/native/third_party/JoltPhysics/Jolt/Core/ARMNeon.h +0 -94
  88. package/native/third_party/JoltPhysics/Jolt/Core/Array.h +0 -713
  89. package/native/third_party/JoltPhysics/Jolt/Core/Atomics.h +0 -44
  90. package/native/third_party/JoltPhysics/Jolt/Core/BinaryHeap.h +0 -96
  91. package/native/third_party/JoltPhysics/Jolt/Core/ByteBuffer.h +0 -74
  92. package/native/third_party/JoltPhysics/Jolt/Core/Color.cpp +0 -38
  93. package/native/third_party/JoltPhysics/Jolt/Core/Color.h +0 -98
  94. package/native/third_party/JoltPhysics/Jolt/Core/Core.h +0 -652
  95. package/native/third_party/JoltPhysics/Jolt/Core/FPControlWord.h +0 -143
  96. package/native/third_party/JoltPhysics/Jolt/Core/FPException.h +0 -96
  97. package/native/third_party/JoltPhysics/Jolt/Core/FPFlushDenormals.h +0 -43
  98. package/native/third_party/JoltPhysics/Jolt/Core/Factory.cpp +0 -92
  99. package/native/third_party/JoltPhysics/Jolt/Core/Factory.h +0 -54
  100. package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.h +0 -122
  101. package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.inl +0 -215
  102. package/native/third_party/JoltPhysics/Jolt/Core/HashCombine.h +0 -234
  103. package/native/third_party/JoltPhysics/Jolt/Core/HashTable.h +0 -876
  104. package/native/third_party/JoltPhysics/Jolt/Core/InsertionSort.h +0 -58
  105. package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.cpp +0 -27
  106. package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.h +0 -38
  107. package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.h +0 -311
  108. package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.inl +0 -56
  109. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.cpp +0 -65
  110. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.h +0 -62
  111. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.cpp +0 -364
  112. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.h +0 -101
  113. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.cpp +0 -230
  114. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.h +0 -85
  115. package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.cpp +0 -51
  116. package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.h +0 -67
  117. package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.h +0 -182
  118. package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.inl +0 -351
  119. package/native/third_party/JoltPhysics/Jolt/Core/Memory.cpp +0 -85
  120. package/native/third_party/JoltPhysics/Jolt/Core/Memory.h +0 -85
  121. package/native/third_party/JoltPhysics/Jolt/Core/Mutex.h +0 -223
  122. package/native/third_party/JoltPhysics/Jolt/Core/MutexArray.h +0 -98
  123. package/native/third_party/JoltPhysics/Jolt/Core/NonCopyable.h +0 -18
  124. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.cpp +0 -677
  125. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.h +0 -301
  126. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.inl +0 -90
  127. package/native/third_party/JoltPhysics/Jolt/Core/QuickSort.h +0 -137
  128. package/native/third_party/JoltPhysics/Jolt/Core/RTTI.cpp +0 -149
  129. package/native/third_party/JoltPhysics/Jolt/Core/RTTI.h +0 -436
  130. package/native/third_party/JoltPhysics/Jolt/Core/Reference.h +0 -244
  131. package/native/third_party/JoltPhysics/Jolt/Core/Result.h +0 -174
  132. package/native/third_party/JoltPhysics/Jolt/Core/STLAlignedAllocator.h +0 -72
  133. package/native/third_party/JoltPhysics/Jolt/Core/STLAllocator.h +0 -127
  134. package/native/third_party/JoltPhysics/Jolt/Core/STLLocalAllocator.h +0 -170
  135. package/native/third_party/JoltPhysics/Jolt/Core/STLTempAllocator.h +0 -80
  136. package/native/third_party/JoltPhysics/Jolt/Core/ScopeExit.h +0 -49
  137. package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.cpp +0 -135
  138. package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.h +0 -68
  139. package/native/third_party/JoltPhysics/Jolt/Core/StaticArray.h +0 -329
  140. package/native/third_party/JoltPhysics/Jolt/Core/StreamIn.h +0 -120
  141. package/native/third_party/JoltPhysics/Jolt/Core/StreamOut.h +0 -97
  142. package/native/third_party/JoltPhysics/Jolt/Core/StreamUtils.h +0 -168
  143. package/native/third_party/JoltPhysics/Jolt/Core/StreamWrapper.h +0 -53
  144. package/native/third_party/JoltPhysics/Jolt/Core/StridedPtr.h +0 -63
  145. package/native/third_party/JoltPhysics/Jolt/Core/StringTools.cpp +0 -101
  146. package/native/third_party/JoltPhysics/Jolt/Core/StringTools.h +0 -38
  147. package/native/third_party/JoltPhysics/Jolt/Core/TempAllocator.h +0 -209
  148. package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.cpp +0 -37
  149. package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.h +0 -58
  150. package/native/third_party/JoltPhysics/Jolt/Core/UnorderedMap.h +0 -80
  151. package/native/third_party/JoltPhysics/Jolt/Core/UnorderedSet.h +0 -32
  152. package/native/third_party/JoltPhysics/Jolt/Geometry/AABox.h +0 -313
  153. package/native/third_party/JoltPhysics/Jolt/Geometry/AABox4.h +0 -224
  154. package/native/third_party/JoltPhysics/Jolt/Geometry/ClipPoly.h +0 -200
  155. package/native/third_party/JoltPhysics/Jolt/Geometry/ClosestPoint.h +0 -498
  156. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.cpp +0 -1467
  157. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.h +0 -276
  158. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.cpp +0 -335
  159. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.h +0 -105
  160. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexSupport.h +0 -188
  161. package/native/third_party/JoltPhysics/Jolt/Geometry/EPAConvexHullBuilder.h +0 -845
  162. package/native/third_party/JoltPhysics/Jolt/Geometry/EPAPenetrationDepth.h +0 -557
  163. package/native/third_party/JoltPhysics/Jolt/Geometry/Ellipse.h +0 -77
  164. package/native/third_party/JoltPhysics/Jolt/Geometry/GJKClosestPoint.h +0 -945
  165. package/native/third_party/JoltPhysics/Jolt/Geometry/IndexedTriangle.h +0 -130
  166. package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.cpp +0 -222
  167. package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.h +0 -19
  168. package/native/third_party/JoltPhysics/Jolt/Geometry/MortonCode.h +0 -40
  169. package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.cpp +0 -178
  170. package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.h +0 -39
  171. package/native/third_party/JoltPhysics/Jolt/Geometry/Plane.h +0 -104
  172. package/native/third_party/JoltPhysics/Jolt/Geometry/RayAABox.h +0 -241
  173. package/native/third_party/JoltPhysics/Jolt/Geometry/RayCapsule.h +0 -37
  174. package/native/third_party/JoltPhysics/Jolt/Geometry/RayCylinder.h +0 -101
  175. package/native/third_party/JoltPhysics/Jolt/Geometry/RaySphere.h +0 -96
  176. package/native/third_party/JoltPhysics/Jolt/Geometry/RayTriangle.h +0 -158
  177. package/native/third_party/JoltPhysics/Jolt/Geometry/Sphere.h +0 -72
  178. package/native/third_party/JoltPhysics/Jolt/Geometry/Triangle.h +0 -34
  179. package/native/third_party/JoltPhysics/Jolt/Jolt.cmake +0 -703
  180. package/native/third_party/JoltPhysics/Jolt/Jolt.h +0 -16
  181. package/native/third_party/JoltPhysics/Jolt/Jolt.natvis +0 -116
  182. package/native/third_party/JoltPhysics/Jolt/Math/BVec16.h +0 -99
  183. package/native/third_party/JoltPhysics/Jolt/Math/BVec16.inl +0 -177
  184. package/native/third_party/JoltPhysics/Jolt/Math/DMat44.h +0 -158
  185. package/native/third_party/JoltPhysics/Jolt/Math/DMat44.inl +0 -310
  186. package/native/third_party/JoltPhysics/Jolt/Math/DVec3.h +0 -291
  187. package/native/third_party/JoltPhysics/Jolt/Math/DVec3.inl +0 -941
  188. package/native/third_party/JoltPhysics/Jolt/Math/Double3.h +0 -48
  189. package/native/third_party/JoltPhysics/Jolt/Math/DynMatrix.h +0 -31
  190. package/native/third_party/JoltPhysics/Jolt/Math/EigenValueSymmetric.h +0 -177
  191. package/native/third_party/JoltPhysics/Jolt/Math/FindRoot.h +0 -42
  192. package/native/third_party/JoltPhysics/Jolt/Math/Float2.h +0 -36
  193. package/native/third_party/JoltPhysics/Jolt/Math/Float3.h +0 -50
  194. package/native/third_party/JoltPhysics/Jolt/Math/Float4.h +0 -44
  195. package/native/third_party/JoltPhysics/Jolt/Math/GaussianElimination.h +0 -102
  196. package/native/third_party/JoltPhysics/Jolt/Math/HalfFloat.h +0 -208
  197. package/native/third_party/JoltPhysics/Jolt/Math/Mat44.h +0 -243
  198. package/native/third_party/JoltPhysics/Jolt/Math/Mat44.inl +0 -952
  199. package/native/third_party/JoltPhysics/Jolt/Math/Math.h +0 -208
  200. package/native/third_party/JoltPhysics/Jolt/Math/MathTypes.h +0 -32
  201. package/native/third_party/JoltPhysics/Jolt/Math/Matrix.h +0 -259
  202. package/native/third_party/JoltPhysics/Jolt/Math/Quat.h +0 -268
  203. package/native/third_party/JoltPhysics/Jolt/Math/Quat.inl +0 -406
  204. package/native/third_party/JoltPhysics/Jolt/Math/Real.h +0 -44
  205. package/native/third_party/JoltPhysics/Jolt/Math/Swizzle.h +0 -19
  206. package/native/third_party/JoltPhysics/Jolt/Math/Trigonometry.h +0 -79
  207. package/native/third_party/JoltPhysics/Jolt/Math/UVec4.h +0 -232
  208. package/native/third_party/JoltPhysics/Jolt/Math/UVec4.inl +0 -636
  209. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.cpp +0 -71
  210. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.h +0 -308
  211. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.inl +0 -942
  212. package/native/third_party/JoltPhysics/Jolt/Math/Vec4.h +0 -320
  213. package/native/third_party/JoltPhysics/Jolt/Math/Vec4.inl +0 -1152
  214. package/native/third_party/JoltPhysics/Jolt/Math/Vector.h +0 -211
  215. package/native/third_party/JoltPhysics/Jolt/ObjectStream/GetPrimitiveTypeOfType.h +0 -54
  216. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.cpp +0 -38
  217. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.h +0 -337
  218. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.cpp +0 -252
  219. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.h +0 -57
  220. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.cpp +0 -165
  221. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.h +0 -57
  222. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.cpp +0 -635
  223. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.h +0 -148
  224. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.cpp +0 -166
  225. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.h +0 -101
  226. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.cpp +0 -418
  227. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.h +0 -55
  228. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.cpp +0 -255
  229. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.h +0 -62
  230. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTypes.h +0 -26
  231. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttribute.h +0 -111
  232. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeEnum.h +0 -67
  233. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeTyped.h +0 -60
  234. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.cpp +0 -15
  235. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.h +0 -170
  236. package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.cpp +0 -70
  237. package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.h +0 -45
  238. package/native/third_party/JoltPhysics/Jolt/Physics/Body/AllowedDOFs.h +0 -68
  239. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.cpp +0 -426
  240. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.h +0 -452
  241. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.inl +0 -197
  242. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyAccess.h +0 -68
  243. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyActivationListener.h +0 -28
  244. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp +0 -234
  245. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.h +0 -124
  246. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyFilter.h +0 -130
  247. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyID.h +0 -101
  248. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.cpp +0 -1099
  249. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.h +0 -324
  250. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLock.h +0 -111
  251. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockInterface.h +0 -134
  252. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockMulti.h +0 -120
  253. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.cpp +0 -1220
  254. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.h +0 -403
  255. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyPair.h +0 -36
  256. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyType.h +0 -19
  257. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.cpp +0 -185
  258. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.h +0 -58
  259. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.cpp +0 -92
  260. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.h +0 -308
  261. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.inl +0 -178
  262. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionQuality.h +0 -31
  263. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionType.h +0 -17
  264. package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.cpp +0 -354
  265. package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.h +0 -159
  266. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.cpp +0 -59
  267. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.h +0 -157
  268. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterID.h +0 -98
  269. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.cpp +0 -1933
  270. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.h +0 -752
  271. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/AABoxCast.h +0 -20
  272. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdgeMode.h +0 -17
  273. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdges.h +0 -114
  274. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BackFaceMode.h +0 -16
  275. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp +0 -16
  276. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.h +0 -109
  277. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp +0 -313
  278. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h +0 -38
  279. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h +0 -148
  280. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h +0 -92
  281. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h +0 -64
  282. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp +0 -629
  283. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h +0 -108
  284. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h +0 -56
  285. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h +0 -35
  286. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h +0 -66
  287. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.cpp +0 -1768
  288. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.h +0 -389
  289. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.cpp +0 -107
  290. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.h +0 -46
  291. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastResult.h +0 -37
  292. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.cpp +0 -223
  293. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.h +0 -49
  294. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollectFacesMode.h +0 -16
  295. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.cpp +0 -155
  296. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.h +0 -56
  297. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollidePointResult.h +0 -25
  298. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShape.h +0 -106
  299. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShapeVsShapePerLeaf.h +0 -94
  300. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVertexIterator.h +0 -110
  301. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h +0 -102
  302. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.cpp +0 -121
  303. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.h +0 -50
  304. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollector.h +0 -109
  305. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollectorImpl.h +0 -219
  306. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.cpp +0 -107
  307. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.h +0 -97
  308. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.cpp +0 -35
  309. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.h +0 -97
  310. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ContactListener.h +0 -143
  311. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.cpp +0 -213
  312. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.h +0 -48
  313. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.cpp +0 -32
  314. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.h +0 -46
  315. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.cpp +0 -38
  316. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.h +0 -130
  317. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/InternalEdgeRemovingCollector.h +0 -279
  318. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp +0 -271
  319. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h +0 -44
  320. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.cpp +0 -448
  321. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.h +0 -77
  322. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.cpp +0 -62
  323. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.h +0 -110
  324. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayer.h +0 -111
  325. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterMask.h +0 -52
  326. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterTable.h +0 -78
  327. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.cpp +0 -35
  328. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.h +0 -57
  329. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.cpp +0 -38
  330. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.h +0 -37
  331. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/RayCast.h +0 -87
  332. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.cpp +0 -318
  333. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.h +0 -115
  334. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.cpp +0 -438
  335. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.h +0 -129
  336. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.cpp +0 -433
  337. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.h +0 -354
  338. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h +0 -461
  339. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.cpp +0 -1311
  340. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.h +0 -202
  341. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.cpp +0 -566
  342. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.h +0 -150
  343. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.cpp +0 -418
  344. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.h +0 -126
  345. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.cpp +0 -87
  346. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.h +0 -80
  347. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.cpp +0 -64
  348. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.h +0 -75
  349. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/GetTrianglesContext.h +0 -248
  350. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp +0 -2754
  351. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.h +0 -380
  352. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.cpp +0 -1305
  353. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.h +0 -228
  354. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp +0 -596
  355. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.h +0 -176
  356. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp +0 -217
  357. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h +0 -140
  358. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.cpp +0 -541
  359. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.h +0 -147
  360. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h +0 -319
  361. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp +0 -333
  362. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h +0 -161
  363. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaleHelpers.h +0 -83
  364. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.cpp +0 -238
  365. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.h +0 -145
  366. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.cpp +0 -325
  367. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.h +0 -466
  368. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.cpp +0 -347
  369. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.h +0 -125
  370. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp +0 -674
  371. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.h +0 -139
  372. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeID.h +0 -138
  373. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeIDPair.h +0 -65
  374. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp +0 -453
  375. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.gliffy +0 -1
  376. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h +0 -135
  377. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp +0 -691
  378. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.h +0 -132
  379. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.cpp +0 -430
  380. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.h +0 -143
  381. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeCast.h +0 -173
  382. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeFilter.h +0 -73
  383. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilter.h +0 -40
  384. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilterWrapper.h +0 -58
  385. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SortReverseAndStore.h +0 -48
  386. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.cpp +0 -180
  387. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.h +0 -194
  388. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/CalculateSolverSteps.h +0 -70
  389. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.cpp +0 -246
  390. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.h +0 -133
  391. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.cpp +0 -73
  392. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.h +0 -243
  393. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.cpp +0 -289
  394. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.h +0 -100
  395. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h +0 -257
  396. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h +0 -682
  397. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h +0 -276
  398. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h +0 -195
  399. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h +0 -222
  400. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h +0 -246
  401. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h +0 -239
  402. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h +0 -196
  403. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h +0 -283
  404. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h +0 -246
  405. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SpringPart.h +0 -169
  406. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h +0 -597
  407. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.cpp +0 -1804
  408. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.h +0 -524
  409. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.cpp +0 -266
  410. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.h +0 -120
  411. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.cpp +0 -215
  412. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.h +0 -96
  413. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.cpp +0 -188
  414. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.h +0 -116
  415. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.cpp +0 -443
  416. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.h +0 -205
  417. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.cpp +0 -43
  418. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.h +0 -66
  419. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.cpp +0 -458
  420. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.h +0 -191
  421. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.cpp +0 -85
  422. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.h +0 -76
  423. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.cpp +0 -308
  424. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.h +0 -54
  425. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.cpp +0 -157
  426. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.h +0 -94
  427. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.cpp +0 -253
  428. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.h +0 -137
  429. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.cpp +0 -189
  430. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.h +0 -118
  431. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.cpp +0 -900
  432. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.h +0 -289
  433. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.cpp +0 -501
  434. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.h +0 -198
  435. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.cpp +0 -35
  436. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.h +0 -70
  437. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.cpp +0 -524
  438. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.h +0 -197
  439. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.cpp +0 -56
  440. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.h +0 -65
  441. package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.cpp +0 -17
  442. package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.h +0 -159
  443. package/native/third_party/JoltPhysics/Jolt/Physics/EActivation.h +0 -16
  444. package/native/third_party/JoltPhysics/Jolt/Physics/EPhysicsUpdateError.h +0 -37
  445. package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.cpp +0 -492
  446. package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.h +0 -144
  447. package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.cpp +0 -582
  448. package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.h +0 -187
  449. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsLock.h +0 -169
  450. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.cpp +0 -261
  451. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.h +0 -104
  452. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSettings.h +0 -125
  453. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsStepListener.h +0 -37
  454. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.cpp +0 -2915
  455. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.h +0 -391
  456. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.cpp +0 -25
  457. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.h +0 -176
  458. package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.cpp +0 -744
  459. package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.h +0 -245
  460. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyContactListener.h +0 -55
  461. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp +0 -128
  462. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.h +0 -75
  463. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyManifold.h +0 -74
  464. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp +0 -1501
  465. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.h +0 -333
  466. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.cpp +0 -354
  467. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.h +0 -73
  468. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp +0 -1487
  469. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.h +0 -390
  470. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyUpdateContext.h +0 -63
  471. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyVertex.h +0 -36
  472. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorder.h +0 -136
  473. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.cpp +0 -90
  474. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.h +0 -50
  475. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.cpp +0 -306
  476. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.h +0 -119
  477. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.cpp +0 -547
  478. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.h +0 -169
  479. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp +0 -33
  480. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.h +0 -33
  481. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.cpp +0 -376
  482. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.h +0 -146
  483. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.cpp +0 -703
  484. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.h +0 -252
  485. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.cpp +0 -17
  486. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.h +0 -87
  487. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.cpp +0 -81
  488. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.h +0 -39
  489. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.cpp +0 -122
  490. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.h +0 -93
  491. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.cpp +0 -52
  492. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.h +0 -56
  493. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.cpp +0 -159
  494. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.h +0 -87
  495. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.cpp +0 -93
  496. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.h +0 -148
  497. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.cpp +0 -866
  498. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.h +0 -205
  499. package/native/third_party/JoltPhysics/Jolt/RegisterTypes.cpp +0 -204
  500. package/native/third_party/JoltPhysics/Jolt/RegisterTypes.h +0 -29
  501. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.cpp +0 -1107
  502. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.h +0 -383
  503. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.cpp +0 -168
  504. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.h +0 -48
  505. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.cpp +0 -158
  506. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.h +0 -130
  507. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.cpp +0 -80
  508. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.h +0 -88
  509. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.cpp +0 -165
  510. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.h +0 -91
  511. package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.cpp +0 -82
  512. package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.h +0 -72
  513. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.cpp +0 -237
  514. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.h +0 -145
  515. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.cpp +0 -87
  516. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.h +0 -82
  517. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.cpp +0 -73
  518. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.h +0 -84
  519. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp +0 -139
  520. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.h +0 -52
  521. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.cpp +0 -43
  522. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.h +0 -28
  523. package/native/third_party/JoltPhysics/LICENSE +0 -7
  524. package/native/third_party/JoltPhysics/README.md +0 -173
  525. package/native/third_party/bloom_jolt/CMakeLists.txt +0 -87
  526. package/native/third_party/bloom_jolt/include/bloom_jolt.h +0 -519
  527. package/native/third_party/bloom_jolt/src/bloom_jolt.cpp +0 -1780
@@ -1,900 +0,0 @@
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/SixDOFConstraint.h>
8
- #include <Jolt/Physics/Body/Body.h>
9
- #include <Jolt/Geometry/Ellipse.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(SixDOFConstraintSettings)
20
- {
21
- JPH_ADD_BASE_CLASS(SixDOFConstraintSettings, TwoBodyConstraintSettings)
22
-
23
- JPH_ADD_ENUM_ATTRIBUTE(SixDOFConstraintSettings, mSpace)
24
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mPosition1)
25
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mAxisX1)
26
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mAxisY1)
27
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mPosition2)
28
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mAxisX2)
29
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mAxisY2)
30
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mMaxFriction)
31
- JPH_ADD_ENUM_ATTRIBUTE(SixDOFConstraintSettings, mSwingType)
32
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mLimitMin)
33
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mLimitMax)
34
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mLimitsSpringSettings)
35
- JPH_ADD_ATTRIBUTE(SixDOFConstraintSettings, mMotorSettings)
36
- }
37
-
38
- void SixDOFConstraintSettings::SaveBinaryState(StreamOut &inStream) const
39
- {
40
- ConstraintSettings::SaveBinaryState(inStream);
41
-
42
- inStream.Write(mSpace);
43
- inStream.Write(mPosition1);
44
- inStream.Write(mAxisX1);
45
- inStream.Write(mAxisY1);
46
- inStream.Write(mPosition2);
47
- inStream.Write(mAxisX2);
48
- inStream.Write(mAxisY2);
49
- inStream.Write(mMaxFriction);
50
- inStream.Write(mSwingType);
51
- inStream.Write(mLimitMin);
52
- inStream.Write(mLimitMax);
53
- for (const SpringSettings &s : mLimitsSpringSettings)
54
- s.SaveBinaryState(inStream);
55
- for (const MotorSettings &m : mMotorSettings)
56
- m.SaveBinaryState(inStream);
57
- }
58
-
59
- void SixDOFConstraintSettings::RestoreBinaryState(StreamIn &inStream)
60
- {
61
- ConstraintSettings::RestoreBinaryState(inStream);
62
-
63
- inStream.Read(mSpace);
64
- inStream.Read(mPosition1);
65
- inStream.Read(mAxisX1);
66
- inStream.Read(mAxisY1);
67
- inStream.Read(mPosition2);
68
- inStream.Read(mAxisX2);
69
- inStream.Read(mAxisY2);
70
- inStream.Read(mMaxFriction);
71
- inStream.Read(mSwingType);
72
- inStream.Read(mLimitMin);
73
- inStream.Read(mLimitMax);
74
- for (SpringSettings &s : mLimitsSpringSettings)
75
- s.RestoreBinaryState(inStream);
76
- for (MotorSettings &m : mMotorSettings)
77
- m.RestoreBinaryState(inStream);
78
- }
79
-
80
- TwoBodyConstraint *SixDOFConstraintSettings::Create(Body &inBody1, Body &inBody2) const
81
- {
82
- return new SixDOFConstraint(inBody1, inBody2, *this);
83
- }
84
-
85
- void SixDOFConstraint::UpdateTranslationLimits()
86
- {
87
- // Set to zero if the limits are inversed
88
- for (int i = EAxis::TranslationX; i <= EAxis::TranslationZ; ++i)
89
- if (mLimitMin[i] > mLimitMax[i])
90
- mLimitMin[i] = mLimitMax[i] = 0.0f;
91
- }
92
-
93
- void SixDOFConstraint::UpdateRotationLimits()
94
- {
95
- if (mSwingTwistConstraintPart.GetSwingType() == ESwingType::Cone)
96
- {
97
- // Cone swing upper limit needs to be positive
98
- mLimitMax[EAxis::RotationY] = max(0.0f, mLimitMax[EAxis::RotationY]);
99
- mLimitMax[EAxis::RotationZ] = max(0.0f, mLimitMax[EAxis::RotationZ]);
100
-
101
- // Cone swing limits only support symmetric ranges
102
- mLimitMin[EAxis::RotationY] = -mLimitMax[EAxis::RotationY];
103
- mLimitMin[EAxis::RotationZ] = -mLimitMax[EAxis::RotationZ];
104
- }
105
-
106
- for (int i = EAxis::RotationX; i <= EAxis::RotationZ; ++i)
107
- {
108
- // Clamp to [-PI, PI] range
109
- mLimitMin[i] = Clamp(mLimitMin[i], -JPH_PI, JPH_PI);
110
- mLimitMax[i] = Clamp(mLimitMax[i], -JPH_PI, JPH_PI);
111
-
112
- // Set to zero if the limits are inversed
113
- if (mLimitMin[i] > mLimitMax[i])
114
- mLimitMin[i] = mLimitMax[i] = 0.0f;
115
- }
116
-
117
- // Pass limits on to constraint part
118
- mSwingTwistConstraintPart.SetLimits(mLimitMin[EAxis::RotationX], mLimitMax[EAxis::RotationX], mLimitMin[EAxis::RotationY], mLimitMax[EAxis::RotationY], mLimitMin[EAxis::RotationZ], mLimitMax[EAxis::RotationZ]);
119
- }
120
-
121
- void SixDOFConstraint::UpdateFixedFreeAxis()
122
- {
123
- uint8 old_free_axis = mFreeAxis;
124
- uint8 old_fixed_axis = mFixedAxis;
125
-
126
- // Cache which axis are fixed and which ones are free
127
- mFreeAxis = 0;
128
- mFixedAxis = 0;
129
- for (int a = 0; a < EAxis::Num; ++a)
130
- {
131
- float limit = a >= EAxis::RotationX? JPH_PI : FLT_MAX;
132
-
133
- if (mLimitMin[a] >= mLimitMax[a])
134
- mFixedAxis |= 1 << a;
135
- else if (mLimitMin[a] <= -limit && mLimitMax[a] >= limit)
136
- mFreeAxis |= 1 << a;
137
- }
138
-
139
- // On change we deactivate all constraints to reset warm starting
140
- if (old_free_axis != mFreeAxis || old_fixed_axis != mFixedAxis)
141
- {
142
- for (AxisConstraintPart &c : mTranslationConstraintPart)
143
- c.Deactivate();
144
- mPointConstraintPart.Deactivate();
145
- mSwingTwistConstraintPart.Deactivate();
146
- mRotationConstraintPart.Deactivate();
147
- for (AxisConstraintPart &c : mMotorTranslationConstraintPart)
148
- c.Deactivate();
149
- for (AngleConstraintPart &c : mMotorRotationConstraintPart)
150
- c.Deactivate();
151
- }
152
- }
153
-
154
- SixDOFConstraint::SixDOFConstraint(Body &inBody1, Body &inBody2, const SixDOFConstraintSettings &inSettings) :
155
- TwoBodyConstraint(inBody1, inBody2, inSettings)
156
- {
157
- // Override swing type
158
- mSwingTwistConstraintPart.SetSwingType(inSettings.mSwingType);
159
-
160
- // Calculate rotation needed to go from constraint space to body1 local space
161
- Vec3 axis_z1 = inSettings.mAxisX1.Cross(inSettings.mAxisY1);
162
- Mat44 c_to_b1(Vec4(inSettings.mAxisX1, 0), Vec4(inSettings.mAxisY1, 0), Vec4(axis_z1, 0), Vec4(0, 0, 0, 1));
163
- mConstraintToBody1 = c_to_b1.GetQuaternion();
164
-
165
- // Calculate rotation needed to go from constraint space to body2 local space
166
- Vec3 axis_z2 = inSettings.mAxisX2.Cross(inSettings.mAxisY2);
167
- Mat44 c_to_b2(Vec4(inSettings.mAxisX2, 0), Vec4(inSettings.mAxisY2, 0), Vec4(axis_z2, 0), Vec4(0, 0, 0, 1));
168
- mConstraintToBody2 = c_to_b2.GetQuaternion();
169
-
170
- if (inSettings.mSpace == EConstraintSpace::WorldSpace)
171
- {
172
- // If all properties were specified in world space, take them to local space now
173
- mLocalSpacePosition1 = Vec3(inBody1.GetInverseCenterOfMassTransform() * inSettings.mPosition1);
174
- mConstraintToBody1 = inBody1.GetRotation().Conjugated() * mConstraintToBody1;
175
-
176
- mLocalSpacePosition2 = Vec3(inBody2.GetInverseCenterOfMassTransform() * inSettings.mPosition2);
177
- mConstraintToBody2 = inBody2.GetRotation().Conjugated() * mConstraintToBody2;
178
- }
179
- else
180
- {
181
- mLocalSpacePosition1 = Vec3(inSettings.mPosition1);
182
- mLocalSpacePosition2 = Vec3(inSettings.mPosition2);
183
- }
184
-
185
- // Copy translation and rotation limits
186
- memcpy(mLimitMin, inSettings.mLimitMin, sizeof(mLimitMin));
187
- memcpy(mLimitMax, inSettings.mLimitMax, sizeof(mLimitMax));
188
- memcpy(mLimitsSpringSettings, inSettings.mLimitsSpringSettings, sizeof(mLimitsSpringSettings));
189
- UpdateTranslationLimits();
190
- UpdateRotationLimits();
191
- UpdateFixedFreeAxis();
192
- CacheHasSpringLimits();
193
-
194
- // Store friction settings
195
- memcpy(mMaxFriction, inSettings.mMaxFriction, sizeof(mMaxFriction));
196
-
197
- // Store motor settings
198
- for (int i = 0; i < EAxis::Num; ++i)
199
- mMotorSettings[i] = inSettings.mMotorSettings[i];
200
-
201
- // Cache if motors are active (motors are off initially, but we may have friction)
202
- CacheTranslationMotorActive();
203
- CacheRotationMotorActive();
204
- }
205
-
206
- void SixDOFConstraint::NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inDeltaCOM)
207
- {
208
- if (mBody1->GetID() == inBodyID)
209
- mLocalSpacePosition1 -= inDeltaCOM;
210
- else if (mBody2->GetID() == inBodyID)
211
- mLocalSpacePosition2 -= inDeltaCOM;
212
- }
213
-
214
- void SixDOFConstraint::SetTranslationLimits(Vec3Arg inLimitMin, Vec3Arg inLimitMax)
215
- {
216
- mLimitMin[EAxis::TranslationX] = inLimitMin.GetX();
217
- mLimitMin[EAxis::TranslationY] = inLimitMin.GetY();
218
- mLimitMin[EAxis::TranslationZ] = inLimitMin.GetZ();
219
- mLimitMax[EAxis::TranslationX] = inLimitMax.GetX();
220
- mLimitMax[EAxis::TranslationY] = inLimitMax.GetY();
221
- mLimitMax[EAxis::TranslationZ] = inLimitMax.GetZ();
222
-
223
- UpdateTranslationLimits();
224
- UpdateFixedFreeAxis();
225
- }
226
-
227
- void SixDOFConstraint::SetRotationLimits(Vec3Arg inLimitMin, Vec3Arg inLimitMax)
228
- {
229
- mLimitMin[EAxis::RotationX] = inLimitMin.GetX();
230
- mLimitMin[EAxis::RotationY] = inLimitMin.GetY();
231
- mLimitMin[EAxis::RotationZ] = inLimitMin.GetZ();
232
- mLimitMax[EAxis::RotationX] = inLimitMax.GetX();
233
- mLimitMax[EAxis::RotationY] = inLimitMax.GetY();
234
- mLimitMax[EAxis::RotationZ] = inLimitMax.GetZ();
235
-
236
- UpdateRotationLimits();
237
- UpdateFixedFreeAxis();
238
- }
239
-
240
- void SixDOFConstraint::SetMaxFriction(EAxis inAxis, float inFriction)
241
- {
242
- mMaxFriction[inAxis] = inFriction;
243
-
244
- if (inAxis >= EAxis::TranslationX && inAxis <= EAxis::TranslationZ)
245
- CacheTranslationMotorActive();
246
- else
247
- CacheRotationMotorActive();
248
- }
249
-
250
- void SixDOFConstraint::GetPositionConstraintProperties(Vec3 &outR1PlusU, Vec3 &outR2, Vec3 &outU) const
251
- {
252
- RVec3 p1 = mBody1->GetCenterOfMassTransform() * mLocalSpacePosition1;
253
- RVec3 p2 = mBody2->GetCenterOfMassTransform() * mLocalSpacePosition2;
254
- outR1PlusU = Vec3(p2 - mBody1->GetCenterOfMassPosition()); // r1 + u = (p1 - x1) + (p2 - p1) = p2 - x1
255
- outR2 = Vec3(p2 - mBody2->GetCenterOfMassPosition());
256
- outU = Vec3(p2 - p1);
257
- }
258
-
259
- Quat SixDOFConstraint::GetRotationInConstraintSpace() const
260
- {
261
- // Let b1, b2 be the center of mass transform of body1 and body2 (For body1 this is mBody1->GetCenterOfMassTransform())
262
- // Let c1, c2 be the transform that takes a vector from constraint space to local space of body1 and body2 (For body1 this is Mat44::sRotationTranslation(mConstraintToBody1, mLocalSpacePosition1))
263
- // Let q be the rotation of the constraint in constraint space
264
- // b2 takes a vector from the local space of body2 to world space
265
- // To express this in terms of b1: b2 = b1 * c1 * q * c2^-1
266
- // c2^-1 goes from local body 2 space to constraint space
267
- // q rotates the constraint
268
- // c1 goes from constraint space to body 1 local space
269
- // b1 goes from body 1 local space to world space
270
- // So when the body rotations are given, q = (b1 * c1)^-1 * b2 c2
271
- // Or: q = (q1 * c1)^-1 * (q2 * c2) if we're only interested in rotations
272
- return (mBody1->GetRotation() * mConstraintToBody1).Conjugated() * mBody2->GetRotation() * mConstraintToBody2;
273
- }
274
-
275
- void SixDOFConstraint::CacheTranslationMotorActive()
276
- {
277
- mTranslationMotorActive = mMotorState[EAxis::TranslationX] != EMotorState::Off
278
- || mMotorState[EAxis::TranslationY] != EMotorState::Off
279
- || mMotorState[EAxis::TranslationZ] != EMotorState::Off
280
- || HasFriction(EAxis::TranslationX)
281
- || HasFriction(EAxis::TranslationY)
282
- || HasFriction(EAxis::TranslationZ);
283
- }
284
-
285
- void SixDOFConstraint::CacheRotationMotorActive()
286
- {
287
- mRotationMotorActive = mMotorState[EAxis::RotationX] != EMotorState::Off
288
- || mMotorState[EAxis::RotationY] != EMotorState::Off
289
- || mMotorState[EAxis::RotationZ] != EMotorState::Off
290
- || HasFriction(EAxis::RotationX)
291
- || HasFriction(EAxis::RotationY)
292
- || HasFriction(EAxis::RotationZ);
293
- }
294
-
295
- void SixDOFConstraint::CacheRotationPositionMotorActive()
296
- {
297
- mRotationPositionMotorActive = 0;
298
- for (int i = 0; i < 3; ++i)
299
- if (mMotorState[EAxis::RotationX + i] == EMotorState::Position)
300
- mRotationPositionMotorActive |= 1 << i;
301
- }
302
-
303
- void SixDOFConstraint::CacheHasSpringLimits()
304
- {
305
- mHasSpringLimits = mLimitsSpringSettings[EAxis::TranslationX].mFrequency > 0.0f
306
- || mLimitsSpringSettings[EAxis::TranslationY].mFrequency > 0.0f
307
- || mLimitsSpringSettings[EAxis::TranslationZ].mFrequency > 0.0f;
308
- }
309
-
310
- void SixDOFConstraint::SetMotorState(EAxis inAxis, EMotorState inState)
311
- {
312
- JPH_ASSERT(inState == EMotorState::Off || mMotorSettings[inAxis].IsValid());
313
-
314
- if (mMotorState[inAxis] != inState)
315
- {
316
- mMotorState[inAxis] = inState;
317
-
318
- // Ensure that warm starting next frame doesn't apply any impulses (motor parts are repurposed for different modes)
319
- if (inAxis >= EAxis::TranslationX && inAxis <= EAxis::TranslationZ)
320
- {
321
- mMotorTranslationConstraintPart[inAxis - EAxis::TranslationX].Deactivate();
322
-
323
- CacheTranslationMotorActive();
324
- }
325
- else
326
- {
327
- JPH_ASSERT(inAxis >= EAxis::RotationX && inAxis <= EAxis::RotationZ);
328
-
329
- mMotorRotationConstraintPart[inAxis - EAxis::RotationX].Deactivate();
330
-
331
- CacheRotationMotorActive();
332
- CacheRotationPositionMotorActive();
333
- }
334
- }
335
- }
336
-
337
- void SixDOFConstraint::SetTargetOrientationCS(QuatArg inOrientation)
338
- {
339
- Quat q_swing, q_twist;
340
- inOrientation.GetSwingTwist(q_swing, q_twist);
341
-
342
- uint clamped_axis;
343
- mSwingTwistConstraintPart.ClampSwingTwist(q_swing, q_twist, clamped_axis);
344
-
345
- if (clamped_axis != 0)
346
- mTargetOrientation = q_swing * q_twist;
347
- else
348
- mTargetOrientation = inOrientation;
349
- }
350
-
351
- void SixDOFConstraint::SetupVelocityConstraint(float inDeltaTime)
352
- {
353
- // Get body rotations
354
- Quat rotation1 = mBody1->GetRotation();
355
- Quat rotation2 = mBody2->GetRotation();
356
-
357
- // Quaternion that rotates from body1's constraint space to world space
358
- Quat constraint_body1_to_world = rotation1 * mConstraintToBody1;
359
-
360
- // Store world space axis of constraint space
361
- Mat44 translation_axis_mat = Mat44::sRotation(constraint_body1_to_world);
362
- for (int i = 0; i < 3; ++i)
363
- mTranslationAxis[i] = translation_axis_mat.GetColumn3(i);
364
-
365
- if (IsTranslationFullyConstrained())
366
- {
367
- // All translation locked: Setup point constraint
368
- mPointConstraintPart.CalculateConstraintProperties(*mBody1, Mat44::sRotation(rotation1), mLocalSpacePosition1, *mBody2, Mat44::sRotation(rotation2), mLocalSpacePosition2);
369
- }
370
- else if (IsTranslationConstrained() || mTranslationMotorActive)
371
- {
372
- // Update world space positions (the bodies may have moved)
373
- Vec3 r1_plus_u, r2, u;
374
- GetPositionConstraintProperties(r1_plus_u, r2, u);
375
-
376
- // Setup axis constraint parts
377
- for (int i = 0; i < 3; ++i)
378
- {
379
- EAxis axis = EAxis(EAxis::TranslationX + i);
380
-
381
- Vec3 translation_axis = mTranslationAxis[i];
382
-
383
- // Calculate displacement along this axis
384
- float d = translation_axis.Dot(u);
385
- mDisplacement[i] = d; // Store for SolveVelocityConstraint
386
-
387
- // Setup limit constraint
388
- bool constraint_active = false;
389
- float constraint_value = 0.0f;
390
- if (IsFixedAxis(axis))
391
- {
392
- // When constraint is fixed it is always active
393
- constraint_value = d - mLimitMin[i];
394
- constraint_active = true;
395
- }
396
- else if (!IsFreeAxis(axis))
397
- {
398
- // When constraint is limited, it is only active when outside of the allowed range
399
- if (d <= mLimitMin[i])
400
- {
401
- constraint_value = d - mLimitMin[i];
402
- constraint_active = true;
403
- }
404
- else if (d >= mLimitMax[i])
405
- {
406
- constraint_value = d - mLimitMax[i];
407
- constraint_active = true;
408
- }
409
- }
410
-
411
- if (constraint_active)
412
- mTranslationConstraintPart[i].CalculateConstraintPropertiesWithSettings(inDeltaTime, *mBody1, r1_plus_u, *mBody2, r2, translation_axis, 0.0f, constraint_value, mLimitsSpringSettings[i]);
413
- else
414
- mTranslationConstraintPart[i].Deactivate();
415
-
416
- // Setup motor constraint
417
- switch (mMotorState[i])
418
- {
419
- case EMotorState::Off:
420
- if (HasFriction(axis))
421
- mMotorTranslationConstraintPart[i].CalculateConstraintProperties(*mBody1, r1_plus_u, *mBody2, r2, translation_axis);
422
- else
423
- mMotorTranslationConstraintPart[i].Deactivate();
424
- break;
425
-
426
- case EMotorState::Velocity:
427
- mMotorTranslationConstraintPart[i].CalculateConstraintProperties(*mBody1, r1_plus_u, *mBody2, r2, translation_axis, -mTargetVelocity[i]);
428
- break;
429
-
430
- case EMotorState::Position:
431
- {
432
- const SpringSettings &spring_settings = mMotorSettings[i].mSpringSettings;
433
- if (spring_settings.HasStiffness())
434
- mMotorTranslationConstraintPart[i].CalculateConstraintPropertiesWithSettings(inDeltaTime, *mBody1, r1_plus_u, *mBody2, r2, translation_axis, 0.0f, translation_axis.Dot(u) - mTargetPosition[i], spring_settings);
435
- else
436
- mMotorTranslationConstraintPart[i].Deactivate();
437
- break;
438
- }
439
- }
440
- }
441
- }
442
-
443
- // Setup rotation constraints
444
- if (IsRotationFullyConstrained())
445
- {
446
- // All rotation locked: Setup rotation constraint
447
- mRotationConstraintPart.CalculateConstraintProperties(*mBody1, Mat44::sRotation(rotation1), *mBody2, Mat44::sRotation(rotation2));
448
- }
449
- else if (IsRotationConstrained() || mRotationMotorActive)
450
- {
451
- // GetRotationInConstraintSpace without redoing the calculation of constraint_body1_to_world
452
- Quat constraint_body2_to_world = rotation2 * mConstraintToBody2;
453
- Quat q = constraint_body1_to_world.Conjugated() * constraint_body2_to_world;
454
-
455
- // Use swing twist constraint part
456
- if (IsRotationConstrained())
457
- mSwingTwistConstraintPart.CalculateConstraintProperties(*mBody1, *mBody2, q, constraint_body1_to_world);
458
- else
459
- mSwingTwistConstraintPart.Deactivate();
460
-
461
- if (mRotationMotorActive)
462
- {
463
- // Calculate rotation motor axis
464
- Mat44 ws_axis = Mat44::sRotation(constraint_body2_to_world);
465
- for (int i = 0; i < 3; ++i)
466
- mRotationAxis[i] = ws_axis.GetColumn3(i);
467
-
468
- // Get target orientation along the shortest path from q
469
- Quat target_orientation = q.Dot(mTargetOrientation) > 0.0f? mTargetOrientation : -mTargetOrientation;
470
-
471
- // The definition of the constraint rotation q:
472
- // R2 * ConstraintToBody2 = R1 * ConstraintToBody1 * q (1)
473
- //
474
- // R2' is the rotation of body 2 when reaching the target_orientation:
475
- // R2' * ConstraintToBody2 = R1 * ConstraintToBody1 * target_orientation (2)
476
- //
477
- // The difference in body 2 space:
478
- // R2' = R2 * diff_body2 (3)
479
- //
480
- // We want to specify the difference in the constraint space of body 2:
481
- // diff_body2 = ConstraintToBody2 * diff * ConstraintToBody2^* (4)
482
- //
483
- // Extracting R2' from 2: R2' = R1 * ConstraintToBody1 * target_orientation * ConstraintToBody2^* (5)
484
- // Combining 3 & 4: R2' = R2 * ConstraintToBody2 * diff * ConstraintToBody2^* (6)
485
- // Combining 1 & 6: R2' = R1 * ConstraintToBody1 * q * diff * ConstraintToBody2^* (7)
486
- // Combining 5 & 7: R1 * ConstraintToBody1 * target_orientation * ConstraintToBody2^* = R1 * ConstraintToBody1 * q * diff * ConstraintToBody2^*
487
- // <=> target_orientation = q * diff
488
- // <=> diff = q^* * target_orientation
489
- Quat diff = q.Conjugated() * target_orientation;
490
-
491
- // Project diff so that only rotation around axis that have a position motor are remaining
492
- Quat projected_diff;
493
- switch (mRotationPositionMotorActive)
494
- {
495
- case 0b001:
496
- // Keep only rotation around X
497
- projected_diff = diff.GetTwist(Vec3::sAxisX());
498
- break;
499
-
500
- case 0b010:
501
- // Keep only rotation around Y
502
- projected_diff = diff.GetTwist(Vec3::sAxisY());
503
- break;
504
-
505
- case 0b100:
506
- // Keep only rotation around Z
507
- projected_diff = diff.GetTwist(Vec3::sAxisZ());
508
- break;
509
-
510
- case 0b011:
511
- // Remove rotation around Z
512
- // q = swing_xy * twist_z <=> swing_xy = q * twist_z^*
513
- projected_diff = diff * diff.GetTwist(Vec3::sAxisZ()).Conjugated();
514
- break;
515
-
516
- case 0b101:
517
- // Remove rotation around Y
518
- // q = swing_xz * twist_y <=> swing_xz = q * twist_y^*
519
- projected_diff = diff * diff.GetTwist(Vec3::sAxisY()).Conjugated();
520
- break;
521
-
522
- case 0b110:
523
- // Remove rotation around X
524
- // q = swing_yz * twist_x <=> swing_yz = q * twist_x^*
525
- projected_diff = diff * diff.GetTwist(Vec3::sAxisX()).Conjugated();
526
- break;
527
-
528
- case 0b111:
529
- default: // All motors off is handled here but the results are unused
530
- // Keep entire rotation
531
- projected_diff = diff;
532
- break;
533
- }
534
-
535
- // Approximate error angles
536
- // The imaginary part of a quaternion is rotation_axis * sin(angle / 2)
537
- // If angle is small, sin(x) = x so angle[i] ~ 2.0f * rotation_axis[i]
538
- // We'll be making small time steps, so if the angle is not small at least the sign will be correct and we'll move in the right direction
539
- Vec3 rotation_error = -2.0f * projected_diff.GetXYZ();
540
-
541
- // Setup motors
542
- for (int i = 0; i < 3; ++i)
543
- {
544
- EAxis axis = EAxis(EAxis::RotationX + i);
545
-
546
- Vec3 rotation_axis = mRotationAxis[i];
547
-
548
- switch (mMotorState[axis])
549
- {
550
- case EMotorState::Off:
551
- if (HasFriction(axis))
552
- mMotorRotationConstraintPart[i].CalculateConstraintProperties(*mBody1, *mBody2, rotation_axis);
553
- else
554
- mMotorRotationConstraintPart[i].Deactivate();
555
- break;
556
-
557
- case EMotorState::Velocity:
558
- mMotorRotationConstraintPart[i].CalculateConstraintProperties(*mBody1, *mBody2, rotation_axis, -mTargetAngularVelocity[i]);
559
- break;
560
-
561
- case EMotorState::Position:
562
- {
563
- const SpringSettings &spring_settings = mMotorSettings[axis].mSpringSettings;
564
- if (spring_settings.HasStiffness())
565
- mMotorRotationConstraintPart[i].CalculateConstraintPropertiesWithSettings(inDeltaTime, *mBody1, *mBody2, rotation_axis, 0.0f, rotation_error[i], spring_settings);
566
- else
567
- mMotorRotationConstraintPart[i].Deactivate();
568
- break;
569
- }
570
- }
571
- }
572
- }
573
- }
574
- }
575
-
576
- void SixDOFConstraint::ResetWarmStart()
577
- {
578
- for (AxisConstraintPart &c : mMotorTranslationConstraintPart)
579
- c.Deactivate();
580
- for (AngleConstraintPart &c : mMotorRotationConstraintPart)
581
- c.Deactivate();
582
- mRotationConstraintPart.Deactivate();
583
- mSwingTwistConstraintPart.Deactivate();
584
- mPointConstraintPart.Deactivate();
585
- for (AxisConstraintPart &c : mTranslationConstraintPart)
586
- c.Deactivate();
587
- }
588
-
589
- void SixDOFConstraint::WarmStartVelocityConstraint(float inWarmStartImpulseRatio)
590
- {
591
- // Warm start translation motors
592
- if (mTranslationMotorActive)
593
- for (int i = 0; i < 3; ++i)
594
- if (mMotorTranslationConstraintPart[i].IsActive())
595
- mMotorTranslationConstraintPart[i].WarmStart(*mBody1, *mBody2, mTranslationAxis[i], inWarmStartImpulseRatio);
596
-
597
- // Warm start rotation motors
598
- if (mRotationMotorActive)
599
- for (AngleConstraintPart &c : mMotorRotationConstraintPart)
600
- if (c.IsActive())
601
- c.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
602
-
603
- // Warm start rotation constraints
604
- if (IsRotationFullyConstrained())
605
- mRotationConstraintPart.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
606
- else if (IsRotationConstrained())
607
- mSwingTwistConstraintPart.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
608
-
609
- // Warm start translation constraints
610
- if (IsTranslationFullyConstrained())
611
- mPointConstraintPart.WarmStart(*mBody1, *mBody2, inWarmStartImpulseRatio);
612
- else if (IsTranslationConstrained())
613
- for (int i = 0; i < 3; ++i)
614
- if (mTranslationConstraintPart[i].IsActive())
615
- mTranslationConstraintPart[i].WarmStart(*mBody1, *mBody2, mTranslationAxis[i], inWarmStartImpulseRatio);
616
- }
617
-
618
- bool SixDOFConstraint::SolveVelocityConstraint(float inDeltaTime)
619
- {
620
- bool impulse = false;
621
-
622
- // Solve translation motor
623
- if (mTranslationMotorActive)
624
- for (int i = 0; i < 3; ++i)
625
- if (mMotorTranslationConstraintPart[i].IsActive())
626
- switch (mMotorState[i])
627
- {
628
- case EMotorState::Off:
629
- {
630
- // Apply friction only
631
- float max_lambda = mMaxFriction[i] * inDeltaTime;
632
- impulse |= mMotorTranslationConstraintPart[i].SolveVelocityConstraint(*mBody1, *mBody2, mTranslationAxis[i], -max_lambda, max_lambda);
633
- break;
634
- }
635
-
636
- case EMotorState::Velocity:
637
- case EMotorState::Position:
638
- // Drive motor
639
- impulse |= mMotorTranslationConstraintPart[i].SolveVelocityConstraint(*mBody1, *mBody2, mTranslationAxis[i], inDeltaTime * mMotorSettings[i].mMinForceLimit, inDeltaTime * mMotorSettings[i].mMaxForceLimit);
640
- break;
641
- }
642
-
643
- // Solve rotation motor
644
- if (mRotationMotorActive)
645
- for (int i = 0; i < 3; ++i)
646
- {
647
- EAxis axis = EAxis(EAxis::RotationX + i);
648
- if (mMotorRotationConstraintPart[i].IsActive())
649
- switch (mMotorState[axis])
650
- {
651
- case EMotorState::Off:
652
- {
653
- // Apply friction only
654
- float max_lambda = mMaxFriction[axis] * inDeltaTime;
655
- impulse |= mMotorRotationConstraintPart[i].SolveVelocityConstraint(*mBody1, *mBody2, mRotationAxis[i], -max_lambda, max_lambda);
656
- break;
657
- }
658
-
659
- case EMotorState::Velocity:
660
- case EMotorState::Position:
661
- // Drive motor
662
- impulse |= mMotorRotationConstraintPart[i].SolveVelocityConstraint(*mBody1, *mBody2, mRotationAxis[i], inDeltaTime * mMotorSettings[axis].mMinTorqueLimit, inDeltaTime * mMotorSettings[axis].mMaxTorqueLimit);
663
- break;
664
- }
665
- }
666
-
667
- // Solve rotation constraint
668
- if (IsRotationFullyConstrained())
669
- impulse |= mRotationConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2);
670
- else if (IsRotationConstrained())
671
- impulse |= mSwingTwistConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2);
672
-
673
- // Solve position constraint
674
- if (IsTranslationFullyConstrained())
675
- impulse |= mPointConstraintPart.SolveVelocityConstraint(*mBody1, *mBody2);
676
- else if (IsTranslationConstrained())
677
- for (int i = 0; i < 3; ++i)
678
- if (mTranslationConstraintPart[i].IsActive())
679
- {
680
- // If the axis is not fixed it must be limited (or else the constraint would not be active)
681
- // Calculate the min and max constraint force based on on which side we're limited
682
- float limit_min = -FLT_MAX, limit_max = FLT_MAX;
683
- if (!IsFixedAxis(EAxis(EAxis::TranslationX + i)))
684
- {
685
- JPH_ASSERT(!IsFreeAxis(EAxis(EAxis::TranslationX + i)));
686
- if (mDisplacement[i] <= mLimitMin[i])
687
- limit_min = 0;
688
- else if (mDisplacement[i] >= mLimitMax[i])
689
- limit_max = 0;
690
- }
691
-
692
- impulse |= mTranslationConstraintPart[i].SolveVelocityConstraint(*mBody1, *mBody2, mTranslationAxis[i], limit_min, limit_max);
693
- }
694
-
695
- return impulse;
696
- }
697
-
698
- bool SixDOFConstraint::SolvePositionConstraint(float inDeltaTime, float inBaumgarte)
699
- {
700
- bool impulse = false;
701
-
702
- if (IsRotationFullyConstrained())
703
- {
704
- // Rotation locked: Solve rotation constraint
705
-
706
- // Inverse of initial rotation from body 1 to body 2 in body 1 space
707
- // Definition of initial orientation r0: q2 = q1 r0
708
- // Initial rotation (see: GetRotationInConstraintSpace): q2 = q1 c1 c2^-1
709
- // So: r0^-1 = (c1 c2^-1)^-1 = c2 * c1^-1
710
- Quat constraint_to_body1 = mConstraintToBody1 * Quat::sEulerAngles(GetRotationLimitsMin());
711
- Quat inv_initial_orientation = mConstraintToBody2 * constraint_to_body1.Conjugated();
712
-
713
- // Solve rotation violations
714
- mRotationConstraintPart.CalculateConstraintProperties(*mBody1, Mat44::sRotation(mBody1->GetRotation()), *mBody2, Mat44::sRotation(mBody2->GetRotation()));
715
- impulse |= mRotationConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, inv_initial_orientation, inBaumgarte);
716
- }
717
- else if (IsRotationConstrained())
718
- {
719
- // Rotation partially constraint
720
-
721
- // Solve rotation violations
722
- Quat q = GetRotationInConstraintSpace();
723
- impulse |= mSwingTwistConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, q, mConstraintToBody1, mConstraintToBody2, inBaumgarte);
724
- }
725
-
726
- // Solve position violations
727
- if (IsTranslationFullyConstrained())
728
- {
729
- // Translation locked: Solve point constraint
730
- Vec3 local_space_position1 = mLocalSpacePosition1 + mConstraintToBody1 * GetTranslationLimitsMin();
731
- mPointConstraintPart.CalculateConstraintProperties(*mBody1, Mat44::sRotation(mBody1->GetRotation()), local_space_position1, *mBody2, Mat44::sRotation(mBody2->GetRotation()), mLocalSpacePosition2);
732
- impulse |= mPointConstraintPart.SolvePositionConstraint(*mBody1, *mBody2, inBaumgarte);
733
- }
734
- else if (IsTranslationConstrained())
735
- {
736
- // Translation partially locked: Solve per axis
737
- for (int i = 0; i < 3; ++i)
738
- if (mLimitsSpringSettings[i].mFrequency <= 0.0f) // If not soft limit
739
- {
740
- // Update world space positions (the bodies may have moved)
741
- Vec3 r1_plus_u, r2, u;
742
- GetPositionConstraintProperties(r1_plus_u, r2, u);
743
-
744
- // Quaternion that rotates from body1's constraint space to world space
745
- Quat constraint_body1_to_world = mBody1->GetRotation() * mConstraintToBody1;
746
-
747
- // Calculate axis
748
- Vec3 translation_axis;
749
- switch (i)
750
- {
751
- case 0: translation_axis = constraint_body1_to_world.RotateAxisX(); break;
752
- case 1: translation_axis = constraint_body1_to_world.RotateAxisY(); break;
753
- default: JPH_ASSERT(i == 2); translation_axis = constraint_body1_to_world.RotateAxisZ(); break;
754
- }
755
-
756
- // Determine position error
757
- float error = 0.0f;
758
- EAxis axis(EAxis(EAxis::TranslationX + i));
759
- if (IsFixedAxis(axis))
760
- error = u.Dot(translation_axis) - mLimitMin[axis];
761
- else if (!IsFreeAxis(axis))
762
- {
763
- float displacement = u.Dot(translation_axis);
764
- if (displacement <= mLimitMin[axis])
765
- error = displacement - mLimitMin[axis];
766
- else if (displacement >= mLimitMax[axis])
767
- error = displacement - mLimitMax[axis];
768
- }
769
-
770
- if (error != 0.0f)
771
- {
772
- // Setup axis constraint part and solve it
773
- mTranslationConstraintPart[i].CalculateConstraintProperties(*mBody1, r1_plus_u, *mBody2, r2, translation_axis);
774
- impulse |= mTranslationConstraintPart[i].SolvePositionConstraint(*mBody1, *mBody2, translation_axis, error, inBaumgarte);
775
- }
776
- }
777
- }
778
-
779
- return impulse;
780
- }
781
-
782
- #ifdef JPH_DEBUG_RENDERER
783
- void SixDOFConstraint::DrawConstraint(DebugRenderer *inRenderer) const
784
- {
785
- // Get constraint properties in world space
786
- RVec3 position1 = mBody1->GetCenterOfMassTransform() * mLocalSpacePosition1;
787
- Quat rotation1 = mBody1->GetRotation() * mConstraintToBody1;
788
- Quat rotation2 = mBody2->GetRotation() * mConstraintToBody2;
789
-
790
- // Draw constraint orientation
791
- inRenderer->DrawCoordinateSystem(RMat44::sRotationTranslation(rotation1, position1), mDrawConstraintSize);
792
-
793
- if ((IsRotationConstrained() || mRotationPositionMotorActive != 0) && !IsRotationFullyConstrained())
794
- {
795
- // Draw current swing and twist
796
- Quat q = GetRotationInConstraintSpace();
797
- Quat q_swing, q_twist;
798
- q.GetSwingTwist(q_swing, q_twist);
799
- inRenderer->DrawLine(position1, position1 + mDrawConstraintSize * (rotation1 * q_twist).RotateAxisY(), Color::sWhite);
800
- inRenderer->DrawLine(position1, position1 + mDrawConstraintSize * (rotation1 * q_swing).RotateAxisX(), Color::sWhite);
801
- }
802
-
803
- // Draw target rotation
804
- Quat m_swing, m_twist;
805
- mTargetOrientation.GetSwingTwist(m_swing, m_twist);
806
- if (mMotorState[EAxis::RotationX] == EMotorState::Position)
807
- inRenderer->DrawLine(position1, position1 + mDrawConstraintSize * (rotation1 * m_twist).RotateAxisY(), Color::sYellow);
808
- if (mMotorState[EAxis::RotationY] == EMotorState::Position || mMotorState[EAxis::RotationZ] == EMotorState::Position)
809
- inRenderer->DrawLine(position1, position1 + mDrawConstraintSize * (rotation1 * m_swing).RotateAxisX(), Color::sYellow);
810
-
811
- // Draw target angular velocity
812
- Vec3 target_angular_velocity = Vec3::sZero();
813
- for (int i = 0; i < 3; ++i)
814
- if (mMotorState[EAxis::RotationX + i] == EMotorState::Velocity)
815
- target_angular_velocity.SetComponent(i, mTargetAngularVelocity[i]);
816
- if (target_angular_velocity != Vec3::sZero())
817
- inRenderer->DrawArrow(position1, position1 + rotation2 * target_angular_velocity, Color::sRed, 0.1f);
818
- }
819
-
820
- void SixDOFConstraint::DrawConstraintLimits(DebugRenderer *inRenderer) const
821
- {
822
- // Get matrix that transforms from constraint space to world space
823
- RMat44 constraint_body1_to_world = RMat44::sRotationTranslation(mBody1->GetRotation() * mConstraintToBody1, mBody1->GetCenterOfMassTransform() * mLocalSpacePosition1);
824
-
825
- // Draw limits
826
- if (mSwingTwistConstraintPart.GetSwingType() == ESwingType::Pyramid)
827
- inRenderer->DrawSwingPyramidLimits(constraint_body1_to_world, mLimitMin[EAxis::RotationY], mLimitMax[EAxis::RotationY], mLimitMin[EAxis::RotationZ], mLimitMax[EAxis::RotationZ], mDrawConstraintSize, Color::sGreen, DebugRenderer::ECastShadow::Off);
828
- else
829
- inRenderer->DrawSwingConeLimits(constraint_body1_to_world, mLimitMax[EAxis::RotationY], mLimitMax[EAxis::RotationZ], mDrawConstraintSize, Color::sGreen, DebugRenderer::ECastShadow::Off);
830
- inRenderer->DrawPie(constraint_body1_to_world.GetTranslation(), mDrawConstraintSize, constraint_body1_to_world.GetAxisX(), constraint_body1_to_world.GetAxisY(), mLimitMin[EAxis::RotationX], mLimitMax[EAxis::RotationX], Color::sPurple, DebugRenderer::ECastShadow::Off);
831
- }
832
- #endif // JPH_DEBUG_RENDERER
833
-
834
- void SixDOFConstraint::SaveState(StateRecorder &inStream) const
835
- {
836
- TwoBodyConstraint::SaveState(inStream);
837
-
838
- for (const AxisConstraintPart &c : mTranslationConstraintPart)
839
- c.SaveState(inStream);
840
- mPointConstraintPart.SaveState(inStream);
841
- mSwingTwistConstraintPart.SaveState(inStream);
842
- mRotationConstraintPart.SaveState(inStream);
843
- for (const AxisConstraintPart &c : mMotorTranslationConstraintPart)
844
- c.SaveState(inStream);
845
- for (const AngleConstraintPart &c : mMotorRotationConstraintPart)
846
- c.SaveState(inStream);
847
-
848
- inStream.Write(mMotorState);
849
- inStream.Write(mTargetVelocity);
850
- inStream.Write(mTargetAngularVelocity);
851
- inStream.Write(mTargetPosition);
852
- inStream.Write(mTargetOrientation);
853
- }
854
-
855
- void SixDOFConstraint::RestoreState(StateRecorder &inStream)
856
- {
857
- TwoBodyConstraint::RestoreState(inStream);
858
-
859
- for (AxisConstraintPart &c : mTranslationConstraintPart)
860
- c.RestoreState(inStream);
861
- mPointConstraintPart.RestoreState(inStream);
862
- mSwingTwistConstraintPart.RestoreState(inStream);
863
- mRotationConstraintPart.RestoreState(inStream);
864
- for (AxisConstraintPart &c : mMotorTranslationConstraintPart)
865
- c.RestoreState(inStream);
866
- for (AngleConstraintPart &c : mMotorRotationConstraintPart)
867
- c.RestoreState(inStream);
868
-
869
- inStream.Read(mMotorState);
870
- inStream.Read(mTargetVelocity);
871
- inStream.Read(mTargetAngularVelocity);
872
- inStream.Read(mTargetPosition);
873
- inStream.Read(mTargetOrientation);
874
-
875
- CacheTranslationMotorActive();
876
- CacheRotationMotorActive();
877
- CacheRotationPositionMotorActive();
878
- }
879
-
880
- Ref<ConstraintSettings> SixDOFConstraint::GetConstraintSettings() const
881
- {
882
- SixDOFConstraintSettings *settings = new SixDOFConstraintSettings;
883
- ToConstraintSettings(*settings);
884
- settings->mSpace = EConstraintSpace::LocalToBodyCOM;
885
- settings->mPosition1 = RVec3(mLocalSpacePosition1);
886
- settings->mAxisX1 = mConstraintToBody1.RotateAxisX();
887
- settings->mAxisY1 = mConstraintToBody1.RotateAxisY();
888
- settings->mPosition2 = RVec3(mLocalSpacePosition2);
889
- settings->mAxisX2 = mConstraintToBody2.RotateAxisX();
890
- settings->mAxisY2 = mConstraintToBody2.RotateAxisY();
891
- settings->mSwingType = mSwingTwistConstraintPart.GetSwingType();
892
- memcpy(settings->mLimitMin, mLimitMin, sizeof(mLimitMin));
893
- memcpy(settings->mLimitMax, mLimitMax, sizeof(mLimitMax));
894
- memcpy(settings->mMaxFriction, mMaxFriction, sizeof(mMaxFriction));
895
- for (int i = 0; i < EAxis::Num; ++i)
896
- settings->mMotorSettings[i] = mMotorSettings[i];
897
- return settings;
898
- }
899
-
900
- JPH_NAMESPACE_END