@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,268 +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/Math/Vec3.h>
|
|
8
|
-
#include <Jolt/Math/Vec4.h>
|
|
9
|
-
|
|
10
|
-
JPH_NAMESPACE_BEGIN
|
|
11
|
-
|
|
12
|
-
/// Quaternion class, quaternions are 4 dimensional vectors which can describe rotations in 3 dimensional
|
|
13
|
-
/// space if their length is 1.
|
|
14
|
-
///
|
|
15
|
-
/// They are written as:
|
|
16
|
-
///
|
|
17
|
-
/// \f$q = w + x \: i + y \: j + z \: k\f$
|
|
18
|
-
///
|
|
19
|
-
/// or in vector notation:
|
|
20
|
-
///
|
|
21
|
-
/// \f$q = [w, v] = [w, x, y, z]\f$
|
|
22
|
-
///
|
|
23
|
-
/// Where:
|
|
24
|
-
///
|
|
25
|
-
/// w = the real part
|
|
26
|
-
/// v = the imaginary part, (x, y, z)
|
|
27
|
-
///
|
|
28
|
-
/// Note that we store the quaternion in a Vec4 as [x, y, z, w] because that makes
|
|
29
|
-
/// it easy to extract the rotation axis of the quaternion:
|
|
30
|
-
///
|
|
31
|
-
/// q = [cos(angle / 2), sin(angle / 2) * rotation_axis]
|
|
32
|
-
class [[nodiscard]] alignas(JPH_VECTOR_ALIGNMENT) Quat
|
|
33
|
-
{
|
|
34
|
-
public:
|
|
35
|
-
JPH_OVERRIDE_NEW_DELETE
|
|
36
|
-
|
|
37
|
-
///@name Constructors
|
|
38
|
-
///@{
|
|
39
|
-
inline Quat() = default; ///< Intentionally not initialized for performance reasons
|
|
40
|
-
Quat(const Quat &inRHS) = default;
|
|
41
|
-
Quat & operator = (const Quat &inRHS) = default;
|
|
42
|
-
inline Quat(float inX, float inY, float inZ, float inW) : mValue(inX, inY, inZ, inW) { }
|
|
43
|
-
inline explicit Quat(const Float4 &inV) : mValue(Vec4::sLoadFloat4(&inV)) { }
|
|
44
|
-
inline explicit Quat(Vec4Arg inV) : mValue(inV) { }
|
|
45
|
-
///@}
|
|
46
|
-
|
|
47
|
-
///@name Tests
|
|
48
|
-
///@{
|
|
49
|
-
|
|
50
|
-
/// Check if two quaternions are exactly equal
|
|
51
|
-
inline bool operator == (QuatArg inRHS) const { return mValue == inRHS.mValue; }
|
|
52
|
-
|
|
53
|
-
/// Check if two quaternions are different
|
|
54
|
-
inline bool operator != (QuatArg inRHS) const { return mValue != inRHS.mValue; }
|
|
55
|
-
|
|
56
|
-
/// If this quaternion is close to inRHS. Note that q and -q represent the same rotation, this is not checked here.
|
|
57
|
-
inline bool IsClose(QuatArg inRHS, float inMaxDistSq = 1.0e-12f) const { return mValue.IsClose(inRHS.mValue, inMaxDistSq); }
|
|
58
|
-
|
|
59
|
-
/// If the length of this quaternion is 1 +/- inTolerance
|
|
60
|
-
inline bool IsNormalized(float inTolerance = 1.0e-5f) const { return mValue.IsNormalized(inTolerance); }
|
|
61
|
-
|
|
62
|
-
/// If any component of this quaternion is a NaN (not a number)
|
|
63
|
-
inline bool IsNaN() const { return mValue.IsNaN(); }
|
|
64
|
-
|
|
65
|
-
///@}
|
|
66
|
-
///@name Get components
|
|
67
|
-
///@{
|
|
68
|
-
|
|
69
|
-
/// Get X component (imaginary part i)
|
|
70
|
-
JPH_INLINE float GetX() const { return mValue.GetX(); }
|
|
71
|
-
|
|
72
|
-
/// Get Y component (imaginary part j)
|
|
73
|
-
JPH_INLINE float GetY() const { return mValue.GetY(); }
|
|
74
|
-
|
|
75
|
-
/// Get Z component (imaginary part k)
|
|
76
|
-
JPH_INLINE float GetZ() const { return mValue.GetZ(); }
|
|
77
|
-
|
|
78
|
-
/// Get W component (real part)
|
|
79
|
-
JPH_INLINE float GetW() const { return mValue.GetW(); }
|
|
80
|
-
|
|
81
|
-
/// Get the imaginary part of the quaternion
|
|
82
|
-
JPH_INLINE Vec3 GetXYZ() const { return Vec3(mValue); }
|
|
83
|
-
|
|
84
|
-
/// Get the quaternion as a Vec4
|
|
85
|
-
JPH_INLINE Vec4 GetXYZW() const { return mValue; }
|
|
86
|
-
|
|
87
|
-
/// Set individual components
|
|
88
|
-
JPH_INLINE void SetX(float inX) { mValue.SetX(inX); }
|
|
89
|
-
JPH_INLINE void SetY(float inY) { mValue.SetY(inY); }
|
|
90
|
-
JPH_INLINE void SetZ(float inZ) { mValue.SetZ(inZ); }
|
|
91
|
-
JPH_INLINE void SetW(float inW) { mValue.SetW(inW); }
|
|
92
|
-
|
|
93
|
-
/// Set all components
|
|
94
|
-
JPH_INLINE void Set(float inX, float inY, float inZ, float inW) { mValue.Set(inX, inY, inZ, inW); }
|
|
95
|
-
|
|
96
|
-
///@}
|
|
97
|
-
///@name Default quaternions
|
|
98
|
-
///@{
|
|
99
|
-
|
|
100
|
-
/// @return [0, 0, 0, 0]
|
|
101
|
-
JPH_INLINE static Quat sZero() { return Quat(Vec4::sZero()); }
|
|
102
|
-
|
|
103
|
-
/// @return [1, 0, 0, 0] (or in storage format Quat(0, 0, 0, 1))
|
|
104
|
-
JPH_INLINE static Quat sIdentity() { return Quat(0, 0, 0, 1); }
|
|
105
|
-
|
|
106
|
-
///@}
|
|
107
|
-
|
|
108
|
-
/// Rotation from axis and angle
|
|
109
|
-
JPH_INLINE static Quat sRotation(Vec3Arg inAxis, float inAngle);
|
|
110
|
-
|
|
111
|
-
/// Get axis and angle that represents this quaternion, outAngle will always be in the range \f$[0, \pi]\f$
|
|
112
|
-
JPH_INLINE void GetAxisAngle(Vec3 &outAxis, float &outAngle) const;
|
|
113
|
-
|
|
114
|
-
/// Create quaternion that rotates a vector from the direction of inFrom to the direction of inTo along the shortest path
|
|
115
|
-
/// @see https://www.euclideanspace.com/maths/algebra/vectors/angleBetween/index.htm
|
|
116
|
-
JPH_INLINE static Quat sFromTo(Vec3Arg inFrom, Vec3Arg inTo);
|
|
117
|
-
|
|
118
|
-
/// Random unit quaternion
|
|
119
|
-
template <class Random>
|
|
120
|
-
inline static Quat sRandom(Random &inRandom);
|
|
121
|
-
|
|
122
|
-
/// Conversion from Euler angles. Rotation order is X then Y then Z (RotZ * RotY * RotX). Angles in radians.
|
|
123
|
-
inline static Quat sEulerAngles(Vec3Arg inAngles);
|
|
124
|
-
|
|
125
|
-
/// Conversion to Euler angles. Rotation order is X then Y then Z (RotZ * RotY * RotX). Angles in radians.
|
|
126
|
-
inline Vec3 GetEulerAngles() const;
|
|
127
|
-
|
|
128
|
-
///@name Length / normalization operations
|
|
129
|
-
///@{
|
|
130
|
-
|
|
131
|
-
/// Squared length of quaternion.
|
|
132
|
-
/// @return Squared length of quaternion (\f$|v|^2\f$)
|
|
133
|
-
JPH_INLINE float LengthSq() const { return mValue.LengthSq(); }
|
|
134
|
-
|
|
135
|
-
/// Length of quaternion.
|
|
136
|
-
/// @return Length of quaternion (\f$|v|\f$)
|
|
137
|
-
JPH_INLINE float Length() const { return mValue.Length(); }
|
|
138
|
-
|
|
139
|
-
/// Normalize the quaternion (make it length 1)
|
|
140
|
-
JPH_INLINE Quat Normalized() const { return Quat(mValue.Normalized()); }
|
|
141
|
-
|
|
142
|
-
///@}
|
|
143
|
-
///@name Additions / multiplications
|
|
144
|
-
///@{
|
|
145
|
-
|
|
146
|
-
JPH_INLINE void operator += (QuatArg inRHS) { mValue += inRHS.mValue; }
|
|
147
|
-
JPH_INLINE void operator -= (QuatArg inRHS) { mValue -= inRHS.mValue; }
|
|
148
|
-
JPH_INLINE void operator *= (float inValue) { mValue *= inValue; }
|
|
149
|
-
JPH_INLINE void operator /= (float inValue) { mValue /= inValue; }
|
|
150
|
-
JPH_INLINE Quat operator - () const { return Quat(-mValue); }
|
|
151
|
-
JPH_INLINE Quat operator + (QuatArg inRHS) const { return Quat(mValue + inRHS.mValue); }
|
|
152
|
-
JPH_INLINE Quat operator - (QuatArg inRHS) const { return Quat(mValue - inRHS.mValue); }
|
|
153
|
-
JPH_INLINE Quat operator * (QuatArg inRHS) const;
|
|
154
|
-
JPH_INLINE Quat operator * (float inValue) const { return Quat(mValue * inValue); }
|
|
155
|
-
inline friend Quat operator * (float inValue, QuatArg inRHS) { return Quat(inRHS.mValue * inValue); }
|
|
156
|
-
JPH_INLINE Quat operator / (float inValue) const { return Quat(mValue / inValue); }
|
|
157
|
-
|
|
158
|
-
///@}
|
|
159
|
-
|
|
160
|
-
/// Rotate a vector by this quaternion
|
|
161
|
-
JPH_INLINE Vec3 operator * (Vec3Arg inValue) const;
|
|
162
|
-
|
|
163
|
-
/// Multiply a quaternion with imaginary components and no real component (x, y, z, 0) with a quaternion
|
|
164
|
-
static JPH_INLINE Quat sMultiplyImaginary(Vec3Arg inLHS, QuatArg inRHS);
|
|
165
|
-
|
|
166
|
-
/// Rotate a vector by the inverse of this quaternion
|
|
167
|
-
JPH_INLINE Vec3 InverseRotate(Vec3Arg inValue) const;
|
|
168
|
-
|
|
169
|
-
/// Rotate a the vector (1, 0, 0) with this quaternion
|
|
170
|
-
JPH_INLINE Vec3 RotateAxisX() const;
|
|
171
|
-
|
|
172
|
-
/// Rotate a the vector (0, 1, 0) with this quaternion
|
|
173
|
-
JPH_INLINE Vec3 RotateAxisY() const;
|
|
174
|
-
|
|
175
|
-
/// Rotate a the vector (0, 0, 1) with this quaternion
|
|
176
|
-
JPH_INLINE Vec3 RotateAxisZ() const;
|
|
177
|
-
|
|
178
|
-
/// Dot product
|
|
179
|
-
JPH_INLINE float Dot(QuatArg inRHS) const { return mValue.Dot(inRHS.mValue); }
|
|
180
|
-
|
|
181
|
-
/// The conjugate [w, -x, -y, -z] is the same as the inverse for unit quaternions
|
|
182
|
-
JPH_INLINE Quat Conjugated() const { return Quat(mValue.FlipSign<-1, -1, -1, 1>()); }
|
|
183
|
-
|
|
184
|
-
/// Get inverse quaternion
|
|
185
|
-
JPH_INLINE Quat Inversed() const { return Conjugated() / Length(); }
|
|
186
|
-
|
|
187
|
-
/// Ensures that the W component is positive by negating the entire quaternion if it is not. This is useful when you want to store a quaternion as a 3 vector by discarding W and reconstructing it as sqrt(1 - x^2 - y^2 - z^2).
|
|
188
|
-
JPH_INLINE Quat EnsureWPositive() const { return Quat(Vec4::sXor(mValue, Vec4::sAnd(mValue.SplatW(), UVec4::sReplicate(0x80000000).ReinterpretAsFloat()))); }
|
|
189
|
-
|
|
190
|
-
/// Get a quaternion that is perpendicular to this quaternion
|
|
191
|
-
JPH_INLINE Quat GetPerpendicular() const { return Quat(mValue.Swizzle<SWIZZLE_Y, SWIZZLE_X, SWIZZLE_W, SWIZZLE_Z>().FlipSign<1, -1, 1, -1>()); }
|
|
192
|
-
|
|
193
|
-
/// Get rotation angle around inAxis (uses Swing Twist Decomposition to get the twist quaternion and uses q(axis, angle) = [cos(angle / 2), axis * sin(angle / 2)])
|
|
194
|
-
JPH_INLINE float GetRotationAngle(Vec3Arg inAxis) const { return GetW() == 0.0f? JPH_PI : 2.0f * ATan(GetXYZ().Dot(inAxis) / GetW()); }
|
|
195
|
-
|
|
196
|
-
/// Swing Twist Decomposition: any quaternion can be split up as:
|
|
197
|
-
///
|
|
198
|
-
/// \f[q = q_{swing} \: q_{twist}\f]
|
|
199
|
-
///
|
|
200
|
-
/// where \f$q_{twist}\f$ rotates only around axis v.
|
|
201
|
-
///
|
|
202
|
-
/// \f$q_{twist}\f$ is:
|
|
203
|
-
///
|
|
204
|
-
/// \f[q_{twist} = \frac{[q_w, q_{ijk} \cdot v \: v]}{\left|[q_w, q_{ijk} \cdot v \: v]\right|}\f]
|
|
205
|
-
///
|
|
206
|
-
/// where q_w is the real part of the quaternion and q_i the imaginary part (a 3 vector).
|
|
207
|
-
///
|
|
208
|
-
/// The swing can then be calculated as:
|
|
209
|
-
///
|
|
210
|
-
/// \f[q_{swing} = q \: q_{twist}^* \f]
|
|
211
|
-
///
|
|
212
|
-
/// Where \f$q_{twist}^*\f$ = complex conjugate of \f$q_{twist}\f$
|
|
213
|
-
JPH_INLINE Quat GetTwist(Vec3Arg inAxis) const;
|
|
214
|
-
|
|
215
|
-
/// Decomposes quaternion into swing and twist component:
|
|
216
|
-
///
|
|
217
|
-
/// \f$q = q_{swing} \: q_{twist}\f$
|
|
218
|
-
///
|
|
219
|
-
/// where \f$q_{swing} \: \hat{x} = q_{twist} \: \hat{y} = q_{twist} \: \hat{z} = 0\f$
|
|
220
|
-
///
|
|
221
|
-
/// In other words:
|
|
222
|
-
///
|
|
223
|
-
/// - \f$q_{twist}\f$ only rotates around the X-axis.
|
|
224
|
-
/// - \f$q_{swing}\f$ only rotates around the Y and Z-axis.
|
|
225
|
-
///
|
|
226
|
-
/// @see Gino van den Bergen - Rotational Joint Limits in Quaternion Space - GDC 2016
|
|
227
|
-
JPH_INLINE void GetSwingTwist(Quat &outSwing, Quat &outTwist) const;
|
|
228
|
-
|
|
229
|
-
/// Linear interpolation between two quaternions (for small steps).
|
|
230
|
-
/// @param inFraction is in the range [0, 1]
|
|
231
|
-
/// @param inDestination The destination quaternion
|
|
232
|
-
/// @return (1 - inFraction) * this + fraction * inDestination
|
|
233
|
-
JPH_INLINE Quat LERP(QuatArg inDestination, float inFraction) const;
|
|
234
|
-
|
|
235
|
-
/// Spherical linear interpolation between two quaternions.
|
|
236
|
-
/// @param inFraction is in the range [0, 1]
|
|
237
|
-
/// @param inDestination The destination quaternion
|
|
238
|
-
/// @return When fraction is zero this quaternion is returned, when fraction is 1 inDestination is returned.
|
|
239
|
-
/// When fraction is between 0 and 1 an interpolation along the shortest path is returned.
|
|
240
|
-
JPH_INLINE Quat SLERP(QuatArg inDestination, float inFraction) const;
|
|
241
|
-
|
|
242
|
-
/// Load 3 floats from memory (X, Y and Z component and then calculates W) reads 32 bits extra which it doesn't use
|
|
243
|
-
static JPH_INLINE Quat sLoadFloat3Unsafe(const Float3 &inV);
|
|
244
|
-
|
|
245
|
-
/// Store as 3 floats to memory (X, Y and Z component). Ensures that W is positive before storing.
|
|
246
|
-
JPH_INLINE void StoreFloat3(Float3 *outV) const;
|
|
247
|
-
|
|
248
|
-
/// Store as 4 floats
|
|
249
|
-
JPH_INLINE void StoreFloat4(Float4 *outV) const;
|
|
250
|
-
|
|
251
|
-
/// Compress a unit quaternion to a 32 bit value, precision is around 0.5 degree
|
|
252
|
-
JPH_INLINE uint32 CompressUnitQuat() const { return mValue.CompressUnitVector(); }
|
|
253
|
-
|
|
254
|
-
/// Decompress a unit quaternion from a 32 bit value
|
|
255
|
-
JPH_INLINE static Quat sDecompressUnitQuat(uint32 inValue) { return Quat(Vec4::sDecompressUnitVector(inValue)); }
|
|
256
|
-
|
|
257
|
-
/// To String
|
|
258
|
-
friend ostream & operator << (ostream &inStream, QuatArg inQ) { inStream << inQ.mValue; return inStream; }
|
|
259
|
-
|
|
260
|
-
/// 4 vector that stores [x, y, z, w] parts of the quaternion
|
|
261
|
-
Vec4 mValue;
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
static_assert(std::is_trivial<Quat>(), "Is supposed to be a trivial type!");
|
|
265
|
-
|
|
266
|
-
JPH_NAMESPACE_END
|
|
267
|
-
|
|
268
|
-
#include "Quat.inl"
|
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
|
|
2
|
-
// SPDX-FileCopyrightText: 2021 Jorrit Rouwe
|
|
3
|
-
// SPDX-License-Identifier: MIT
|
|
4
|
-
|
|
5
|
-
JPH_NAMESPACE_BEGIN
|
|
6
|
-
|
|
7
|
-
Quat Quat::operator * (QuatArg inRHS) const
|
|
8
|
-
{
|
|
9
|
-
#if defined(JPH_USE_SSE4_1)
|
|
10
|
-
// Taken from: http://momchil-velikov.blogspot.nl/2013/10/fast-sse-quternion-multiplication.html
|
|
11
|
-
__m128 abcd = mValue.mValue;
|
|
12
|
-
__m128 xyzw = inRHS.mValue.mValue;
|
|
13
|
-
|
|
14
|
-
__m128 t0 = _mm_shuffle_ps(abcd, abcd, _MM_SHUFFLE(3, 3, 3, 3));
|
|
15
|
-
__m128 t1 = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(2, 3, 0, 1));
|
|
16
|
-
|
|
17
|
-
__m128 t3 = _mm_shuffle_ps(abcd, abcd, _MM_SHUFFLE(0, 0, 0, 0));
|
|
18
|
-
__m128 t4 = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(1, 0, 3, 2));
|
|
19
|
-
|
|
20
|
-
__m128 t5 = _mm_shuffle_ps(abcd, abcd, _MM_SHUFFLE(1, 1, 1, 1));
|
|
21
|
-
__m128 t6 = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(2, 0, 3, 1));
|
|
22
|
-
|
|
23
|
-
// [d,d,d,d] * [z,w,x,y] = [dz,dw,dx,dy]
|
|
24
|
-
__m128 m0 = _mm_mul_ps(t0, t1);
|
|
25
|
-
|
|
26
|
-
// [a,a,a,a] * [y,x,w,z] = [ay,ax,aw,az]
|
|
27
|
-
__m128 m1 = _mm_mul_ps(t3, t4);
|
|
28
|
-
|
|
29
|
-
// [b,b,b,b] * [z,x,w,y] = [bz,bx,bw,by]
|
|
30
|
-
__m128 m2 = _mm_mul_ps(t5, t6);
|
|
31
|
-
|
|
32
|
-
// [c,c,c,c] * [w,z,x,y] = [cw,cz,cx,cy]
|
|
33
|
-
__m128 t7 = _mm_shuffle_ps(abcd, abcd, _MM_SHUFFLE(2, 2, 2, 2));
|
|
34
|
-
__m128 t8 = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(3, 2, 0, 1));
|
|
35
|
-
__m128 m3 = _mm_mul_ps(t7, t8);
|
|
36
|
-
|
|
37
|
-
// [dz,dw,dx,dy] + -[ay,ax,aw,az] = [dz+ay,dw-ax,dx+aw,dy-az]
|
|
38
|
-
__m128 e = _mm_addsub_ps(m0, m1);
|
|
39
|
-
|
|
40
|
-
// [dx+aw,dz+ay,dy-az,dw-ax]
|
|
41
|
-
e = _mm_shuffle_ps(e, e, _MM_SHUFFLE(1, 3, 0, 2));
|
|
42
|
-
|
|
43
|
-
// [dx+aw,dz+ay,dy-az,dw-ax] + -[bz,bx,bw,by] = [dx+aw+bz,dz+ay-bx,dy-az+bw,dw-ax-by]
|
|
44
|
-
e = _mm_addsub_ps(e, m2);
|
|
45
|
-
|
|
46
|
-
// [dz+ay-bx,dw-ax-by,dy-az+bw,dx+aw+bz]
|
|
47
|
-
e = _mm_shuffle_ps(e, e, _MM_SHUFFLE(2, 0, 1, 3));
|
|
48
|
-
|
|
49
|
-
// [dz+ay-bx,dw-ax-by,dy-az+bw,dx+aw+bz] + -[cw,cz,cx,cy] = [dz+ay-bx+cw,dw-ax-by-cz,dy-az+bw+cx,dx+aw+bz-cy]
|
|
50
|
-
e = _mm_addsub_ps(e, m3);
|
|
51
|
-
|
|
52
|
-
// [dw-ax-by-cz,dz+ay-bx+cw,dy-az+bw+cx,dx+aw+bz-cy]
|
|
53
|
-
return Quat(Vec4(_mm_shuffle_ps(e, e, _MM_SHUFFLE(2, 3, 1, 0))));
|
|
54
|
-
#else
|
|
55
|
-
float lx = mValue.GetX();
|
|
56
|
-
float ly = mValue.GetY();
|
|
57
|
-
float lz = mValue.GetZ();
|
|
58
|
-
float lw = mValue.GetW();
|
|
59
|
-
|
|
60
|
-
float rx = inRHS.mValue.GetX();
|
|
61
|
-
float ry = inRHS.mValue.GetY();
|
|
62
|
-
float rz = inRHS.mValue.GetZ();
|
|
63
|
-
float rw = inRHS.mValue.GetW();
|
|
64
|
-
|
|
65
|
-
float x = lw * rx + lx * rw + ly * rz - lz * ry;
|
|
66
|
-
float y = lw * ry - lx * rz + ly * rw + lz * rx;
|
|
67
|
-
float z = lw * rz + lx * ry - ly * rx + lz * rw;
|
|
68
|
-
float w = lw * rw - lx * rx - ly * ry - lz * rz;
|
|
69
|
-
|
|
70
|
-
return Quat(x, y, z, w);
|
|
71
|
-
#endif
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
Quat Quat::sMultiplyImaginary(Vec3Arg inLHS, QuatArg inRHS)
|
|
75
|
-
{
|
|
76
|
-
#if defined(JPH_USE_SSE4_1)
|
|
77
|
-
__m128 abc0 = inLHS.mValue;
|
|
78
|
-
__m128 xyzw = inRHS.mValue.mValue;
|
|
79
|
-
|
|
80
|
-
// [a,a,a,a] * [w,y,z,x] = [aw,ay,az,ax]
|
|
81
|
-
__m128 aaaa = _mm_shuffle_ps(abc0, abc0, _MM_SHUFFLE(0, 0, 0, 0));
|
|
82
|
-
__m128 xzyw = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(3, 1, 2, 0));
|
|
83
|
-
__m128 axazayaw = _mm_mul_ps(aaaa, xzyw);
|
|
84
|
-
|
|
85
|
-
// [b,b,b,b] * [z,x,w,y] = [bz,bx,bw,by]
|
|
86
|
-
__m128 bbbb = _mm_shuffle_ps(abc0, abc0, _MM_SHUFFLE(1, 1, 1, 1));
|
|
87
|
-
__m128 ywxz = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(2, 0, 3, 1));
|
|
88
|
-
__m128 bybwbxbz = _mm_mul_ps(bbbb, ywxz);
|
|
89
|
-
|
|
90
|
-
// [c,c,c,c] * [w,z,x,y] = [cw,cz,cx,cy]
|
|
91
|
-
__m128 cccc = _mm_shuffle_ps(abc0, abc0, _MM_SHUFFLE(2, 2, 2, 2));
|
|
92
|
-
__m128 yxzw = _mm_shuffle_ps(xyzw, xyzw, _MM_SHUFFLE(3, 2, 0, 1));
|
|
93
|
-
__m128 cycxczcw = _mm_mul_ps(cccc, yxzw);
|
|
94
|
-
|
|
95
|
-
// [+aw,+ay,-az,-ax]
|
|
96
|
-
__m128 e = _mm_xor_ps(axazayaw, _mm_set_ps(0.0f, 0.0f, -0.0f, -0.0f));
|
|
97
|
-
|
|
98
|
-
// [+aw,+ay,-az,-ax] + -[bz,bx,bw,by] = [+aw+bz,+ay-bx,-az+bw,-ax-by]
|
|
99
|
-
e = _mm_addsub_ps(e, bybwbxbz);
|
|
100
|
-
|
|
101
|
-
// [+ay-bx,-ax-by,-az+bw,+aw+bz]
|
|
102
|
-
e = _mm_shuffle_ps(e, e, _MM_SHUFFLE(2, 0, 1, 3));
|
|
103
|
-
|
|
104
|
-
// [+ay-bx,-ax-by,-az+bw,+aw+bz] + -[cw,cz,cx,cy] = [+ay-bx+cw,-ax-by-cz,-az+bw+cx,+aw+bz-cy]
|
|
105
|
-
e = _mm_addsub_ps(e, cycxczcw);
|
|
106
|
-
|
|
107
|
-
// [-ax-by-cz,+ay-bx+cw,-az+bw+cx,+aw+bz-cy]
|
|
108
|
-
return Quat(Vec4(_mm_shuffle_ps(e, e, _MM_SHUFFLE(2, 3, 1, 0))));
|
|
109
|
-
#else
|
|
110
|
-
float lx = inLHS.GetX();
|
|
111
|
-
float ly = inLHS.GetY();
|
|
112
|
-
float lz = inLHS.GetZ();
|
|
113
|
-
|
|
114
|
-
float rx = inRHS.mValue.GetX();
|
|
115
|
-
float ry = inRHS.mValue.GetY();
|
|
116
|
-
float rz = inRHS.mValue.GetZ();
|
|
117
|
-
float rw = inRHS.mValue.GetW();
|
|
118
|
-
|
|
119
|
-
float x = (lx * rw) + ly * rz - lz * ry;
|
|
120
|
-
float y = -(lx * rz) + ly * rw + lz * rx;
|
|
121
|
-
float z = (lx * ry) - ly * rx + lz * rw;
|
|
122
|
-
float w = -(lx * rx) - ly * ry - lz * rz;
|
|
123
|
-
|
|
124
|
-
return Quat(x, y, z, w);
|
|
125
|
-
#endif
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
Quat Quat::sRotation(Vec3Arg inAxis, float inAngle)
|
|
129
|
-
{
|
|
130
|
-
// returns [inAxis * sin(0.5f * inAngle), cos(0.5f * inAngle)]
|
|
131
|
-
JPH_ASSERT(inAxis.IsNormalized());
|
|
132
|
-
Vec4 s, c;
|
|
133
|
-
Vec4::sReplicate(0.5f * inAngle).SinCos(s, c);
|
|
134
|
-
return Quat(Vec4::sSelect(Vec4(inAxis) * s, c, UVec4(0, 0, 0, 0xffffffffU)));
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
void Quat::GetAxisAngle(Vec3 &outAxis, float &outAngle) const
|
|
138
|
-
{
|
|
139
|
-
JPH_ASSERT(IsNormalized());
|
|
140
|
-
Quat w_pos = EnsureWPositive();
|
|
141
|
-
float abs_w = w_pos.GetW();
|
|
142
|
-
if (abs_w >= 1.0f)
|
|
143
|
-
{
|
|
144
|
-
outAxis = Vec3::sZero();
|
|
145
|
-
outAngle = 0.0f;
|
|
146
|
-
}
|
|
147
|
-
else
|
|
148
|
-
{
|
|
149
|
-
outAngle = 2.0f * ACos(abs_w);
|
|
150
|
-
outAxis = w_pos.GetXYZ().NormalizedOr(Vec3::sZero());
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
Quat Quat::sFromTo(Vec3Arg inFrom, Vec3Arg inTo)
|
|
155
|
-
{
|
|
156
|
-
/*
|
|
157
|
-
Uses (inFrom = v1, inTo = v2):
|
|
158
|
-
|
|
159
|
-
angle = arcos(v1 . v2 / |v1||v2|)
|
|
160
|
-
axis = normalize(v1 x v2)
|
|
161
|
-
|
|
162
|
-
Quaternion is then:
|
|
163
|
-
|
|
164
|
-
s = sin(angle / 2)
|
|
165
|
-
x = axis.x * s
|
|
166
|
-
y = axis.y * s
|
|
167
|
-
z = axis.z * s
|
|
168
|
-
w = cos(angle / 2)
|
|
169
|
-
|
|
170
|
-
Using identities:
|
|
171
|
-
|
|
172
|
-
sin(2 * a) = 2 * sin(a) * cos(a)
|
|
173
|
-
cos(2 * a) = cos(a)^2 - sin(a)^2
|
|
174
|
-
sin(a)^2 + cos(a)^2 = 1
|
|
175
|
-
|
|
176
|
-
This reduces to:
|
|
177
|
-
|
|
178
|
-
x = (v1 x v2).x
|
|
179
|
-
y = (v1 x v2).y
|
|
180
|
-
z = (v1 x v2).z
|
|
181
|
-
w = |v1||v2| + v1 . v2
|
|
182
|
-
|
|
183
|
-
which then needs to be normalized because the whole equation was multiplied by 2 cos(angle / 2)
|
|
184
|
-
*/
|
|
185
|
-
|
|
186
|
-
float len_v1_v2 = sqrt(inFrom.LengthSq() * inTo.LengthSq());
|
|
187
|
-
float w = len_v1_v2 + inFrom.Dot(inTo);
|
|
188
|
-
|
|
189
|
-
if (w == 0.0f)
|
|
190
|
-
{
|
|
191
|
-
if (len_v1_v2 == 0.0f)
|
|
192
|
-
{
|
|
193
|
-
// If either of the vectors has zero length, there is no rotation and we return identity
|
|
194
|
-
return Quat::sIdentity();
|
|
195
|
-
}
|
|
196
|
-
else
|
|
197
|
-
{
|
|
198
|
-
// If vectors are perpendicular, take one of the many 180 degree rotations that exist
|
|
199
|
-
return Quat(Vec4(inFrom.GetNormalizedPerpendicular(), 0));
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
Vec3 v = inFrom.Cross(inTo);
|
|
204
|
-
return Quat(Vec4(v, w)).Normalized();
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
template <class Random>
|
|
208
|
-
Quat Quat::sRandom(Random &inRandom)
|
|
209
|
-
{
|
|
210
|
-
std::uniform_real_distribution<float> zero_to_one(0.0f, 1.0f);
|
|
211
|
-
float x0 = zero_to_one(inRandom);
|
|
212
|
-
float r1 = sqrt(1.0f - x0), r2 = sqrt(x0);
|
|
213
|
-
std::uniform_real_distribution<float> zero_to_two_pi(0.0f, 2.0f * JPH_PI);
|
|
214
|
-
Vec4 s, c;
|
|
215
|
-
Vec4(zero_to_two_pi(inRandom), zero_to_two_pi(inRandom), 0, 0).SinCos(s, c);
|
|
216
|
-
return Quat(s.GetX() * r1, c.GetX() * r1, s.GetY() * r2, c.GetY() * r2);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
Quat Quat::sEulerAngles(Vec3Arg inAngles)
|
|
220
|
-
{
|
|
221
|
-
Vec4 half(0.5f * inAngles);
|
|
222
|
-
Vec4 s, c;
|
|
223
|
-
half.SinCos(s, c);
|
|
224
|
-
|
|
225
|
-
float cx = c.GetX();
|
|
226
|
-
float sx = s.GetX();
|
|
227
|
-
float cy = c.GetY();
|
|
228
|
-
float sy = s.GetY();
|
|
229
|
-
float cz = c.GetZ();
|
|
230
|
-
float sz = s.GetZ();
|
|
231
|
-
|
|
232
|
-
return Quat(
|
|
233
|
-
cz * sx * cy - sz * cx * sy,
|
|
234
|
-
cz * cx * sy + sz * sx * cy,
|
|
235
|
-
sz * cx * cy - cz * sx * sy,
|
|
236
|
-
cz * cx * cy + sz * sx * sy);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
Vec3 Quat::GetEulerAngles() const
|
|
240
|
-
{
|
|
241
|
-
float y_sq = GetY() * GetY();
|
|
242
|
-
|
|
243
|
-
// X
|
|
244
|
-
float t0 = 2.0f * (GetW() * GetX() + GetY() * GetZ());
|
|
245
|
-
float t1 = 1.0f - 2.0f * (GetX() * GetX() + y_sq);
|
|
246
|
-
|
|
247
|
-
// Y
|
|
248
|
-
float t2 = 2.0f * (GetW() * GetY() - GetZ() * GetX());
|
|
249
|
-
t2 = t2 > 1.0f? 1.0f : t2;
|
|
250
|
-
t2 = t2 < -1.0f? -1.0f : t2;
|
|
251
|
-
|
|
252
|
-
// Z
|
|
253
|
-
float t3 = 2.0f * (GetW() * GetZ() + GetX() * GetY());
|
|
254
|
-
float t4 = 1.0f - 2.0f * (y_sq + GetZ() * GetZ());
|
|
255
|
-
|
|
256
|
-
return Vec3(ATan2(t0, t1), ASin(t2), ATan2(t3, t4));
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
Quat Quat::GetTwist(Vec3Arg inAxis) const
|
|
260
|
-
{
|
|
261
|
-
Quat twist(Vec4(GetXYZ().Dot(inAxis) * inAxis, GetW()));
|
|
262
|
-
float twist_len = twist.LengthSq();
|
|
263
|
-
if (twist_len != 0.0f)
|
|
264
|
-
return twist / sqrt(twist_len);
|
|
265
|
-
else
|
|
266
|
-
return Quat::sIdentity();
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
void Quat::GetSwingTwist(Quat &outSwing, Quat &outTwist) const
|
|
270
|
-
{
|
|
271
|
-
float x = GetX(), y = GetY(), z = GetZ(), w = GetW();
|
|
272
|
-
float s = sqrt(Square(w) + Square(x));
|
|
273
|
-
if (s != 0.0f)
|
|
274
|
-
{
|
|
275
|
-
outTwist = Quat(x / s, 0, 0, w / s);
|
|
276
|
-
outSwing = Quat(0, (w * y - x * z) / s, (w * z + x * y) / s, s);
|
|
277
|
-
}
|
|
278
|
-
else
|
|
279
|
-
{
|
|
280
|
-
// If both x and w are zero, this must be a 180 degree rotation around either y or z
|
|
281
|
-
outTwist = Quat::sIdentity();
|
|
282
|
-
outSwing = *this;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
Quat Quat::LERP(QuatArg inDestination, float inFraction) const
|
|
287
|
-
{
|
|
288
|
-
float scale0 = 1.0f - inFraction;
|
|
289
|
-
return Quat(Vec4::sReplicate(scale0) * mValue + Vec4::sReplicate(inFraction) * inDestination.mValue);
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
Quat Quat::SLERP(QuatArg inDestination, float inFraction) const
|
|
293
|
-
{
|
|
294
|
-
// Difference at which to LERP instead of SLERP
|
|
295
|
-
const float delta = 0.0001f;
|
|
296
|
-
|
|
297
|
-
// Calc cosine
|
|
298
|
-
float sign_scale1 = 1.0f;
|
|
299
|
-
float cos_omega = Dot(inDestination);
|
|
300
|
-
|
|
301
|
-
// Adjust signs (if necessary)
|
|
302
|
-
if (cos_omega < 0.0f)
|
|
303
|
-
{
|
|
304
|
-
cos_omega = -cos_omega;
|
|
305
|
-
sign_scale1 = -1.0f;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
// Calculate coefficients
|
|
309
|
-
float scale0, scale1;
|
|
310
|
-
if (1.0f - cos_omega > delta)
|
|
311
|
-
{
|
|
312
|
-
// Standard case (slerp)
|
|
313
|
-
float omega = ACos(cos_omega);
|
|
314
|
-
float sin_omega = Sin(omega);
|
|
315
|
-
scale0 = Sin((1.0f - inFraction) * omega) / sin_omega;
|
|
316
|
-
scale1 = sign_scale1 * Sin(inFraction * omega) / sin_omega;
|
|
317
|
-
}
|
|
318
|
-
else
|
|
319
|
-
{
|
|
320
|
-
// Quaternions are very close so we can do a linear interpolation
|
|
321
|
-
scale0 = 1.0f - inFraction;
|
|
322
|
-
scale1 = sign_scale1 * inFraction;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
// Interpolate between the two quaternions
|
|
326
|
-
return Quat(Vec4::sReplicate(scale0) * mValue + Vec4::sReplicate(scale1) * inDestination.mValue).Normalized();
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
Vec3 Quat::operator * (Vec3Arg inValue) const
|
|
330
|
-
{
|
|
331
|
-
// Rotating a vector by a quaternion is done by: p' = q * (p, 0) * q^-1 (q^-1 = conjugated(q) for a unit quaternion)
|
|
332
|
-
// Using Rodrigues formula: https://en.m.wikipedia.org/wiki/Euler%E2%80%93Rodrigues_formula
|
|
333
|
-
// This is equivalent to: p' = p + 2 * (q.w * q.xyz x p + q.xyz x (q.xyz x p))
|
|
334
|
-
//
|
|
335
|
-
// This is:
|
|
336
|
-
//
|
|
337
|
-
// Vec3 xyz = GetXYZ();
|
|
338
|
-
// Vec3 q_cross_p = xyz.Cross(inValue);
|
|
339
|
-
// Vec3 q_cross_q_cross_p = xyz.Cross(q_cross_p);
|
|
340
|
-
// Vec3 v = mValue.SplatW3() * q_cross_p + q_cross_q_cross_p;
|
|
341
|
-
// return inValue + (v + v);
|
|
342
|
-
//
|
|
343
|
-
// But we can write out the cross products in a more efficient way:
|
|
344
|
-
JPH_ASSERT(IsNormalized());
|
|
345
|
-
Vec3 xyz = GetXYZ();
|
|
346
|
-
Vec3 yzx = xyz.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>();
|
|
347
|
-
Vec3 q_cross_p = (inValue.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>() * xyz - yzx * inValue).Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>();
|
|
348
|
-
Vec3 q_cross_q_cross_p = (q_cross_p.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>() * xyz - yzx * q_cross_p).Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>();
|
|
349
|
-
Vec3 v = mValue.SplatW3() * q_cross_p + q_cross_q_cross_p;
|
|
350
|
-
return inValue + (v + v);
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
Vec3 Quat::InverseRotate(Vec3Arg inValue) const
|
|
354
|
-
{
|
|
355
|
-
JPH_ASSERT(IsNormalized());
|
|
356
|
-
Vec3 xyz = GetXYZ(); // Needs to be negated, but we do this in the equations below
|
|
357
|
-
Vec3 yzx = xyz.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>();
|
|
358
|
-
Vec3 q_cross_p = (yzx * inValue - inValue.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>() * xyz).Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>();
|
|
359
|
-
Vec3 q_cross_q_cross_p = (yzx * q_cross_p - q_cross_p.Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>() * xyz).Swizzle<SWIZZLE_Y, SWIZZLE_Z, SWIZZLE_X>();
|
|
360
|
-
Vec3 v = mValue.SplatW3() * q_cross_p + q_cross_q_cross_p;
|
|
361
|
-
return inValue + (v + v);
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
Vec3 Quat::RotateAxisX() const
|
|
365
|
-
{
|
|
366
|
-
// This is *this * Vec3::sAxisX() written out:
|
|
367
|
-
JPH_ASSERT(IsNormalized());
|
|
368
|
-
Vec4 t = mValue + mValue;
|
|
369
|
-
return Vec3(t.SplatX() * mValue + (t.SplatW() * mValue.Swizzle<SWIZZLE_W, SWIZZLE_Z, SWIZZLE_Y, SWIZZLE_X>()).FlipSign<1, 1, -1, 1>() - Vec4(1, 0, 0, 0));
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
Vec3 Quat::RotateAxisY() const
|
|
373
|
-
{
|
|
374
|
-
// This is *this * Vec3::sAxisY() written out:
|
|
375
|
-
JPH_ASSERT(IsNormalized());
|
|
376
|
-
Vec4 t = mValue + mValue;
|
|
377
|
-
return Vec3(t.SplatY() * mValue + (t.SplatW() * mValue.Swizzle<SWIZZLE_Z, SWIZZLE_W, SWIZZLE_X, SWIZZLE_Y>()).FlipSign<-1, 1, 1, 1>() - Vec4(0, 1, 0, 0));
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
Vec3 Quat::RotateAxisZ() const
|
|
381
|
-
{
|
|
382
|
-
// This is *this * Vec3::sAxisZ() written out:
|
|
383
|
-
JPH_ASSERT(IsNormalized());
|
|
384
|
-
Vec4 t = mValue + mValue;
|
|
385
|
-
return Vec3(t.SplatZ() * mValue + (t.SplatW() * mValue.Swizzle<SWIZZLE_Y, SWIZZLE_X, SWIZZLE_W, SWIZZLE_Z>()).FlipSign<1, -1, 1, 1>() - Vec4(0, 0, 1, 0));
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
void Quat::StoreFloat3(Float3 *outV) const
|
|
389
|
-
{
|
|
390
|
-
JPH_ASSERT(IsNormalized());
|
|
391
|
-
EnsureWPositive().GetXYZ().StoreFloat3(outV);
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
void Quat::StoreFloat4(Float4 *outV) const
|
|
395
|
-
{
|
|
396
|
-
mValue.StoreFloat4(outV);
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
Quat Quat::sLoadFloat3Unsafe(const Float3 &inV)
|
|
400
|
-
{
|
|
401
|
-
Vec3 v = Vec3::sLoadFloat3Unsafe(inV);
|
|
402
|
-
float w = sqrt(max(1.0f - v.LengthSq(), 0.0f)); // It is possible that the length of v is a fraction above 1, and we don't want to introduce NaN's in that case so we clamp to 0
|
|
403
|
-
return Quat(Vec4(v, w));
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
JPH_NAMESPACE_END
|