@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,143 +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/Collision/Shape/SubShapeIDPair.h>
|
|
8
|
-
#include <Jolt/Core/StaticArray.h>
|
|
9
|
-
|
|
10
|
-
JPH_NAMESPACE_BEGIN
|
|
11
|
-
|
|
12
|
-
class Body;
|
|
13
|
-
class CollideShapeResult;
|
|
14
|
-
|
|
15
|
-
/// Array of contact points
|
|
16
|
-
using ContactPoints = StaticArray<Vec3, 64>;
|
|
17
|
-
|
|
18
|
-
/// Manifold class, describes the contact surface between two bodies
|
|
19
|
-
class ContactManifold
|
|
20
|
-
{
|
|
21
|
-
public:
|
|
22
|
-
/// Swaps shape 1 and 2
|
|
23
|
-
ContactManifold SwapShapes() const { return { mBaseOffset, -mWorldSpaceNormal, mPenetrationDepth, mSubShapeID2, mSubShapeID1, mRelativeContactPointsOn2, mRelativeContactPointsOn1 }; }
|
|
24
|
-
|
|
25
|
-
/// Access to the world space contact positions
|
|
26
|
-
inline RVec3 GetWorldSpaceContactPointOn1(uint inIndex) const { return mBaseOffset + mRelativeContactPointsOn1[inIndex]; }
|
|
27
|
-
inline RVec3 GetWorldSpaceContactPointOn2(uint inIndex) const { return mBaseOffset + mRelativeContactPointsOn2[inIndex]; }
|
|
28
|
-
|
|
29
|
-
RVec3 mBaseOffset; ///< Offset to which all the contact points are relative
|
|
30
|
-
Vec3 mWorldSpaceNormal; ///< Normal for this manifold, direction along which to move body 2 out of collision along the shortest path
|
|
31
|
-
float mPenetrationDepth; ///< Penetration depth (move shape 2 by this distance to resolve the collision). If this value is negative, this is a speculative contact point and may not actually result in a velocity change as during solving the bodies may not actually collide.
|
|
32
|
-
SubShapeID mSubShapeID1; ///< Sub shapes that formed this manifold (note that when multiple manifolds are combined because they're coplanar, we lose some information here because we only keep track of one sub shape pair that we encounter, see description at Body::SetUseManifoldReduction)
|
|
33
|
-
SubShapeID mSubShapeID2;
|
|
34
|
-
ContactPoints mRelativeContactPointsOn1; ///< Contact points on the surface of shape 1 relative to mBaseOffset.
|
|
35
|
-
ContactPoints mRelativeContactPointsOn2; ///< Contact points on the surface of shape 2 relative to mBaseOffset. If there's no penetration, this will be the same as mRelativeContactPointsOn1. If there is penetration they will be different.
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
/// When a contact point is added or persisted, the callback gets a chance to override certain properties of the contact constraint.
|
|
39
|
-
/// The values are filled in with their defaults by the system so the callback doesn't need to modify anything, but it can if it wants to.
|
|
40
|
-
class ContactSettings
|
|
41
|
-
{
|
|
42
|
-
public:
|
|
43
|
-
float mCombinedFriction; ///< Combined friction for the body pair (see: PhysicsSystem::SetCombineFriction)
|
|
44
|
-
float mCombinedRestitution; ///< Combined restitution for the body pair (see: PhysicsSystem::SetCombineRestitution)
|
|
45
|
-
float mInvMassScale1 = 1.0f; ///< Scale factor for the inverse mass of body 1 (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.
|
|
46
|
-
float mInvInertiaScale1 = 1.0f; ///< Scale factor for the inverse inertia of body 1 (usually same as mInvMassScale1)
|
|
47
|
-
float mInvMassScale2 = 1.0f; ///< Scale factor for the inverse mass of body 2 (0 = infinite mass, 1 = use original mass, 2 = body has half the mass). For the same contact pair, you should strive to keep the value the same over time.
|
|
48
|
-
float mInvInertiaScale2 = 1.0f; ///< Scale factor for the inverse inertia of body 2 (usually same as mInvMassScale2)
|
|
49
|
-
bool mIsSensor; ///< If the contact should be treated as a sensor vs body contact (no collision response)
|
|
50
|
-
Vec3 mRelativeLinearSurfaceVelocity = Vec3::sZero(); ///< Relative linear surface velocity between the bodies (world space surface velocity of body 2 - world space surface velocity of body 1), can be used to create a conveyor belt effect
|
|
51
|
-
Vec3 mRelativeAngularSurfaceVelocity = Vec3::sZero(); ///< Relative angular surface velocity between the bodies (world space angular surface velocity of body 2 - world space angular surface velocity of body 1). Note that this angular velocity is relative to the center of mass of body 1, so if you want it relative to body 2's center of mass you need to add body 2 angular velocity x (body 1 world space center of mass - body 2 world space center of mass) to mRelativeLinearSurfaceVelocity.
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/// Return value for the OnContactValidate callback. Determines if the contact is being processed or not.
|
|
55
|
-
/// Results are ordered so that the strongest accept has the lowest number and the strongest reject the highest number (which allows for easy combining of results)
|
|
56
|
-
enum class ValidateResult
|
|
57
|
-
{
|
|
58
|
-
AcceptAllContactsForThisBodyPair, ///< Accept this and any further contact points for this body pair
|
|
59
|
-
AcceptContact, ///< Accept this contact only (and continue calling this callback for every contact manifold for the same body pair)
|
|
60
|
-
RejectContact, ///< Reject this contact only (but process any other contact manifolds for the same body pair)
|
|
61
|
-
RejectAllContactsForThisBodyPair ///< Rejects this and any further contact points for this body pair
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
/// A listener class that receives collision contact events. It can be registered through PhysicsSystem::SetContactListener.
|
|
65
|
-
/// Only a single contact listener can be registered. A common pattern is to create a contact listener that casts Body::GetUserData
|
|
66
|
-
/// to a game object and then forwards the call to a handler specific for that game object.
|
|
67
|
-
/// Typically this is done on both objects involved in a collision event.
|
|
68
|
-
///
|
|
69
|
-
/// Note that contact listener callbacks are called from multiple threads at the same time when all bodies are locked, this means you cannot
|
|
70
|
-
/// use PhysicsSystem::GetBodyInterface / PhysicsSystem::GetBodyLockInterface but must use PhysicsSystem::GetBodyInterfaceNoLock / PhysicsSystem::GetBodyLockInterfaceNoLock instead.
|
|
71
|
-
/// If you use a locking interface, the simulation will deadlock. You're only allowed to read from the bodies and you can't change physics state.
|
|
72
|
-
/// During OnContactRemoved you cannot access the bodies at all, see the comments at that function.
|
|
73
|
-
///
|
|
74
|
-
/// While a callback can come from multiple threads, all callbacks relating to a single body pair are serialized.
|
|
75
|
-
/// For EMotionQuality::Discrete bodies, during every 'collision step' in a PhysicsSystem::Update, you will receive at most one OnContactAdded/Persisted/Removed call per body/sub shape pair.
|
|
76
|
-
/// For EMotionQuality::LinearCast bodies, you may get an OnContactAdded followed by an OnContactPersisted for the same body/sub shape pair.
|
|
77
|
-
/// This happens when a body collides both in the discrete and the continuous collision detection stage.
|
|
78
|
-
class ContactListener
|
|
79
|
-
{
|
|
80
|
-
public:
|
|
81
|
-
/// Ensure virtual destructor
|
|
82
|
-
virtual ~ContactListener() = default;
|
|
83
|
-
|
|
84
|
-
/// Called after detecting a collision between a body pair, but before calling OnContactAdded and before adding the contact constraint.
|
|
85
|
-
/// If the function rejects the contact, the contact will not be processed by the simulation.
|
|
86
|
-
/// This is a rather expensive time to reject a contact point since a lot of the collision detection has happened already, make sure you
|
|
87
|
-
/// filter out the majority of undesired body pairs through the ObjectLayerPairFilter that is registered on the PhysicsSystem.
|
|
88
|
-
///
|
|
89
|
-
/// This function may not be called again the next update if a contact persists and no new contact pairs between sub shapes are found.
|
|
90
|
-
///
|
|
91
|
-
/// Note that this callback is called when all bodies are locked, so don't use any locking functions! See detailed class description of ContactListener.
|
|
92
|
-
///
|
|
93
|
-
/// Body 1 will have a motion type that is larger or equal than body 2's motion type (order from large to small: dynamic -> kinematic -> static). When motion types are equal, they are ordered by BodyID.
|
|
94
|
-
///
|
|
95
|
-
/// The collision result (inCollisionResult) is reported relative to inBaseOffset.
|
|
96
|
-
virtual ValidateResult OnContactValidate([[maybe_unused]] const Body &inBody1, [[maybe_unused]] const Body &inBody2, [[maybe_unused]] RVec3Arg inBaseOffset, [[maybe_unused]] const CollideShapeResult &inCollisionResult) { return ValidateResult::AcceptAllContactsForThisBodyPair; }
|
|
97
|
-
|
|
98
|
-
/// Called whenever a new contact point is detected.
|
|
99
|
-
///
|
|
100
|
-
/// Note that this callback is called when all bodies are locked, so don't use any locking functions! See detailed class description of ContactListener.
|
|
101
|
-
///
|
|
102
|
-
/// Body 1 and 2 will be sorted such that body 1 ID < body 2 ID, so body 1 may not be dynamic.
|
|
103
|
-
///
|
|
104
|
-
/// Note that only active bodies will report contacts, as soon as a body goes to sleep the contacts between that body and all other
|
|
105
|
-
/// bodies will receive an OnContactRemoved callback, if this is the case then Body::IsActive() will return false during the callback.
|
|
106
|
-
///
|
|
107
|
-
/// When contacts are added, the constraint solver has not run yet, so the collision impulse is unknown at that point.
|
|
108
|
-
/// The velocities of inBody1 and inBody2 are the velocities before the contact has been resolved, so you can use this to
|
|
109
|
-
/// estimate the collision impulse to e.g. determine the volume of the impact sound to play (see: EstimateCollisionResponse).
|
|
110
|
-
virtual void OnContactAdded([[maybe_unused]] const Body &inBody1, [[maybe_unused]] const Body &inBody2, [[maybe_unused]] const ContactManifold &inManifold, [[maybe_unused]] ContactSettings &ioSettings) { /* Do nothing */ }
|
|
111
|
-
|
|
112
|
-
/// Called whenever a contact is detected that was also detected last update.
|
|
113
|
-
///
|
|
114
|
-
/// Note that this callback is called when all bodies are locked, so don't use any locking functions! See detailed class description of ContactListener.
|
|
115
|
-
///
|
|
116
|
-
/// Body 1 and 2 will be sorted such that body 1 ID < body 2 ID, so body 1 may not be dynamic.
|
|
117
|
-
///
|
|
118
|
-
/// If the structure of the shape of a body changes between simulation steps (e.g. by adding/removing a child shape of a compound shape),
|
|
119
|
-
/// it is possible that the same sub shape ID used to identify the removed child shape is now reused for a different child shape. The physics
|
|
120
|
-
/// system cannot detect this, so may send a 'contact persisted' callback even though the contact is now on a different child shape. You can
|
|
121
|
-
/// detect this by keeping the old shape (before adding/removing a part) around until the next PhysicsSystem::Update (when the OnContactPersisted
|
|
122
|
-
/// callbacks are triggered) and resolving the sub shape ID against both the old and new shape to see if they still refer to the same child shape.
|
|
123
|
-
virtual void OnContactPersisted([[maybe_unused]] const Body &inBody1, [[maybe_unused]] const Body &inBody2, [[maybe_unused]] const ContactManifold &inManifold, [[maybe_unused]] ContactSettings &ioSettings) { /* Do nothing */ }
|
|
124
|
-
|
|
125
|
-
/// Called whenever a contact was detected last update but is not detected anymore.
|
|
126
|
-
///
|
|
127
|
-
/// You cannot access the bodies at the time of this callback because:
|
|
128
|
-
/// - All bodies are locked at the time of this callback.
|
|
129
|
-
/// - Some properties of the bodies are being modified from another thread at the same time.
|
|
130
|
-
/// - The body may have been removed and destroyed (you'll receive an OnContactRemoved callback in the PhysicsSystem::Update after the body has been removed).
|
|
131
|
-
///
|
|
132
|
-
/// Cache what you need in the OnContactAdded and OnContactPersisted callbacks and store it in a separate structure to use during this callback.
|
|
133
|
-
/// Alternatively, you could just record that the contact was removed and process it after PhysicsSystem::Update.
|
|
134
|
-
///
|
|
135
|
-
/// Body 1 and 2 will be sorted such that body 1 ID < body 2 ID, so body 1 may not be dynamic.
|
|
136
|
-
///
|
|
137
|
-
/// The sub shape IDs were created in the previous simulation step, so if the structure of a shape changes (e.g. by adding/removing a child shape of a compound shape),
|
|
138
|
-
/// the sub shape ID may not be valid / may not point to the same sub shape anymore.
|
|
139
|
-
/// If you want to know if this is the last contact between the two bodies, use PhysicsSystem::WereBodiesInContact.
|
|
140
|
-
virtual void OnContactRemoved([[maybe_unused]] const SubShapeIDPair &inSubShapePair) { /* Do nothing */ }
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
JPH_NAMESPACE_END
|
|
@@ -1,213 +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/Collision/EstimateCollisionResponse.h>
|
|
8
|
-
#include <Jolt/Physics/Body/Body.h>
|
|
9
|
-
|
|
10
|
-
JPH_NAMESPACE_BEGIN
|
|
11
|
-
|
|
12
|
-
void EstimateCollisionResponse(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution, uint inNumIterations)
|
|
13
|
-
{
|
|
14
|
-
// Note this code is based on AxisConstraintPart, see that class for more comments on the math
|
|
15
|
-
|
|
16
|
-
ContactPoints::size_type num_points = inManifold.mRelativeContactPointsOn1.size();
|
|
17
|
-
JPH_ASSERT(num_points == inManifold.mRelativeContactPointsOn2.size());
|
|
18
|
-
|
|
19
|
-
// Start with zero impulses
|
|
20
|
-
outResult.mImpulses.resize(num_points);
|
|
21
|
-
memset(outResult.mImpulses.data(), 0, num_points * sizeof(CollisionEstimationResult::Impulse));
|
|
22
|
-
|
|
23
|
-
// Calculate friction directions
|
|
24
|
-
outResult.mTangent1 = inManifold.mWorldSpaceNormal.GetNormalizedPerpendicular();
|
|
25
|
-
outResult.mTangent2 = inManifold.mWorldSpaceNormal.Cross(outResult.mTangent1);
|
|
26
|
-
|
|
27
|
-
// Get body velocities
|
|
28
|
-
EMotionType motion_type1 = inBody1.GetMotionType();
|
|
29
|
-
const MotionProperties *motion_properties1 = inBody1.GetMotionPropertiesUnchecked();
|
|
30
|
-
if (motion_type1 != EMotionType::Static)
|
|
31
|
-
{
|
|
32
|
-
outResult.mLinearVelocity1 = motion_properties1->GetLinearVelocity();
|
|
33
|
-
outResult.mAngularVelocity1 = motion_properties1->GetAngularVelocity();
|
|
34
|
-
}
|
|
35
|
-
else
|
|
36
|
-
outResult.mLinearVelocity1 = outResult.mAngularVelocity1 = Vec3::sZero();
|
|
37
|
-
|
|
38
|
-
EMotionType motion_type2 = inBody2.GetMotionType();
|
|
39
|
-
const MotionProperties *motion_properties2 = inBody2.GetMotionPropertiesUnchecked();
|
|
40
|
-
if (motion_type2 != EMotionType::Static)
|
|
41
|
-
{
|
|
42
|
-
outResult.mLinearVelocity2 = motion_properties2->GetLinearVelocity();
|
|
43
|
-
outResult.mAngularVelocity2 = motion_properties2->GetAngularVelocity();
|
|
44
|
-
}
|
|
45
|
-
else
|
|
46
|
-
outResult.mLinearVelocity2 = outResult.mAngularVelocity2 = Vec3::sZero();
|
|
47
|
-
|
|
48
|
-
// Get inverse mass and inertia
|
|
49
|
-
float inv_m1, inv_m2;
|
|
50
|
-
Mat44 inv_i1, inv_i2;
|
|
51
|
-
if (motion_type1 == EMotionType::Dynamic)
|
|
52
|
-
{
|
|
53
|
-
inv_m1 = motion_properties1->GetInverseMass();
|
|
54
|
-
inv_i1 = inBody1.GetInverseInertia();
|
|
55
|
-
}
|
|
56
|
-
else
|
|
57
|
-
{
|
|
58
|
-
inv_m1 = 0.0f;
|
|
59
|
-
inv_i1 = Mat44::sZero();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
if (motion_type2 == EMotionType::Dynamic)
|
|
63
|
-
{
|
|
64
|
-
inv_m2 = motion_properties2->GetInverseMass();
|
|
65
|
-
inv_i2 = inBody2.GetInverseInertia();
|
|
66
|
-
}
|
|
67
|
-
else
|
|
68
|
-
{
|
|
69
|
-
inv_m2 = 0.0f;
|
|
70
|
-
inv_i2 = Mat44::sZero();
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Get center of masses relative to the base offset
|
|
74
|
-
Vec3 com1 = Vec3(inBody1.GetCenterOfMassPosition() - inManifold.mBaseOffset);
|
|
75
|
-
Vec3 com2 = Vec3(inBody2.GetCenterOfMassPosition() - inManifold.mBaseOffset);
|
|
76
|
-
|
|
77
|
-
struct AxisConstraint
|
|
78
|
-
{
|
|
79
|
-
inline void Initialize(Vec3Arg inR1, Vec3Arg inR2, Vec3Arg inWorldSpaceNormal, float inInvM1, float inInvM2, Mat44Arg inInvI1, Mat44Arg inInvI2)
|
|
80
|
-
{
|
|
81
|
-
// Calculate effective mass: K^-1 = (J M^-1 J^T)^-1
|
|
82
|
-
mR1PlusUxAxis = inR1.Cross(inWorldSpaceNormal);
|
|
83
|
-
mR2xAxis = inR2.Cross(inWorldSpaceNormal);
|
|
84
|
-
mInvI1_R1PlusUxAxis = inInvI1.Multiply3x3(mR1PlusUxAxis);
|
|
85
|
-
mInvI2_R2xAxis = inInvI2.Multiply3x3(mR2xAxis);
|
|
86
|
-
mEffectiveMass = 1.0f / (inInvM1 + mInvI1_R1PlusUxAxis.Dot(mR1PlusUxAxis) + inInvM2 + mInvI2_R2xAxis.Dot(mR2xAxis));
|
|
87
|
-
mBias = 0.0f;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
inline float SolveGetLambda(Vec3Arg inWorldSpaceNormal, const CollisionEstimationResult &inResult) const
|
|
91
|
-
{
|
|
92
|
-
// Calculate jacobian multiplied by linear/angular velocity
|
|
93
|
-
float jv = inWorldSpaceNormal.Dot(inResult.mLinearVelocity1 - inResult.mLinearVelocity2) + mR1PlusUxAxis.Dot(inResult.mAngularVelocity1) - mR2xAxis.Dot(inResult.mAngularVelocity2);
|
|
94
|
-
|
|
95
|
-
// Lagrange multiplier is:
|
|
96
|
-
//
|
|
97
|
-
// lambda = -K^-1 (J v + b)
|
|
98
|
-
return mEffectiveMass * (jv - mBias);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
inline void SolveApplyLambda(Vec3Arg inWorldSpaceNormal, float inInvM1, float inInvM2, float inLambda, CollisionEstimationResult &ioResult) const
|
|
102
|
-
{
|
|
103
|
-
// Apply impulse to body velocities
|
|
104
|
-
ioResult.mLinearVelocity1 -= (inLambda * inInvM1) * inWorldSpaceNormal;
|
|
105
|
-
ioResult.mAngularVelocity1 -= inLambda * mInvI1_R1PlusUxAxis;
|
|
106
|
-
ioResult.mLinearVelocity2 += (inLambda * inInvM2) * inWorldSpaceNormal;
|
|
107
|
-
ioResult.mAngularVelocity2 += inLambda * mInvI2_R2xAxis;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
inline void Solve(Vec3Arg inWorldSpaceNormal, float inInvM1, float inInvM2, float inMinLambda, float inMaxLambda, float &ioTotalLambda, CollisionEstimationResult &ioResult) const
|
|
111
|
-
{
|
|
112
|
-
// Calculate new total lambda
|
|
113
|
-
float total_lambda = ioTotalLambda + SolveGetLambda(inWorldSpaceNormal, ioResult);
|
|
114
|
-
|
|
115
|
-
// Clamp impulse
|
|
116
|
-
total_lambda = Clamp(total_lambda, inMinLambda, inMaxLambda);
|
|
117
|
-
|
|
118
|
-
SolveApplyLambda(inWorldSpaceNormal, inInvM1, inInvM2, total_lambda - ioTotalLambda, ioResult);
|
|
119
|
-
|
|
120
|
-
ioTotalLambda = total_lambda;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
Vec3 mR1PlusUxAxis;
|
|
124
|
-
Vec3 mR2xAxis;
|
|
125
|
-
Vec3 mInvI1_R1PlusUxAxis;
|
|
126
|
-
Vec3 mInvI2_R2xAxis;
|
|
127
|
-
float mEffectiveMass;
|
|
128
|
-
float mBias;
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
struct Constraint
|
|
132
|
-
{
|
|
133
|
-
AxisConstraint mContact;
|
|
134
|
-
AxisConstraint mFriction1;
|
|
135
|
-
AxisConstraint mFriction2;
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
// Initialize the constraint properties
|
|
139
|
-
Constraint constraints[ContactPoints::Capacity];
|
|
140
|
-
for (uint c = 0; c < num_points; ++c)
|
|
141
|
-
{
|
|
142
|
-
Constraint &constraint = constraints[c];
|
|
143
|
-
|
|
144
|
-
// Calculate contact points relative to body 1 and 2
|
|
145
|
-
Vec3 p = 0.5f * (inManifold.mRelativeContactPointsOn1[c] + inManifold.mRelativeContactPointsOn2[c]);
|
|
146
|
-
Vec3 r1 = p - com1;
|
|
147
|
-
Vec3 r2 = p - com2;
|
|
148
|
-
|
|
149
|
-
// Initialize contact constraint
|
|
150
|
-
constraint.mContact.Initialize(r1, r2, inManifold.mWorldSpaceNormal, inv_m1, inv_m2, inv_i1, inv_i2);
|
|
151
|
-
|
|
152
|
-
// Handle elastic collisions
|
|
153
|
-
if (inCombinedRestitution > 0.0f)
|
|
154
|
-
{
|
|
155
|
-
// Calculate velocity of contact point
|
|
156
|
-
Vec3 relative_velocity = outResult.mLinearVelocity2 + outResult.mAngularVelocity2.Cross(r2) - outResult.mLinearVelocity1 - outResult.mAngularVelocity1.Cross(r1);
|
|
157
|
-
float normal_velocity = relative_velocity.Dot(inManifold.mWorldSpaceNormal);
|
|
158
|
-
|
|
159
|
-
// If it is big enough, apply restitution
|
|
160
|
-
if (normal_velocity < -inMinVelocityForRestitution)
|
|
161
|
-
constraint.mContact.mBias = inCombinedRestitution * normal_velocity;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
if (inCombinedFriction > 0.0f)
|
|
165
|
-
{
|
|
166
|
-
// Initialize friction constraints
|
|
167
|
-
constraint.mFriction1.Initialize(r1, r2, outResult.mTangent1, inv_m1, inv_m2, inv_i1, inv_i2);
|
|
168
|
-
constraint.mFriction2.Initialize(r1, r2, outResult.mTangent2, inv_m1, inv_m2, inv_i1, inv_i2);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
// If there's only 1 contact point, we only need 1 iteration
|
|
173
|
-
int num_iterations = inCombinedFriction <= 0.0f && num_points == 1? 1 : inNumIterations;
|
|
174
|
-
|
|
175
|
-
// Solve iteratively
|
|
176
|
-
for (int iteration = 0; iteration < num_iterations; ++iteration)
|
|
177
|
-
{
|
|
178
|
-
// Solve friction constraints first
|
|
179
|
-
if (inCombinedFriction > 0.0f && iteration > 0) // For first iteration the contact impulse is zero so there's no point in applying friction
|
|
180
|
-
for (uint c = 0; c < num_points; ++c)
|
|
181
|
-
{
|
|
182
|
-
const Constraint &constraint = constraints[c];
|
|
183
|
-
CollisionEstimationResult::Impulse &impulse = outResult.mImpulses[c];
|
|
184
|
-
|
|
185
|
-
float lambda1 = impulse.mFrictionImpulse1 + constraint.mFriction1.SolveGetLambda(outResult.mTangent1, outResult);
|
|
186
|
-
float lambda2 = impulse.mFrictionImpulse2 + constraint.mFriction2.SolveGetLambda(outResult.mTangent2, outResult);
|
|
187
|
-
|
|
188
|
-
// Calculate max impulse based on contact impulse
|
|
189
|
-
float max_impulse = inCombinedFriction * impulse.mContactImpulse;
|
|
190
|
-
|
|
191
|
-
// If the total lambda that we will apply is too large, scale it back
|
|
192
|
-
float total_lambda_sq = Square(lambda1) + Square(lambda2);
|
|
193
|
-
if (total_lambda_sq > Square(max_impulse))
|
|
194
|
-
{
|
|
195
|
-
float scale = max_impulse / sqrt(total_lambda_sq);
|
|
196
|
-
lambda1 *= scale;
|
|
197
|
-
lambda2 *= scale;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
constraint.mFriction1.SolveApplyLambda(outResult.mTangent1, inv_m1, inv_m2, lambda1 - impulse.mFrictionImpulse1, outResult);
|
|
201
|
-
constraint.mFriction2.SolveApplyLambda(outResult.mTangent2, inv_m1, inv_m2, lambda2 - impulse.mFrictionImpulse2, outResult);
|
|
202
|
-
|
|
203
|
-
impulse.mFrictionImpulse1 = lambda1;
|
|
204
|
-
impulse.mFrictionImpulse2 = lambda2;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
// Solve contact constraints last
|
|
208
|
-
for (uint c = 0; c < num_points; ++c)
|
|
209
|
-
constraints[c].mContact.Solve(inManifold.mWorldSpaceNormal, inv_m1, inv_m2, 0.0f, FLT_MAX, outResult.mImpulses[c].mContactImpulse, outResult);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
JPH_NAMESPACE_END
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
|
|
2
|
-
// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
|
|
3
|
-
// SPDX-License-Identifier: MIT
|
|
4
|
-
|
|
5
|
-
#pragma once
|
|
6
|
-
|
|
7
|
-
#include <Jolt/Physics/Collision/ContactListener.h>
|
|
8
|
-
|
|
9
|
-
JPH_NAMESPACE_BEGIN
|
|
10
|
-
|
|
11
|
-
/// A structure that contains the estimated contact and friction impulses and the resulting body velocities
|
|
12
|
-
struct CollisionEstimationResult
|
|
13
|
-
{
|
|
14
|
-
Vec3 mLinearVelocity1; ///< The estimated linear velocity of body 1 after collision
|
|
15
|
-
Vec3 mAngularVelocity1; ///< The estimated angular velocity of body 1 after collision
|
|
16
|
-
Vec3 mLinearVelocity2; ///< The estimated linear velocity of body 2 after collision
|
|
17
|
-
Vec3 mAngularVelocity2; ///< The estimated angular velocity of body 2 after collision
|
|
18
|
-
|
|
19
|
-
Vec3 mTangent1; ///< Normalized tangent of contact normal
|
|
20
|
-
Vec3 mTangent2; ///< Second normalized tangent of contact normal (forms a basis with mTangent1 and mWorldSpaceNormal)
|
|
21
|
-
|
|
22
|
-
struct Impulse
|
|
23
|
-
{
|
|
24
|
-
float mContactImpulse; ///< Estimated contact impulses (kg m / s)
|
|
25
|
-
float mFrictionImpulse1; ///< Estimated friction impulses in the direction of tangent 1 (kg m / s)
|
|
26
|
-
float mFrictionImpulse2; ///< Estimated friction impulses in the direction of tangent 2 (kg m / s)
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
using Impulses = StaticArray<Impulse, ContactPoints::Capacity>;
|
|
30
|
-
|
|
31
|
-
Impulses mImpulses;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
/// This function estimates the contact impulses and body velocity changes as a result of a collision.
|
|
35
|
-
/// It can be used in the ContactListener::OnContactAdded to determine the strength of the collision to e.g. play a sound or trigger a particle system.
|
|
36
|
-
/// This function is accurate when two bodies collide but will not be accurate when more than 2 bodies collide at the same time as it does not know about these other collisions.
|
|
37
|
-
///
|
|
38
|
-
/// @param inBody1 Colliding body 1
|
|
39
|
-
/// @param inBody2 Colliding body 2
|
|
40
|
-
/// @param inManifold The collision manifold
|
|
41
|
-
/// @param outResult A structure that contains the estimated contact and friction impulses and the resulting body velocities
|
|
42
|
-
/// @param inCombinedFriction The combined friction of body 1 and body 2 (see ContactSettings::mCombinedFriction)
|
|
43
|
-
/// @param inCombinedRestitution The combined restitution of body 1 and body 2 (see ContactSettings::mCombinedRestitution)
|
|
44
|
-
/// @param inMinVelocityForRestitution Minimal velocity required for restitution to be applied (see PhysicsSettings::mMinVelocityForRestitution)
|
|
45
|
-
/// @param inNumIterations Number of iterations to use for the impulse estimation (see PhysicsSettings::mNumVelocitySteps, note you can probably use a lower number for a decent estimate). If you set the number of iterations to 1 then no friction will be calculated.
|
|
46
|
-
JPH_EXPORT void EstimateCollisionResponse(const Body &inBody1, const Body &inBody2, const ContactManifold &inManifold, CollisionEstimationResult &outResult, float inCombinedFriction, float inCombinedRestitution, float inMinVelocityForRestitution = 1.0f, uint inNumIterations = 10);
|
|
47
|
-
|
|
48
|
-
JPH_NAMESPACE_END
|
|
@@ -1,32 +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/Collision/GroupFilter.h>
|
|
8
|
-
#include <Jolt/Core/StreamUtils.h>
|
|
9
|
-
|
|
10
|
-
JPH_NAMESPACE_BEGIN
|
|
11
|
-
|
|
12
|
-
JPH_IMPLEMENT_SERIALIZABLE_ABSTRACT_BASE(GroupFilter)
|
|
13
|
-
{
|
|
14
|
-
JPH_ADD_BASE_CLASS(GroupFilter, SerializableObject)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
void GroupFilter::SaveBinaryState(StreamOut &inStream) const
|
|
18
|
-
{
|
|
19
|
-
inStream.Write(GetRTTI()->GetHash());
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
void GroupFilter::RestoreBinaryState(StreamIn &inStream)
|
|
23
|
-
{
|
|
24
|
-
// RTTI hash is read in sRestoreFromBinaryState
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
GroupFilter::GroupFilterResult GroupFilter::sRestoreFromBinaryState(StreamIn &inStream)
|
|
28
|
-
{
|
|
29
|
-
return StreamUtils::RestoreObject<GroupFilter>(inStream, &GroupFilter::RestoreBinaryState);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
JPH_NAMESPACE_END
|
|
@@ -1,46 +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/Core/Result.h>
|
|
8
|
-
#include <Jolt/ObjectStream/SerializableObject.h>
|
|
9
|
-
|
|
10
|
-
JPH_NAMESPACE_BEGIN
|
|
11
|
-
|
|
12
|
-
class CollisionGroup;
|
|
13
|
-
class StreamIn;
|
|
14
|
-
class StreamOut;
|
|
15
|
-
|
|
16
|
-
/// Abstract class that checks if two CollisionGroups collide
|
|
17
|
-
class JPH_EXPORT GroupFilter : public SerializableObject, public RefTarget<GroupFilter>
|
|
18
|
-
{
|
|
19
|
-
JPH_DECLARE_SERIALIZABLE_ABSTRACT(JPH_EXPORT, GroupFilter)
|
|
20
|
-
|
|
21
|
-
public:
|
|
22
|
-
/// Virtual destructor
|
|
23
|
-
virtual ~GroupFilter() override = default;
|
|
24
|
-
|
|
25
|
-
/// Check if two groups collide
|
|
26
|
-
virtual bool CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const = 0;
|
|
27
|
-
|
|
28
|
-
/// Saves the contents of the group filter in binary form to inStream.
|
|
29
|
-
virtual void SaveBinaryState(StreamOut &inStream) const;
|
|
30
|
-
|
|
31
|
-
using GroupFilterResult = Result<Ref<GroupFilter>>;
|
|
32
|
-
|
|
33
|
-
/// Creates a GroupFilter of the correct type and restores its contents from the binary stream inStream.
|
|
34
|
-
static GroupFilterResult sRestoreFromBinaryState(StreamIn &inStream);
|
|
35
|
-
|
|
36
|
-
protected:
|
|
37
|
-
/// Don't allow (copy) constructing this base class, but allow derived classes to (copy) construct themselves
|
|
38
|
-
GroupFilter() = default;
|
|
39
|
-
GroupFilter(const GroupFilter &) = default;
|
|
40
|
-
GroupFilter & operator = (const GroupFilter &) = default;
|
|
41
|
-
|
|
42
|
-
/// This function should not be called directly, it is used by sRestoreFromBinaryState.
|
|
43
|
-
virtual void RestoreBinaryState(StreamIn &inStream);
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
JPH_NAMESPACE_END
|
|
@@ -1,38 +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/Collision/GroupFilterTable.h>
|
|
8
|
-
#include <Jolt/ObjectStream/TypeDeclarations.h>
|
|
9
|
-
#include <Jolt/Core/StreamIn.h>
|
|
10
|
-
#include <Jolt/Core/StreamOut.h>
|
|
11
|
-
|
|
12
|
-
JPH_NAMESPACE_BEGIN
|
|
13
|
-
|
|
14
|
-
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(GroupFilterTable)
|
|
15
|
-
{
|
|
16
|
-
JPH_ADD_BASE_CLASS(GroupFilterTable, GroupFilter)
|
|
17
|
-
|
|
18
|
-
JPH_ADD_ATTRIBUTE(GroupFilterTable, mNumSubGroups)
|
|
19
|
-
JPH_ADD_ATTRIBUTE(GroupFilterTable, mTable)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
void GroupFilterTable::SaveBinaryState(StreamOut &inStream) const
|
|
23
|
-
{
|
|
24
|
-
GroupFilter::SaveBinaryState(inStream);
|
|
25
|
-
|
|
26
|
-
inStream.Write(mNumSubGroups);
|
|
27
|
-
inStream.Write(mTable);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
void GroupFilterTable::RestoreBinaryState(StreamIn &inStream)
|
|
31
|
-
{
|
|
32
|
-
GroupFilter::RestoreBinaryState(inStream);
|
|
33
|
-
|
|
34
|
-
inStream.Read(mNumSubGroups);
|
|
35
|
-
inStream.Read(mTable);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
JPH_NAMESPACE_END
|
|
@@ -1,130 +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/Collision/GroupFilter.h>
|
|
8
|
-
#include <Jolt/Physics/Collision/CollisionGroup.h>
|
|
9
|
-
|
|
10
|
-
JPH_NAMESPACE_BEGIN
|
|
11
|
-
|
|
12
|
-
/// Implementation of GroupFilter that stores a bit table with one bit per sub shape ID pair to determine if they collide or not
|
|
13
|
-
///
|
|
14
|
-
/// The collision rules:
|
|
15
|
-
/// - If one of the objects is in the cInvalidGroup the objects will collide.
|
|
16
|
-
/// - If the objects are in different groups they will collide.
|
|
17
|
-
/// - If they're in the same group but their collision filter is different they will not collide.
|
|
18
|
-
/// - If they're in the same group and their collision filters match, we'll use the SubGroupID and the table below.
|
|
19
|
-
///
|
|
20
|
-
/// For N = 6 sub groups the table will look like:
|
|
21
|
-
///
|
|
22
|
-
/// sub group 1 --->
|
|
23
|
-
/// sub group 2 x.....
|
|
24
|
-
/// | ox....
|
|
25
|
-
/// | oox...
|
|
26
|
-
/// V ooox..
|
|
27
|
-
/// oooox.
|
|
28
|
-
/// ooooox
|
|
29
|
-
///
|
|
30
|
-
/// * 'x' means sub group 1 == sub group 2 and we define this to never collide.
|
|
31
|
-
/// * 'o' is a bit that we have to store that defines if the sub groups collide or not.
|
|
32
|
-
/// * '.' is a bit we don't need to store because the table is symmetric, we take care that group 2 > group 1 by swapping sub group 1 and sub group 2 if needed.
|
|
33
|
-
///
|
|
34
|
-
/// The total number of bits we need to store is (N * (N - 1)) / 2
|
|
35
|
-
class JPH_EXPORT GroupFilterTable final : public GroupFilter
|
|
36
|
-
{
|
|
37
|
-
JPH_DECLARE_SERIALIZABLE_VIRTUAL(JPH_EXPORT, GroupFilterTable)
|
|
38
|
-
|
|
39
|
-
private:
|
|
40
|
-
using GroupID = CollisionGroup::GroupID;
|
|
41
|
-
using SubGroupID = CollisionGroup::SubGroupID;
|
|
42
|
-
|
|
43
|
-
/// Get which bit corresponds to the pair (inSubGroup1, inSubGroup2)
|
|
44
|
-
int GetBit(SubGroupID inSubGroup1, SubGroupID inSubGroup2) const
|
|
45
|
-
{
|
|
46
|
-
JPH_ASSERT(inSubGroup1 != inSubGroup2);
|
|
47
|
-
|
|
48
|
-
// We store the lower left half only, so swap the inputs when trying to access the top right half
|
|
49
|
-
if (inSubGroup1 > inSubGroup2)
|
|
50
|
-
std::swap(inSubGroup1, inSubGroup2);
|
|
51
|
-
|
|
52
|
-
JPH_ASSERT(inSubGroup2 < mNumSubGroups);
|
|
53
|
-
|
|
54
|
-
// Calculate at which bit the entry for this pair resides
|
|
55
|
-
// We use the fact that a row always starts at inSubGroup2 * (inSubGroup2 - 1) / 2
|
|
56
|
-
// (this is the amount of bits needed to store a table of inSubGroup2 entries)
|
|
57
|
-
return (inSubGroup2 * (inSubGroup2 - 1)) / 2 + inSubGroup1;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
public:
|
|
61
|
-
/// Constructs the table with inNumSubGroups subgroups, initially all collision pairs are enabled except when the sub group ID is the same
|
|
62
|
-
explicit GroupFilterTable(uint inNumSubGroups = 0) :
|
|
63
|
-
mNumSubGroups(inNumSubGroups)
|
|
64
|
-
{
|
|
65
|
-
// By default everything collides
|
|
66
|
-
int table_size = ((inNumSubGroups * (inNumSubGroups - 1)) / 2 + 7) / 8;
|
|
67
|
-
mTable.resize(table_size, 0xff);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/// Copy constructor
|
|
71
|
-
GroupFilterTable(const GroupFilterTable &inRHS) : mNumSubGroups(inRHS.mNumSubGroups), mTable(inRHS.mTable) { }
|
|
72
|
-
|
|
73
|
-
/// Disable collision between two sub groups
|
|
74
|
-
void DisableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
|
|
75
|
-
{
|
|
76
|
-
int bit = GetBit(inSubGroup1, inSubGroup2);
|
|
77
|
-
mTable[bit >> 3] &= (0xff ^ (1 << (bit & 0b111)));
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/// Enable collision between two sub groups
|
|
81
|
-
void EnableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
|
|
82
|
-
{
|
|
83
|
-
int bit = GetBit(inSubGroup1, inSubGroup2);
|
|
84
|
-
mTable[bit >> 3] |= 1 << (bit & 0b111);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/// Check if the collision between two subgroups is enabled
|
|
88
|
-
inline bool IsCollisionEnabled(SubGroupID inSubGroup1, SubGroupID inSubGroup2) const
|
|
89
|
-
{
|
|
90
|
-
// Test if the bit is set for this group pair
|
|
91
|
-
int bit = GetBit(inSubGroup1, inSubGroup2);
|
|
92
|
-
return (mTable[bit >> 3] & (1 << (bit & 0b111))) != 0;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/// Checks if two CollisionGroups collide
|
|
96
|
-
virtual bool CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const override
|
|
97
|
-
{
|
|
98
|
-
// If one of the groups is cInvalidGroup the objects will collide (note that the if following this if will ensure that group2 is not cInvalidGroup)
|
|
99
|
-
if (inGroup1.GetGroupID() == CollisionGroup::cInvalidGroup)
|
|
100
|
-
return true;
|
|
101
|
-
|
|
102
|
-
// If the objects are in different groups, they collide
|
|
103
|
-
if (inGroup1.GetGroupID() != inGroup2.GetGroupID())
|
|
104
|
-
return true;
|
|
105
|
-
|
|
106
|
-
// If the collision filters do not match, but they're in the same group we ignore the collision
|
|
107
|
-
if (inGroup1.GetGroupFilter() != inGroup2.GetGroupFilter())
|
|
108
|
-
return false;
|
|
109
|
-
|
|
110
|
-
// If they are in the same sub group, they don't collide
|
|
111
|
-
if (inGroup1.GetSubGroupID() == inGroup2.GetSubGroupID())
|
|
112
|
-
return false;
|
|
113
|
-
|
|
114
|
-
// Check the bit table
|
|
115
|
-
return IsCollisionEnabled(inGroup1.GetSubGroupID(), inGroup2.GetSubGroupID());
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// See: GroupFilter::SaveBinaryState
|
|
119
|
-
virtual void SaveBinaryState(StreamOut &inStream) const override;
|
|
120
|
-
|
|
121
|
-
protected:
|
|
122
|
-
// See: GroupFilter::RestoreBinaryState
|
|
123
|
-
virtual void RestoreBinaryState(StreamIn &inStream) override;
|
|
124
|
-
|
|
125
|
-
private:
|
|
126
|
-
uint mNumSubGroups; ///< The number of subgroups that this group filter supports
|
|
127
|
-
Array<uint8> mTable; ///< The table of bits that indicates which pairs collide
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
JPH_NAMESPACE_END
|