@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,276 @@
|
|
|
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
|
+
//#define JPH_CONVEX_BUILDER_DEBUG
|
|
8
|
+
//#define JPH_CONVEX_BUILDER_DUMP_SHAPE
|
|
9
|
+
|
|
10
|
+
#ifdef JPH_CONVEX_BUILDER_DEBUG
|
|
11
|
+
#include <Jolt/Core/Color.h>
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#include <Jolt/Core/StaticArray.h>
|
|
15
|
+
#include <Jolt/Core/NonCopyable.h>
|
|
16
|
+
|
|
17
|
+
JPH_NAMESPACE_BEGIN
|
|
18
|
+
|
|
19
|
+
/// A convex hull builder that tries to create hulls as accurately as possible. Used for offline processing.
|
|
20
|
+
class JPH_EXPORT ConvexHullBuilder : public NonCopyable
|
|
21
|
+
{
|
|
22
|
+
public:
|
|
23
|
+
// Forward declare
|
|
24
|
+
class Face;
|
|
25
|
+
|
|
26
|
+
/// Class that holds the information of an edge
|
|
27
|
+
class Edge : public NonCopyable
|
|
28
|
+
{
|
|
29
|
+
public:
|
|
30
|
+
JPH_OVERRIDE_NEW_DELETE
|
|
31
|
+
|
|
32
|
+
/// Constructor
|
|
33
|
+
Edge(Face *inFace, int inStartIdx) : mFace(inFace), mStartIdx(inStartIdx) { }
|
|
34
|
+
|
|
35
|
+
/// Get the previous edge
|
|
36
|
+
inline Edge * GetPreviousEdge()
|
|
37
|
+
{
|
|
38
|
+
Edge *prev_edge = this;
|
|
39
|
+
while (prev_edge->mNextEdge != this)
|
|
40
|
+
prev_edge = prev_edge->mNextEdge;
|
|
41
|
+
return prev_edge;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
Face * mFace; ///< Face that this edge belongs to
|
|
45
|
+
Edge * mNextEdge = nullptr; ///< Next edge of this face
|
|
46
|
+
Edge * mNeighbourEdge = nullptr; ///< Edge that this edge is connected to
|
|
47
|
+
int mStartIdx; ///< Vertex index in mPositions that indicates the start vertex of this edge
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
using ConflictList = Array<int>;
|
|
51
|
+
|
|
52
|
+
/// Class that holds the information of one face
|
|
53
|
+
class Face : public NonCopyable
|
|
54
|
+
{
|
|
55
|
+
public:
|
|
56
|
+
JPH_OVERRIDE_NEW_DELETE
|
|
57
|
+
|
|
58
|
+
/// Destructor
|
|
59
|
+
~Face();
|
|
60
|
+
|
|
61
|
+
/// Initialize a face with three indices
|
|
62
|
+
void Initialize(int inIdx0, int inIdx1, int inIdx2, const Vec3 *inPositions);
|
|
63
|
+
|
|
64
|
+
/// Calculates the centroid and normal for this face
|
|
65
|
+
void CalculateNormalAndCentroid(const Vec3 *inPositions);
|
|
66
|
+
|
|
67
|
+
/// Check if face inFace is facing inPosition
|
|
68
|
+
inline bool IsFacing(Vec3Arg inPosition) const
|
|
69
|
+
{
|
|
70
|
+
JPH_ASSERT(!mRemoved);
|
|
71
|
+
return mNormal.Dot(inPosition - mCentroid) > 0.0f;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
Vec3 mNormal; ///< Normal of this face, length is 2 times area of face
|
|
75
|
+
Vec3 mCentroid; ///< Center of the face
|
|
76
|
+
ConflictList mConflictList; ///< Positions associated with this edge (that are closest to this edge). The last position in the list is the point that is furthest away from the face.
|
|
77
|
+
Edge * mFirstEdge = nullptr; ///< First edge of this face
|
|
78
|
+
float mFurthestPointDistanceSq = 0.0f; ///< Squared distance of furthest point from the conflict list to the face
|
|
79
|
+
bool mRemoved = false; ///< Flag that indicates that face has been removed (face will be freed later)
|
|
80
|
+
#ifdef JPH_CONVEX_BUILDER_DEBUG
|
|
81
|
+
int mIteration; ///< Iteration that this face was created
|
|
82
|
+
#endif
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// Typedefs
|
|
86
|
+
using Positions = Array<Vec3>;
|
|
87
|
+
using Faces = Array<Face *>;
|
|
88
|
+
|
|
89
|
+
/// Constructor
|
|
90
|
+
explicit ConvexHullBuilder(const Positions &inPositions);
|
|
91
|
+
|
|
92
|
+
/// Destructor
|
|
93
|
+
~ConvexHullBuilder() { FreeFaces(); }
|
|
94
|
+
|
|
95
|
+
/// Result enum that indicates how the hull got created
|
|
96
|
+
enum class EResult
|
|
97
|
+
{
|
|
98
|
+
Success, ///< Hull building finished successfully
|
|
99
|
+
MaxVerticesReached, ///< Hull building finished successfully, but the desired accuracy was not reached because the max vertices limit was reached
|
|
100
|
+
TooFewPoints, ///< Too few points to create a hull
|
|
101
|
+
TooFewFaces, ///< Too few faces in the created hull (signifies precision errors during building)
|
|
102
|
+
Degenerate, ///< Degenerate hull detected
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
/// Takes all positions as provided by the constructor and use them to build a hull
|
|
106
|
+
/// Any points that are closer to the hull than inTolerance will be discarded
|
|
107
|
+
/// @param inMaxVertices Max vertices to allow in the hull. Specify INT_MAX if there is no limit.
|
|
108
|
+
/// @param inTolerance Max distance that a point is allowed to be outside of the hull
|
|
109
|
+
/// @param outError Error message when building fails
|
|
110
|
+
/// @return Status code that reports if the hull was created or not
|
|
111
|
+
EResult Initialize(int inMaxVertices, float inTolerance, const char *&outError);
|
|
112
|
+
|
|
113
|
+
/// Returns the amount of vertices that are currently used by the hull
|
|
114
|
+
int GetNumVerticesUsed() const;
|
|
115
|
+
|
|
116
|
+
/// Returns true if the hull contains a polygon with inIndices (counter clockwise indices in mPositions)
|
|
117
|
+
bool ContainsFace(const Array<int> &inIndices) const;
|
|
118
|
+
|
|
119
|
+
/// Calculate the center of mass and the volume of the current convex hull
|
|
120
|
+
void GetCenterOfMassAndVolume(Vec3 &outCenterOfMass, float &outVolume) const;
|
|
121
|
+
|
|
122
|
+
/// Determines the point that is furthest outside of the hull and reports how far it is outside of the hull (which indicates a failure during hull building)
|
|
123
|
+
/// @param outFaceWithMaxError The face that caused the error
|
|
124
|
+
/// @param outMaxError The maximum distance of a point to the hull
|
|
125
|
+
/// @param outMaxErrorPositionIdx The index of the point that had this distance
|
|
126
|
+
/// @param outCoplanarDistance Points that are less than this distance from the hull are considered on the hull. This should be used as a lowerbound for the allowed error.
|
|
127
|
+
void DetermineMaxError(Face *&outFaceWithMaxError, float &outMaxError, int &outMaxErrorPositionIdx, float &outCoplanarDistance) const;
|
|
128
|
+
|
|
129
|
+
/// Access to the created faces. Memory is owned by the convex hull builder.
|
|
130
|
+
const Faces & GetFaces() const { return mFaces; }
|
|
131
|
+
|
|
132
|
+
private:
|
|
133
|
+
/// Minimal square area of a triangle (used for merging and checking if a triangle is degenerate)
|
|
134
|
+
static constexpr float cMinTriangleAreaSq = 1.0e-12f;
|
|
135
|
+
|
|
136
|
+
#ifdef JPH_CONVEX_BUILDER_DEBUG
|
|
137
|
+
/// Factor to scale convex hull when debug drawing the construction process
|
|
138
|
+
static constexpr Real cDrawScale = 10;
|
|
139
|
+
#endif
|
|
140
|
+
|
|
141
|
+
/// Class that holds an edge including start and end index
|
|
142
|
+
class FullEdge
|
|
143
|
+
{
|
|
144
|
+
public:
|
|
145
|
+
Edge * mNeighbourEdge; ///< Edge that this edge is connected to
|
|
146
|
+
int mStartIdx; ///< Vertex index in mPositions that indicates the start vertex of this edge
|
|
147
|
+
int mEndIdx; ///< Vertex index in mPosition that indicates the end vertex of this edge
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// Private typedefs
|
|
151
|
+
using FullEdges = Array<FullEdge>;
|
|
152
|
+
|
|
153
|
+
// Determine a suitable tolerance for detecting that points are coplanar
|
|
154
|
+
float DetermineCoplanarDistance() const;
|
|
155
|
+
|
|
156
|
+
/// Find the face for which inPoint is furthest to the front
|
|
157
|
+
/// @param inPoint Point to test
|
|
158
|
+
/// @param inFaces List of faces to test
|
|
159
|
+
/// @param outFace Returns the best face
|
|
160
|
+
/// @param outDistSq Returns the squared distance how much inPoint is in front of the plane of the face
|
|
161
|
+
void GetFaceForPoint(Vec3Arg inPoint, const Faces &inFaces, Face *&outFace, float &outDistSq) const;
|
|
162
|
+
|
|
163
|
+
/// @brief Calculates the distance between inPoint and inFace
|
|
164
|
+
/// @param inFace Face to test
|
|
165
|
+
/// @param inPoint Point to test
|
|
166
|
+
/// @return If the projection of the point on the plane is interior to the face 0, otherwise the squared distance to the closest edge
|
|
167
|
+
float GetDistanceToEdgeSq(Vec3Arg inPoint, const Face *inFace) const;
|
|
168
|
+
|
|
169
|
+
/// Assigns a position to one of the supplied faces based on which face is closest.
|
|
170
|
+
/// @param inPositionIdx Index of the position to add
|
|
171
|
+
/// @param inFaces List of faces to consider
|
|
172
|
+
/// @param inToleranceSq Tolerance of the hull, if the point is closer to the face than this, we ignore it
|
|
173
|
+
/// @return True if point was assigned, false if it was discarded or added to the coplanar list
|
|
174
|
+
bool AssignPointToFace(int inPositionIdx, const Faces &inFaces, float inToleranceSq);
|
|
175
|
+
|
|
176
|
+
/// Add a new point to the convex hull
|
|
177
|
+
void AddPoint(Face *inFacingFace, int inIdx, float inToleranceSq, Faces &outNewFaces);
|
|
178
|
+
|
|
179
|
+
/// Remove all faces that have been marked 'removed' from mFaces list
|
|
180
|
+
void GarbageCollectFaces();
|
|
181
|
+
|
|
182
|
+
/// Create a new face
|
|
183
|
+
Face * CreateFace();
|
|
184
|
+
|
|
185
|
+
/// Create a new triangle
|
|
186
|
+
Face * CreateTriangle(int inIdx1, int inIdx2, int inIdx3);
|
|
187
|
+
|
|
188
|
+
/// Delete a face (checking that it is not connected to any other faces)
|
|
189
|
+
void FreeFace(Face *inFace);
|
|
190
|
+
|
|
191
|
+
/// Release all faces and edges
|
|
192
|
+
void FreeFaces();
|
|
193
|
+
|
|
194
|
+
/// Link face edge to other face edge
|
|
195
|
+
static void sLinkFace(Edge *inEdge1, Edge *inEdge2);
|
|
196
|
+
|
|
197
|
+
/// Unlink this face from all of its neighbours
|
|
198
|
+
static void sUnlinkFace(Face *inFace);
|
|
199
|
+
|
|
200
|
+
/// Given one face that faces inVertex, find the edges of the faces that are not facing inVertex.
|
|
201
|
+
/// Will flag all those faces for removal.
|
|
202
|
+
void FindEdge(Face *inFacingFace, Vec3Arg inVertex, FullEdges &outEdges) const;
|
|
203
|
+
|
|
204
|
+
/// Merges the two faces that share inEdge into the face inEdge->mFace
|
|
205
|
+
void MergeFaces(Edge *inEdge);
|
|
206
|
+
|
|
207
|
+
/// Merges inFace with a neighbour if it is degenerate (a sliver)
|
|
208
|
+
void MergeDegenerateFace(Face *inFace, Faces &ioAffectedFaces);
|
|
209
|
+
|
|
210
|
+
/// Merges any coplanar as well as neighbours that form a non-convex edge into inFace.
|
|
211
|
+
/// Faces are considered coplanar if the distance^2 of the other face's centroid is smaller than inToleranceSq.
|
|
212
|
+
void MergeCoplanarOrConcaveFaces(Face *inFace, float inToleranceSq, Faces &ioAffectedFaces);
|
|
213
|
+
|
|
214
|
+
/// Mark face as affected if it is not already in the list
|
|
215
|
+
static void sMarkAffected(Face *inFace, Faces &ioAffectedFaces);
|
|
216
|
+
|
|
217
|
+
/// Removes all invalid edges.
|
|
218
|
+
/// 1. Merges inFace with faces that share two edges with it since this means inFace or the other face cannot be convex or the edge is colinear.
|
|
219
|
+
/// 2. Removes edges that are interior to inFace (that have inFace on both sides)
|
|
220
|
+
/// Any faces that need to be checked for validity will be added to ioAffectedFaces.
|
|
221
|
+
void RemoveInvalidEdges(Face *inFace, Faces &ioAffectedFaces);
|
|
222
|
+
|
|
223
|
+
/// Removes inFace if it consists of only 2 edges, linking its neighbouring faces together
|
|
224
|
+
/// Any faces that need to be checked for validity will be added to ioAffectedFaces.
|
|
225
|
+
/// @return True if face was removed.
|
|
226
|
+
bool RemoveTwoEdgeFace(Face *inFace, Faces &ioAffectedFaces) const;
|
|
227
|
+
|
|
228
|
+
#ifdef JPH_ENABLE_ASSERTS
|
|
229
|
+
/// Dumps the text representation of a face to the TTY
|
|
230
|
+
void DumpFace(const Face *inFace) const;
|
|
231
|
+
|
|
232
|
+
/// Dumps the text representation of all faces to the TTY
|
|
233
|
+
void DumpFaces() const;
|
|
234
|
+
|
|
235
|
+
/// Check consistency of 1 face
|
|
236
|
+
void ValidateFace(const Face *inFace) const;
|
|
237
|
+
|
|
238
|
+
/// Check consistency of all faces
|
|
239
|
+
void ValidateFaces() const;
|
|
240
|
+
#endif
|
|
241
|
+
|
|
242
|
+
#ifdef JPH_CONVEX_BUILDER_DEBUG
|
|
243
|
+
/// Draw state of algorithm
|
|
244
|
+
void DrawState(bool inDrawConflictList = false) const;
|
|
245
|
+
|
|
246
|
+
/// Draw a face for debugging purposes
|
|
247
|
+
void DrawWireFace(const Face *inFace, ColorArg inColor) const;
|
|
248
|
+
|
|
249
|
+
/// Draw an edge for debugging purposes
|
|
250
|
+
void DrawEdge(const Edge *inEdge, ColorArg inColor) const;
|
|
251
|
+
#endif
|
|
252
|
+
|
|
253
|
+
#ifdef JPH_CONVEX_BUILDER_DUMP_SHAPE
|
|
254
|
+
void DumpShape() const;
|
|
255
|
+
#endif
|
|
256
|
+
|
|
257
|
+
const Positions & mPositions; ///< List of positions (some of them are part of the hull)
|
|
258
|
+
Faces mFaces; ///< List of faces that are part of the hull (if !mRemoved)
|
|
259
|
+
|
|
260
|
+
struct Coplanar
|
|
261
|
+
{
|
|
262
|
+
int mPositionIdx; ///< Index in mPositions
|
|
263
|
+
float mDistanceSq; ///< Distance to the edge of closest face (should be > 0)
|
|
264
|
+
};
|
|
265
|
+
using CoplanarList = Array<Coplanar>;
|
|
266
|
+
|
|
267
|
+
CoplanarList mCoplanarList; ///< List of positions that are coplanar to a face but outside of the face, these are added to the hull at the end
|
|
268
|
+
|
|
269
|
+
#ifdef JPH_CONVEX_BUILDER_DEBUG
|
|
270
|
+
int mIteration; ///< Number of iterations we've had so far (for debug purposes)
|
|
271
|
+
mutable RVec3 mOffset; ///< Offset to use for state drawing
|
|
272
|
+
Vec3 mDelta; ///< Delta offset between next states
|
|
273
|
+
#endif
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
JPH_NAMESPACE_END
|
|
@@ -0,0 +1,335 @@
|
|
|
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/Geometry/ConvexHullBuilder2D.h>
|
|
8
|
+
|
|
9
|
+
#ifdef JPH_CONVEX_BUILDER_2D_DEBUG
|
|
10
|
+
#include <Jolt/Renderer/DebugRenderer.h>
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
JPH_NAMESPACE_BEGIN
|
|
14
|
+
|
|
15
|
+
void ConvexHullBuilder2D::Edge::CalculateNormalAndCenter(const Vec3 *inPositions)
|
|
16
|
+
{
|
|
17
|
+
Vec3 p1 = inPositions[mStartIdx];
|
|
18
|
+
Vec3 p2 = inPositions[mNextEdge->mStartIdx];
|
|
19
|
+
|
|
20
|
+
// Center of edge
|
|
21
|
+
mCenter = 0.5f * (p1 + p2);
|
|
22
|
+
|
|
23
|
+
// Create outward pointing normal.
|
|
24
|
+
// We have two choices for the normal (which satisfies normal . edge = 0):
|
|
25
|
+
// normal1 = (-edge.y, edge.x, 0)
|
|
26
|
+
// normal2 = (edge.y, -edge.x, 0)
|
|
27
|
+
// We want (normal x edge).z > 0 so that the normal points out of the polygon. Only normal2 satisfies this condition.
|
|
28
|
+
Vec3 edge = p2 - p1;
|
|
29
|
+
mNormal = Vec3(edge.GetY(), -edge.GetX(), 0);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
ConvexHullBuilder2D::ConvexHullBuilder2D(const Positions &inPositions) :
|
|
33
|
+
mPositions(inPositions)
|
|
34
|
+
{
|
|
35
|
+
#ifdef JPH_CONVEX_BUILDER_2D_DEBUG
|
|
36
|
+
// Center the drawing of the first hull around the origin and calculate the delta offset between states
|
|
37
|
+
mOffset = RVec3::sZero();
|
|
38
|
+
if (mPositions.empty())
|
|
39
|
+
{
|
|
40
|
+
// No hull will be generated
|
|
41
|
+
mDelta = Vec3::sZero();
|
|
42
|
+
}
|
|
43
|
+
else
|
|
44
|
+
{
|
|
45
|
+
Vec3 maxv = Vec3::sReplicate(-FLT_MAX), minv = Vec3::sReplicate(FLT_MAX);
|
|
46
|
+
for (Vec3 v : mPositions)
|
|
47
|
+
{
|
|
48
|
+
minv = Vec3::sMin(minv, v);
|
|
49
|
+
maxv = Vec3::sMax(maxv, v);
|
|
50
|
+
mOffset -= v;
|
|
51
|
+
}
|
|
52
|
+
mOffset /= Real(mPositions.size());
|
|
53
|
+
mDelta = Vec3((maxv - minv).GetX() + 0.5f, 0, 0);
|
|
54
|
+
mOffset += mDelta; // Don't start at origin, we're already drawing the final hull there
|
|
55
|
+
}
|
|
56
|
+
#endif
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
ConvexHullBuilder2D::~ConvexHullBuilder2D()
|
|
60
|
+
{
|
|
61
|
+
FreeEdges();
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
void ConvexHullBuilder2D::FreeEdges()
|
|
65
|
+
{
|
|
66
|
+
if (mFirstEdge == nullptr)
|
|
67
|
+
return;
|
|
68
|
+
|
|
69
|
+
Edge *edge = mFirstEdge;
|
|
70
|
+
do
|
|
71
|
+
{
|
|
72
|
+
Edge *next = edge->mNextEdge;
|
|
73
|
+
delete edge;
|
|
74
|
+
edge = next;
|
|
75
|
+
} while (edge != mFirstEdge);
|
|
76
|
+
|
|
77
|
+
mFirstEdge = nullptr;
|
|
78
|
+
mNumEdges = 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
#ifdef JPH_ENABLE_ASSERTS
|
|
82
|
+
|
|
83
|
+
void ConvexHullBuilder2D::ValidateEdges() const
|
|
84
|
+
{
|
|
85
|
+
if (mFirstEdge == nullptr)
|
|
86
|
+
{
|
|
87
|
+
JPH_ASSERT(mNumEdges == 0);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
int count = 0;
|
|
92
|
+
|
|
93
|
+
Edge *edge = mFirstEdge;
|
|
94
|
+
do
|
|
95
|
+
{
|
|
96
|
+
// Validate connectivity
|
|
97
|
+
JPH_ASSERT(edge->mNextEdge->mPrevEdge == edge);
|
|
98
|
+
JPH_ASSERT(edge->mPrevEdge->mNextEdge == edge);
|
|
99
|
+
|
|
100
|
+
++count;
|
|
101
|
+
edge = edge->mNextEdge;
|
|
102
|
+
} while (edge != mFirstEdge);
|
|
103
|
+
|
|
104
|
+
// Validate that count matches
|
|
105
|
+
JPH_ASSERT(count == mNumEdges);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
#endif // JPH_ENABLE_ASSERTS
|
|
109
|
+
|
|
110
|
+
void ConvexHullBuilder2D::AssignPointToEdge(int inPositionIdx, const Array<Edge *> &inEdges) const
|
|
111
|
+
{
|
|
112
|
+
Vec3 point = mPositions[inPositionIdx];
|
|
113
|
+
|
|
114
|
+
Edge *best_edge = nullptr;
|
|
115
|
+
float best_dist_sq = 0.0f;
|
|
116
|
+
|
|
117
|
+
// Test against all edges
|
|
118
|
+
for (Edge *edge : inEdges)
|
|
119
|
+
{
|
|
120
|
+
// Determine distance to edge
|
|
121
|
+
float dot = edge->mNormal.Dot(point - edge->mCenter);
|
|
122
|
+
if (dot > 0.0f)
|
|
123
|
+
{
|
|
124
|
+
float dist_sq = dot * dot / edge->mNormal.LengthSq();
|
|
125
|
+
if (dist_sq > best_dist_sq)
|
|
126
|
+
{
|
|
127
|
+
best_edge = edge;
|
|
128
|
+
best_dist_sq = dist_sq;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// If this point is in front of the edge, add it to the conflict list
|
|
134
|
+
if (best_edge != nullptr)
|
|
135
|
+
{
|
|
136
|
+
if (best_dist_sq > best_edge->mFurthestPointDistanceSq)
|
|
137
|
+
{
|
|
138
|
+
// This point is further away than any others, update the distance and add point as last point
|
|
139
|
+
best_edge->mFurthestPointDistanceSq = best_dist_sq;
|
|
140
|
+
best_edge->mConflictList.push_back(inPositionIdx);
|
|
141
|
+
}
|
|
142
|
+
else
|
|
143
|
+
{
|
|
144
|
+
// Not the furthest point, add it as the before last point
|
|
145
|
+
best_edge->mConflictList.insert(best_edge->mConflictList.begin() + best_edge->mConflictList.size() - 1, inPositionIdx);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
ConvexHullBuilder2D::EResult ConvexHullBuilder2D::Initialize(int inIdx1, int inIdx2, int inIdx3, int inMaxVertices, float inTolerance, Edges &outEdges)
|
|
151
|
+
{
|
|
152
|
+
// Clear any leftovers
|
|
153
|
+
FreeEdges();
|
|
154
|
+
outEdges.clear();
|
|
155
|
+
|
|
156
|
+
// Reset flag
|
|
157
|
+
EResult result = EResult::Success;
|
|
158
|
+
|
|
159
|
+
// Determine a suitable tolerance for detecting that points are colinear
|
|
160
|
+
// Formula as per: Implementing Quickhull - Dirk Gregorius.
|
|
161
|
+
Vec3 vmax = Vec3::sZero();
|
|
162
|
+
for (Vec3 v : mPositions)
|
|
163
|
+
vmax = Vec3::sMax(vmax, v.Abs());
|
|
164
|
+
float colinear_tolerance_sq = Square(2.0f * FLT_EPSILON * (vmax.GetX() + vmax.GetY()));
|
|
165
|
+
|
|
166
|
+
// Increase desired tolerance if accuracy doesn't allow it
|
|
167
|
+
float tolerance_sq = max(colinear_tolerance_sq, Square(inTolerance));
|
|
168
|
+
|
|
169
|
+
// Start with the initial indices in counter clockwise order
|
|
170
|
+
float z = (mPositions[inIdx2] - mPositions[inIdx1]).Cross(mPositions[inIdx3] - mPositions[inIdx1]).GetZ();
|
|
171
|
+
if (z < 0.0f)
|
|
172
|
+
std::swap(inIdx1, inIdx2);
|
|
173
|
+
|
|
174
|
+
// Create and link edges
|
|
175
|
+
Edge *e1 = new Edge(inIdx1);
|
|
176
|
+
Edge *e2 = new Edge(inIdx2);
|
|
177
|
+
Edge *e3 = new Edge(inIdx3);
|
|
178
|
+
e1->mNextEdge = e2;
|
|
179
|
+
e1->mPrevEdge = e3;
|
|
180
|
+
e2->mNextEdge = e3;
|
|
181
|
+
e2->mPrevEdge = e1;
|
|
182
|
+
e3->mNextEdge = e1;
|
|
183
|
+
e3->mPrevEdge = e2;
|
|
184
|
+
mFirstEdge = e1;
|
|
185
|
+
mNumEdges = 3;
|
|
186
|
+
|
|
187
|
+
// Build the initial conflict lists
|
|
188
|
+
Array<Edge *> edges { e1, e2, e3 };
|
|
189
|
+
for (Edge *edge : edges)
|
|
190
|
+
edge->CalculateNormalAndCenter(mPositions.data());
|
|
191
|
+
for (int idx = 0; idx < (int)mPositions.size(); ++idx)
|
|
192
|
+
if (idx != inIdx1 && idx != inIdx2 && idx != inIdx3)
|
|
193
|
+
AssignPointToEdge(idx, edges);
|
|
194
|
+
|
|
195
|
+
JPH_IF_ENABLE_ASSERTS(ValidateEdges();)
|
|
196
|
+
#ifdef JPH_CONVEX_BUILDER_2D_DEBUG
|
|
197
|
+
DrawState();
|
|
198
|
+
#endif
|
|
199
|
+
|
|
200
|
+
// Add the remaining points to the hull
|
|
201
|
+
for (;;)
|
|
202
|
+
{
|
|
203
|
+
// Check if we've reached the max amount of vertices that are allowed
|
|
204
|
+
if (mNumEdges >= inMaxVertices)
|
|
205
|
+
{
|
|
206
|
+
result = EResult::MaxVerticesReached;
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Find the edge with the furthest point on it
|
|
211
|
+
Edge *edge_with_furthest_point = nullptr;
|
|
212
|
+
float furthest_dist_sq = 0.0f;
|
|
213
|
+
Edge *edge = mFirstEdge;
|
|
214
|
+
do
|
|
215
|
+
{
|
|
216
|
+
if (edge->mFurthestPointDistanceSq > furthest_dist_sq)
|
|
217
|
+
{
|
|
218
|
+
furthest_dist_sq = edge->mFurthestPointDistanceSq;
|
|
219
|
+
edge_with_furthest_point = edge;
|
|
220
|
+
}
|
|
221
|
+
edge = edge->mNextEdge;
|
|
222
|
+
} while (edge != mFirstEdge);
|
|
223
|
+
|
|
224
|
+
// If there is none closer than our tolerance value, we're done
|
|
225
|
+
if (edge_with_furthest_point == nullptr || furthest_dist_sq < tolerance_sq)
|
|
226
|
+
break;
|
|
227
|
+
|
|
228
|
+
// Take the furthest point
|
|
229
|
+
int furthest_point_idx = edge_with_furthest_point->mConflictList.back();
|
|
230
|
+
edge_with_furthest_point->mConflictList.pop_back();
|
|
231
|
+
Vec3 furthest_point = mPositions[furthest_point_idx];
|
|
232
|
+
|
|
233
|
+
// Find the horizon of edges that need to be removed
|
|
234
|
+
Edge *first_edge = edge_with_furthest_point;
|
|
235
|
+
do
|
|
236
|
+
{
|
|
237
|
+
Edge *prev = first_edge->mPrevEdge;
|
|
238
|
+
if (!prev->IsFacing(furthest_point))
|
|
239
|
+
break;
|
|
240
|
+
first_edge = prev;
|
|
241
|
+
} while (first_edge != edge_with_furthest_point);
|
|
242
|
+
|
|
243
|
+
Edge *last_edge = edge_with_furthest_point;
|
|
244
|
+
do
|
|
245
|
+
{
|
|
246
|
+
Edge *next = last_edge->mNextEdge;
|
|
247
|
+
if (!next->IsFacing(furthest_point))
|
|
248
|
+
break;
|
|
249
|
+
last_edge = next;
|
|
250
|
+
} while (last_edge != edge_with_furthest_point);
|
|
251
|
+
|
|
252
|
+
// Create new edges
|
|
253
|
+
e1 = new Edge(first_edge->mStartIdx);
|
|
254
|
+
e2 = new Edge(furthest_point_idx);
|
|
255
|
+
e1->mNextEdge = e2;
|
|
256
|
+
e1->mPrevEdge = first_edge->mPrevEdge;
|
|
257
|
+
e2->mPrevEdge = e1;
|
|
258
|
+
e2->mNextEdge = last_edge->mNextEdge;
|
|
259
|
+
e1->mPrevEdge->mNextEdge = e1;
|
|
260
|
+
e2->mNextEdge->mPrevEdge = e2;
|
|
261
|
+
mFirstEdge = e1; // We could delete mFirstEdge so just update it to the newly created edge
|
|
262
|
+
mNumEdges += 2;
|
|
263
|
+
|
|
264
|
+
// Calculate normals
|
|
265
|
+
Array<Edge *> new_edges { e1, e2 };
|
|
266
|
+
for (Edge *new_edge : new_edges)
|
|
267
|
+
new_edge->CalculateNormalAndCenter(mPositions.data());
|
|
268
|
+
|
|
269
|
+
// Delete the old edges
|
|
270
|
+
for (;;)
|
|
271
|
+
{
|
|
272
|
+
Edge *next = first_edge->mNextEdge;
|
|
273
|
+
|
|
274
|
+
// Redistribute points in conflict list
|
|
275
|
+
for (int idx : first_edge->mConflictList)
|
|
276
|
+
AssignPointToEdge(idx, new_edges);
|
|
277
|
+
|
|
278
|
+
// Delete the old edge
|
|
279
|
+
delete first_edge;
|
|
280
|
+
--mNumEdges;
|
|
281
|
+
|
|
282
|
+
if (first_edge == last_edge)
|
|
283
|
+
break;
|
|
284
|
+
first_edge = next;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
JPH_IF_ENABLE_ASSERTS(ValidateEdges();)
|
|
288
|
+
#ifdef JPH_CONVEX_BUILDER_2D_DEBUG
|
|
289
|
+
DrawState();
|
|
290
|
+
#endif
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// Convert the edge list to a list of indices
|
|
294
|
+
outEdges.reserve(mNumEdges);
|
|
295
|
+
Edge *edge = mFirstEdge;
|
|
296
|
+
do
|
|
297
|
+
{
|
|
298
|
+
outEdges.push_back(edge->mStartIdx);
|
|
299
|
+
edge = edge->mNextEdge;
|
|
300
|
+
} while (edge != mFirstEdge);
|
|
301
|
+
|
|
302
|
+
return result;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
#ifdef JPH_CONVEX_BUILDER_2D_DEBUG
|
|
306
|
+
|
|
307
|
+
void ConvexHullBuilder2D::DrawState()
|
|
308
|
+
{
|
|
309
|
+
int color_idx = 0;
|
|
310
|
+
|
|
311
|
+
const Edge *edge = mFirstEdge;
|
|
312
|
+
do
|
|
313
|
+
{
|
|
314
|
+
const Edge *next = edge->mNextEdge;
|
|
315
|
+
|
|
316
|
+
// Get unique color per edge
|
|
317
|
+
Color color = Color::sGetDistinctColor(color_idx++);
|
|
318
|
+
|
|
319
|
+
// Draw edge and normal
|
|
320
|
+
DebugRenderer::sInstance->DrawArrow(cDrawScale * (mOffset + mPositions[edge->mStartIdx]), cDrawScale * (mOffset + mPositions[next->mStartIdx]), color, 0.1f);
|
|
321
|
+
DebugRenderer::sInstance->DrawArrow(cDrawScale * (mOffset + edge->mCenter), cDrawScale * (mOffset + edge->mCenter) + edge->mNormal.NormalizedOr(Vec3::sZero()), Color::sGreen, 0.1f);
|
|
322
|
+
|
|
323
|
+
// Draw points that belong to this edge in the same color
|
|
324
|
+
for (int idx : edge->mConflictList)
|
|
325
|
+
DebugRenderer::sInstance->DrawMarker(cDrawScale * (mOffset + mPositions[idx]), color, 0.05f);
|
|
326
|
+
|
|
327
|
+
edge = next;
|
|
328
|
+
} while (edge != mFirstEdge);
|
|
329
|
+
|
|
330
|
+
mOffset += mDelta;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
#endif
|
|
334
|
+
|
|
335
|
+
JPH_NAMESPACE_END
|