@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,90 @@
|
|
|
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/StateRecorderImpl.h>
|
|
8
|
+
|
|
9
|
+
JPH_NAMESPACE_BEGIN
|
|
10
|
+
|
|
11
|
+
void StateRecorderImpl::WriteBytes(const void *inData, size_t inNumBytes)
|
|
12
|
+
{
|
|
13
|
+
mStream.write((const char *)inData, inNumBytes);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
void StateRecorderImpl::Rewind()
|
|
17
|
+
{
|
|
18
|
+
mStream.seekg(0, std::stringstream::beg);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
void StateRecorderImpl::Clear()
|
|
22
|
+
{
|
|
23
|
+
mStream.clear();
|
|
24
|
+
mStream.str({});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void StateRecorderImpl::ReadBytes(void *outData, size_t inNumBytes)
|
|
28
|
+
{
|
|
29
|
+
if (IsValidating())
|
|
30
|
+
{
|
|
31
|
+
// Read data in temporary buffer to compare with current value
|
|
32
|
+
void *data = JPH_STACK_ALLOC(inNumBytes);
|
|
33
|
+
mStream.read((char *)data, inNumBytes);
|
|
34
|
+
if (memcmp(data, outData, inNumBytes) != 0)
|
|
35
|
+
{
|
|
36
|
+
// Mismatch, print error
|
|
37
|
+
Trace("Mismatch reading %u bytes", (uint)inNumBytes);
|
|
38
|
+
for (size_t i = 0; i < inNumBytes; ++i)
|
|
39
|
+
{
|
|
40
|
+
int b1 = reinterpret_cast<uint8 *>(outData)[i];
|
|
41
|
+
int b2 = reinterpret_cast<uint8 *>(data)[i];
|
|
42
|
+
if (b1 != b2)
|
|
43
|
+
Trace("Offset %d: %02X -> %02X", i, b1, b2);
|
|
44
|
+
}
|
|
45
|
+
JPH_BREAKPOINT;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Copy the temporary data to the final destination
|
|
49
|
+
memcpy(outData, data, inNumBytes);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
mStream.read((char *)outData, inNumBytes);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
bool StateRecorderImpl::IsEqual(StateRecorderImpl &inReference)
|
|
57
|
+
{
|
|
58
|
+
// Get length of new state
|
|
59
|
+
mStream.seekg(0, std::stringstream::end);
|
|
60
|
+
std::streamoff this_len = mStream.tellg();
|
|
61
|
+
mStream.seekg(0, std::stringstream::beg);
|
|
62
|
+
|
|
63
|
+
// Get length of old state
|
|
64
|
+
inReference.mStream.seekg(0, std::stringstream::end);
|
|
65
|
+
std::streamoff reference_len = inReference.mStream.tellg();
|
|
66
|
+
inReference.mStream.seekg(0, std::stringstream::beg);
|
|
67
|
+
|
|
68
|
+
// Compare size
|
|
69
|
+
bool fail = reference_len != this_len;
|
|
70
|
+
if (fail)
|
|
71
|
+
{
|
|
72
|
+
Trace("Failed to properly recover state, different stream length!");
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Compare byte by byte
|
|
77
|
+
for (std::streamoff i = 0, l = this_len; !fail && i < l; ++i)
|
|
78
|
+
{
|
|
79
|
+
fail = inReference.mStream.get() != mStream.get();
|
|
80
|
+
if (fail)
|
|
81
|
+
{
|
|
82
|
+
Trace("Failed to properly recover state, different at offset %d!", (int)i);
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
JPH_NAMESPACE_END
|
|
@@ -0,0 +1,50 @@
|
|
|
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/StateRecorder.h>
|
|
8
|
+
|
|
9
|
+
JPH_NAMESPACE_BEGIN
|
|
10
|
+
|
|
11
|
+
/// Implementation of the StateRecorder class that uses a stringstream as underlying store and that implements checking if the state doesn't change upon reading
|
|
12
|
+
class JPH_EXPORT StateRecorderImpl final : public StateRecorder
|
|
13
|
+
{
|
|
14
|
+
public:
|
|
15
|
+
/// Constructor
|
|
16
|
+
StateRecorderImpl() = default;
|
|
17
|
+
StateRecorderImpl(StateRecorderImpl &&inRHS) : StateRecorder(inRHS), mStream(std::move(inRHS.mStream)) { }
|
|
18
|
+
|
|
19
|
+
/// Write a string of bytes to the binary stream
|
|
20
|
+
virtual void WriteBytes(const void *inData, size_t inNumBytes) override;
|
|
21
|
+
|
|
22
|
+
/// Rewind the stream for reading
|
|
23
|
+
void Rewind();
|
|
24
|
+
|
|
25
|
+
/// Clear the stream for reuse
|
|
26
|
+
void Clear();
|
|
27
|
+
|
|
28
|
+
/// Read a string of bytes from the binary stream
|
|
29
|
+
virtual void ReadBytes(void *outData, size_t inNumBytes) override;
|
|
30
|
+
|
|
31
|
+
// See StreamIn
|
|
32
|
+
virtual bool IsEOF() const override { return mStream.eof(); }
|
|
33
|
+
|
|
34
|
+
// See StreamIn / StreamOut
|
|
35
|
+
virtual bool IsFailed() const override { return mStream.fail(); }
|
|
36
|
+
|
|
37
|
+
/// Compare this state with a reference state and ensure they are the same
|
|
38
|
+
bool IsEqual(StateRecorderImpl &inReference);
|
|
39
|
+
|
|
40
|
+
/// Convert the binary data to a string
|
|
41
|
+
std::string GetData() const { return mStream.str(); }
|
|
42
|
+
|
|
43
|
+
/// Get size of the binary data in bytes
|
|
44
|
+
size_t GetDataSize() { return size_t(mStream.tellp()); }
|
|
45
|
+
|
|
46
|
+
private:
|
|
47
|
+
std::stringstream mStream;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
JPH_NAMESPACE_END
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
|
|
2
|
+
// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
#include <Jolt/Jolt.h>
|
|
6
|
+
|
|
7
|
+
#include <Jolt/Physics/Vehicle/MotorcycleController.h>
|
|
8
|
+
#include <Jolt/Physics/PhysicsSystem.h>
|
|
9
|
+
#include <Jolt/ObjectStream/TypeDeclarations.h>
|
|
10
|
+
#include <Jolt/Core/StreamIn.h>
|
|
11
|
+
#include <Jolt/Core/StreamOut.h>
|
|
12
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
13
|
+
#include <Jolt/Renderer/DebugRenderer.h>
|
|
14
|
+
#endif // JPH_DEBUG_RENDERER
|
|
15
|
+
|
|
16
|
+
JPH_NAMESPACE_BEGIN
|
|
17
|
+
|
|
18
|
+
JPH_IMPLEMENT_SERIALIZABLE_VIRTUAL(MotorcycleControllerSettings)
|
|
19
|
+
{
|
|
20
|
+
JPH_ADD_BASE_CLASS(MotorcycleControllerSettings, WheeledVehicleControllerSettings)
|
|
21
|
+
|
|
22
|
+
JPH_ADD_ATTRIBUTE(MotorcycleControllerSettings, mMaxLeanAngle)
|
|
23
|
+
JPH_ADD_ATTRIBUTE(MotorcycleControllerSettings, mLeanSpringConstant)
|
|
24
|
+
JPH_ADD_ATTRIBUTE(MotorcycleControllerSettings, mLeanSpringDamping)
|
|
25
|
+
JPH_ADD_ATTRIBUTE(MotorcycleControllerSettings, mLeanSpringIntegrationCoefficient)
|
|
26
|
+
JPH_ADD_ATTRIBUTE(MotorcycleControllerSettings, mLeanSpringIntegrationCoefficientDecay)
|
|
27
|
+
JPH_ADD_ATTRIBUTE(MotorcycleControllerSettings, mLeanSmoothingFactor)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
VehicleController *MotorcycleControllerSettings::ConstructController(VehicleConstraint &inConstraint) const
|
|
31
|
+
{
|
|
32
|
+
return new MotorcycleController(*this, inConstraint);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
void MotorcycleControllerSettings::SaveBinaryState(StreamOut &inStream) const
|
|
36
|
+
{
|
|
37
|
+
WheeledVehicleControllerSettings::SaveBinaryState(inStream);
|
|
38
|
+
|
|
39
|
+
inStream.Write(mMaxLeanAngle);
|
|
40
|
+
inStream.Write(mLeanSpringConstant);
|
|
41
|
+
inStream.Write(mLeanSpringDamping);
|
|
42
|
+
inStream.Write(mLeanSpringIntegrationCoefficient);
|
|
43
|
+
inStream.Write(mLeanSpringIntegrationCoefficientDecay);
|
|
44
|
+
inStream.Write(mLeanSmoothingFactor);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
void MotorcycleControllerSettings::RestoreBinaryState(StreamIn &inStream)
|
|
48
|
+
{
|
|
49
|
+
WheeledVehicleControllerSettings::RestoreBinaryState(inStream);
|
|
50
|
+
|
|
51
|
+
inStream.Read(mMaxLeanAngle);
|
|
52
|
+
inStream.Read(mLeanSpringConstant);
|
|
53
|
+
inStream.Read(mLeanSpringDamping);
|
|
54
|
+
inStream.Read(mLeanSpringIntegrationCoefficient);
|
|
55
|
+
inStream.Read(mLeanSpringIntegrationCoefficientDecay);
|
|
56
|
+
inStream.Read(mLeanSmoothingFactor);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
MotorcycleController::MotorcycleController(const MotorcycleControllerSettings &inSettings, VehicleConstraint &inConstraint) :
|
|
60
|
+
WheeledVehicleController(inSettings, inConstraint),
|
|
61
|
+
mMaxLeanAngle(inSettings.mMaxLeanAngle),
|
|
62
|
+
mLeanSpringConstant(inSettings.mLeanSpringConstant),
|
|
63
|
+
mLeanSpringDamping(inSettings.mLeanSpringDamping),
|
|
64
|
+
mLeanSpringIntegrationCoefficient(inSettings.mLeanSpringIntegrationCoefficient),
|
|
65
|
+
mLeanSpringIntegrationCoefficientDecay(inSettings.mLeanSpringIntegrationCoefficientDecay),
|
|
66
|
+
mLeanSmoothingFactor(inSettings.mLeanSmoothingFactor)
|
|
67
|
+
{
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
float MotorcycleController::GetWheelBase() const
|
|
71
|
+
{
|
|
72
|
+
float low = FLT_MAX, high = -FLT_MAX;
|
|
73
|
+
|
|
74
|
+
for (const Wheel *w : mConstraint.GetWheels())
|
|
75
|
+
{
|
|
76
|
+
const WheelSettings *s = w->GetSettings();
|
|
77
|
+
|
|
78
|
+
// Measure distance along the forward axis by looking at the fully extended suspension.
|
|
79
|
+
// If the suspension force point is active, use that instead.
|
|
80
|
+
Vec3 force_point = s->mEnableSuspensionForcePoint? s->mSuspensionForcePoint : s->mPosition + s->mSuspensionDirection * s->mSuspensionMaxLength;
|
|
81
|
+
float value = force_point.Dot(mConstraint.GetLocalForward());
|
|
82
|
+
|
|
83
|
+
// Update min and max
|
|
84
|
+
low = min(low, value);
|
|
85
|
+
high = max(high, value);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return high - low;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
void MotorcycleController::PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem)
|
|
92
|
+
{
|
|
93
|
+
WheeledVehicleController::PreCollide(inDeltaTime, inPhysicsSystem);
|
|
94
|
+
|
|
95
|
+
const Body *body = mConstraint.GetVehicleBody();
|
|
96
|
+
Vec3 forward = body->GetRotation() * mConstraint.GetLocalForward();
|
|
97
|
+
float wheel_base = GetWheelBase();
|
|
98
|
+
Vec3 world_up = mConstraint.GetWorldUp();
|
|
99
|
+
|
|
100
|
+
if (mEnableLeanController)
|
|
101
|
+
{
|
|
102
|
+
// Calculate the target lean vector, this is in the direction of the total applied impulse by the ground on the wheels
|
|
103
|
+
Vec3 target_lean = Vec3::sZero();
|
|
104
|
+
for (const Wheel *w : mConstraint.GetWheels())
|
|
105
|
+
if (w->HasContact())
|
|
106
|
+
target_lean += w->GetContactNormal() * w->GetSuspensionLambda() + w->GetContactLateral() * w->GetLateralLambda();
|
|
107
|
+
|
|
108
|
+
// Normalize the impulse
|
|
109
|
+
target_lean = target_lean.NormalizedOr(world_up);
|
|
110
|
+
|
|
111
|
+
// Smooth the impulse to avoid jittery behavior
|
|
112
|
+
mTargetLean = mLeanSmoothingFactor * mTargetLean + (1.0f - mLeanSmoothingFactor) * target_lean;
|
|
113
|
+
|
|
114
|
+
// Remove forward component, we can only lean sideways
|
|
115
|
+
mTargetLean -= forward * mTargetLean.Dot(forward);
|
|
116
|
+
mTargetLean = mTargetLean.NormalizedOr(world_up);
|
|
117
|
+
|
|
118
|
+
// Clamp the target lean against the max lean angle
|
|
119
|
+
Vec3 adjusted_world_up = world_up - forward * world_up.Dot(forward);
|
|
120
|
+
adjusted_world_up = adjusted_world_up.NormalizedOr(world_up);
|
|
121
|
+
float w_angle = -Sign(mTargetLean.Cross(adjusted_world_up).Dot(forward)) * ACos(mTargetLean.Dot(adjusted_world_up));
|
|
122
|
+
if (abs(w_angle) > mMaxLeanAngle)
|
|
123
|
+
mTargetLean = Quat::sRotation(forward, Sign(w_angle) * mMaxLeanAngle) * adjusted_world_up;
|
|
124
|
+
|
|
125
|
+
// Integrate the delta angle
|
|
126
|
+
Vec3 up = body->GetRotation() * mConstraint.GetLocalUp();
|
|
127
|
+
float d_angle = -Sign(mTargetLean.Cross(up).Dot(forward)) * ACos(mTargetLean.Dot(up));
|
|
128
|
+
mLeanSpringIntegratedDeltaAngle += d_angle * inDeltaTime;
|
|
129
|
+
}
|
|
130
|
+
else
|
|
131
|
+
{
|
|
132
|
+
// Controller not enabled, reset target lean
|
|
133
|
+
mTargetLean = world_up;
|
|
134
|
+
|
|
135
|
+
// Reset integrated delta angle
|
|
136
|
+
mLeanSpringIntegratedDeltaAngle = 0;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
JPH_DET_LOG("WheeledVehicleController::PreCollide: mTargetLean: " << mTargetLean);
|
|
140
|
+
|
|
141
|
+
// Calculate max steering angle based on the max lean angle we're willing to take
|
|
142
|
+
// See: https://en.wikipedia.org/wiki/Bicycle_and_motorcycle_dynamics#Leaning
|
|
143
|
+
// LeanAngle = Atan(Velocity^2 / (Gravity * TurnRadius))
|
|
144
|
+
// And: https://en.wikipedia.org/wiki/Turning_radius (we're ignoring the tire width)
|
|
145
|
+
// The CasterAngle is the added according to https://en.wikipedia.org/wiki/Bicycle_and_motorcycle_dynamics#Turning (this is the same formula but without small angle approximation)
|
|
146
|
+
// TurnRadius = WheelBase / (Sin(SteerAngle) * Cos(CasterAngle))
|
|
147
|
+
// => SteerAngle = ASin(WheelBase * Tan(LeanAngle) * Gravity / (Velocity^2 * Cos(CasterAngle))
|
|
148
|
+
// The caster angle is different for each wheel so we can only calculate part of the equation here
|
|
149
|
+
float max_steer_angle_factor = wheel_base * Tan(mMaxLeanAngle) * (mConstraint.IsGravityOverridden()? mConstraint.GetGravityOverride() : inPhysicsSystem.GetGravity()).Length();
|
|
150
|
+
|
|
151
|
+
// Calculate forward velocity
|
|
152
|
+
float velocity = body->GetLinearVelocity().Dot(forward);
|
|
153
|
+
float velocity_sq = Square(velocity);
|
|
154
|
+
|
|
155
|
+
// Decompose steering into sign and direction
|
|
156
|
+
float steer_strength = abs(mRightInput);
|
|
157
|
+
float steer_sign = -Sign(mRightInput);
|
|
158
|
+
|
|
159
|
+
for (Wheel *w_base : mConstraint.GetWheels())
|
|
160
|
+
{
|
|
161
|
+
WheelWV *w = static_cast<WheelWV *>(w_base);
|
|
162
|
+
const WheelSettingsWV *s = w->GetSettings();
|
|
163
|
+
|
|
164
|
+
// Check if this wheel can steer
|
|
165
|
+
if (s->mMaxSteerAngle != 0.0f)
|
|
166
|
+
{
|
|
167
|
+
// Calculate cos(caster angle), the angle between the steering axis and the up vector
|
|
168
|
+
float cos_caster_angle = s->mSteeringAxis.Dot(mConstraint.GetLocalUp());
|
|
169
|
+
|
|
170
|
+
// Calculate steer angle
|
|
171
|
+
float steer_angle = steer_strength * w->GetSettings()->mMaxSteerAngle;
|
|
172
|
+
|
|
173
|
+
// Clamp to max steering angle
|
|
174
|
+
if (mEnableLeanSteeringLimit
|
|
175
|
+
&& velocity_sq > 1.0e-6f && cos_caster_angle > 1.0e-6f)
|
|
176
|
+
{
|
|
177
|
+
float max_steer_angle = ASin(max_steer_angle_factor / (velocity_sq * cos_caster_angle));
|
|
178
|
+
steer_angle = min(steer_angle, max_steer_angle);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Set steering angle
|
|
182
|
+
w->SetSteerAngle(steer_sign * steer_angle);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Reset applied impulse
|
|
187
|
+
mAppliedImpulse = 0;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
bool MotorcycleController::SolveLongitudinalAndLateralConstraints(float inDeltaTime)
|
|
191
|
+
{
|
|
192
|
+
bool impulse = WheeledVehicleController::SolveLongitudinalAndLateralConstraints(inDeltaTime);
|
|
193
|
+
|
|
194
|
+
if (mEnableLeanController)
|
|
195
|
+
{
|
|
196
|
+
// Only apply a lean impulse if all wheels are in contact, otherwise we can easily spin out
|
|
197
|
+
bool all_in_contact = true;
|
|
198
|
+
for (const Wheel *w : mConstraint.GetWheels())
|
|
199
|
+
if (!w->HasContact() || w->GetSuspensionLambda() <= 0.0f)
|
|
200
|
+
{
|
|
201
|
+
all_in_contact = false;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (all_in_contact)
|
|
206
|
+
{
|
|
207
|
+
Body *body = mConstraint.GetVehicleBody();
|
|
208
|
+
const MotionProperties *mp = body->GetMotionProperties();
|
|
209
|
+
|
|
210
|
+
Vec3 forward = body->GetRotation() * mConstraint.GetLocalForward();
|
|
211
|
+
Vec3 up = body->GetRotation() * mConstraint.GetLocalUp();
|
|
212
|
+
|
|
213
|
+
// Calculate delta to target angle and derivative
|
|
214
|
+
float d_angle = -Sign(mTargetLean.Cross(up).Dot(forward)) * ACos(mTargetLean.Dot(up));
|
|
215
|
+
float ddt_angle = body->GetAngularVelocity().Dot(forward);
|
|
216
|
+
|
|
217
|
+
// Calculate impulse to apply to get to target lean angle
|
|
218
|
+
float total_impulse = (mLeanSpringConstant * d_angle - mLeanSpringDamping * ddt_angle + mLeanSpringIntegrationCoefficient * mLeanSpringIntegratedDeltaAngle) * inDeltaTime;
|
|
219
|
+
|
|
220
|
+
// Remember angular velocity pre angular impulse
|
|
221
|
+
Vec3 old_w = mp->GetAngularVelocity();
|
|
222
|
+
|
|
223
|
+
// Apply impulse taking into account the impulse we've applied earlier
|
|
224
|
+
float delta_impulse = total_impulse - mAppliedImpulse;
|
|
225
|
+
body->AddAngularImpulse(delta_impulse * forward);
|
|
226
|
+
mAppliedImpulse = total_impulse;
|
|
227
|
+
|
|
228
|
+
// Calculate delta angular velocity due to angular impulse
|
|
229
|
+
Vec3 dw = mp->GetAngularVelocity() - old_w;
|
|
230
|
+
Vec3 linear_acceleration = Vec3::sZero();
|
|
231
|
+
float total_lambda = 0.0f;
|
|
232
|
+
for (Wheel *w_base : mConstraint.GetWheels())
|
|
233
|
+
{
|
|
234
|
+
const WheelWV *w = static_cast<WheelWV *>(w_base);
|
|
235
|
+
|
|
236
|
+
// We weigh the importance of each contact point according to the contact force
|
|
237
|
+
float lambda = w->GetSuspensionLambda();
|
|
238
|
+
total_lambda += lambda;
|
|
239
|
+
|
|
240
|
+
// Linear acceleration of contact point is dw x com_to_contact
|
|
241
|
+
Vec3 r = Vec3(w->GetContactPosition() - body->GetCenterOfMassPosition());
|
|
242
|
+
linear_acceleration += lambda * dw.Cross(r);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// Apply linear impulse to COM to cancel the average velocity change on the wheels due to the angular impulse
|
|
246
|
+
Vec3 linear_impulse = -linear_acceleration / (total_lambda * mp->GetInverseMass());
|
|
247
|
+
body->AddImpulse(linear_impulse);
|
|
248
|
+
|
|
249
|
+
// Return true if we applied an impulse
|
|
250
|
+
impulse |= delta_impulse != 0.0f;
|
|
251
|
+
}
|
|
252
|
+
else
|
|
253
|
+
{
|
|
254
|
+
// Decay the integrated angle because we won't be applying a torque this frame
|
|
255
|
+
// Uses 1st order Taylor approximation of e^(-decay * dt) = 1 - decay * dt
|
|
256
|
+
mLeanSpringIntegratedDeltaAngle *= max(0.0f, 1.0f - mLeanSpringIntegrationCoefficientDecay * inDeltaTime);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return impulse;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
void MotorcycleController::SaveState(StateRecorder &inStream) const
|
|
264
|
+
{
|
|
265
|
+
WheeledVehicleController::SaveState(inStream);
|
|
266
|
+
|
|
267
|
+
inStream.Write(mTargetLean);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
void MotorcycleController::RestoreState(StateRecorder &inStream)
|
|
271
|
+
{
|
|
272
|
+
WheeledVehicleController::RestoreState(inStream);
|
|
273
|
+
|
|
274
|
+
inStream.Read(mTargetLean);
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
278
|
+
|
|
279
|
+
void MotorcycleController::Draw(DebugRenderer *inRenderer) const
|
|
280
|
+
{
|
|
281
|
+
WheeledVehicleController::Draw(inRenderer);
|
|
282
|
+
|
|
283
|
+
// Draw current and desired lean angle
|
|
284
|
+
Body *body = mConstraint.GetVehicleBody();
|
|
285
|
+
RVec3 center_of_mass = body->GetCenterOfMassPosition();
|
|
286
|
+
Vec3 up = body->GetRotation() * mConstraint.GetLocalUp();
|
|
287
|
+
inRenderer->DrawArrow(center_of_mass, center_of_mass + up, Color::sYellow, 0.1f);
|
|
288
|
+
inRenderer->DrawArrow(center_of_mass, center_of_mass + mTargetLean, Color::sRed, 0.1f);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
#endif // JPH_DEBUG_RENDERER
|
|
292
|
+
|
|
293
|
+
Ref<VehicleControllerSettings> MotorcycleController::GetSettings() const
|
|
294
|
+
{
|
|
295
|
+
MotorcycleControllerSettings *settings = new MotorcycleControllerSettings;
|
|
296
|
+
ToSettings(*settings);
|
|
297
|
+
settings->mMaxLeanAngle = mMaxLeanAngle;
|
|
298
|
+
settings->mLeanSpringConstant = mLeanSpringConstant;
|
|
299
|
+
settings->mLeanSpringDamping = settings->mLeanSpringDamping;
|
|
300
|
+
settings->mLeanSpringIntegrationCoefficient = mLeanSpringIntegrationCoefficient;
|
|
301
|
+
settings->mLeanSpringIntegrationCoefficientDecay = mLeanSpringIntegrationCoefficientDecay;
|
|
302
|
+
settings->mLeanSmoothingFactor = mLeanSmoothingFactor;
|
|
303
|
+
return settings;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
JPH_NAMESPACE_END
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
|
|
2
|
+
// SPDX-FileCopyrightText: 2023 Jorrit Rouwe
|
|
3
|
+
// SPDX-License-Identifier: MIT
|
|
4
|
+
|
|
5
|
+
#pragma once
|
|
6
|
+
|
|
7
|
+
#include <Jolt/Physics/Vehicle/WheeledVehicleController.h>
|
|
8
|
+
|
|
9
|
+
JPH_NAMESPACE_BEGIN
|
|
10
|
+
|
|
11
|
+
/// Settings of a two wheeled motorcycle (adds a spring to balance the motorcycle)
|
|
12
|
+
/// Note: The motor cycle controller is still in development and may need a lot of tweaks/hacks to work properly!
|
|
13
|
+
class JPH_EXPORT MotorcycleControllerSettings : public WheeledVehicleControllerSettings
|
|
14
|
+
{
|
|
15
|
+
JPH_DECLARE_SERIALIZABLE_VIRTUAL(JPH_EXPORT, MotorcycleControllerSettings)
|
|
16
|
+
|
|
17
|
+
public:
|
|
18
|
+
// See: VehicleControllerSettings
|
|
19
|
+
virtual VehicleController * ConstructController(VehicleConstraint &inConstraint) const override;
|
|
20
|
+
virtual void SaveBinaryState(StreamOut &inStream) const override;
|
|
21
|
+
virtual void RestoreBinaryState(StreamIn &inStream) override;
|
|
22
|
+
|
|
23
|
+
/// How far we're willing to make the bike lean over in turns (in radians)
|
|
24
|
+
float mMaxLeanAngle = DegreesToRadians(45.0f);
|
|
25
|
+
|
|
26
|
+
/// Spring constant for the lean spring
|
|
27
|
+
float mLeanSpringConstant = 5000.0f;
|
|
28
|
+
|
|
29
|
+
/// Spring damping constant for the lean spring
|
|
30
|
+
float mLeanSpringDamping = 1000.0f;
|
|
31
|
+
|
|
32
|
+
/// The lean spring applies an additional force equal to this coefficient * Integral(delta angle, 0, t), this effectively makes the lean spring a PID controller
|
|
33
|
+
float mLeanSpringIntegrationCoefficient = 0.0f;
|
|
34
|
+
|
|
35
|
+
/// How much to decay the angle integral when the wheels are not touching the floor: new_value = e^(-decay * t) * initial_value
|
|
36
|
+
float mLeanSpringIntegrationCoefficientDecay = 4.0f;
|
|
37
|
+
|
|
38
|
+
/// How much to smooth the lean angle (0 = no smoothing, 1 = lean angle never changes)
|
|
39
|
+
/// Note that this is frame rate dependent because the formula is: smoothing_factor * previous + (1 - smoothing_factor) * current
|
|
40
|
+
float mLeanSmoothingFactor = 0.8f;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/// Runtime controller class
|
|
44
|
+
class JPH_EXPORT MotorcycleController : public WheeledVehicleController
|
|
45
|
+
{
|
|
46
|
+
public:
|
|
47
|
+
JPH_OVERRIDE_NEW_DELETE
|
|
48
|
+
|
|
49
|
+
/// Constructor
|
|
50
|
+
MotorcycleController(const MotorcycleControllerSettings &inSettings, VehicleConstraint &inConstraint);
|
|
51
|
+
|
|
52
|
+
/// Get the distance between the front and back wheels
|
|
53
|
+
float GetWheelBase() const;
|
|
54
|
+
|
|
55
|
+
/// Enable or disable the lean spring. This allows you to temporarily disable the lean spring to allow the motorcycle to fall over.
|
|
56
|
+
void EnableLeanController(bool inEnable) { mEnableLeanController = inEnable; }
|
|
57
|
+
|
|
58
|
+
/// Check if the lean spring is enabled.
|
|
59
|
+
bool IsLeanControllerEnabled() const { return mEnableLeanController; }
|
|
60
|
+
|
|
61
|
+
/// Enable or disable the lean steering limit. When enabled (default) the steering angle is limited based on the vehicle speed to prevent steering that would cause an inertial force that causes the motorcycle to topple over.
|
|
62
|
+
void EnableLeanSteeringLimit(bool inEnable) { mEnableLeanSteeringLimit = inEnable; }
|
|
63
|
+
bool IsLeanSteeringLimitEnabled() const { return mEnableLeanSteeringLimit; }
|
|
64
|
+
|
|
65
|
+
/// Spring constant for the lean spring
|
|
66
|
+
void SetLeanSpringConstant(float inConstant) { mLeanSpringConstant = inConstant; }
|
|
67
|
+
float GetLeanSpringConstant() const { return mLeanSpringConstant; }
|
|
68
|
+
|
|
69
|
+
/// Spring damping constant for the lean spring
|
|
70
|
+
void SetLeanSpringDamping(float inDamping) { mLeanSpringDamping = inDamping; }
|
|
71
|
+
float GetLeanSpringDamping() const { return mLeanSpringDamping; }
|
|
72
|
+
|
|
73
|
+
/// The lean spring applies an additional force equal to this coefficient * Integral(delta angle, 0, t), this effectively makes the lean spring a PID controller
|
|
74
|
+
void SetLeanSpringIntegrationCoefficient(float inCoefficient) { mLeanSpringIntegrationCoefficient = inCoefficient; }
|
|
75
|
+
float GetLeanSpringIntegrationCoefficient() const { return mLeanSpringIntegrationCoefficient; }
|
|
76
|
+
|
|
77
|
+
/// How much to decay the angle integral when the wheels are not touching the floor: new_value = e^(-decay * t) * initial_value
|
|
78
|
+
void SetLeanSpringIntegrationCoefficientDecay(float inDecay) { mLeanSpringIntegrationCoefficientDecay = inDecay; }
|
|
79
|
+
float GetLeanSpringIntegrationCoefficientDecay() const { return mLeanSpringIntegrationCoefficientDecay; }
|
|
80
|
+
|
|
81
|
+
/// How much to smooth the lean angle (0 = no smoothing, 1 = lean angle never changes)
|
|
82
|
+
/// Note that this is frame rate dependent because the formula is: smoothing_factor * previous + (1 - smoothing_factor) * current
|
|
83
|
+
void SetLeanSmoothingFactor(float inFactor) { mLeanSmoothingFactor = inFactor; }
|
|
84
|
+
float GetLeanSmoothingFactor() const { return mLeanSmoothingFactor; }
|
|
85
|
+
|
|
86
|
+
// See: VehicleController
|
|
87
|
+
virtual Ref<VehicleControllerSettings> GetSettings() const override;
|
|
88
|
+
|
|
89
|
+
protected:
|
|
90
|
+
// See: VehicleController
|
|
91
|
+
virtual void PreCollide(float inDeltaTime, PhysicsSystem &inPhysicsSystem) override;
|
|
92
|
+
virtual bool SolveLongitudinalAndLateralConstraints(float inDeltaTime) override;
|
|
93
|
+
virtual void SaveState(StateRecorder &inStream) const override;
|
|
94
|
+
virtual void RestoreState(StateRecorder &inStream) override;
|
|
95
|
+
#ifdef JPH_DEBUG_RENDERER
|
|
96
|
+
virtual void Draw(DebugRenderer *inRenderer) const override;
|
|
97
|
+
#endif // JPH_DEBUG_RENDERER
|
|
98
|
+
|
|
99
|
+
// Configuration properties
|
|
100
|
+
bool mEnableLeanController = true;
|
|
101
|
+
bool mEnableLeanSteeringLimit = true;
|
|
102
|
+
float mMaxLeanAngle;
|
|
103
|
+
float mLeanSpringConstant;
|
|
104
|
+
float mLeanSpringDamping;
|
|
105
|
+
float mLeanSpringIntegrationCoefficient;
|
|
106
|
+
float mLeanSpringIntegrationCoefficientDecay;
|
|
107
|
+
float mLeanSmoothingFactor;
|
|
108
|
+
|
|
109
|
+
// Run-time calculated target lean vector
|
|
110
|
+
Vec3 mTargetLean = Vec3::sZero();
|
|
111
|
+
|
|
112
|
+
// Integrated error for the lean spring
|
|
113
|
+
float mLeanSpringIntegratedDeltaAngle = 0.0f;
|
|
114
|
+
|
|
115
|
+
// Run-time total angular impulse applied to turn the cycle towards the target lean angle
|
|
116
|
+
float mAppliedImpulse = 0.0f;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
JPH_NAMESPACE_END
|