@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.
- package/native/tvos/metal-patched/Cargo.toml +178 -0
- package/native/tvos/metal-patched/LICENSE-APACHE +201 -0
- package/native/tvos/metal-patched/LICENSE-MIT +25 -0
- package/native/tvos/metal-patched/src/acceleration_structure.rs +667 -0
- package/native/tvos/metal-patched/src/acceleration_structure_pass.rs +108 -0
- package/native/tvos/metal-patched/src/argument.rs +366 -0
- package/native/tvos/metal-patched/src/blitpass.rs +102 -0
- package/native/tvos/metal-patched/src/buffer.rs +71 -0
- package/native/tvos/metal-patched/src/capturedescriptor.rs +76 -0
- package/native/tvos/metal-patched/src/capturemanager.rs +113 -0
- package/native/tvos/metal-patched/src/commandbuffer.rs +192 -0
- package/native/tvos/metal-patched/src/commandqueue.rs +44 -0
- package/native/tvos/metal-patched/src/computepass.rs +107 -0
- package/native/tvos/metal-patched/src/constants.rs +152 -0
- package/native/tvos/metal-patched/src/counters.rs +119 -0
- package/native/tvos/metal-patched/src/depthstencil.rs +190 -0
- package/native/tvos/metal-patched/src/device.rs +2134 -0
- package/native/tvos/metal-patched/src/drawable.rs +39 -0
- package/native/tvos/metal-patched/src/encoder.rs +2041 -0
- package/native/tvos/metal-patched/src/heap.rs +281 -0
- package/native/tvos/metal-patched/src/indirect_encoder.rs +344 -0
- package/native/tvos/metal-patched/src/lib.rs +657 -0
- package/native/tvos/metal-patched/src/library.rs +902 -0
- package/native/tvos/metal-patched/src/mps.rs +575 -0
- package/native/tvos/metal-patched/src/pipeline/compute.rs +475 -0
- package/native/tvos/metal-patched/src/pipeline/mod.rs +71 -0
- package/native/tvos/metal-patched/src/pipeline/render.rs +762 -0
- package/native/tvos/metal-patched/src/renderpass.rs +443 -0
- package/native/tvos/metal-patched/src/resource.rs +182 -0
- package/native/tvos/metal-patched/src/sampler.rs +165 -0
- package/native/tvos/metal-patched/src/sync.rs +178 -0
- package/native/tvos/metal-patched/src/texture.rs +352 -0
- package/native/tvos/metal-patched/src/types.rs +90 -0
- package/native/tvos/metal-patched/src/vertexdescriptor.rs +250 -0
- package/package.json +8 -11
- package/native/third_party/JoltPhysics/Build/Android/PerformanceTest/build.gradle +0 -51
- package/native/third_party/JoltPhysics/Build/Android/PerformanceTest/src/main/AndroidManifest.xml +0 -20
- package/native/third_party/JoltPhysics/Build/Android/PerformanceTest/src/main/cpp/CMakeLists.txt +0 -20
- package/native/third_party/JoltPhysics/Build/Android/UnitTests/build.gradle +0 -51
- package/native/third_party/JoltPhysics/Build/Android/UnitTests/src/main/AndroidManifest.xml +0 -20
- package/native/third_party/JoltPhysics/Build/Android/UnitTests/src/main/cpp/CMakeLists.txt +0 -20
- package/native/third_party/JoltPhysics/Build/Android/build.gradle +0 -17
- package/native/third_party/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/native/third_party/JoltPhysics/Build/Android/gradle/wrapper/gradle-wrapper.properties +0 -5
- package/native/third_party/JoltPhysics/Build/Android/gradle.properties +0 -21
- package/native/third_party/JoltPhysics/Build/Android/gradlew +0 -185
- package/native/third_party/JoltPhysics/Build/Android/gradlew.bat +0 -89
- package/native/third_party/JoltPhysics/Build/Android/settings.gradle +0 -10
- package/native/third_party/JoltPhysics/Build/CMakeLists.txt +0 -449
- package/native/third_party/JoltPhysics/Build/README.md +0 -250
- package/native/third_party/JoltPhysics/Build/cmake_linux_clang_gcc.sh +0 -28
- package/native/third_party/JoltPhysics/Build/cmake_linux_emscripten.sh +0 -19
- package/native/third_party/JoltPhysics/Build/cmake_linux_mingw.sh +0 -19
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_32bit.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_arm.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_arm_32bit.bat +0 -4
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_cross_platform_deterministic.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_double.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_cl_no_object_stream.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_clang.bat +0 -10
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_clang_cross_platform_deterministic.bat +0 -10
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_clang_double.bat +0 -10
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_uwp.bat +0 -5
- package/native/third_party/JoltPhysics/Build/cmake_vs2022_uwp_arm.bat +0 -5
- package/native/third_party/JoltPhysics/Build/cmake_vs2026_cl.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2026_cl_cross_platform_deterministic.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2026_cl_double.bat +0 -3
- package/native/third_party/JoltPhysics/Build/cmake_vs2026_clang.bat +0 -10
- package/native/third_party/JoltPhysics/Build/cmake_vs2026_clang_cross_platform_deterministic.bat +0 -10
- package/native/third_party/JoltPhysics/Build/cmake_vs2026_clang_double.bat +0 -10
- package/native/third_party/JoltPhysics/Build/cmake_windows_mingw.sh +0 -19
- package/native/third_party/JoltPhysics/Build/cmake_xcode_ios.sh +0 -4
- package/native/third_party/JoltPhysics/Build/cmake_xcode_macos.sh +0 -4
- package/native/third_party/JoltPhysics/Build/iOS/JoltViewerInfo.plist +0 -34
- package/native/third_party/JoltPhysics/Build/iOS/SamplesInfo.plist +0 -34
- package/native/third_party/JoltPhysics/Build/iOS/UnitTestsInfo.plist +0 -34
- package/native/third_party/JoltPhysics/Build/macOS/icon.icns +0 -0
- package/native/third_party/JoltPhysics/Build/macos_install_vulkan_sdk.sh +0 -13
- package/native/third_party/JoltPhysics/Build/ubuntu24_install_vulkan_sdk.sh +0 -4
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp +0 -242
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h +0 -121
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h +0 -296
- package/native/third_party/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h +0 -323
- package/native/third_party/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h +0 -555
- package/native/third_party/JoltPhysics/Jolt/ConfigurationString.h +0 -112
- package/native/third_party/JoltPhysics/Jolt/Core/ARMNeon.h +0 -94
- package/native/third_party/JoltPhysics/Jolt/Core/Array.h +0 -713
- package/native/third_party/JoltPhysics/Jolt/Core/Atomics.h +0 -44
- package/native/third_party/JoltPhysics/Jolt/Core/BinaryHeap.h +0 -96
- package/native/third_party/JoltPhysics/Jolt/Core/ByteBuffer.h +0 -74
- package/native/third_party/JoltPhysics/Jolt/Core/Color.cpp +0 -38
- package/native/third_party/JoltPhysics/Jolt/Core/Color.h +0 -98
- package/native/third_party/JoltPhysics/Jolt/Core/Core.h +0 -652
- package/native/third_party/JoltPhysics/Jolt/Core/FPControlWord.h +0 -143
- package/native/third_party/JoltPhysics/Jolt/Core/FPException.h +0 -96
- package/native/third_party/JoltPhysics/Jolt/Core/FPFlushDenormals.h +0 -43
- package/native/third_party/JoltPhysics/Jolt/Core/Factory.cpp +0 -92
- package/native/third_party/JoltPhysics/Jolt/Core/Factory.h +0 -54
- package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.h +0 -122
- package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.inl +0 -215
- package/native/third_party/JoltPhysics/Jolt/Core/HashCombine.h +0 -234
- package/native/third_party/JoltPhysics/Jolt/Core/HashTable.h +0 -876
- package/native/third_party/JoltPhysics/Jolt/Core/InsertionSort.h +0 -58
- package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.cpp +0 -27
- package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.h +0 -38
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.h +0 -311
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.inl +0 -56
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.cpp +0 -65
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.h +0 -62
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.cpp +0 -364
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.h +0 -101
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.cpp +0 -230
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.h +0 -85
- package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.cpp +0 -51
- package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.h +0 -67
- package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.h +0 -182
- package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.inl +0 -351
- package/native/third_party/JoltPhysics/Jolt/Core/Memory.cpp +0 -85
- package/native/third_party/JoltPhysics/Jolt/Core/Memory.h +0 -85
- package/native/third_party/JoltPhysics/Jolt/Core/Mutex.h +0 -223
- package/native/third_party/JoltPhysics/Jolt/Core/MutexArray.h +0 -98
- package/native/third_party/JoltPhysics/Jolt/Core/NonCopyable.h +0 -18
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.cpp +0 -677
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.h +0 -301
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.inl +0 -90
- package/native/third_party/JoltPhysics/Jolt/Core/QuickSort.h +0 -137
- package/native/third_party/JoltPhysics/Jolt/Core/RTTI.cpp +0 -149
- package/native/third_party/JoltPhysics/Jolt/Core/RTTI.h +0 -436
- package/native/third_party/JoltPhysics/Jolt/Core/Reference.h +0 -244
- package/native/third_party/JoltPhysics/Jolt/Core/Result.h +0 -174
- package/native/third_party/JoltPhysics/Jolt/Core/STLAlignedAllocator.h +0 -72
- package/native/third_party/JoltPhysics/Jolt/Core/STLAllocator.h +0 -127
- package/native/third_party/JoltPhysics/Jolt/Core/STLLocalAllocator.h +0 -170
- package/native/third_party/JoltPhysics/Jolt/Core/STLTempAllocator.h +0 -80
- package/native/third_party/JoltPhysics/Jolt/Core/ScopeExit.h +0 -49
- package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.cpp +0 -135
- package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.h +0 -68
- package/native/third_party/JoltPhysics/Jolt/Core/StaticArray.h +0 -329
- package/native/third_party/JoltPhysics/Jolt/Core/StreamIn.h +0 -120
- package/native/third_party/JoltPhysics/Jolt/Core/StreamOut.h +0 -97
- package/native/third_party/JoltPhysics/Jolt/Core/StreamUtils.h +0 -168
- package/native/third_party/JoltPhysics/Jolt/Core/StreamWrapper.h +0 -53
- package/native/third_party/JoltPhysics/Jolt/Core/StridedPtr.h +0 -63
- package/native/third_party/JoltPhysics/Jolt/Core/StringTools.cpp +0 -101
- package/native/third_party/JoltPhysics/Jolt/Core/StringTools.h +0 -38
- package/native/third_party/JoltPhysics/Jolt/Core/TempAllocator.h +0 -209
- package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.cpp +0 -37
- package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.h +0 -58
- package/native/third_party/JoltPhysics/Jolt/Core/UnorderedMap.h +0 -80
- package/native/third_party/JoltPhysics/Jolt/Core/UnorderedSet.h +0 -32
- package/native/third_party/JoltPhysics/Jolt/Geometry/AABox.h +0 -313
- package/native/third_party/JoltPhysics/Jolt/Geometry/AABox4.h +0 -224
- package/native/third_party/JoltPhysics/Jolt/Geometry/ClipPoly.h +0 -200
- package/native/third_party/JoltPhysics/Jolt/Geometry/ClosestPoint.h +0 -498
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.cpp +0 -1467
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.h +0 -276
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.cpp +0 -335
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.h +0 -105
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexSupport.h +0 -188
- package/native/third_party/JoltPhysics/Jolt/Geometry/EPAConvexHullBuilder.h +0 -845
- package/native/third_party/JoltPhysics/Jolt/Geometry/EPAPenetrationDepth.h +0 -557
- package/native/third_party/JoltPhysics/Jolt/Geometry/Ellipse.h +0 -77
- package/native/third_party/JoltPhysics/Jolt/Geometry/GJKClosestPoint.h +0 -945
- package/native/third_party/JoltPhysics/Jolt/Geometry/IndexedTriangle.h +0 -130
- package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.cpp +0 -222
- package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.h +0 -19
- package/native/third_party/JoltPhysics/Jolt/Geometry/MortonCode.h +0 -40
- package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.cpp +0 -178
- package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.h +0 -39
- package/native/third_party/JoltPhysics/Jolt/Geometry/Plane.h +0 -104
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayAABox.h +0 -241
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayCapsule.h +0 -37
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayCylinder.h +0 -101
- package/native/third_party/JoltPhysics/Jolt/Geometry/RaySphere.h +0 -96
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayTriangle.h +0 -158
- package/native/third_party/JoltPhysics/Jolt/Geometry/Sphere.h +0 -72
- package/native/third_party/JoltPhysics/Jolt/Geometry/Triangle.h +0 -34
- package/native/third_party/JoltPhysics/Jolt/Jolt.cmake +0 -703
- package/native/third_party/JoltPhysics/Jolt/Jolt.h +0 -16
- package/native/third_party/JoltPhysics/Jolt/Jolt.natvis +0 -116
- package/native/third_party/JoltPhysics/Jolt/Math/BVec16.h +0 -99
- package/native/third_party/JoltPhysics/Jolt/Math/BVec16.inl +0 -177
- package/native/third_party/JoltPhysics/Jolt/Math/DMat44.h +0 -158
- package/native/third_party/JoltPhysics/Jolt/Math/DMat44.inl +0 -310
- package/native/third_party/JoltPhysics/Jolt/Math/DVec3.h +0 -291
- package/native/third_party/JoltPhysics/Jolt/Math/DVec3.inl +0 -941
- package/native/third_party/JoltPhysics/Jolt/Math/Double3.h +0 -48
- package/native/third_party/JoltPhysics/Jolt/Math/DynMatrix.h +0 -31
- package/native/third_party/JoltPhysics/Jolt/Math/EigenValueSymmetric.h +0 -177
- package/native/third_party/JoltPhysics/Jolt/Math/FindRoot.h +0 -42
- package/native/third_party/JoltPhysics/Jolt/Math/Float2.h +0 -36
- package/native/third_party/JoltPhysics/Jolt/Math/Float3.h +0 -50
- package/native/third_party/JoltPhysics/Jolt/Math/Float4.h +0 -44
- package/native/third_party/JoltPhysics/Jolt/Math/GaussianElimination.h +0 -102
- package/native/third_party/JoltPhysics/Jolt/Math/HalfFloat.h +0 -208
- package/native/third_party/JoltPhysics/Jolt/Math/Mat44.h +0 -243
- package/native/third_party/JoltPhysics/Jolt/Math/Mat44.inl +0 -952
- package/native/third_party/JoltPhysics/Jolt/Math/Math.h +0 -208
- package/native/third_party/JoltPhysics/Jolt/Math/MathTypes.h +0 -32
- package/native/third_party/JoltPhysics/Jolt/Math/Matrix.h +0 -259
- package/native/third_party/JoltPhysics/Jolt/Math/Quat.h +0 -268
- package/native/third_party/JoltPhysics/Jolt/Math/Quat.inl +0 -406
- package/native/third_party/JoltPhysics/Jolt/Math/Real.h +0 -44
- package/native/third_party/JoltPhysics/Jolt/Math/Swizzle.h +0 -19
- package/native/third_party/JoltPhysics/Jolt/Math/Trigonometry.h +0 -79
- package/native/third_party/JoltPhysics/Jolt/Math/UVec4.h +0 -232
- package/native/third_party/JoltPhysics/Jolt/Math/UVec4.inl +0 -636
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.cpp +0 -71
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.h +0 -308
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.inl +0 -942
- package/native/third_party/JoltPhysics/Jolt/Math/Vec4.h +0 -320
- package/native/third_party/JoltPhysics/Jolt/Math/Vec4.inl +0 -1152
- package/native/third_party/JoltPhysics/Jolt/Math/Vector.h +0 -211
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/GetPrimitiveTypeOfType.h +0 -54
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.cpp +0 -38
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.h +0 -337
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.cpp +0 -252
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.h +0 -57
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.cpp +0 -165
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.h +0 -57
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.cpp +0 -635
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.h +0 -148
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.cpp +0 -166
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.h +0 -101
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.cpp +0 -418
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.h +0 -55
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.cpp +0 -255
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.h +0 -62
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTypes.h +0 -26
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttribute.h +0 -111
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeEnum.h +0 -67
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeTyped.h +0 -60
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.cpp +0 -15
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.h +0 -170
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.cpp +0 -70
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.h +0 -45
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/AllowedDOFs.h +0 -68
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.cpp +0 -426
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.h +0 -452
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.inl +0 -197
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyAccess.h +0 -68
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyActivationListener.h +0 -28
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp +0 -234
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.h +0 -124
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyFilter.h +0 -130
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyID.h +0 -101
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.cpp +0 -1099
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.h +0 -324
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLock.h +0 -111
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockInterface.h +0 -134
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockMulti.h +0 -120
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.cpp +0 -1220
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.h +0 -403
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyPair.h +0 -36
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyType.h +0 -19
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.cpp +0 -185
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.h +0 -58
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.cpp +0 -92
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.h +0 -308
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.inl +0 -178
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionQuality.h +0 -31
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionType.h +0 -17
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.cpp +0 -354
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.h +0 -159
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.cpp +0 -59
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.h +0 -157
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterID.h +0 -98
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.cpp +0 -1933
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.h +0 -752
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/AABoxCast.h +0 -20
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdgeMode.h +0 -17
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdges.h +0 -114
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BackFaceMode.h +0 -16
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp +0 -16
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.h +0 -109
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp +0 -313
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h +0 -38
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h +0 -148
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h +0 -92
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h +0 -64
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp +0 -629
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h +0 -108
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h +0 -56
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h +0 -35
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h +0 -66
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.cpp +0 -1768
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.h +0 -389
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.cpp +0 -107
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.h +0 -46
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastResult.h +0 -37
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.cpp +0 -223
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.h +0 -49
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollectFacesMode.h +0 -16
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.cpp +0 -155
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.h +0 -56
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollidePointResult.h +0 -25
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShape.h +0 -106
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShapeVsShapePerLeaf.h +0 -94
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVertexIterator.h +0 -110
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h +0 -102
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.cpp +0 -121
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.h +0 -50
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollector.h +0 -109
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollectorImpl.h +0 -219
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.cpp +0 -107
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.h +0 -97
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.cpp +0 -35
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.h +0 -97
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ContactListener.h +0 -143
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.cpp +0 -213
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.h +0 -48
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.cpp +0 -32
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.h +0 -46
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.cpp +0 -38
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.h +0 -130
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/InternalEdgeRemovingCollector.h +0 -279
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp +0 -271
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h +0 -44
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.cpp +0 -448
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.h +0 -77
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.cpp +0 -62
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.h +0 -110
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayer.h +0 -111
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterMask.h +0 -52
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterTable.h +0 -78
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.cpp +0 -35
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.h +0 -57
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.cpp +0 -38
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.h +0 -37
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/RayCast.h +0 -87
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.cpp +0 -318
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.h +0 -115
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.cpp +0 -438
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.h +0 -129
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.cpp +0 -433
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.h +0 -354
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h +0 -461
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.cpp +0 -1311
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.h +0 -202
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.cpp +0 -566
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.h +0 -150
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.cpp +0 -418
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.h +0 -126
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.cpp +0 -87
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.h +0 -80
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.cpp +0 -64
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.h +0 -75
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/GetTrianglesContext.h +0 -248
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp +0 -2754
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.h +0 -380
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.cpp +0 -1305
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.h +0 -228
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp +0 -596
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.h +0 -176
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp +0 -217
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h +0 -140
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.cpp +0 -541
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.h +0 -147
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h +0 -319
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp +0 -333
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h +0 -161
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaleHelpers.h +0 -83
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.cpp +0 -238
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.h +0 -145
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.cpp +0 -325
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.h +0 -466
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.cpp +0 -347
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.h +0 -125
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp +0 -674
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.h +0 -139
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeID.h +0 -138
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeIDPair.h +0 -65
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp +0 -453
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.gliffy +0 -1
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h +0 -135
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp +0 -691
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.h +0 -132
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.cpp +0 -430
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.h +0 -143
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeCast.h +0 -173
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeFilter.h +0 -73
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilter.h +0 -40
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilterWrapper.h +0 -58
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SortReverseAndStore.h +0 -48
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.cpp +0 -180
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.h +0 -194
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/CalculateSolverSteps.h +0 -70
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.cpp +0 -246
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.h +0 -133
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.cpp +0 -73
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.h +0 -243
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.cpp +0 -289
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.h +0 -100
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h +0 -257
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h +0 -682
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h +0 -276
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h +0 -195
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h +0 -222
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h +0 -246
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h +0 -239
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h +0 -196
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h +0 -283
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h +0 -246
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SpringPart.h +0 -169
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h +0 -597
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.cpp +0 -1804
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.h +0 -524
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.cpp +0 -266
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.h +0 -120
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.cpp +0 -215
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.h +0 -96
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.cpp +0 -188
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.h +0 -116
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.cpp +0 -443
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.h +0 -205
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.cpp +0 -43
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.h +0 -66
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.cpp +0 -458
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.h +0 -191
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.cpp +0 -85
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.h +0 -76
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.cpp +0 -308
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.h +0 -54
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.cpp +0 -157
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.h +0 -94
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.cpp +0 -253
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.h +0 -137
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.cpp +0 -189
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.h +0 -118
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.cpp +0 -900
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.h +0 -289
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.cpp +0 -501
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.h +0 -198
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.cpp +0 -35
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.h +0 -70
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.cpp +0 -524
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.h +0 -197
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.cpp +0 -56
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.h +0 -65
- package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.cpp +0 -17
- package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.h +0 -159
- package/native/third_party/JoltPhysics/Jolt/Physics/EActivation.h +0 -16
- package/native/third_party/JoltPhysics/Jolt/Physics/EPhysicsUpdateError.h +0 -37
- package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.cpp +0 -492
- package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.h +0 -144
- package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.cpp +0 -582
- package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.h +0 -187
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsLock.h +0 -169
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.cpp +0 -261
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.h +0 -104
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSettings.h +0 -125
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsStepListener.h +0 -37
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.cpp +0 -2915
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.h +0 -391
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.cpp +0 -25
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.h +0 -176
- package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.cpp +0 -744
- package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.h +0 -245
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyContactListener.h +0 -55
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp +0 -128
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.h +0 -75
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyManifold.h +0 -74
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp +0 -1501
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.h +0 -333
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.cpp +0 -354
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.h +0 -73
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp +0 -1487
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.h +0 -390
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyUpdateContext.h +0 -63
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyVertex.h +0 -36
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorder.h +0 -136
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.cpp +0 -90
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.h +0 -50
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.cpp +0 -306
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.h +0 -119
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.cpp +0 -547
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.h +0 -169
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp +0 -33
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.h +0 -33
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.cpp +0 -376
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.h +0 -146
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.cpp +0 -703
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.h +0 -252
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.cpp +0 -17
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.h +0 -87
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.cpp +0 -81
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.h +0 -39
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.cpp +0 -122
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.h +0 -93
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.cpp +0 -52
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.h +0 -56
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.cpp +0 -159
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.h +0 -87
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.cpp +0 -93
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.h +0 -148
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.cpp +0 -866
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.h +0 -205
- package/native/third_party/JoltPhysics/Jolt/RegisterTypes.cpp +0 -204
- package/native/third_party/JoltPhysics/Jolt/RegisterTypes.h +0 -29
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.cpp +0 -1107
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.h +0 -383
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.cpp +0 -168
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.h +0 -48
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.cpp +0 -158
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.h +0 -130
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.cpp +0 -80
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.h +0 -88
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.cpp +0 -165
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.h +0 -91
- package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.cpp +0 -82
- package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.h +0 -72
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.cpp +0 -237
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.h +0 -145
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.cpp +0 -87
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.h +0 -82
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.cpp +0 -73
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.h +0 -84
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp +0 -139
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.h +0 -52
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.cpp +0 -43
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.h +0 -28
- package/native/third_party/JoltPhysics/LICENSE +0 -7
- package/native/third_party/JoltPhysics/README.md +0 -173
- package/native/third_party/bloom_jolt/CMakeLists.txt +0 -87
- package/native/third_party/bloom_jolt/include/bloom_jolt.h +0 -519
- package/native/third_party/bloom_jolt/src/bloom_jolt.cpp +0 -1780
|
@@ -1,276 +0,0 @@
|
|
|
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/Body/Body.h>
|
|
8
|
-
#include <Jolt/Physics/StateRecorder.h>
|
|
9
|
-
#include <Jolt/Math/Vector.h>
|
|
10
|
-
#include <Jolt/Math/Matrix.h>
|
|
11
|
-
|
|
12
|
-
JPH_NAMESPACE_BEGIN
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
Constrains movement on 2 axis
|
|
16
|
-
|
|
17
|
-
@see "Constraints Derivation for Rigid Body Simulation in 3D" - Daniel Chappuis, section 2.3.1
|
|
18
|
-
|
|
19
|
-
Constraint equation (eq 51):
|
|
20
|
-
|
|
21
|
-
\f[C = \begin{bmatrix} (p_2 - p_1) \cdot n_1 \\ (p_2 - p_1) \cdot n_2\end{bmatrix}\f]
|
|
22
|
-
|
|
23
|
-
Jacobian (transposed) (eq 55):
|
|
24
|
-
|
|
25
|
-
\f[J^T = \begin{bmatrix}
|
|
26
|
-
-n_1 & -n_2 \\
|
|
27
|
-
-(r_1 + u) \times n_1 & -(r_1 + u) \times n_2 \\
|
|
28
|
-
n_1 & n_2 \\
|
|
29
|
-
r_2 \times n_1 & r_2 \times n_2
|
|
30
|
-
\end{bmatrix}\f]
|
|
31
|
-
|
|
32
|
-
Used terms (here and below, everything in world space):\n
|
|
33
|
-
n1, n2 = constraint axis (normalized).\n
|
|
34
|
-
p1, p2 = constraint points.\n
|
|
35
|
-
r1 = p1 - x1.\n
|
|
36
|
-
r2 = p2 - x2.\n
|
|
37
|
-
u = x2 + r2 - x1 - r1 = p2 - p1.\n
|
|
38
|
-
x1, x2 = center of mass for the bodies.\n
|
|
39
|
-
v = [v1, w1, v2, w2].\n
|
|
40
|
-
v1, v2 = linear velocity of body 1 and 2.\n
|
|
41
|
-
w1, w2 = angular velocity of body 1 and 2.\n
|
|
42
|
-
M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].\n
|
|
43
|
-
\f$K^{-1} = \left( J M^{-1} J^T \right)^{-1}\f$ = effective mass.\n
|
|
44
|
-
b = velocity bias.\n
|
|
45
|
-
\f$\beta\f$ = baumgarte constant.
|
|
46
|
-
**/
|
|
47
|
-
class DualAxisConstraintPart
|
|
48
|
-
{
|
|
49
|
-
public:
|
|
50
|
-
using Vec2 = Vector<2>;
|
|
51
|
-
using Mat22 = Matrix<2, 2>;
|
|
52
|
-
|
|
53
|
-
private:
|
|
54
|
-
/// Internal helper function to update velocities of bodies after Lagrange multiplier is calculated
|
|
55
|
-
JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, const Vec2 &inLambda) const
|
|
56
|
-
{
|
|
57
|
-
// Apply impulse if delta is not zero
|
|
58
|
-
if (!inLambda.IsZero())
|
|
59
|
-
{
|
|
60
|
-
// Calculate velocity change due to constraint
|
|
61
|
-
//
|
|
62
|
-
// Impulse:
|
|
63
|
-
// P = J^T lambda
|
|
64
|
-
//
|
|
65
|
-
// Euler velocity integration:
|
|
66
|
-
// v' = v + M^-1 P
|
|
67
|
-
Vec3 impulse = inN1 * inLambda[0] + inN2 * inLambda[1];
|
|
68
|
-
if (ioBody1.IsDynamic())
|
|
69
|
-
{
|
|
70
|
-
MotionProperties *mp1 = ioBody1.GetMotionProperties();
|
|
71
|
-
mp1->SubLinearVelocityStep(mp1->GetInverseMass() * impulse);
|
|
72
|
-
mp1->SubAngularVelocityStep(mInvI1_R1PlusUxN1 * inLambda[0] + mInvI1_R1PlusUxN2 * inLambda[1]);
|
|
73
|
-
}
|
|
74
|
-
if (ioBody2.IsDynamic())
|
|
75
|
-
{
|
|
76
|
-
MotionProperties *mp2 = ioBody2.GetMotionProperties();
|
|
77
|
-
mp2->AddLinearVelocityStep(mp2->GetInverseMass() * impulse);
|
|
78
|
-
mp2->AddAngularVelocityStep(mInvI2_R2xN1 * inLambda[0] + mInvI2_R2xN2 * inLambda[1]);
|
|
79
|
-
}
|
|
80
|
-
return true;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/// Internal helper function to calculate the lagrange multiplier
|
|
87
|
-
inline void CalculateLagrangeMultiplier(const Body &inBody1, const Body &inBody2, Vec3Arg inN1, Vec3Arg inN2, Vec2 &outLambda) const
|
|
88
|
-
{
|
|
89
|
-
// Calculate lagrange multiplier:
|
|
90
|
-
//
|
|
91
|
-
// lambda = -K^-1 (J v + b)
|
|
92
|
-
Vec3 delta_lin = inBody1.GetLinearVelocity() - inBody2.GetLinearVelocity();
|
|
93
|
-
Vec2 jv;
|
|
94
|
-
jv[0] = inN1.Dot(delta_lin) + mR1PlusUxN1.Dot(inBody1.GetAngularVelocity()) - mR2xN1.Dot(inBody2.GetAngularVelocity());
|
|
95
|
-
jv[1] = inN2.Dot(delta_lin) + mR1PlusUxN2.Dot(inBody1.GetAngularVelocity()) - mR2xN2.Dot(inBody2.GetAngularVelocity());
|
|
96
|
-
outLambda = mEffectiveMass * jv;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
public:
|
|
100
|
-
/// Calculate properties used during the functions below
|
|
101
|
-
/// All input vectors are in world space
|
|
102
|
-
inline void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inR1PlusU, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inR2, Vec3Arg inN1, Vec3Arg inN2)
|
|
103
|
-
{
|
|
104
|
-
JPH_ASSERT(inN1.IsNormalized(1.0e-5f));
|
|
105
|
-
JPH_ASSERT(inN2.IsNormalized(1.0e-5f));
|
|
106
|
-
|
|
107
|
-
// Calculate properties used during constraint solving
|
|
108
|
-
mR1PlusUxN1 = inR1PlusU.Cross(inN1);
|
|
109
|
-
mR1PlusUxN2 = inR1PlusU.Cross(inN2);
|
|
110
|
-
mR2xN1 = inR2.Cross(inN1);
|
|
111
|
-
mR2xN2 = inR2.Cross(inN2);
|
|
112
|
-
|
|
113
|
-
// Calculate effective mass: K^-1 = (J M^-1 J^T)^-1, eq 59
|
|
114
|
-
Mat22 inv_effective_mass;
|
|
115
|
-
if (inBody1.IsDynamic())
|
|
116
|
-
{
|
|
117
|
-
const MotionProperties *mp1 = inBody1.GetMotionProperties();
|
|
118
|
-
Mat44 inv_i1 = mp1->GetInverseInertiaForRotation(inRotation1);
|
|
119
|
-
mInvI1_R1PlusUxN1 = inv_i1.Multiply3x3(mR1PlusUxN1);
|
|
120
|
-
mInvI1_R1PlusUxN2 = inv_i1.Multiply3x3(mR1PlusUxN2);
|
|
121
|
-
|
|
122
|
-
inv_effective_mass(0, 0) = mp1->GetInverseMass() + mR1PlusUxN1.Dot(mInvI1_R1PlusUxN1);
|
|
123
|
-
inv_effective_mass(0, 1) = mR1PlusUxN1.Dot(mInvI1_R1PlusUxN2);
|
|
124
|
-
inv_effective_mass(1, 0) = mR1PlusUxN2.Dot(mInvI1_R1PlusUxN1);
|
|
125
|
-
inv_effective_mass(1, 1) = mp1->GetInverseMass() + mR1PlusUxN2.Dot(mInvI1_R1PlusUxN2);
|
|
126
|
-
}
|
|
127
|
-
else
|
|
128
|
-
{
|
|
129
|
-
JPH_IF_DEBUG(mInvI1_R1PlusUxN1 = Vec3::sNaN();)
|
|
130
|
-
JPH_IF_DEBUG(mInvI1_R1PlusUxN2 = Vec3::sNaN();)
|
|
131
|
-
|
|
132
|
-
inv_effective_mass = Mat22::sZero();
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (inBody2.IsDynamic())
|
|
136
|
-
{
|
|
137
|
-
const MotionProperties *mp2 = inBody2.GetMotionProperties();
|
|
138
|
-
Mat44 inv_i2 = mp2->GetInverseInertiaForRotation(inRotation2);
|
|
139
|
-
mInvI2_R2xN1 = inv_i2.Multiply3x3(mR2xN1);
|
|
140
|
-
mInvI2_R2xN2 = inv_i2.Multiply3x3(mR2xN2);
|
|
141
|
-
|
|
142
|
-
inv_effective_mass(0, 0) += mp2->GetInverseMass() + mR2xN1.Dot(mInvI2_R2xN1);
|
|
143
|
-
inv_effective_mass(0, 1) += mR2xN1.Dot(mInvI2_R2xN2);
|
|
144
|
-
inv_effective_mass(1, 0) += mR2xN2.Dot(mInvI2_R2xN1);
|
|
145
|
-
inv_effective_mass(1, 1) += mp2->GetInverseMass() + mR2xN2.Dot(mInvI2_R2xN2);
|
|
146
|
-
}
|
|
147
|
-
else
|
|
148
|
-
{
|
|
149
|
-
JPH_IF_DEBUG(mInvI2_R2xN1 = Vec3::sNaN();)
|
|
150
|
-
JPH_IF_DEBUG(mInvI2_R2xN2 = Vec3::sNaN();)
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
if (!mEffectiveMass.SetInversed(inv_effective_mass))
|
|
154
|
-
Deactivate();
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/// Deactivate this constraint
|
|
158
|
-
inline void Deactivate()
|
|
159
|
-
{
|
|
160
|
-
mEffectiveMass.SetZero();
|
|
161
|
-
mTotalLambda.SetZero();
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
/// Check if constraint is active
|
|
165
|
-
inline bool IsActive() const
|
|
166
|
-
{
|
|
167
|
-
return !mEffectiveMass.IsZero();
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/// Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses
|
|
171
|
-
/// All input vectors are in world space
|
|
172
|
-
inline void WarmStart(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2, float inWarmStartImpulseRatio)
|
|
173
|
-
{
|
|
174
|
-
mTotalLambda *= inWarmStartImpulseRatio;
|
|
175
|
-
ApplyVelocityStep(ioBody1, ioBody2, inN1, inN2, mTotalLambda);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/// Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.
|
|
179
|
-
/// All input vectors are in world space
|
|
180
|
-
inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inN1, Vec3Arg inN2)
|
|
181
|
-
{
|
|
182
|
-
Vec2 lambda;
|
|
183
|
-
CalculateLagrangeMultiplier(ioBody1, ioBody2, inN1, inN2, lambda);
|
|
184
|
-
|
|
185
|
-
// Store accumulated lambda
|
|
186
|
-
mTotalLambda += lambda;
|
|
187
|
-
|
|
188
|
-
return ApplyVelocityStep(ioBody1, ioBody2, inN1, inN2, lambda);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/// Iteratively update the position constraint. Makes sure C(...) = 0.
|
|
192
|
-
/// All input vectors are in world space
|
|
193
|
-
inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, Vec3Arg inU, Vec3Arg inN1, Vec3Arg inN2, float inBaumgarte) const
|
|
194
|
-
{
|
|
195
|
-
Vec2 c;
|
|
196
|
-
c[0] = inU.Dot(inN1);
|
|
197
|
-
c[1] = inU.Dot(inN2);
|
|
198
|
-
if (!c.IsZero())
|
|
199
|
-
{
|
|
200
|
-
// Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
|
|
201
|
-
//
|
|
202
|
-
// lambda = -K^-1 * beta / dt * C
|
|
203
|
-
//
|
|
204
|
-
// We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
|
|
205
|
-
Vec2 lambda = -inBaumgarte * (mEffectiveMass * c);
|
|
206
|
-
|
|
207
|
-
// Directly integrate velocity change for one time step
|
|
208
|
-
//
|
|
209
|
-
// Euler velocity integration:
|
|
210
|
-
// dv = M^-1 P
|
|
211
|
-
//
|
|
212
|
-
// Impulse:
|
|
213
|
-
// P = J^T lambda
|
|
214
|
-
//
|
|
215
|
-
// Euler position integration:
|
|
216
|
-
// x' = x + dv * dt
|
|
217
|
-
//
|
|
218
|
-
// Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
|
|
219
|
-
// Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
|
|
220
|
-
// stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
|
|
221
|
-
// integrate + a position integrate and then discard the velocity change.
|
|
222
|
-
Vec3 impulse = inN1 * lambda[0] + inN2 * lambda[1];
|
|
223
|
-
if (ioBody1.IsDynamic())
|
|
224
|
-
{
|
|
225
|
-
ioBody1.SubPositionStep(ioBody1.GetMotionProperties()->GetInverseMass() * impulse);
|
|
226
|
-
ioBody1.SubRotationStep(mInvI1_R1PlusUxN1 * lambda[0] + mInvI1_R1PlusUxN2 * lambda[1]);
|
|
227
|
-
}
|
|
228
|
-
if (ioBody2.IsDynamic())
|
|
229
|
-
{
|
|
230
|
-
ioBody2.AddPositionStep(ioBody2.GetMotionProperties()->GetInverseMass() * impulse);
|
|
231
|
-
ioBody2.AddRotationStep(mInvI2_R2xN1 * lambda[0] + mInvI2_R2xN2 * lambda[1]);
|
|
232
|
-
}
|
|
233
|
-
return true;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/// Override total lagrange multiplier, can be used to set the initial value for warm starting
|
|
240
|
-
inline void SetTotalLambda(const Vec2 &inLambda)
|
|
241
|
-
{
|
|
242
|
-
mTotalLambda = inLambda;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
/// Return lagrange multiplier
|
|
246
|
-
inline const Vec2 & GetTotalLambda() const
|
|
247
|
-
{
|
|
248
|
-
return mTotalLambda;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
/// Save state of this constraint part
|
|
252
|
-
void SaveState(StateRecorder &inStream) const
|
|
253
|
-
{
|
|
254
|
-
inStream.Write(mTotalLambda);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/// Restore state of this constraint part
|
|
258
|
-
void RestoreState(StateRecorder &inStream)
|
|
259
|
-
{
|
|
260
|
-
inStream.Read(mTotalLambda);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
private:
|
|
264
|
-
Vec3 mR1PlusUxN1;
|
|
265
|
-
Vec3 mR1PlusUxN2;
|
|
266
|
-
Vec3 mR2xN1;
|
|
267
|
-
Vec3 mR2xN2;
|
|
268
|
-
Vec3 mInvI1_R1PlusUxN1;
|
|
269
|
-
Vec3 mInvI1_R1PlusUxN2;
|
|
270
|
-
Vec3 mInvI2_R2xN1;
|
|
271
|
-
Vec3 mInvI2_R2xN2;
|
|
272
|
-
Mat22 mEffectiveMass;
|
|
273
|
-
Vec2 mTotalLambda { Vec2::sZero() };
|
|
274
|
-
};
|
|
275
|
-
|
|
276
|
-
JPH_NAMESPACE_END
|
package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
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/Body/Body.h>
|
|
8
|
-
#include <Jolt/Physics/StateRecorder.h>
|
|
9
|
-
|
|
10
|
-
JPH_NAMESPACE_BEGIN
|
|
11
|
-
|
|
12
|
-
/// Constraint that constrains two rotations using a gear (rotating in opposite direction)
|
|
13
|
-
///
|
|
14
|
-
/// Constraint equation:
|
|
15
|
-
///
|
|
16
|
-
/// C = Rotation1(t) + r Rotation2(t)
|
|
17
|
-
///
|
|
18
|
-
/// Derivative:
|
|
19
|
-
///
|
|
20
|
-
/// d/dt C = 0
|
|
21
|
-
/// <=> w1 . a + r w2 . b = 0
|
|
22
|
-
///
|
|
23
|
-
/// Jacobian:
|
|
24
|
-
///
|
|
25
|
-
/// \f[J = \begin{bmatrix}0 & a^T & 0 & r b^T\end{bmatrix}\f]
|
|
26
|
-
///
|
|
27
|
-
/// Used terms (here and below, everything in world space):\n
|
|
28
|
-
/// a = axis around which body 1 rotates (normalized).\n
|
|
29
|
-
/// b = axis along which body 2 slides (normalized).\n
|
|
30
|
-
/// Rotation1(t) = rotation around a of body 1.\n
|
|
31
|
-
/// Rotation2(t) = rotation around b of body 2.\n
|
|
32
|
-
/// r = ratio between rotation for body 1 and 2.\n
|
|
33
|
-
/// v = [v1, w1, v2, w2].\n
|
|
34
|
-
/// v1, v2 = linear velocity of body 1 and 2.\n
|
|
35
|
-
/// w1, w2 = angular velocity of body 1 and 2.\n
|
|
36
|
-
/// M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].\n
|
|
37
|
-
/// \f$K^{-1} = \left( J M^{-1} J^T \right)^{-1}\f$ = effective mass.\n
|
|
38
|
-
/// \f$\beta\f$ = baumgarte constant.
|
|
39
|
-
class GearConstraintPart
|
|
40
|
-
{
|
|
41
|
-
/// Internal helper function to update velocities of bodies after Lagrange multiplier is calculated
|
|
42
|
-
JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, float inLambda) const
|
|
43
|
-
{
|
|
44
|
-
// Apply impulse if delta is not zero
|
|
45
|
-
if (inLambda != 0.0f)
|
|
46
|
-
{
|
|
47
|
-
// Calculate velocity change due to constraint
|
|
48
|
-
//
|
|
49
|
-
// Impulse:
|
|
50
|
-
// P = J^T lambda
|
|
51
|
-
//
|
|
52
|
-
// Euler velocity integration:
|
|
53
|
-
// v' = v + M^-1 P
|
|
54
|
-
ioBody1.GetMotionProperties()->AddAngularVelocityStep(inLambda * mInvI1_A);
|
|
55
|
-
ioBody2.GetMotionProperties()->AddAngularVelocityStep(inLambda * mInvI2_B);
|
|
56
|
-
return true;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return false;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
public:
|
|
63
|
-
/// Calculate properties used during the functions below
|
|
64
|
-
/// @param inBody1 The first body that this constraint is attached to
|
|
65
|
-
/// @param inBody2 The second body that this constraint is attached to
|
|
66
|
-
/// @param inWorldSpaceHingeAxis1 The axis around which body 1 rotates
|
|
67
|
-
/// @param inWorldSpaceHingeAxis2 The axis around which body 2 rotates
|
|
68
|
-
/// @param inRatio The ratio between rotation and translation
|
|
69
|
-
inline void CalculateConstraintProperties(const Body &inBody1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)
|
|
70
|
-
{
|
|
71
|
-
JPH_ASSERT(inWorldSpaceHingeAxis1.IsNormalized(1.0e-4f));
|
|
72
|
-
JPH_ASSERT(inWorldSpaceHingeAxis2.IsNormalized(1.0e-4f));
|
|
73
|
-
|
|
74
|
-
// Calculate: I1^-1 a
|
|
75
|
-
mInvI1_A = inBody1.GetMotionProperties()->MultiplyWorldSpaceInverseInertiaByVector(inBody1.GetRotation(), inWorldSpaceHingeAxis1);
|
|
76
|
-
|
|
77
|
-
// Calculate: I2^-1 b
|
|
78
|
-
mInvI2_B = inBody2.GetMotionProperties()->MultiplyWorldSpaceInverseInertiaByVector(inBody2.GetRotation(), inWorldSpaceHingeAxis2);
|
|
79
|
-
|
|
80
|
-
// K^-1 = 1 / (J M^-1 J^T) = 1 / (a^T I1^-1 a + r^2 * b^T I2^-1 b)
|
|
81
|
-
float inv_effective_mass = (inWorldSpaceHingeAxis1.Dot(mInvI1_A) + inWorldSpaceHingeAxis2.Dot(mInvI2_B) * Square(inRatio));
|
|
82
|
-
if (inv_effective_mass == 0.0f)
|
|
83
|
-
Deactivate();
|
|
84
|
-
else
|
|
85
|
-
mEffectiveMass = 1.0f / inv_effective_mass;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/// Deactivate this constraint
|
|
89
|
-
inline void Deactivate()
|
|
90
|
-
{
|
|
91
|
-
mEffectiveMass = 0.0f;
|
|
92
|
-
mTotalLambda = 0.0f;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/// Check if constraint is active
|
|
96
|
-
inline bool IsActive() const
|
|
97
|
-
{
|
|
98
|
-
return mEffectiveMass != 0.0f;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/// Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses
|
|
102
|
-
/// @param ioBody1 The first body that this constraint is attached to
|
|
103
|
-
/// @param ioBody2 The second body that this constraint is attached to
|
|
104
|
-
/// @param inWarmStartImpulseRatio Ratio of new step to old time step (dt_new / dt_old) for scaling the lagrange multiplier of the previous frame
|
|
105
|
-
inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
|
|
106
|
-
{
|
|
107
|
-
mTotalLambda *= inWarmStartImpulseRatio;
|
|
108
|
-
ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/// Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.
|
|
112
|
-
/// @param ioBody1 The first body that this constraint is attached to
|
|
113
|
-
/// @param ioBody2 The second body that this constraint is attached to
|
|
114
|
-
/// @param inWorldSpaceHingeAxis1 The axis around which body 1 rotates
|
|
115
|
-
/// @param inWorldSpaceHingeAxis2 The axis around which body 2 rotates
|
|
116
|
-
/// @param inRatio The ratio between rotation and translation
|
|
117
|
-
inline bool SolveVelocityConstraint(Body &ioBody1, Vec3Arg inWorldSpaceHingeAxis1, Body &ioBody2, Vec3Arg inWorldSpaceHingeAxis2, float inRatio)
|
|
118
|
-
{
|
|
119
|
-
// Lagrange multiplier is:
|
|
120
|
-
//
|
|
121
|
-
// lambda = -K^-1 (J v + b)
|
|
122
|
-
float lambda = -mEffectiveMass * (inWorldSpaceHingeAxis1.Dot(ioBody1.GetAngularVelocity()) + inRatio * inWorldSpaceHingeAxis2.Dot(ioBody2.GetAngularVelocity()));
|
|
123
|
-
mTotalLambda += lambda; // Store accumulated impulse
|
|
124
|
-
|
|
125
|
-
return ApplyVelocityStep(ioBody1, ioBody2, lambda);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/// Return lagrange multiplier
|
|
129
|
-
float GetTotalLambda() const
|
|
130
|
-
{
|
|
131
|
-
return mTotalLambda;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/// Iteratively update the position constraint. Makes sure C(...) == 0.
|
|
135
|
-
/// @param ioBody1 The first body that this constraint is attached to
|
|
136
|
-
/// @param ioBody2 The second body that this constraint is attached to
|
|
137
|
-
/// @param inC Value of the constraint equation (C)
|
|
138
|
-
/// @param inBaumgarte Baumgarte constant (fraction of the error to correct)
|
|
139
|
-
inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inC, float inBaumgarte) const
|
|
140
|
-
{
|
|
141
|
-
// Only apply position constraint when the constraint is hard, otherwise the velocity bias will fix the constraint
|
|
142
|
-
if (inC != 0.0f)
|
|
143
|
-
{
|
|
144
|
-
// Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
|
|
145
|
-
//
|
|
146
|
-
// lambda = -K^-1 * beta / dt * C
|
|
147
|
-
//
|
|
148
|
-
// We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
|
|
149
|
-
float lambda = -mEffectiveMass * inBaumgarte * inC;
|
|
150
|
-
|
|
151
|
-
// Directly integrate velocity change for one time step
|
|
152
|
-
//
|
|
153
|
-
// Euler velocity integration:
|
|
154
|
-
// dv = M^-1 P
|
|
155
|
-
//
|
|
156
|
-
// Impulse:
|
|
157
|
-
// P = J^T lambda
|
|
158
|
-
//
|
|
159
|
-
// Euler position integration:
|
|
160
|
-
// x' = x + dv * dt
|
|
161
|
-
//
|
|
162
|
-
// Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
|
|
163
|
-
// Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
|
|
164
|
-
// stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
|
|
165
|
-
// integrate + a position integrate and then discard the velocity change.
|
|
166
|
-
if (ioBody1.IsDynamic())
|
|
167
|
-
ioBody1.AddRotationStep(lambda * mInvI1_A);
|
|
168
|
-
if (ioBody2.IsDynamic())
|
|
169
|
-
ioBody2.AddRotationStep(lambda * mInvI2_B);
|
|
170
|
-
return true;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
/// Save state of this constraint part
|
|
177
|
-
void SaveState(StateRecorder &inStream) const
|
|
178
|
-
{
|
|
179
|
-
inStream.Write(mTotalLambda);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/// Restore state of this constraint part
|
|
183
|
-
void RestoreState(StateRecorder &inStream)
|
|
184
|
-
{
|
|
185
|
-
inStream.Read(mTotalLambda);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
private:
|
|
189
|
-
Vec3 mInvI1_A;
|
|
190
|
-
Vec3 mInvI2_B;
|
|
191
|
-
float mEffectiveMass = 0.0f;
|
|
192
|
-
float mTotalLambda = 0.0f;
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
JPH_NAMESPACE_END
|
|
@@ -1,222 +0,0 @@
|
|
|
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/Body/Body.h>
|
|
8
|
-
#include <Jolt/Physics/StateRecorder.h>
|
|
9
|
-
#include <Jolt/Math/Vector.h>
|
|
10
|
-
#include <Jolt/Math/Matrix.h>
|
|
11
|
-
|
|
12
|
-
JPH_NAMESPACE_BEGIN
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
Constrains rotation around 2 axis so that it only allows rotation around 1 axis
|
|
16
|
-
|
|
17
|
-
Based on: "Constraints Derivation for Rigid Body Simulation in 3D" - Daniel Chappuis, section 2.4.1
|
|
18
|
-
|
|
19
|
-
Constraint equation (eq 87):
|
|
20
|
-
|
|
21
|
-
\f[C = \begin{bmatrix}a_1 \cdot b_2 \\ a_1 \cdot c_2\end{bmatrix}\f]
|
|
22
|
-
|
|
23
|
-
Jacobian (eq 90):
|
|
24
|
-
|
|
25
|
-
\f[J = \begin{bmatrix}
|
|
26
|
-
0 & -b_2 \times a_1 & 0 & b_2 \times a_1 \\
|
|
27
|
-
0 & -c_2 \times a_1 & 0 & c2 \times a_1
|
|
28
|
-
\end{bmatrix}\f]
|
|
29
|
-
|
|
30
|
-
Used terms (here and below, everything in world space):\n
|
|
31
|
-
a1 = hinge axis on body 1.\n
|
|
32
|
-
b2, c2 = axis perpendicular to hinge axis on body 2.\n
|
|
33
|
-
x1, x2 = center of mass for the bodies.\n
|
|
34
|
-
v = [v1, w1, v2, w2].\n
|
|
35
|
-
v1, v2 = linear velocity of body 1 and 2.\n
|
|
36
|
-
w1, w2 = angular velocity of body 1 and 2.\n
|
|
37
|
-
M = mass matrix, a diagonal matrix of the mass and inertia with diagonal [m1, I1, m2, I2].\n
|
|
38
|
-
\f$K^{-1} = \left( J M^{-1} J^T \right)^{-1}\f$ = effective mass.\n
|
|
39
|
-
b = velocity bias.\n
|
|
40
|
-
\f$\beta\f$ = baumgarte constant.\n
|
|
41
|
-
E = identity matrix.
|
|
42
|
-
**/
|
|
43
|
-
class HingeRotationConstraintPart
|
|
44
|
-
{
|
|
45
|
-
public:
|
|
46
|
-
using Vec2 = Vector<2>;
|
|
47
|
-
using Mat22 = Matrix<2, 2>;
|
|
48
|
-
|
|
49
|
-
private:
|
|
50
|
-
/// Internal helper function to update velocities of bodies after Lagrange multiplier is calculated
|
|
51
|
-
JPH_INLINE bool ApplyVelocityStep(Body &ioBody1, Body &ioBody2, const Vec2 &inLambda) const
|
|
52
|
-
{
|
|
53
|
-
// Apply impulse if delta is not zero
|
|
54
|
-
if (!inLambda.IsZero())
|
|
55
|
-
{
|
|
56
|
-
// Calculate velocity change due to constraint
|
|
57
|
-
//
|
|
58
|
-
// Impulse:
|
|
59
|
-
// P = J^T lambda
|
|
60
|
-
//
|
|
61
|
-
// Euler velocity integration:
|
|
62
|
-
// v' = v + M^-1 P
|
|
63
|
-
Vec3 impulse = mB2xA1 * inLambda[0] + mC2xA1 * inLambda[1];
|
|
64
|
-
if (ioBody1.IsDynamic())
|
|
65
|
-
ioBody1.GetMotionProperties()->SubAngularVelocityStep(mInvI1.Multiply3x3(impulse));
|
|
66
|
-
if (ioBody2.IsDynamic())
|
|
67
|
-
ioBody2.GetMotionProperties()->AddAngularVelocityStep(mInvI2.Multiply3x3(impulse));
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return false;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
public:
|
|
75
|
-
/// Calculate properties used during the functions below
|
|
76
|
-
inline void CalculateConstraintProperties(const Body &inBody1, Mat44Arg inRotation1, Vec3Arg inWorldSpaceHingeAxis1, const Body &inBody2, Mat44Arg inRotation2, Vec3Arg inWorldSpaceHingeAxis2)
|
|
77
|
-
{
|
|
78
|
-
JPH_ASSERT(inWorldSpaceHingeAxis1.IsNormalized(1.0e-5f));
|
|
79
|
-
JPH_ASSERT(inWorldSpaceHingeAxis2.IsNormalized(1.0e-5f));
|
|
80
|
-
|
|
81
|
-
// Calculate hinge axis in world space
|
|
82
|
-
mA1 = inWorldSpaceHingeAxis1;
|
|
83
|
-
Vec3 a2 = inWorldSpaceHingeAxis2;
|
|
84
|
-
float dot = mA1.Dot(a2);
|
|
85
|
-
if (dot <= 1.0e-3f)
|
|
86
|
-
{
|
|
87
|
-
// World space axes are more than 90 degrees apart, get a perpendicular vector in the plane formed by mA1 and a2 as hinge axis until the rotation is less than 90 degrees
|
|
88
|
-
Vec3 perp = a2 - dot * mA1;
|
|
89
|
-
if (perp.LengthSq() < 1.0e-6f)
|
|
90
|
-
{
|
|
91
|
-
// mA1 ~ -a2, take random perpendicular
|
|
92
|
-
perp = mA1.GetNormalizedPerpendicular();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Blend in a little bit from mA1 so we're less than 90 degrees apart
|
|
96
|
-
a2 = (0.99f * perp.Normalized() + 0.01f * mA1).Normalized();
|
|
97
|
-
}
|
|
98
|
-
mB2 = a2.GetNormalizedPerpendicular();
|
|
99
|
-
mC2 = a2.Cross(mB2);
|
|
100
|
-
|
|
101
|
-
// Calculate properties used during constraint solving
|
|
102
|
-
mInvI1 = inBody1.IsDynamic()? inBody1.GetMotionProperties()->GetInverseInertiaForRotation(inRotation1) : Mat44::sZero();
|
|
103
|
-
mInvI2 = inBody2.IsDynamic()? inBody2.GetMotionProperties()->GetInverseInertiaForRotation(inRotation2) : Mat44::sZero();
|
|
104
|
-
mB2xA1 = mB2.Cross(mA1);
|
|
105
|
-
mC2xA1 = mC2.Cross(mA1);
|
|
106
|
-
|
|
107
|
-
// Calculate effective mass: K^-1 = (J M^-1 J^T)^-1
|
|
108
|
-
Mat44 summed_inv_inertia = mInvI1 + mInvI2;
|
|
109
|
-
Mat22 inv_effective_mass;
|
|
110
|
-
inv_effective_mass(0, 0) = mB2xA1.Dot(summed_inv_inertia.Multiply3x3(mB2xA1));
|
|
111
|
-
inv_effective_mass(0, 1) = mB2xA1.Dot(summed_inv_inertia.Multiply3x3(mC2xA1));
|
|
112
|
-
inv_effective_mass(1, 0) = mC2xA1.Dot(summed_inv_inertia.Multiply3x3(mB2xA1));
|
|
113
|
-
inv_effective_mass(1, 1) = mC2xA1.Dot(summed_inv_inertia.Multiply3x3(mC2xA1));
|
|
114
|
-
if (!mEffectiveMass.SetInversed(inv_effective_mass))
|
|
115
|
-
Deactivate();
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/// Deactivate this constraint
|
|
119
|
-
inline void Deactivate()
|
|
120
|
-
{
|
|
121
|
-
mEffectiveMass.SetZero();
|
|
122
|
-
mTotalLambda.SetZero();
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/// Must be called from the WarmStartVelocityConstraint call to apply the previous frame's impulses
|
|
126
|
-
inline void WarmStart(Body &ioBody1, Body &ioBody2, float inWarmStartImpulseRatio)
|
|
127
|
-
{
|
|
128
|
-
mTotalLambda *= inWarmStartImpulseRatio;
|
|
129
|
-
ApplyVelocityStep(ioBody1, ioBody2, mTotalLambda);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/// Iteratively update the velocity constraint. Makes sure d/dt C(...) = 0, where C is the constraint equation.
|
|
133
|
-
inline bool SolveVelocityConstraint(Body &ioBody1, Body &ioBody2)
|
|
134
|
-
{
|
|
135
|
-
// Calculate lagrange multiplier:
|
|
136
|
-
//
|
|
137
|
-
// lambda = -K^-1 (J v + b)
|
|
138
|
-
Vec3 delta_ang = ioBody1.GetAngularVelocity() - ioBody2.GetAngularVelocity();
|
|
139
|
-
Vec2 jv;
|
|
140
|
-
jv[0] = mB2xA1.Dot(delta_ang);
|
|
141
|
-
jv[1] = mC2xA1.Dot(delta_ang);
|
|
142
|
-
Vec2 lambda = mEffectiveMass * jv;
|
|
143
|
-
|
|
144
|
-
// Store accumulated lambda
|
|
145
|
-
mTotalLambda += lambda;
|
|
146
|
-
|
|
147
|
-
return ApplyVelocityStep(ioBody1, ioBody2, lambda);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/// Iteratively update the position constraint. Makes sure C(...) = 0.
|
|
151
|
-
inline bool SolvePositionConstraint(Body &ioBody1, Body &ioBody2, float inBaumgarte) const
|
|
152
|
-
{
|
|
153
|
-
// Constraint needs Axis of body 1 perpendicular to both B and C from body 2 (which are both perpendicular to the Axis of body 2)
|
|
154
|
-
Vec2 c;
|
|
155
|
-
c[0] = mA1.Dot(mB2);
|
|
156
|
-
c[1] = mA1.Dot(mC2);
|
|
157
|
-
if (!c.IsZero())
|
|
158
|
-
{
|
|
159
|
-
// Calculate lagrange multiplier (lambda) for Baumgarte stabilization:
|
|
160
|
-
//
|
|
161
|
-
// lambda = -K^-1 * beta / dt * C
|
|
162
|
-
//
|
|
163
|
-
// We should divide by inDeltaTime, but we should multiply by inDeltaTime in the Euler step below so they're cancelled out
|
|
164
|
-
Vec2 lambda = -inBaumgarte * (mEffectiveMass * c);
|
|
165
|
-
|
|
166
|
-
// Directly integrate velocity change for one time step
|
|
167
|
-
//
|
|
168
|
-
// Euler velocity integration:
|
|
169
|
-
// dv = M^-1 P
|
|
170
|
-
//
|
|
171
|
-
// Impulse:
|
|
172
|
-
// P = J^T lambda
|
|
173
|
-
//
|
|
174
|
-
// Euler position integration:
|
|
175
|
-
// x' = x + dv * dt
|
|
176
|
-
//
|
|
177
|
-
// Note we don't accumulate velocities for the stabilization. This is using the approach described in 'Modeling and
|
|
178
|
-
// Solving Constraints' by Erin Catto presented at GDC 2007. On slide 78 it is suggested to split up the Baumgarte
|
|
179
|
-
// stabilization for positional drift so that it does not actually add to the momentum. We combine an Euler velocity
|
|
180
|
-
// integrate + a position integrate and then discard the velocity change.
|
|
181
|
-
Vec3 impulse = mB2xA1 * lambda[0] + mC2xA1 * lambda[1];
|
|
182
|
-
if (ioBody1.IsDynamic())
|
|
183
|
-
ioBody1.SubRotationStep(mInvI1.Multiply3x3(impulse));
|
|
184
|
-
if (ioBody2.IsDynamic())
|
|
185
|
-
ioBody2.AddRotationStep(mInvI2.Multiply3x3(impulse));
|
|
186
|
-
return true;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
return false;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/// Return lagrange multiplier
|
|
193
|
-
const Vec2 & GetTotalLambda() const
|
|
194
|
-
{
|
|
195
|
-
return mTotalLambda;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/// Save state of this constraint part
|
|
199
|
-
void SaveState(StateRecorder &inStream) const
|
|
200
|
-
{
|
|
201
|
-
inStream.Write(mTotalLambda);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/// Restore state of this constraint part
|
|
205
|
-
void RestoreState(StateRecorder &inStream)
|
|
206
|
-
{
|
|
207
|
-
inStream.Read(mTotalLambda);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
private:
|
|
211
|
-
Vec3 mA1; ///< World space hinge axis for body 1
|
|
212
|
-
Vec3 mB2; ///< World space perpendiculars of hinge axis for body 2
|
|
213
|
-
Vec3 mC2;
|
|
214
|
-
Mat44 mInvI1;
|
|
215
|
-
Mat44 mInvI2;
|
|
216
|
-
Vec3 mB2xA1;
|
|
217
|
-
Vec3 mC2xA1;
|
|
218
|
-
Mat22 mEffectiveMass;
|
|
219
|
-
Vec2 mTotalLambda { Vec2::sZero() };
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
JPH_NAMESPACE_END
|