@bloomengine/engine 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +169 -0
- package/native/android/Cargo.lock +1848 -0
- package/native/android/Cargo.toml +20 -0
- package/native/android/src/lib.rs +1747 -0
- package/native/ios/Cargo.lock +1688 -0
- package/native/ios/Cargo.toml +19 -0
- package/native/ios/src/lib.rs +2258 -0
- package/native/linux/Cargo.lock +1719 -0
- package/native/linux/Cargo.toml +22 -0
- package/native/linux/src/lib.rs +2236 -0
- package/native/macos/Cargo.lock +3310 -0
- package/native/macos/Cargo.toml +29 -0
- package/native/macos/src/lib.rs +3444 -0
- package/native/shared/Cargo.lock +1898 -0
- package/native/shared/Cargo.toml +42 -0
- package/native/shared/assets/default_font.ttf +0 -0
- package/native/shared/build.rs +77 -0
- package/native/shared/shaders/common/fog.wgsl +16 -0
- package/native/shared/shaders/common/imposter.wgsl +112 -0
- package/native/shared/shaders/common/pbr.wgsl +186 -0
- package/native/shared/shaders/common/shadows.wgsl +77 -0
- package/native/shared/shaders/common/sky.wgsl +8 -0
- package/native/shared/shaders/common/tonemap.wgsl +25 -0
- package/native/shared/shaders/impulse_field.wgsl +53 -0
- package/native/shared/shaders/material_abi.wgsl +360 -0
- package/native/shared/shaders/materials/test_minimal.wgsl +42 -0
- package/native/shared/src/audio.rs +363 -0
- package/native/shared/src/custom_shaders.rs +104 -0
- package/native/shared/src/drs.rs +211 -0
- package/native/shared/src/engine.rs +186 -0
- package/native/shared/src/frame_callbacks.rs +88 -0
- package/native/shared/src/geometry.rs +236 -0
- package/native/shared/src/handles.rs +76 -0
- package/native/shared/src/input.rs +273 -0
- package/native/shared/src/jolt_sys.rs +822 -0
- package/native/shared/src/lib.rs +43 -0
- package/native/shared/src/models.rs +1941 -0
- package/native/shared/src/physics_jolt.rs +1528 -0
- package/native/shared/src/picking.rs +298 -0
- package/native/shared/src/postfx.rs +339 -0
- package/native/shared/src/profiler.rs +416 -0
- package/native/shared/src/renderer/atmosphere_lut.rs +573 -0
- package/native/shared/src/renderer/brdf_lut.rs +154 -0
- package/native/shared/src/renderer/formats.rs +778 -0
- package/native/shared/src/renderer/graph.rs +465 -0
- package/native/shared/src/renderer/hot_reload.rs +390 -0
- package/native/shared/src/renderer/impulse_field.rs +455 -0
- package/native/shared/src/renderer/material_pipeline.rs +604 -0
- package/native/shared/src/renderer/material_system.rs +2106 -0
- package/native/shared/src/renderer/mod.rs +13923 -0
- package/native/shared/src/renderer/planar_reflection.rs +458 -0
- package/native/shared/src/renderer/post_pass.rs +249 -0
- package/native/shared/src/renderer/shader_include.rs +205 -0
- package/native/shared/src/renderer/shader_library.rs +134 -0
- package/native/shared/src/renderer/shaders.rs +5855 -0
- package/native/shared/src/renderer/transient.rs +576 -0
- package/native/shared/src/renderer/types.rs +259 -0
- package/native/shared/src/renderer/util.rs +151 -0
- package/native/shared/src/scene.rs +1066 -0
- package/native/shared/src/sdf_cache.rs +274 -0
- package/native/shared/src/shadows.rs +551 -0
- package/native/shared/src/staging.rs +90 -0
- package/native/shared/src/string_header.rs +35 -0
- package/native/shared/src/text_renderer.rs +456 -0
- package/native/shared/src/textures.rs +154 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp +242 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h +121 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h +296 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h +323 -0
- package/native/third_party/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h +555 -0
- package/native/third_party/JoltPhysics/Jolt/ConfigurationString.h +112 -0
- package/native/third_party/JoltPhysics/Jolt/Core/ARMNeon.h +94 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Array.h +713 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Atomics.h +44 -0
- package/native/third_party/JoltPhysics/Jolt/Core/BinaryHeap.h +96 -0
- package/native/third_party/JoltPhysics/Jolt/Core/ByteBuffer.h +74 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Color.cpp +38 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Color.h +98 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Core.h +652 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FPControlWord.h +143 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FPException.h +96 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FPFlushDenormals.h +43 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Factory.cpp +92 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Factory.h +54 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.h +122 -0
- package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.inl +215 -0
- package/native/third_party/JoltPhysics/Jolt/Core/HashCombine.h +234 -0
- package/native/third_party/JoltPhysics/Jolt/Core/HashTable.h +876 -0
- package/native/third_party/JoltPhysics/Jolt/Core/InsertionSort.h +58 -0
- package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.cpp +27 -0
- package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.h +38 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.h +311 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.inl +56 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.cpp +65 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.h +62 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.cpp +364 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.h +101 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.cpp +230 -0
- package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.h +85 -0
- package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.cpp +51 -0
- package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.h +67 -0
- package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.h +182 -0
- package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.inl +351 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Memory.cpp +85 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Memory.h +85 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Mutex.h +223 -0
- package/native/third_party/JoltPhysics/Jolt/Core/MutexArray.h +98 -0
- package/native/third_party/JoltPhysics/Jolt/Core/NonCopyable.h +18 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.cpp +677 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.h +301 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Profiler.inl +90 -0
- package/native/third_party/JoltPhysics/Jolt/Core/QuickSort.h +137 -0
- package/native/third_party/JoltPhysics/Jolt/Core/RTTI.cpp +149 -0
- package/native/third_party/JoltPhysics/Jolt/Core/RTTI.h +436 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Reference.h +244 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Result.h +174 -0
- package/native/third_party/JoltPhysics/Jolt/Core/STLAlignedAllocator.h +72 -0
- package/native/third_party/JoltPhysics/Jolt/Core/STLAllocator.h +127 -0
- package/native/third_party/JoltPhysics/Jolt/Core/STLLocalAllocator.h +170 -0
- package/native/third_party/JoltPhysics/Jolt/Core/STLTempAllocator.h +80 -0
- package/native/third_party/JoltPhysics/Jolt/Core/ScopeExit.h +49 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.cpp +135 -0
- package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.h +68 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StaticArray.h +329 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StreamIn.h +120 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StreamOut.h +97 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StreamUtils.h +168 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StreamWrapper.h +53 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StridedPtr.h +63 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StringTools.cpp +101 -0
- package/native/third_party/JoltPhysics/Jolt/Core/StringTools.h +38 -0
- package/native/third_party/JoltPhysics/Jolt/Core/TempAllocator.h +209 -0
- package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.cpp +37 -0
- package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.h +58 -0
- package/native/third_party/JoltPhysics/Jolt/Core/UnorderedMap.h +80 -0
- package/native/third_party/JoltPhysics/Jolt/Core/UnorderedSet.h +32 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/AABox.h +313 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/AABox4.h +224 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ClipPoly.h +200 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ClosestPoint.h +498 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.cpp +1467 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.h +276 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.cpp +335 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.h +105 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexSupport.h +188 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/EPAConvexHullBuilder.h +845 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/EPAPenetrationDepth.h +557 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Ellipse.h +77 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/GJKClosestPoint.h +945 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/IndexedTriangle.h +130 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.cpp +222 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.h +19 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/MortonCode.h +40 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.cpp +178 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.h +39 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Plane.h +104 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayAABox.h +241 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayCapsule.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayCylinder.h +101 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RaySphere.h +96 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/RayTriangle.h +158 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Sphere.h +72 -0
- package/native/third_party/JoltPhysics/Jolt/Geometry/Triangle.h +34 -0
- package/native/third_party/JoltPhysics/Jolt/Jolt.cmake +703 -0
- package/native/third_party/JoltPhysics/Jolt/Jolt.h +16 -0
- package/native/third_party/JoltPhysics/Jolt/Jolt.natvis +116 -0
- package/native/third_party/JoltPhysics/Jolt/Math/BVec16.h +99 -0
- package/native/third_party/JoltPhysics/Jolt/Math/BVec16.inl +177 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DMat44.h +158 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DMat44.inl +310 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DVec3.h +291 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DVec3.inl +941 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Double3.h +48 -0
- package/native/third_party/JoltPhysics/Jolt/Math/DynMatrix.h +31 -0
- package/native/third_party/JoltPhysics/Jolt/Math/EigenValueSymmetric.h +177 -0
- package/native/third_party/JoltPhysics/Jolt/Math/FindRoot.h +42 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Float2.h +36 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Float3.h +50 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Float4.h +44 -0
- package/native/third_party/JoltPhysics/Jolt/Math/GaussianElimination.h +102 -0
- package/native/third_party/JoltPhysics/Jolt/Math/HalfFloat.h +208 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Mat44.h +243 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Mat44.inl +952 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Math.h +208 -0
- package/native/third_party/JoltPhysics/Jolt/Math/MathTypes.h +32 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Matrix.h +259 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Quat.h +268 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Quat.inl +406 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Real.h +44 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Swizzle.h +19 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Trigonometry.h +79 -0
- package/native/third_party/JoltPhysics/Jolt/Math/UVec4.h +232 -0
- package/native/third_party/JoltPhysics/Jolt/Math/UVec4.inl +636 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.cpp +71 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.h +308 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec3.inl +942 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec4.h +320 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vec4.inl +1152 -0
- package/native/third_party/JoltPhysics/Jolt/Math/Vector.h +211 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/GetPrimitiveTypeOfType.h +54 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.cpp +38 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.h +337 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.cpp +252 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.h +57 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.cpp +165 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.h +57 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.cpp +635 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.h +148 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.cpp +166 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.h +101 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.cpp +418 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.h +55 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.cpp +255 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.h +62 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTypes.h +26 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttribute.h +111 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeEnum.h +67 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeTyped.h +60 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.cpp +15 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.h +170 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.cpp +70 -0
- package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.h +45 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/AllowedDOFs.h +68 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.cpp +426 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.h +452 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.inl +197 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyAccess.h +68 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyActivationListener.h +28 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp +234 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.h +124 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyFilter.h +130 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyID.h +101 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.cpp +1099 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.h +324 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLock.h +111 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockInterface.h +134 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockMulti.h +120 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.cpp +1220 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.h +403 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyPair.h +36 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyType.h +19 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.cpp +185 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.h +58 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.cpp +92 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.h +308 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.inl +178 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionQuality.h +31 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionType.h +17 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.cpp +354 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.h +159 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.cpp +59 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.h +157 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterID.h +98 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.cpp +1933 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.h +752 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/AABoxCast.h +20 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdgeMode.h +17 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdges.h +114 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BackFaceMode.h +16 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp +16 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.h +109 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp +313 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h +38 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h +148 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h +92 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h +64 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp +629 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h +108 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h +56 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h +35 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h +66 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.cpp +1768 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.h +389 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.cpp +107 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.h +46 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastResult.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.cpp +223 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.h +49 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollectFacesMode.h +16 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.cpp +155 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.h +56 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollidePointResult.h +25 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShape.h +106 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShapeVsShapePerLeaf.h +94 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVertexIterator.h +110 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h +102 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.cpp +121 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.h +50 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollector.h +109 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollectorImpl.h +219 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.cpp +107 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.h +97 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.cpp +35 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.h +97 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ContactListener.h +143 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.cpp +213 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.h +48 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.cpp +32 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.h +46 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.cpp +38 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.h +130 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/InternalEdgeRemovingCollector.h +279 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp +271 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h +44 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.cpp +448 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.h +77 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.cpp +62 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.h +110 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayer.h +111 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterMask.h +52 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterTable.h +78 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.cpp +35 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.h +57 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.cpp +38 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/RayCast.h +87 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.cpp +318 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.h +115 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.cpp +438 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.h +129 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.cpp +433 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.h +354 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h +461 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.cpp +1311 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.h +202 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.cpp +566 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.h +150 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.cpp +418 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.h +126 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.cpp +87 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.h +80 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.cpp +64 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.h +75 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/GetTrianglesContext.h +248 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp +2754 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.h +380 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.cpp +1305 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.h +228 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp +596 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.h +176 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp +217 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h +140 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.cpp +541 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.h +147 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h +319 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp +333 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h +161 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaleHelpers.h +83 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.cpp +238 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.h +145 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.cpp +325 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.h +466 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.cpp +347 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.h +125 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp +674 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.h +139 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeID.h +138 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeIDPair.h +65 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp +453 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.gliffy +1 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h +135 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp +691 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.h +132 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.cpp +430 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.h +143 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeCast.h +173 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeFilter.h +73 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilter.h +40 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilterWrapper.h +58 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SortReverseAndStore.h +48 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.cpp +180 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.h +194 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/CalculateSolverSteps.h +70 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.cpp +246 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.h +133 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.cpp +73 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.h +243 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.cpp +289 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.h +100 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h +257 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h +682 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h +276 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h +195 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h +222 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h +246 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h +239 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h +196 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h +283 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h +246 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SpringPart.h +169 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h +597 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.cpp +1804 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.h +524 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.cpp +266 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.h +120 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.cpp +215 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.h +96 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.cpp +188 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.h +116 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.cpp +443 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.h +205 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.cpp +43 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.h +66 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.cpp +458 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.h +191 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.cpp +85 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.h +76 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.cpp +308 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.h +54 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.cpp +157 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.h +94 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.cpp +253 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.h +137 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.cpp +189 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.h +118 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.cpp +900 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.h +289 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.cpp +501 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.h +198 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.cpp +35 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.h +70 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.cpp +524 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.h +197 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.cpp +56 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.h +65 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.cpp +17 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.h +159 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/EActivation.h +16 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/EPhysicsUpdateError.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.cpp +492 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.h +144 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.cpp +582 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.h +187 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsLock.h +169 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.cpp +261 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.h +104 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSettings.h +125 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsStepListener.h +37 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.cpp +2915 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.h +391 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.cpp +25 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.h +176 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.cpp +744 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.h +245 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyContactListener.h +55 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp +128 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.h +75 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyManifold.h +74 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp +1501 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.h +333 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.cpp +354 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.h +73 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp +1487 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.h +390 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyUpdateContext.h +63 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyVertex.h +36 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorder.h +136 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.cpp +90 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.h +50 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.cpp +306 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.h +119 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.cpp +547 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.h +169 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp +33 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.h +33 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.cpp +376 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.h +146 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.cpp +703 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.h +252 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.cpp +17 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.h +87 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.cpp +81 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.h +39 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.cpp +122 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.h +93 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.cpp +52 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.h +56 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.cpp +159 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.h +87 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.cpp +93 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.h +148 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.cpp +866 -0
- package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.h +205 -0
- package/native/third_party/JoltPhysics/Jolt/RegisterTypes.cpp +204 -0
- package/native/third_party/JoltPhysics/Jolt/RegisterTypes.h +29 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.cpp +1107 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.h +383 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.cpp +168 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.h +48 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.cpp +158 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.h +130 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.cpp +80 -0
- package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.h +88 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.cpp +165 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.h +91 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.cpp +82 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.h +72 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.cpp +237 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.h +145 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.cpp +87 -0
- package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.h +82 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.cpp +73 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.h +84 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp +139 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.h +52 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.cpp +43 -0
- package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.h +28 -0
- package/native/third_party/JoltPhysics/LICENSE +7 -0
- package/native/third_party/JoltPhysics/README.md +173 -0
- package/native/third_party/bloom_jolt/CMakeLists.txt +78 -0
- package/native/third_party/bloom_jolt/include/bloom_jolt.h +519 -0
- package/native/third_party/bloom_jolt/src/bloom_jolt.cpp +1780 -0
- package/native/tvos/Cargo.lock +1692 -0
- package/native/tvos/Cargo.toml +22 -0
- package/native/tvos/src/lib.rs +3179 -0
- package/native/watchos/Cargo.lock +16 -0
- package/native/watchos/Cargo.toml +19 -0
- package/native/watchos/shaders/bloom_postfx.metal +99 -0
- package/native/watchos/src/BloomWatchApp.swift +1236 -0
- package/native/watchos/src/BloomWatchAudio.swift +179 -0
- package/native/watchos/src/audio.rs +55 -0
- package/native/watchos/src/draw_list.rs +223 -0
- package/native/watchos/src/ffi_stubs.rs +454 -0
- package/native/watchos/src/lib.rs +1013 -0
- package/native/watchos/src/models.rs +746 -0
- package/native/watchos/src/postfx.rs +91 -0
- package/native/watchos/src/scene.rs +534 -0
- package/native/watchos/src/textures.rs +184 -0
- package/native/web/Cargo.lock +1656 -0
- package/native/web/Cargo.toml +38 -0
- package/native/web/bloom_glue.js +218 -0
- package/native/web/build.sh +101 -0
- package/native/web/index.html +390 -0
- package/native/web/jolt_bridge.js +1311 -0
- package/native/web/src/lib.rs +2739 -0
- package/native/windows/Cargo.lock +1813 -0
- package/native/windows/Cargo.toml +31 -0
- package/native/windows/src/lib.rs +1933 -0
- package/package.json +558 -0
- package/src/audio/index.ts +151 -0
- package/src/core/colors.ts +56 -0
- package/src/core/index.ts +903 -0
- package/src/core/keys.ts +63 -0
- package/src/core/types.ts +102 -0
- package/src/index.ts +158 -0
- package/src/math/index.ts +502 -0
- package/src/mobile/index.ts +294 -0
- package/src/models/index.ts +859 -0
- package/src/physics/index.ts +1072 -0
- package/src/scene/index.ts +570 -0
- package/src/shapes/index.ts +120 -0
- package/src/text/index.ts +48 -0
- package/src/textures/index.ts +173 -0
- package/src/world/index.ts +22 -0
- package/src/world/loader.ts +385 -0
- package/src/world/prefab.ts +205 -0
- package/src/world/saver.ts +61 -0
- package/src/world/terrain.ts +254 -0
- package/src/world/types.ts +136 -0
- package/src/world/validate.ts +202 -0
- package/src/world/version.ts +47 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
|
|
2
|
+
// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
#include <Jolt/Core/QuickSort.h>
|
|
8
|
+
#include <Jolt/Core/STLLocalAllocator.h>
|
|
9
|
+
#include <Jolt/Physics/Collision/CollisionDispatch.h>
|
|
10
|
+
|
|
11
|
+
//#define JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
12
|
+
|
|
13
|
+
#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
14
|
+
#include <Jolt/Renderer/DebugRenderer.h>
|
|
15
|
+
#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
16
|
+
|
|
17
|
+
JPH_NAMESPACE_BEGIN
|
|
18
|
+
|
|
19
|
+
/// Removes internal edges from collision results. Can be used to filter out 'ghost collisions'.
|
|
20
|
+
/// Based on: Contact generation for meshes - Pierre Terdiman (https://www.codercorner.com/MeshContacts.pdf)
|
|
21
|
+
///
|
|
22
|
+
/// Note that this class requires that CollideSettingsBase::mActiveEdgeMode == EActiveEdgeMode::CollideWithAll
|
|
23
|
+
/// and CollideSettingsBase::mCollectFacesMode == ECollectFacesMode::CollectFaces.
|
|
24
|
+
class InternalEdgeRemovingCollector : public CollideShapeCollector
|
|
25
|
+
{
|
|
26
|
+
static constexpr uint cMaxLocalDelayedResults = 32;
|
|
27
|
+
static constexpr uint cMaxLocalVoidedFeatures = 128;
|
|
28
|
+
|
|
29
|
+
/// Check if a vertex is voided
|
|
30
|
+
inline bool IsVoided(const SubShapeID &inSubShapeID, Vec3 inV) const
|
|
31
|
+
{
|
|
32
|
+
for (const Voided &vf : mVoidedFeatures)
|
|
33
|
+
if (vf.mSubShapeID == inSubShapeID
|
|
34
|
+
&& inV.IsClose(Vec3::sLoadFloat3Unsafe(vf.mFeature), 1.0e-8f))
|
|
35
|
+
return true;
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/// Add all vertices of a face to the voided features
|
|
40
|
+
inline void VoidFeatures(const CollideShapeResult &inResult)
|
|
41
|
+
{
|
|
42
|
+
for (const Vec3 &v : inResult.mShape2Face)
|
|
43
|
+
if (!IsVoided(inResult.mSubShapeID1, v))
|
|
44
|
+
{
|
|
45
|
+
Voided vf;
|
|
46
|
+
v.StoreFloat3(&vf.mFeature);
|
|
47
|
+
vf.mSubShapeID = inResult.mSubShapeID1;
|
|
48
|
+
mVoidedFeatures.push_back(vf);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/// Call the chained collector
|
|
53
|
+
inline void Chain(const CollideShapeResult &inResult)
|
|
54
|
+
{
|
|
55
|
+
// Make sure the chained collector has the same context as we do
|
|
56
|
+
mChainedCollector.SetContext(GetContext());
|
|
57
|
+
|
|
58
|
+
// Forward the hit
|
|
59
|
+
mChainedCollector.AddHit(inResult);
|
|
60
|
+
|
|
61
|
+
// If our chained collector updated its early out fraction, we need to follow
|
|
62
|
+
UpdateEarlyOutFraction(mChainedCollector.GetEarlyOutFraction());
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/// Call the chained collector and void all features of inResult
|
|
66
|
+
inline void ChainAndVoid(const CollideShapeResult &inResult)
|
|
67
|
+
{
|
|
68
|
+
Chain(inResult);
|
|
69
|
+
VoidFeatures(inResult);
|
|
70
|
+
|
|
71
|
+
#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
72
|
+
DebugRenderer::sInstance->DrawWirePolygon(RMat44::sTranslation(mBaseOffset), inResult.mShape2Face, Color::sGreen);
|
|
73
|
+
DebugRenderer::sInstance->DrawArrow(mBaseOffset + inResult.mContactPointOn2, mBaseOffset + inResult.mContactPointOn2 + inResult.mPenetrationAxis.NormalizedOr(Vec3::sZero()), Color::sGreen, 0.1f);
|
|
74
|
+
#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public:
|
|
78
|
+
/// Constructor, configures a collector to be called with all the results that do not hit internal edges
|
|
79
|
+
explicit InternalEdgeRemovingCollector(CollideShapeCollector &inChainedCollector
|
|
80
|
+
#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
81
|
+
, RVec3Arg inBaseOffset
|
|
82
|
+
#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
83
|
+
) :
|
|
84
|
+
CollideShapeCollector(inChainedCollector),
|
|
85
|
+
mChainedCollector(inChainedCollector)
|
|
86
|
+
#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
87
|
+
, mBaseOffset(inBaseOffset)
|
|
88
|
+
#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
89
|
+
{
|
|
90
|
+
// Initialize arrays to full capacity to avoid needless reallocation calls
|
|
91
|
+
mVoidedFeatures.reserve(cMaxLocalVoidedFeatures);
|
|
92
|
+
mDelayedResults.reserve(cMaxLocalDelayedResults);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// See: CollideShapeCollector::Reset
|
|
96
|
+
virtual void Reset() override
|
|
97
|
+
{
|
|
98
|
+
CollideShapeCollector::Reset();
|
|
99
|
+
|
|
100
|
+
mChainedCollector.Reset();
|
|
101
|
+
|
|
102
|
+
mVoidedFeatures.clear();
|
|
103
|
+
mDelayedResults.clear();
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// See: CollideShapeCollector::OnBody
|
|
107
|
+
virtual void OnBody(const Body &inBody) override
|
|
108
|
+
{
|
|
109
|
+
// Just forward the call to our chained collector
|
|
110
|
+
mChainedCollector.OnBody(inBody);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// See: CollideShapeCollector::AddHit
|
|
114
|
+
virtual void AddHit(const CollideShapeResult &inResult) override
|
|
115
|
+
{
|
|
116
|
+
// We only support welding when the shape is a triangle or has more vertices so that we can calculate a normal
|
|
117
|
+
if (inResult.mShape2Face.size() < 3)
|
|
118
|
+
return ChainAndVoid(inResult);
|
|
119
|
+
|
|
120
|
+
// Get the triangle normal of shape 2 face
|
|
121
|
+
Vec3 triangle_normal = (inResult.mShape2Face[1] - inResult.mShape2Face[0]).Cross(inResult.mShape2Face[2] - inResult.mShape2Face[0]);
|
|
122
|
+
float triangle_normal_len = triangle_normal.Length();
|
|
123
|
+
if (triangle_normal_len < 1e-6f)
|
|
124
|
+
return ChainAndVoid(inResult);
|
|
125
|
+
|
|
126
|
+
// If the triangle normal matches the contact normal within 1 degree, we can process the contact immediately
|
|
127
|
+
// We make the assumption here that if the contact normal and the triangle normal align that the we're dealing with a 'face contact'
|
|
128
|
+
Vec3 contact_normal = -inResult.mPenetrationAxis;
|
|
129
|
+
float contact_normal_len = inResult.mPenetrationAxis.Length();
|
|
130
|
+
if (triangle_normal.Dot(contact_normal) > 0.999848f * contact_normal_len * triangle_normal_len) // cos(1 degree)
|
|
131
|
+
return ChainAndVoid(inResult);
|
|
132
|
+
|
|
133
|
+
// Delayed processing
|
|
134
|
+
mDelayedResults.push_back(inResult);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/// After all hits have been added, call this function to process the delayed results
|
|
138
|
+
void Flush()
|
|
139
|
+
{
|
|
140
|
+
// Sort on biggest penetration depth first
|
|
141
|
+
Array<uint, STLLocalAllocator<uint, cMaxLocalDelayedResults>> sorted_indices;
|
|
142
|
+
sorted_indices.resize(mDelayedResults.size());
|
|
143
|
+
for (uint i = 0; i < uint(mDelayedResults.size()); ++i)
|
|
144
|
+
sorted_indices[i] = i;
|
|
145
|
+
QuickSort(sorted_indices.begin(), sorted_indices.end(), [this](uint inLHS, uint inRHS) { return mDelayedResults[inLHS].mPenetrationDepth > mDelayedResults[inRHS].mPenetrationDepth; });
|
|
146
|
+
|
|
147
|
+
// Loop over all results
|
|
148
|
+
for (uint i = 0; i < uint(mDelayedResults.size()); ++i)
|
|
149
|
+
{
|
|
150
|
+
const CollideShapeResult &r = mDelayedResults[sorted_indices[i]];
|
|
151
|
+
|
|
152
|
+
// Determine which vertex or which edge is the closest to the contact point
|
|
153
|
+
float best_dist_sq = FLT_MAX;
|
|
154
|
+
uint best_v1_idx = 0;
|
|
155
|
+
uint best_v2_idx = 0;
|
|
156
|
+
uint num_v = uint(r.mShape2Face.size());
|
|
157
|
+
uint v1_idx = num_v - 1;
|
|
158
|
+
Vec3 v1 = r.mShape2Face[v1_idx] - r.mContactPointOn2;
|
|
159
|
+
for (uint v2_idx = 0; v2_idx < num_v; ++v2_idx)
|
|
160
|
+
{
|
|
161
|
+
Vec3 v2 = r.mShape2Face[v2_idx] - r.mContactPointOn2;
|
|
162
|
+
Vec3 v1_v2 = v2 - v1;
|
|
163
|
+
float denominator = v1_v2.LengthSq();
|
|
164
|
+
if (denominator < Square(FLT_EPSILON))
|
|
165
|
+
{
|
|
166
|
+
// Degenerate, assume v1 is closest, v2 will be tested in a later iteration
|
|
167
|
+
float v1_len_sq = v1.LengthSq();
|
|
168
|
+
if (v1_len_sq < best_dist_sq)
|
|
169
|
+
{
|
|
170
|
+
best_dist_sq = v1_len_sq;
|
|
171
|
+
best_v1_idx = v1_idx;
|
|
172
|
+
best_v2_idx = v1_idx;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else
|
|
176
|
+
{
|
|
177
|
+
// Taken from ClosestPoint::GetBaryCentricCoordinates
|
|
178
|
+
float fraction = -v1.Dot(v1_v2) / denominator;
|
|
179
|
+
if (fraction < 1.0e-6f)
|
|
180
|
+
{
|
|
181
|
+
// Closest lies on v1
|
|
182
|
+
float v1_len_sq = v1.LengthSq();
|
|
183
|
+
if (v1_len_sq < best_dist_sq)
|
|
184
|
+
{
|
|
185
|
+
best_dist_sq = v1_len_sq;
|
|
186
|
+
best_v1_idx = v1_idx;
|
|
187
|
+
best_v2_idx = v1_idx;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else if (fraction < 1.0f - 1.0e-6f)
|
|
191
|
+
{
|
|
192
|
+
// Closest lies on the line segment v1, v2
|
|
193
|
+
Vec3 closest = v1 + fraction * v1_v2;
|
|
194
|
+
float closest_len_sq = closest.LengthSq();
|
|
195
|
+
if (closest_len_sq < best_dist_sq)
|
|
196
|
+
{
|
|
197
|
+
best_dist_sq = closest_len_sq;
|
|
198
|
+
best_v1_idx = v1_idx;
|
|
199
|
+
best_v2_idx = v2_idx;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
// else closest is v2, but v2 will be tested in a later iteration
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
v1_idx = v2_idx;
|
|
206
|
+
v1 = v2;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// Check if this vertex/edge is voided
|
|
210
|
+
bool voided = IsVoided(r.mSubShapeID1, r.mShape2Face[best_v1_idx])
|
|
211
|
+
&& (best_v1_idx == best_v2_idx || IsVoided(r.mSubShapeID1, r.mShape2Face[best_v2_idx]));
|
|
212
|
+
|
|
213
|
+
#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
214
|
+
Color color = voided? Color::sRed : Color::sYellow;
|
|
215
|
+
DebugRenderer::sInstance->DrawText3D(mBaseOffset + r.mContactPointOn2, StringFormat("%d: %g", i, r.mPenetrationDepth), color, 0.1f);
|
|
216
|
+
DebugRenderer::sInstance->DrawWirePolygon(RMat44::sTranslation(mBaseOffset), r.mShape2Face, color);
|
|
217
|
+
DebugRenderer::sInstance->DrawArrow(mBaseOffset + r.mContactPointOn2, mBaseOffset + r.mContactPointOn2 + r.mPenetrationAxis.NormalizedOr(Vec3::sZero()), color, 0.1f);
|
|
218
|
+
DebugRenderer::sInstance->DrawMarker(mBaseOffset + r.mShape2Face[best_v1_idx], IsVoided(r.mSubShapeID1, r.mShape2Face[best_v1_idx])? Color::sRed : Color::sYellow, 0.1f);
|
|
219
|
+
DebugRenderer::sInstance->DrawMarker(mBaseOffset + r.mShape2Face[best_v2_idx], IsVoided(r.mSubShapeID1, r.mShape2Face[best_v2_idx])? Color::sRed : Color::sYellow, 0.1f);
|
|
220
|
+
#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
221
|
+
|
|
222
|
+
// No voided features, accept the contact
|
|
223
|
+
if (!voided)
|
|
224
|
+
Chain(r);
|
|
225
|
+
|
|
226
|
+
// Void the features of this face
|
|
227
|
+
VoidFeatures(r);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// All delayed results have been processed
|
|
231
|
+
mVoidedFeatures.clear();
|
|
232
|
+
mDelayedResults.clear();
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// See: CollideShapeCollector::OnBodyEnd
|
|
236
|
+
virtual void OnBodyEnd() override
|
|
237
|
+
{
|
|
238
|
+
Flush();
|
|
239
|
+
mChainedCollector.OnBodyEnd();
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/// Version of CollisionDispatch::sCollideShapeVsShape that removes internal edges
|
|
243
|
+
static void sCollideShapeVsShape(const Shape *inShape1, const Shape *inShape2, Vec3Arg inScale1, Vec3Arg inScale2, Mat44Arg inCenterOfMassTransform1, Mat44Arg inCenterOfMassTransform2, const SubShapeIDCreator &inSubShapeIDCreator1, const SubShapeIDCreator &inSubShapeIDCreator2, const CollideShapeSettings &inCollideShapeSettings, CollideShapeCollector &ioCollector, const ShapeFilter &inShapeFilter = { }
|
|
244
|
+
#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
245
|
+
, RVec3Arg inBaseOffset = RVec3::sZero()
|
|
246
|
+
#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
247
|
+
)
|
|
248
|
+
{
|
|
249
|
+
JPH_ASSERT(inCollideShapeSettings.mActiveEdgeMode == EActiveEdgeMode::CollideWithAll); // Won't work without colliding with all edges
|
|
250
|
+
JPH_ASSERT(inCollideShapeSettings.mCollectFacesMode == ECollectFacesMode::CollectFaces); // Won't work without collecting faces
|
|
251
|
+
|
|
252
|
+
InternalEdgeRemovingCollector wrapper(ioCollector
|
|
253
|
+
#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
254
|
+
, inBaseOffset
|
|
255
|
+
#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
256
|
+
);
|
|
257
|
+
CollisionDispatch::sCollideShapeVsShape(inShape1, inShape2, inScale1, inScale2, inCenterOfMassTransform1, inCenterOfMassTransform2, inSubShapeIDCreator1, inSubShapeIDCreator2, inCollideShapeSettings, wrapper, inShapeFilter);
|
|
258
|
+
wrapper.Flush();
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
private:
|
|
262
|
+
// This algorithm tests a convex shape (shape 1) against a set of polygons (shape 2).
|
|
263
|
+
// This assumption doesn't hold if the shape we're testing is a compound shape, so we must also
|
|
264
|
+
// store the sub shape ID and ignore voided features that belong to another sub shape ID.
|
|
265
|
+
struct Voided
|
|
266
|
+
{
|
|
267
|
+
Float3 mFeature; // Feature that is voided (of shape 2). Read with Vec3::sLoadFloat3Unsafe so must not be the last member.
|
|
268
|
+
SubShapeID mSubShapeID; // Sub shape ID of the shape that is colliding against the feature (of shape 1).
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
CollideShapeCollector & mChainedCollector;
|
|
272
|
+
Array<Voided, STLLocalAllocator<Voided, cMaxLocalVoidedFeatures>> mVoidedFeatures;
|
|
273
|
+
Array<CollideShapeResult, STLLocalAllocator<CollideShapeResult, cMaxLocalDelayedResults>> mDelayedResults;
|
|
274
|
+
#ifdef JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
275
|
+
RVec3 mBaseOffset; // Base offset for the query, used to draw the results in the right place
|
|
276
|
+
#endif // JPH_INTERNAL_EDGE_REMOVING_COLLECTOR_DEBUG
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
JPH_NAMESPACE_END
|
|
@@ -0,0 +1,271 @@
|
|
|
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/ManifoldBetweenTwoFaces.h>
|
|
8
|
+
#include <Jolt/Physics/Constraints/ContactConstraintManager.h>
|
|
9
|
+
#include <Jolt/Geometry/ClipPoly.h>
|
|
10
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
11
|
+
#include <Jolt/Renderer/DebugRenderer.h>
|
|
12
|
+
#endif // JPH_DEBUG_RENDERER
|
|
13
|
+
|
|
14
|
+
JPH_NAMESPACE_BEGIN
|
|
15
|
+
|
|
16
|
+
void PruneContactPoints(Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2 JPH_IF_DEBUG_RENDERER(, RVec3Arg inCenterOfMass))
|
|
17
|
+
{
|
|
18
|
+
// Makes no sense to call this with 4 or less points
|
|
19
|
+
JPH_ASSERT(ioContactPointsOn1.size() > 4);
|
|
20
|
+
|
|
21
|
+
// Both arrays should have the same size
|
|
22
|
+
JPH_ASSERT(ioContactPointsOn1.size() == ioContactPointsOn2.size());
|
|
23
|
+
|
|
24
|
+
// Penetration axis must be normalized
|
|
25
|
+
JPH_ASSERT(inPenetrationAxis.IsNormalized());
|
|
26
|
+
|
|
27
|
+
// We use a heuristic of (distance to center of mass) * (penetration depth) to find the contact point that we should keep
|
|
28
|
+
// Neither of those two terms should ever become zero, so we clamp against this minimum value
|
|
29
|
+
constexpr float cMinDistanceSq = 1.0e-6f; // 1 mm
|
|
30
|
+
|
|
31
|
+
ContactPoints projected;
|
|
32
|
+
StaticArray<float, 64> penetration_depth_sq;
|
|
33
|
+
for (ContactPoints::size_type i = 0; i < ioContactPointsOn1.size(); ++i)
|
|
34
|
+
{
|
|
35
|
+
// Project contact points on the plane through inCenterOfMass with normal inPenetrationAxis and center around the center of mass of body 1
|
|
36
|
+
// (note that since all points are relative to inCenterOfMass we can project onto the plane through the origin)
|
|
37
|
+
Vec3 v1 = ioContactPointsOn1[i];
|
|
38
|
+
projected.push_back(v1 - v1.Dot(inPenetrationAxis) * inPenetrationAxis);
|
|
39
|
+
|
|
40
|
+
// Calculate penetration depth^2 of each point and clamp against the minimal distance
|
|
41
|
+
Vec3 v2 = ioContactPointsOn2[i];
|
|
42
|
+
penetration_depth_sq.push_back(max(cMinDistanceSq, (v2 - v1).LengthSq()));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Find the point that is furthest away from the center of mass (its torque will have the biggest influence)
|
|
46
|
+
// and the point that has the deepest penetration depth. Use the heuristic (distance to center of mass) * (penetration depth) for this.
|
|
47
|
+
uint point1 = 0;
|
|
48
|
+
float val = max(cMinDistanceSq, projected[0].LengthSq()) * penetration_depth_sq[0];
|
|
49
|
+
for (uint i = 0; i < projected.size(); ++i)
|
|
50
|
+
{
|
|
51
|
+
float v = max(cMinDistanceSq, projected[i].LengthSq()) * penetration_depth_sq[i];
|
|
52
|
+
if (v > val)
|
|
53
|
+
{
|
|
54
|
+
val = v;
|
|
55
|
+
point1 = i;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
Vec3 point1v = projected[point1];
|
|
59
|
+
|
|
60
|
+
// Find point furthest from the first point forming a line segment with point1. Again combine this with the heuristic
|
|
61
|
+
// for deepest point as per above.
|
|
62
|
+
uint point2 = uint(-1);
|
|
63
|
+
val = -FLT_MAX;
|
|
64
|
+
for (uint i = 0; i < projected.size(); ++i)
|
|
65
|
+
if (i != point1)
|
|
66
|
+
{
|
|
67
|
+
float v = max(cMinDistanceSq, (projected[i] - point1v).LengthSq()) * penetration_depth_sq[i];
|
|
68
|
+
if (v > val)
|
|
69
|
+
{
|
|
70
|
+
val = v;
|
|
71
|
+
point2 = i;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
JPH_ASSERT(point2 != uint(-1));
|
|
75
|
+
Vec3 point2v = projected[point2];
|
|
76
|
+
|
|
77
|
+
// Find furthest points on both sides of the line segment in order to maximize the area
|
|
78
|
+
uint point3 = uint(-1);
|
|
79
|
+
uint point4 = uint(-1);
|
|
80
|
+
float min_val = 0.0f;
|
|
81
|
+
float max_val = 0.0f;
|
|
82
|
+
Vec3 perp = (point2v - point1v).Cross(inPenetrationAxis);
|
|
83
|
+
for (uint i = 0; i < projected.size(); ++i)
|
|
84
|
+
if (i != point1 && i != point2)
|
|
85
|
+
{
|
|
86
|
+
float v = perp.Dot(projected[i] - point1v);
|
|
87
|
+
if (v < min_val)
|
|
88
|
+
{
|
|
89
|
+
min_val = v;
|
|
90
|
+
point3 = i;
|
|
91
|
+
}
|
|
92
|
+
else if (v > max_val)
|
|
93
|
+
{
|
|
94
|
+
max_val = v;
|
|
95
|
+
point4 = i;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Add points to array (in order so they form a polygon)
|
|
100
|
+
StaticArray<Vec3, 4> points_to_keep_on_1, points_to_keep_on_2;
|
|
101
|
+
points_to_keep_on_1.push_back(ioContactPointsOn1[point1]);
|
|
102
|
+
points_to_keep_on_2.push_back(ioContactPointsOn2[point1]);
|
|
103
|
+
if (point3 != uint(-1))
|
|
104
|
+
{
|
|
105
|
+
points_to_keep_on_1.push_back(ioContactPointsOn1[point3]);
|
|
106
|
+
points_to_keep_on_2.push_back(ioContactPointsOn2[point3]);
|
|
107
|
+
}
|
|
108
|
+
points_to_keep_on_1.push_back(ioContactPointsOn1[point2]);
|
|
109
|
+
points_to_keep_on_2.push_back(ioContactPointsOn2[point2]);
|
|
110
|
+
if (point4 != uint(-1))
|
|
111
|
+
{
|
|
112
|
+
JPH_ASSERT(point3 != point4);
|
|
113
|
+
points_to_keep_on_1.push_back(ioContactPointsOn1[point4]);
|
|
114
|
+
points_to_keep_on_2.push_back(ioContactPointsOn2[point4]);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
118
|
+
if (ContactConstraintManager::sDrawContactPointReduction)
|
|
119
|
+
{
|
|
120
|
+
// Draw input polygon
|
|
121
|
+
DebugRenderer::sInstance->DrawWirePolygon(RMat44::sTranslation(inCenterOfMass), ioContactPointsOn1, Color::sOrange, 0.05f);
|
|
122
|
+
|
|
123
|
+
// Draw primary axis
|
|
124
|
+
DebugRenderer::sInstance->DrawArrow(inCenterOfMass + ioContactPointsOn1[point1], inCenterOfMass + ioContactPointsOn1[point2], Color::sRed, 0.05f);
|
|
125
|
+
|
|
126
|
+
// Draw contact points we kept
|
|
127
|
+
for (Vec3 p : points_to_keep_on_1)
|
|
128
|
+
DebugRenderer::sInstance->DrawMarker(inCenterOfMass + p, Color::sGreen, 0.1f);
|
|
129
|
+
}
|
|
130
|
+
#endif // JPH_DEBUG_RENDERER
|
|
131
|
+
|
|
132
|
+
// Copy the points back to the input buffer
|
|
133
|
+
ioContactPointsOn1 = points_to_keep_on_1;
|
|
134
|
+
ioContactPointsOn2 = points_to_keep_on_2;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
void ManifoldBetweenTwoFaces(Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistance, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2 JPH_IF_DEBUG_RENDERER(, RVec3Arg inCenterOfMass))
|
|
138
|
+
{
|
|
139
|
+
JPH_ASSERT(inMaxContactDistance > 0.0f);
|
|
140
|
+
|
|
141
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
142
|
+
if (ContactConstraintManager::sDrawContactPoint)
|
|
143
|
+
{
|
|
144
|
+
RVec3 cp1 = inCenterOfMass + inContactPoint1;
|
|
145
|
+
RVec3 cp2 = inCenterOfMass + inContactPoint2;
|
|
146
|
+
|
|
147
|
+
// Draw contact points
|
|
148
|
+
DebugRenderer::sInstance->DrawMarker(cp1, Color::sRed, 0.1f);
|
|
149
|
+
DebugRenderer::sInstance->DrawMarker(cp2, Color::sGreen, 0.1f);
|
|
150
|
+
|
|
151
|
+
// Draw contact normal
|
|
152
|
+
DebugRenderer::sInstance->DrawArrow(cp1, cp1 + inPenetrationAxis.Normalized(), Color::sRed, 0.05f);
|
|
153
|
+
}
|
|
154
|
+
#endif // JPH_DEBUG_RENDERER
|
|
155
|
+
|
|
156
|
+
// Remember size before adding new points, to check at the end if we added some
|
|
157
|
+
ContactPoints::size_type old_size = outContactPoints1.size();
|
|
158
|
+
|
|
159
|
+
// Both faces need to have at least 2 points or else there can never be more than 1 contact point
|
|
160
|
+
// At least one face needs to have at least 3 points (in the case that it has 2 points only if the edges match exactly you can have 2 contact points, but this situation is unstable anyhow)
|
|
161
|
+
if (min(inShape1Face.size(), inShape2Face.size()) >= 2
|
|
162
|
+
&& max(inShape1Face.size(), inShape2Face.size()) >= 3)
|
|
163
|
+
{
|
|
164
|
+
// Swap the shapes if the 2nd face doesn't have enough vertices
|
|
165
|
+
const ConvexShape::SupportingFace *shape1_face, *shape2_face;
|
|
166
|
+
ContactPoints *contact_points1, *contact_points2;
|
|
167
|
+
Vec3 penetration_axis;
|
|
168
|
+
if (inShape2Face.size() >= 3)
|
|
169
|
+
{
|
|
170
|
+
shape1_face = &inShape1Face;
|
|
171
|
+
shape2_face = &inShape2Face;
|
|
172
|
+
contact_points1 = &outContactPoints1;
|
|
173
|
+
contact_points2 = &outContactPoints2;
|
|
174
|
+
penetration_axis = inPenetrationAxis;
|
|
175
|
+
}
|
|
176
|
+
else
|
|
177
|
+
{
|
|
178
|
+
shape1_face = &inShape2Face;
|
|
179
|
+
shape2_face = &inShape1Face;
|
|
180
|
+
contact_points1 = &outContactPoints2;
|
|
181
|
+
contact_points2 = &outContactPoints1;
|
|
182
|
+
penetration_axis = -inPenetrationAxis;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Determine plane origin and first edge direction
|
|
186
|
+
Vec3 plane_origin = shape1_face->at(0);
|
|
187
|
+
Vec3 first_edge = shape1_face->at(1) - plane_origin;
|
|
188
|
+
|
|
189
|
+
Vec3 plane_normal;
|
|
190
|
+
ConvexShape::SupportingFace clipped_face;
|
|
191
|
+
if (shape1_face->size() >= 3)
|
|
192
|
+
{
|
|
193
|
+
// Clip the polygon of face 2 against that of 1
|
|
194
|
+
ClipPolyVsPoly(*shape2_face, *shape1_face, penetration_axis, clipped_face);
|
|
195
|
+
|
|
196
|
+
// Three vertices, can just calculate the normal
|
|
197
|
+
plane_normal = first_edge.Cross(shape1_face->at(2) - plane_origin);
|
|
198
|
+
}
|
|
199
|
+
else
|
|
200
|
+
{
|
|
201
|
+
// Clip the polygon of face 2 against edge of 1
|
|
202
|
+
ClipPolyVsEdge(*shape2_face, shape1_face->at(0), shape1_face->at(1), penetration_axis, clipped_face);
|
|
203
|
+
|
|
204
|
+
// Two vertices, first find a perpendicular to the edge and penetration axis and then use the perpendicular together with the edge to form a normal
|
|
205
|
+
plane_normal = first_edge.Cross(penetration_axis).Cross(first_edge);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// If penetration axis and plane normal are perpendicular, fall back to the contact points
|
|
209
|
+
float penetration_axis_dot_plane_normal = penetration_axis.Dot(plane_normal);
|
|
210
|
+
if (penetration_axis_dot_plane_normal != 0.0f)
|
|
211
|
+
{
|
|
212
|
+
float penetration_axis_len = penetration_axis.Length();
|
|
213
|
+
|
|
214
|
+
for (Vec3 p2 : clipped_face)
|
|
215
|
+
{
|
|
216
|
+
// Project clipped face back onto the plane of face 1, we do this by solving:
|
|
217
|
+
// p1 = p2 + distance * penetration_axis / |penetration_axis|
|
|
218
|
+
// (p1 - plane_origin) . plane_normal = 0
|
|
219
|
+
// This gives us:
|
|
220
|
+
// distance = -|penetration_axis| * (p2 - plane_origin) . plane_normal / penetration_axis . plane_normal
|
|
221
|
+
float distance = (p2 - plane_origin).Dot(plane_normal) / penetration_axis_dot_plane_normal; // note left out -|penetration_axis| term
|
|
222
|
+
|
|
223
|
+
// If the point is less than inMaxContactDistance in front of the plane of face 2, add it as a contact point
|
|
224
|
+
if (distance * penetration_axis_len < inMaxContactDistance)
|
|
225
|
+
{
|
|
226
|
+
Vec3 p1 = p2 - distance * penetration_axis;
|
|
227
|
+
contact_points1->push_back(p1);
|
|
228
|
+
contact_points2->push_back(p2);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
234
|
+
if (ContactConstraintManager::sDrawSupportingFaces)
|
|
235
|
+
{
|
|
236
|
+
RMat44 com = RMat44::sTranslation(inCenterOfMass);
|
|
237
|
+
|
|
238
|
+
// Draw clipped poly
|
|
239
|
+
DebugRenderer::sInstance->DrawWirePolygon(com, clipped_face, Color::sOrange);
|
|
240
|
+
|
|
241
|
+
// Draw supporting faces
|
|
242
|
+
DebugRenderer::sInstance->DrawWirePolygon(com, inShape1Face, Color::sRed, 0.05f);
|
|
243
|
+
DebugRenderer::sInstance->DrawWirePolygon(com, inShape2Face, Color::sGreen, 0.05f);
|
|
244
|
+
|
|
245
|
+
// Draw normal
|
|
246
|
+
float plane_normal_len = plane_normal.Length();
|
|
247
|
+
if (plane_normal_len > 0.0f)
|
|
248
|
+
{
|
|
249
|
+
RVec3 plane_origin_ws = inCenterOfMass + plane_origin;
|
|
250
|
+
DebugRenderer::sInstance->DrawArrow(plane_origin_ws, plane_origin_ws + plane_normal / plane_normal_len, Color::sYellow, 0.05f);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Draw contact points that remain after distance check
|
|
254
|
+
for (ContactPoints::size_type p = old_size; p < outContactPoints1.size(); ++p)
|
|
255
|
+
{
|
|
256
|
+
DebugRenderer::sInstance->DrawMarker(inCenterOfMass + outContactPoints1[p], Color::sYellow, 0.1f);
|
|
257
|
+
DebugRenderer::sInstance->DrawMarker(inCenterOfMass + outContactPoints2[p], Color::sOrange, 0.1f);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
#endif // JPH_DEBUG_RENDERER
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// If the clipping result is empty, use the contact point itself
|
|
264
|
+
if (outContactPoints1.size() == old_size)
|
|
265
|
+
{
|
|
266
|
+
outContactPoints1.push_back(inContactPoint1);
|
|
267
|
+
outContactPoints2.push_back(inContactPoint2);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
JPH_NAMESPACE_END
|
|
@@ -0,0 +1,44 @@
|
|
|
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/ConvexShape.h>
|
|
8
|
+
#include <Jolt/Physics/Collision/ContactListener.h>
|
|
9
|
+
|
|
10
|
+
JPH_NAMESPACE_BEGIN
|
|
11
|
+
|
|
12
|
+
/// Remove contact points if there are > 4 (no more than 4 are needed for a stable solution)
|
|
13
|
+
/// @param inPenetrationAxis is the world space penetration axis (must be normalized)
|
|
14
|
+
/// @param ioContactPointsOn1 The contact points on shape 1 relative to inCenterOfMass
|
|
15
|
+
/// @param ioContactPointsOn2 The contact points on shape 2 relative to inCenterOfMass
|
|
16
|
+
/// On output ioContactPointsOn1/2 are reduced to 4 or less points
|
|
17
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
18
|
+
/// @param inCenterOfMass Center of mass position of body 1
|
|
19
|
+
#endif
|
|
20
|
+
JPH_EXPORT void PruneContactPoints(Vec3Arg inPenetrationAxis, ContactPoints &ioContactPointsOn1, ContactPoints &ioContactPointsOn2
|
|
21
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
22
|
+
, RVec3Arg inCenterOfMass
|
|
23
|
+
#endif
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
/// Determine contact points between 2 faces of 2 shapes and return them in outContactPoints 1 & 2
|
|
27
|
+
/// @param inContactPoint1 The contact point on shape 1 relative to inCenterOfMass
|
|
28
|
+
/// @param inContactPoint2 The contact point on shape 2 relative to inCenterOfMass
|
|
29
|
+
/// @param inPenetrationAxis The local space penetration axis in world space
|
|
30
|
+
/// @param inMaxContactDistance After face 2 is clipped against face 1, each remaining point on face 2 is tested against the plane of face 1. If the distance on the positive side of the plane is larger than this distance, the point will be discarded as a contact point.
|
|
31
|
+
/// @param inShape1Face The supporting faces on shape 1 relative to inCenterOfMass
|
|
32
|
+
/// @param inShape2Face The supporting faces on shape 2 relative to inCenterOfMass
|
|
33
|
+
/// @param outContactPoints1 Returns the contact points between the two shapes for shape 1 relative to inCenterOfMass (any existing points in the output array are left as is)
|
|
34
|
+
/// @param outContactPoints2 Returns the contact points between the two shapes for shape 2 relative to inCenterOfMass (any existing points in the output array are left as is)
|
|
35
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
36
|
+
/// @param inCenterOfMass Center of mass position of body 1
|
|
37
|
+
#endif
|
|
38
|
+
JPH_EXPORT void ManifoldBetweenTwoFaces(Vec3Arg inContactPoint1, Vec3Arg inContactPoint2, Vec3Arg inPenetrationAxis, float inMaxContactDistance, const ConvexShape::SupportingFace &inShape1Face, const ConvexShape::SupportingFace &inShape2Face, ContactPoints &outContactPoints1, ContactPoints &outContactPoints2
|
|
39
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
40
|
+
, RVec3Arg inCenterOfMass
|
|
41
|
+
#endif
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
JPH_NAMESPACE_END
|