@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,1099 @@
|
|
|
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/Body/BodyInterface.h>
|
|
8
|
+
#include <Jolt/Physics/Collision/BroadPhase/BroadPhase.h>
|
|
9
|
+
#include <Jolt/Physics/Collision/CollisionCollectorImpl.h>
|
|
10
|
+
#include <Jolt/Physics/Body/Body.h>
|
|
11
|
+
#include <Jolt/Physics/Body/BodyManager.h>
|
|
12
|
+
#include <Jolt/Physics/Body/BodyCreationSettings.h>
|
|
13
|
+
#include <Jolt/Physics/Body/BodyLock.h>
|
|
14
|
+
#include <Jolt/Physics/Body/BodyLockMulti.h>
|
|
15
|
+
#include <Jolt/Physics/Collision/PhysicsMaterial.h>
|
|
16
|
+
#include <Jolt/Physics/Constraints/TwoBodyConstraint.h>
|
|
17
|
+
|
|
18
|
+
JPH_NAMESPACE_BEGIN
|
|
19
|
+
|
|
20
|
+
void BodyInterface::ActivateBodyInternal(Body &ioBody) const
|
|
21
|
+
{
|
|
22
|
+
// Activate body or reset its sleep timer.
|
|
23
|
+
// Note that BodyManager::ActivateBodies also resets the sleep timer internally, but we avoid a mutex lock if the body is already active by calling ResetSleepTimer directly.
|
|
24
|
+
if (!ioBody.IsActive())
|
|
25
|
+
mBodyManager->ActivateBodies(&ioBody.GetID(), 1);
|
|
26
|
+
else
|
|
27
|
+
ioBody.ResetSleepTimer();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
Body *BodyInterface::CreateBody(const BodyCreationSettings &inSettings)
|
|
31
|
+
{
|
|
32
|
+
Body *body = mBodyManager->AllocateBody(inSettings);
|
|
33
|
+
if (!mBodyManager->AddBody(body))
|
|
34
|
+
{
|
|
35
|
+
mBodyManager->FreeBody(body);
|
|
36
|
+
return nullptr;
|
|
37
|
+
}
|
|
38
|
+
return body;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
Body *BodyInterface::CreateSoftBody(const SoftBodyCreationSettings &inSettings)
|
|
42
|
+
{
|
|
43
|
+
Body *body = mBodyManager->AllocateSoftBody(inSettings);
|
|
44
|
+
if (!mBodyManager->AddBody(body))
|
|
45
|
+
{
|
|
46
|
+
mBodyManager->FreeBody(body);
|
|
47
|
+
return nullptr;
|
|
48
|
+
}
|
|
49
|
+
return body;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
Body *BodyInterface::CreateBodyWithID(const BodyID &inBodyID, const BodyCreationSettings &inSettings)
|
|
53
|
+
{
|
|
54
|
+
Body *body = mBodyManager->AllocateBody(inSettings);
|
|
55
|
+
if (!mBodyManager->AddBodyWithCustomID(body, inBodyID))
|
|
56
|
+
{
|
|
57
|
+
mBodyManager->FreeBody(body);
|
|
58
|
+
return nullptr;
|
|
59
|
+
}
|
|
60
|
+
return body;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
Body *BodyInterface::CreateSoftBodyWithID(const BodyID &inBodyID, const SoftBodyCreationSettings &inSettings)
|
|
64
|
+
{
|
|
65
|
+
Body *body = mBodyManager->AllocateSoftBody(inSettings);
|
|
66
|
+
if (!mBodyManager->AddBodyWithCustomID(body, inBodyID))
|
|
67
|
+
{
|
|
68
|
+
mBodyManager->FreeBody(body);
|
|
69
|
+
return nullptr;
|
|
70
|
+
}
|
|
71
|
+
return body;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
Body *BodyInterface::CreateBodyWithoutID(const BodyCreationSettings &inSettings) const
|
|
75
|
+
{
|
|
76
|
+
return mBodyManager->AllocateBody(inSettings);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
Body *BodyInterface::CreateSoftBodyWithoutID(const SoftBodyCreationSettings &inSettings) const
|
|
80
|
+
{
|
|
81
|
+
return mBodyManager->AllocateSoftBody(inSettings);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
void BodyInterface::DestroyBodyWithoutID(Body *inBody) const
|
|
85
|
+
{
|
|
86
|
+
mBodyManager->FreeBody(inBody);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
bool BodyInterface::AssignBodyID(Body *ioBody)
|
|
90
|
+
{
|
|
91
|
+
return mBodyManager->AddBody(ioBody);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
bool BodyInterface::AssignBodyID(Body *ioBody, const BodyID &inBodyID)
|
|
95
|
+
{
|
|
96
|
+
return mBodyManager->AddBodyWithCustomID(ioBody, inBodyID);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Body *BodyInterface::UnassignBodyID(const BodyID &inBodyID)
|
|
100
|
+
{
|
|
101
|
+
Body *body = nullptr;
|
|
102
|
+
mBodyManager->RemoveBodies(&inBodyID, 1, &body);
|
|
103
|
+
return body;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
void BodyInterface::UnassignBodyIDs(const BodyID *inBodyIDs, int inNumber, Body **outBodies)
|
|
107
|
+
{
|
|
108
|
+
mBodyManager->RemoveBodies(inBodyIDs, inNumber, outBodies);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
void BodyInterface::DestroyBody(const BodyID &inBodyID)
|
|
112
|
+
{
|
|
113
|
+
mBodyManager->DestroyBodies(&inBodyID, 1);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
void BodyInterface::DestroyBodies(const BodyID *inBodyIDs, int inNumber)
|
|
117
|
+
{
|
|
118
|
+
mBodyManager->DestroyBodies(inBodyIDs, inNumber);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
void BodyInterface::AddBody(const BodyID &inBodyID, EActivation inActivationMode)
|
|
122
|
+
{
|
|
123
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
124
|
+
if (lock.Succeeded())
|
|
125
|
+
{
|
|
126
|
+
const Body &body = lock.GetBody();
|
|
127
|
+
|
|
128
|
+
// Add to broadphase
|
|
129
|
+
BodyID id = inBodyID;
|
|
130
|
+
BroadPhase::AddState add_state = mBroadPhase->AddBodiesPrepare(&id, 1);
|
|
131
|
+
mBroadPhase->AddBodiesFinalize(&id, 1, add_state);
|
|
132
|
+
|
|
133
|
+
// Optionally activate body
|
|
134
|
+
if (inActivationMode == EActivation::Activate && !body.IsStatic())
|
|
135
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
void BodyInterface::RemoveBody(const BodyID &inBodyID)
|
|
140
|
+
{
|
|
141
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
142
|
+
if (lock.SucceededAndIsInBroadPhase())
|
|
143
|
+
{
|
|
144
|
+
const Body &body = lock.GetBody();
|
|
145
|
+
|
|
146
|
+
// Deactivate body
|
|
147
|
+
if (body.IsActive())
|
|
148
|
+
mBodyManager->DeactivateBodies(&inBodyID, 1);
|
|
149
|
+
|
|
150
|
+
// Remove from broadphase
|
|
151
|
+
BodyID id = inBodyID;
|
|
152
|
+
mBroadPhase->RemoveBodies(&id, 1);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
bool BodyInterface::IsAdded(const BodyID &inBodyID) const
|
|
157
|
+
{
|
|
158
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
159
|
+
return lock.SucceededAndIsInBroadPhase();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
BodyID BodyInterface::CreateAndAddBody(const BodyCreationSettings &inSettings, EActivation inActivationMode)
|
|
163
|
+
{
|
|
164
|
+
const Body *b = CreateBody(inSettings);
|
|
165
|
+
if (b == nullptr)
|
|
166
|
+
return BodyID(); // Out of bodies
|
|
167
|
+
AddBody(b->GetID(), inActivationMode);
|
|
168
|
+
return b->GetID();
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
BodyID BodyInterface::CreateAndAddSoftBody(const SoftBodyCreationSettings &inSettings, EActivation inActivationMode)
|
|
172
|
+
{
|
|
173
|
+
const Body *b = CreateSoftBody(inSettings);
|
|
174
|
+
if (b == nullptr)
|
|
175
|
+
return BodyID(); // Out of bodies
|
|
176
|
+
AddBody(b->GetID(), inActivationMode);
|
|
177
|
+
return b->GetID();
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
BodyInterface::AddState BodyInterface::AddBodiesPrepare(BodyID *ioBodies, int inNumber)
|
|
181
|
+
{
|
|
182
|
+
return mBroadPhase->AddBodiesPrepare(ioBodies, inNumber);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
void BodyInterface::AddBodiesFinalize(BodyID *ioBodies, int inNumber, AddState inAddState, EActivation inActivationMode)
|
|
186
|
+
{
|
|
187
|
+
BodyLockMultiWrite lock(*mBodyLockInterface, ioBodies, inNumber);
|
|
188
|
+
|
|
189
|
+
// Add to broadphase
|
|
190
|
+
mBroadPhase->AddBodiesFinalize(ioBodies, inNumber, inAddState);
|
|
191
|
+
|
|
192
|
+
// Optionally activate bodies
|
|
193
|
+
if (inActivationMode == EActivation::Activate)
|
|
194
|
+
mBodyManager->ActivateBodies(ioBodies, inNumber);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
void BodyInterface::AddBodiesAbort(BodyID *ioBodies, int inNumber, AddState inAddState)
|
|
198
|
+
{
|
|
199
|
+
mBroadPhase->AddBodiesAbort(ioBodies, inNumber, inAddState);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
void BodyInterface::RemoveBodies(BodyID *ioBodies, int inNumber)
|
|
203
|
+
{
|
|
204
|
+
BodyLockMultiWrite lock(*mBodyLockInterface, ioBodies, inNumber);
|
|
205
|
+
|
|
206
|
+
// Deactivate bodies
|
|
207
|
+
mBodyManager->DeactivateBodies(ioBodies, inNumber);
|
|
208
|
+
|
|
209
|
+
// Remove from broadphase
|
|
210
|
+
mBroadPhase->RemoveBodies(ioBodies, inNumber);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
void BodyInterface::ActivateBody(const BodyID &inBodyID)
|
|
214
|
+
{
|
|
215
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
216
|
+
if (lock.Succeeded())
|
|
217
|
+
{
|
|
218
|
+
Body &body = lock.GetBody();
|
|
219
|
+
ActivateBodyInternal(body);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
void BodyInterface::ActivateBodies(const BodyID *inBodyIDs, int inNumber)
|
|
224
|
+
{
|
|
225
|
+
BodyLockMultiWrite lock(*mBodyLockInterface, inBodyIDs, inNumber);
|
|
226
|
+
|
|
227
|
+
mBodyManager->ActivateBodies(inBodyIDs, inNumber);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
void BodyInterface::ActivateBodiesInAABox(const AABox &inBox, const BroadPhaseLayerFilter &inBroadPhaseLayerFilter, const ObjectLayerFilter &inObjectLayerFilter)
|
|
231
|
+
{
|
|
232
|
+
AllHitCollisionCollector<CollideShapeBodyCollector> collector;
|
|
233
|
+
mBroadPhase->CollideAABox(inBox, collector, inBroadPhaseLayerFilter, inObjectLayerFilter);
|
|
234
|
+
ActivateBodies(collector.mHits.data(), (int)collector.mHits.size());
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
void BodyInterface::DeactivateBody(const BodyID &inBodyID)
|
|
238
|
+
{
|
|
239
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
240
|
+
if (lock.Succeeded())
|
|
241
|
+
{
|
|
242
|
+
const Body &body = lock.GetBody();
|
|
243
|
+
|
|
244
|
+
if (body.IsActive())
|
|
245
|
+
mBodyManager->DeactivateBodies(&inBodyID, 1);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
void BodyInterface::DeactivateBodies(const BodyID *inBodyIDs, int inNumber)
|
|
250
|
+
{
|
|
251
|
+
BodyLockMultiWrite lock(*mBodyLockInterface, inBodyIDs, inNumber);
|
|
252
|
+
|
|
253
|
+
mBodyManager->DeactivateBodies(inBodyIDs, inNumber);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
bool BodyInterface::IsActive(const BodyID &inBodyID) const
|
|
257
|
+
{
|
|
258
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
259
|
+
return lock.Succeeded() && lock.GetBody().IsActive();
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
void BodyInterface::ResetSleepTimer(const BodyID &inBodyID)
|
|
263
|
+
{
|
|
264
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
265
|
+
if (lock.Succeeded())
|
|
266
|
+
lock.GetBody().ResetSleepTimer();
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
TwoBodyConstraint *BodyInterface::CreateConstraint(const TwoBodyConstraintSettings *inSettings, const BodyID &inBodyID1, const BodyID &inBodyID2)
|
|
270
|
+
{
|
|
271
|
+
BodyID constraint_bodies[] = { inBodyID1, inBodyID2 };
|
|
272
|
+
BodyLockMultiWrite lock(*mBodyLockInterface, constraint_bodies, 2);
|
|
273
|
+
|
|
274
|
+
Body *body1 = lock.GetBody(0);
|
|
275
|
+
Body *body2 = lock.GetBody(1);
|
|
276
|
+
|
|
277
|
+
JPH_ASSERT(body1 != body2);
|
|
278
|
+
JPH_ASSERT(body1 != nullptr || body2 != nullptr);
|
|
279
|
+
|
|
280
|
+
return inSettings->Create(body1 != nullptr? *body1 : Body::sFixedToWorld, body2 != nullptr? *body2 : Body::sFixedToWorld);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
void BodyInterface::ActivateConstraint(const TwoBodyConstraint *inConstraint)
|
|
284
|
+
{
|
|
285
|
+
BodyID bodies[] = { inConstraint->GetBody1()->GetID(), inConstraint->GetBody2()->GetID() };
|
|
286
|
+
ActivateBodies(bodies, 2);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
RefConst<Shape> BodyInterface::GetShape(const BodyID &inBodyID) const
|
|
290
|
+
{
|
|
291
|
+
RefConst<Shape> shape;
|
|
292
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
293
|
+
if (lock.Succeeded())
|
|
294
|
+
shape = lock.GetBody().GetShape();
|
|
295
|
+
return shape;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
void BodyInterface::SetShape(const BodyID &inBodyID, const Shape *inShape, bool inUpdateMassProperties, EActivation inActivationMode) const
|
|
299
|
+
{
|
|
300
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
301
|
+
if (lock.Succeeded())
|
|
302
|
+
{
|
|
303
|
+
Body &body = lock.GetBody();
|
|
304
|
+
|
|
305
|
+
// Check if shape actually changed
|
|
306
|
+
if (body.GetShape() != inShape)
|
|
307
|
+
{
|
|
308
|
+
// Update the shape
|
|
309
|
+
body.SetShapeInternal(inShape, inUpdateMassProperties);
|
|
310
|
+
|
|
311
|
+
// Notify broadphase of change
|
|
312
|
+
if (body.IsInBroadPhase())
|
|
313
|
+
{
|
|
314
|
+
// Flag collision cache invalid for this body
|
|
315
|
+
mBodyManager->InvalidateContactCacheForBody(body);
|
|
316
|
+
|
|
317
|
+
BodyID id = body.GetID();
|
|
318
|
+
mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
|
|
319
|
+
|
|
320
|
+
// Optionally activate body
|
|
321
|
+
if (inActivationMode == EActivation::Activate && !body.IsStatic())
|
|
322
|
+
ActivateBodyInternal(body);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
void BodyInterface::NotifyShapeChanged(const BodyID &inBodyID, Vec3Arg inPreviousCenterOfMass, bool inUpdateMassProperties, EActivation inActivationMode) const
|
|
329
|
+
{
|
|
330
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
331
|
+
if (lock.Succeeded())
|
|
332
|
+
{
|
|
333
|
+
Body &body = lock.GetBody();
|
|
334
|
+
|
|
335
|
+
// Update center of mass, mass and inertia
|
|
336
|
+
body.UpdateCenterOfMassInternal(inPreviousCenterOfMass, inUpdateMassProperties);
|
|
337
|
+
|
|
338
|
+
// Recalculate bounding box
|
|
339
|
+
body.CalculateWorldSpaceBoundsInternal();
|
|
340
|
+
|
|
341
|
+
// Notify broadphase of change
|
|
342
|
+
if (body.IsInBroadPhase())
|
|
343
|
+
{
|
|
344
|
+
// Flag collision cache invalid for this body
|
|
345
|
+
mBodyManager->InvalidateContactCacheForBody(body);
|
|
346
|
+
|
|
347
|
+
BodyID id = body.GetID();
|
|
348
|
+
mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
|
|
349
|
+
|
|
350
|
+
// Optionally activate body
|
|
351
|
+
if (inActivationMode == EActivation::Activate && !body.IsStatic())
|
|
352
|
+
ActivateBodyInternal(body);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
void BodyInterface::SetObjectLayer(const BodyID &inBodyID, ObjectLayer inLayer)
|
|
358
|
+
{
|
|
359
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
360
|
+
if (lock.Succeeded())
|
|
361
|
+
{
|
|
362
|
+
Body &body = lock.GetBody();
|
|
363
|
+
|
|
364
|
+
// Check if layer actually changed, updating the broadphase is rather expensive
|
|
365
|
+
if (body.GetObjectLayer() != inLayer)
|
|
366
|
+
{
|
|
367
|
+
// Update the layer on the body
|
|
368
|
+
mBodyManager->SetBodyObjectLayerInternal(body, inLayer);
|
|
369
|
+
|
|
370
|
+
// Notify broadphase of change
|
|
371
|
+
if (body.IsInBroadPhase())
|
|
372
|
+
{
|
|
373
|
+
BodyID id = body.GetID();
|
|
374
|
+
mBroadPhase->NotifyBodiesLayerChanged(&id, 1);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
ObjectLayer BodyInterface::GetObjectLayer(const BodyID &inBodyID) const
|
|
381
|
+
{
|
|
382
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
383
|
+
if (lock.Succeeded())
|
|
384
|
+
return lock.GetBody().GetObjectLayer();
|
|
385
|
+
else
|
|
386
|
+
return cObjectLayerInvalid;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
void BodyInterface::SetPositionAndRotation(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode)
|
|
390
|
+
{
|
|
391
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
392
|
+
if (lock.Succeeded())
|
|
393
|
+
{
|
|
394
|
+
Body &body = lock.GetBody();
|
|
395
|
+
|
|
396
|
+
// Update the position
|
|
397
|
+
body.SetPositionAndRotationInternal(inPosition, inRotation);
|
|
398
|
+
|
|
399
|
+
// Notify broadphase of change
|
|
400
|
+
if (body.IsInBroadPhase())
|
|
401
|
+
{
|
|
402
|
+
BodyID id = body.GetID();
|
|
403
|
+
mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
|
|
404
|
+
|
|
405
|
+
// Optionally activate body
|
|
406
|
+
if (inActivationMode == EActivation::Activate && !body.IsStatic())
|
|
407
|
+
ActivateBodyInternal(body);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
void BodyInterface::SetPositionAndRotationWhenChanged(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, EActivation inActivationMode)
|
|
413
|
+
{
|
|
414
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
415
|
+
if (lock.Succeeded())
|
|
416
|
+
{
|
|
417
|
+
Body &body = lock.GetBody();
|
|
418
|
+
|
|
419
|
+
// Check if there is enough change
|
|
420
|
+
if (!body.GetPosition().IsClose(inPosition)
|
|
421
|
+
|| !body.GetRotation().IsClose(inRotation))
|
|
422
|
+
{
|
|
423
|
+
// Update the position
|
|
424
|
+
body.SetPositionAndRotationInternal(inPosition, inRotation);
|
|
425
|
+
|
|
426
|
+
// Notify broadphase of change
|
|
427
|
+
if (body.IsInBroadPhase())
|
|
428
|
+
{
|
|
429
|
+
BodyID id = body.GetID();
|
|
430
|
+
mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
|
|
431
|
+
|
|
432
|
+
// Optionally activate body
|
|
433
|
+
if (inActivationMode == EActivation::Activate && !body.IsStatic())
|
|
434
|
+
ActivateBodyInternal(body);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
void BodyInterface::GetPositionAndRotation(const BodyID &inBodyID, RVec3 &outPosition, Quat &outRotation) const
|
|
441
|
+
{
|
|
442
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
443
|
+
if (lock.Succeeded())
|
|
444
|
+
{
|
|
445
|
+
const Body &body = lock.GetBody();
|
|
446
|
+
outPosition = body.GetPosition();
|
|
447
|
+
outRotation = body.GetRotation();
|
|
448
|
+
}
|
|
449
|
+
else
|
|
450
|
+
{
|
|
451
|
+
outPosition = RVec3::sZero();
|
|
452
|
+
outRotation = Quat::sIdentity();
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
void BodyInterface::SetPosition(const BodyID &inBodyID, RVec3Arg inPosition, EActivation inActivationMode)
|
|
457
|
+
{
|
|
458
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
459
|
+
if (lock.Succeeded())
|
|
460
|
+
{
|
|
461
|
+
Body &body = lock.GetBody();
|
|
462
|
+
|
|
463
|
+
// Update the position
|
|
464
|
+
body.SetPositionAndRotationInternal(inPosition, body.GetRotation());
|
|
465
|
+
|
|
466
|
+
// Notify broadphase of change
|
|
467
|
+
if (body.IsInBroadPhase())
|
|
468
|
+
{
|
|
469
|
+
BodyID id = body.GetID();
|
|
470
|
+
mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
|
|
471
|
+
|
|
472
|
+
// Optionally activate body
|
|
473
|
+
if (inActivationMode == EActivation::Activate && !body.IsStatic())
|
|
474
|
+
ActivateBodyInternal(body);
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
RVec3 BodyInterface::GetPosition(const BodyID &inBodyID) const
|
|
480
|
+
{
|
|
481
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
482
|
+
if (lock.Succeeded())
|
|
483
|
+
return lock.GetBody().GetPosition();
|
|
484
|
+
else
|
|
485
|
+
return RVec3::sZero();
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
RVec3 BodyInterface::GetCenterOfMassPosition(const BodyID &inBodyID) const
|
|
489
|
+
{
|
|
490
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
491
|
+
if (lock.Succeeded())
|
|
492
|
+
return lock.GetBody().GetCenterOfMassPosition();
|
|
493
|
+
else
|
|
494
|
+
return RVec3::sZero();
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
void BodyInterface::SetRotation(const BodyID &inBodyID, QuatArg inRotation, EActivation inActivationMode)
|
|
498
|
+
{
|
|
499
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
500
|
+
if (lock.Succeeded())
|
|
501
|
+
{
|
|
502
|
+
Body &body = lock.GetBody();
|
|
503
|
+
|
|
504
|
+
// Update the position
|
|
505
|
+
body.SetPositionAndRotationInternal(body.GetPosition(), inRotation);
|
|
506
|
+
|
|
507
|
+
// Notify broadphase of change
|
|
508
|
+
if (body.IsInBroadPhase())
|
|
509
|
+
{
|
|
510
|
+
BodyID id = body.GetID();
|
|
511
|
+
mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
|
|
512
|
+
|
|
513
|
+
// Optionally activate body
|
|
514
|
+
if (inActivationMode == EActivation::Activate && !body.IsStatic())
|
|
515
|
+
ActivateBodyInternal(body);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
Quat BodyInterface::GetRotation(const BodyID &inBodyID) const
|
|
521
|
+
{
|
|
522
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
523
|
+
if (lock.Succeeded())
|
|
524
|
+
return lock.GetBody().GetRotation();
|
|
525
|
+
else
|
|
526
|
+
return Quat::sIdentity();
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
RMat44 BodyInterface::GetWorldTransform(const BodyID &inBodyID) const
|
|
530
|
+
{
|
|
531
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
532
|
+
if (lock.Succeeded())
|
|
533
|
+
return lock.GetBody().GetWorldTransform();
|
|
534
|
+
else
|
|
535
|
+
return RMat44::sIdentity();
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
RMat44 BodyInterface::GetCenterOfMassTransform(const BodyID &inBodyID) const
|
|
539
|
+
{
|
|
540
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
541
|
+
if (lock.Succeeded())
|
|
542
|
+
return lock.GetBody().GetCenterOfMassTransform();
|
|
543
|
+
else
|
|
544
|
+
return RMat44::sIdentity();
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
void BodyInterface::MoveKinematic(const BodyID &inBodyID, RVec3Arg inTargetPosition, QuatArg inTargetRotation, float inDeltaTime)
|
|
548
|
+
{
|
|
549
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
550
|
+
if (lock.Succeeded())
|
|
551
|
+
{
|
|
552
|
+
Body &body = lock.GetBody();
|
|
553
|
+
|
|
554
|
+
body.MoveKinematic(inTargetPosition, inTargetRotation, inDeltaTime);
|
|
555
|
+
|
|
556
|
+
if (!body.IsActive() && (!body.GetLinearVelocity().IsNearZero() || !body.GetAngularVelocity().IsNearZero()) && body.IsInBroadPhase())
|
|
557
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
void BodyInterface::SetLinearAndAngularVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
|
|
562
|
+
{
|
|
563
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
564
|
+
if (lock.Succeeded())
|
|
565
|
+
{
|
|
566
|
+
Body &body = lock.GetBody();
|
|
567
|
+
if (!body.IsStatic())
|
|
568
|
+
{
|
|
569
|
+
body.SetLinearVelocityClamped(inLinearVelocity);
|
|
570
|
+
body.SetAngularVelocityClamped(inAngularVelocity);
|
|
571
|
+
|
|
572
|
+
if (!body.IsActive() && (!inLinearVelocity.IsNearZero() || !inAngularVelocity.IsNearZero()) && body.IsInBroadPhase())
|
|
573
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
void BodyInterface::GetLinearAndAngularVelocity(const BodyID &inBodyID, Vec3 &outLinearVelocity, Vec3 &outAngularVelocity) const
|
|
579
|
+
{
|
|
580
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
581
|
+
if (lock.Succeeded())
|
|
582
|
+
{
|
|
583
|
+
const Body &body = lock.GetBody();
|
|
584
|
+
if (!body.IsStatic())
|
|
585
|
+
{
|
|
586
|
+
outLinearVelocity = body.GetLinearVelocity();
|
|
587
|
+
outAngularVelocity = body.GetAngularVelocity();
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
outLinearVelocity = outAngularVelocity = Vec3::sZero();
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
void BodyInterface::SetLinearVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity)
|
|
596
|
+
{
|
|
597
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
598
|
+
if (lock.Succeeded())
|
|
599
|
+
{
|
|
600
|
+
Body &body = lock.GetBody();
|
|
601
|
+
if (!body.IsStatic())
|
|
602
|
+
{
|
|
603
|
+
body.SetLinearVelocityClamped(inLinearVelocity);
|
|
604
|
+
|
|
605
|
+
if (!body.IsActive() && !inLinearVelocity.IsNearZero() && body.IsInBroadPhase())
|
|
606
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
Vec3 BodyInterface::GetLinearVelocity(const BodyID &inBodyID) const
|
|
612
|
+
{
|
|
613
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
614
|
+
if (lock.Succeeded())
|
|
615
|
+
{
|
|
616
|
+
const Body &body = lock.GetBody();
|
|
617
|
+
if (!body.IsStatic())
|
|
618
|
+
return body.GetLinearVelocity();
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
return Vec3::sZero();
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
void BodyInterface::AddLinearVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity)
|
|
625
|
+
{
|
|
626
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
627
|
+
if (lock.Succeeded())
|
|
628
|
+
{
|
|
629
|
+
Body &body = lock.GetBody();
|
|
630
|
+
if (!body.IsStatic())
|
|
631
|
+
{
|
|
632
|
+
body.SetLinearVelocityClamped(body.GetLinearVelocity() + inLinearVelocity);
|
|
633
|
+
|
|
634
|
+
if (!body.IsActive() && !body.GetLinearVelocity().IsNearZero() && body.IsInBroadPhase())
|
|
635
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
void BodyInterface::AddLinearAndAngularVelocity(const BodyID &inBodyID, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
|
|
641
|
+
{
|
|
642
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
643
|
+
if (lock.Succeeded())
|
|
644
|
+
{
|
|
645
|
+
Body &body = lock.GetBody();
|
|
646
|
+
if (!body.IsStatic())
|
|
647
|
+
{
|
|
648
|
+
body.SetLinearVelocityClamped(body.GetLinearVelocity() + inLinearVelocity);
|
|
649
|
+
body.SetAngularVelocityClamped(body.GetAngularVelocity() + inAngularVelocity);
|
|
650
|
+
|
|
651
|
+
if (!body.IsActive() && (!body.GetLinearVelocity().IsNearZero() || !body.GetAngularVelocity().IsNearZero()) && body.IsInBroadPhase())
|
|
652
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
void BodyInterface::SetAngularVelocity(const BodyID &inBodyID, Vec3Arg inAngularVelocity)
|
|
658
|
+
{
|
|
659
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
660
|
+
if (lock.Succeeded())
|
|
661
|
+
{
|
|
662
|
+
Body &body = lock.GetBody();
|
|
663
|
+
if (!body.IsStatic())
|
|
664
|
+
{
|
|
665
|
+
body.SetAngularVelocityClamped(inAngularVelocity);
|
|
666
|
+
|
|
667
|
+
if (!body.IsActive() && !inAngularVelocity.IsNearZero() && body.IsInBroadPhase())
|
|
668
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
Vec3 BodyInterface::GetAngularVelocity(const BodyID &inBodyID) const
|
|
674
|
+
{
|
|
675
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
676
|
+
if (lock.Succeeded())
|
|
677
|
+
{
|
|
678
|
+
const Body &body = lock.GetBody();
|
|
679
|
+
if (!body.IsStatic())
|
|
680
|
+
return body.GetAngularVelocity();
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
return Vec3::sZero();
|
|
684
|
+
}
|
|
685
|
+
|
|
686
|
+
Vec3 BodyInterface::GetPointVelocity(const BodyID &inBodyID, RVec3Arg inPoint) const
|
|
687
|
+
{
|
|
688
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
689
|
+
if (lock.Succeeded())
|
|
690
|
+
{
|
|
691
|
+
const Body &body = lock.GetBody();
|
|
692
|
+
if (!body.IsStatic())
|
|
693
|
+
return body.GetPointVelocity(inPoint);
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
return Vec3::sZero();
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
void BodyInterface::AddForce(const BodyID &inBodyID, Vec3Arg inForce, EActivation inActivationMode)
|
|
700
|
+
{
|
|
701
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
702
|
+
if (lock.Succeeded())
|
|
703
|
+
{
|
|
704
|
+
Body &body = lock.GetBody();
|
|
705
|
+
if (body.IsDynamic() && (inActivationMode == EActivation::Activate || body.IsActive()))
|
|
706
|
+
{
|
|
707
|
+
body.AddForce(inForce);
|
|
708
|
+
|
|
709
|
+
if (inActivationMode == EActivation::Activate)
|
|
710
|
+
ActivateBodyInternal(body);
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
void BodyInterface::AddForce(const BodyID &inBodyID, Vec3Arg inForce, RVec3Arg inPoint, EActivation inActivationMode)
|
|
716
|
+
{
|
|
717
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
718
|
+
if (lock.Succeeded())
|
|
719
|
+
{
|
|
720
|
+
Body &body = lock.GetBody();
|
|
721
|
+
if (body.IsDynamic() && (inActivationMode == EActivation::Activate || body.IsActive()))
|
|
722
|
+
{
|
|
723
|
+
body.AddForce(inForce, inPoint);
|
|
724
|
+
|
|
725
|
+
if (inActivationMode == EActivation::Activate)
|
|
726
|
+
ActivateBodyInternal(body);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
void BodyInterface::AddTorque(const BodyID &inBodyID, Vec3Arg inTorque, EActivation inActivationMode)
|
|
732
|
+
{
|
|
733
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
734
|
+
if (lock.Succeeded())
|
|
735
|
+
{
|
|
736
|
+
Body &body = lock.GetBody();
|
|
737
|
+
if (body.IsDynamic() && (inActivationMode == EActivation::Activate || body.IsActive()))
|
|
738
|
+
{
|
|
739
|
+
body.AddTorque(inTorque);
|
|
740
|
+
|
|
741
|
+
if (inActivationMode == EActivation::Activate)
|
|
742
|
+
ActivateBodyInternal(body);
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
void BodyInterface::AddForceAndTorque(const BodyID &inBodyID, Vec3Arg inForce, Vec3Arg inTorque, EActivation inActivationMode)
|
|
748
|
+
{
|
|
749
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
750
|
+
if (lock.Succeeded())
|
|
751
|
+
{
|
|
752
|
+
Body &body = lock.GetBody();
|
|
753
|
+
if (body.IsDynamic() && (inActivationMode == EActivation::Activate || body.IsActive()))
|
|
754
|
+
{
|
|
755
|
+
body.AddForce(inForce);
|
|
756
|
+
body.AddTorque(inTorque);
|
|
757
|
+
|
|
758
|
+
if (inActivationMode == EActivation::Activate)
|
|
759
|
+
ActivateBodyInternal(body);
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
void BodyInterface::AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse)
|
|
765
|
+
{
|
|
766
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
767
|
+
if (lock.Succeeded())
|
|
768
|
+
{
|
|
769
|
+
Body &body = lock.GetBody();
|
|
770
|
+
if (body.IsDynamic())
|
|
771
|
+
{
|
|
772
|
+
body.AddImpulse(inImpulse);
|
|
773
|
+
|
|
774
|
+
if (!body.IsActive())
|
|
775
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
void BodyInterface::AddImpulse(const BodyID &inBodyID, Vec3Arg inImpulse, RVec3Arg inPoint)
|
|
781
|
+
{
|
|
782
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
783
|
+
if (lock.Succeeded())
|
|
784
|
+
{
|
|
785
|
+
Body &body = lock.GetBody();
|
|
786
|
+
if (body.IsDynamic())
|
|
787
|
+
{
|
|
788
|
+
body.AddImpulse(inImpulse, inPoint);
|
|
789
|
+
|
|
790
|
+
if (!body.IsActive())
|
|
791
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
792
|
+
}
|
|
793
|
+
}
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
void BodyInterface::AddAngularImpulse(const BodyID &inBodyID, Vec3Arg inAngularImpulse)
|
|
797
|
+
{
|
|
798
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
799
|
+
if (lock.Succeeded())
|
|
800
|
+
{
|
|
801
|
+
Body &body = lock.GetBody();
|
|
802
|
+
if (body.IsDynamic())
|
|
803
|
+
{
|
|
804
|
+
body.AddAngularImpulse(inAngularImpulse);
|
|
805
|
+
|
|
806
|
+
if (!body.IsActive())
|
|
807
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
bool BodyInterface::ApplyBuoyancyImpulse(const BodyID &inBodyID, RVec3Arg inSurfacePosition, Vec3Arg inSurfaceNormal, float inBuoyancy, float inLinearDrag, float inAngularDrag, Vec3Arg inFluidVelocity, Vec3Arg inGravity, float inDeltaTime)
|
|
813
|
+
{
|
|
814
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
815
|
+
if (lock.Succeeded())
|
|
816
|
+
{
|
|
817
|
+
Body &body = lock.GetBody();
|
|
818
|
+
if (body.IsDynamic()
|
|
819
|
+
&& body.ApplyBuoyancyImpulse(inSurfacePosition, inSurfaceNormal, inBuoyancy, inLinearDrag, inAngularDrag, inFluidVelocity, inGravity, inDeltaTime))
|
|
820
|
+
{
|
|
821
|
+
ActivateBodyInternal(body);
|
|
822
|
+
return true;
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
return false;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
void BodyInterface::SetPositionRotationAndVelocity(const BodyID &inBodyID, RVec3Arg inPosition, QuatArg inRotation, Vec3Arg inLinearVelocity, Vec3Arg inAngularVelocity)
|
|
830
|
+
{
|
|
831
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
832
|
+
if (lock.Succeeded())
|
|
833
|
+
{
|
|
834
|
+
Body &body = lock.GetBody();
|
|
835
|
+
|
|
836
|
+
// Update the position
|
|
837
|
+
body.SetPositionAndRotationInternal(inPosition, inRotation);
|
|
838
|
+
|
|
839
|
+
// Notify broadphase of change
|
|
840
|
+
if (body.IsInBroadPhase())
|
|
841
|
+
{
|
|
842
|
+
BodyID id = body.GetID();
|
|
843
|
+
mBroadPhase->NotifyBodiesAABBChanged(&id, 1);
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
if (!body.IsStatic())
|
|
847
|
+
{
|
|
848
|
+
body.SetLinearVelocityClamped(inLinearVelocity);
|
|
849
|
+
body.SetAngularVelocityClamped(inAngularVelocity);
|
|
850
|
+
|
|
851
|
+
// Optionally activate body
|
|
852
|
+
if (!body.IsActive() && (!inLinearVelocity.IsNearZero() || !inAngularVelocity.IsNearZero()) && body.IsInBroadPhase())
|
|
853
|
+
mBodyManager->ActivateBodies(&inBodyID, 1);
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
|
|
858
|
+
void BodyInterface::SetMotionType(const BodyID &inBodyID, EMotionType inMotionType, EActivation inActivationMode)
|
|
859
|
+
{
|
|
860
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
861
|
+
if (lock.Succeeded())
|
|
862
|
+
{
|
|
863
|
+
Body &body = lock.GetBody();
|
|
864
|
+
|
|
865
|
+
// Deactivate if we're making the body static
|
|
866
|
+
if (body.IsActive() && inMotionType == EMotionType::Static)
|
|
867
|
+
mBodyManager->DeactivateBodies(&inBodyID, 1);
|
|
868
|
+
|
|
869
|
+
body.SetMotionType(inMotionType);
|
|
870
|
+
|
|
871
|
+
// Activate body if requested
|
|
872
|
+
if (inMotionType != EMotionType::Static && inActivationMode == EActivation::Activate && body.IsInBroadPhase())
|
|
873
|
+
ActivateBodyInternal(body);
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
EBodyType BodyInterface::GetBodyType(const BodyID &inBodyID) const
|
|
878
|
+
{
|
|
879
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
880
|
+
if (lock.Succeeded())
|
|
881
|
+
return lock.GetBody().GetBodyType();
|
|
882
|
+
else
|
|
883
|
+
return EBodyType::RigidBody;
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
EMotionType BodyInterface::GetMotionType(const BodyID &inBodyID) const
|
|
887
|
+
{
|
|
888
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
889
|
+
if (lock.Succeeded())
|
|
890
|
+
return lock.GetBody().GetMotionType();
|
|
891
|
+
else
|
|
892
|
+
return EMotionType::Static;
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
void BodyInterface::SetMotionQuality(const BodyID &inBodyID, EMotionQuality inMotionQuality)
|
|
896
|
+
{
|
|
897
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
898
|
+
if (lock.Succeeded())
|
|
899
|
+
mBodyManager->SetMotionQuality(lock.GetBody(), inMotionQuality);
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
EMotionQuality BodyInterface::GetMotionQuality(const BodyID &inBodyID) const
|
|
903
|
+
{
|
|
904
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
905
|
+
if (lock.Succeeded() && !lock.GetBody().IsStatic())
|
|
906
|
+
return lock.GetBody().GetMotionProperties()->GetMotionQuality();
|
|
907
|
+
else
|
|
908
|
+
return EMotionQuality::Discrete;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
Mat44 BodyInterface::GetInverseInertia(const BodyID &inBodyID) const
|
|
912
|
+
{
|
|
913
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
914
|
+
if (lock.Succeeded())
|
|
915
|
+
return lock.GetBody().GetInverseInertia();
|
|
916
|
+
else
|
|
917
|
+
return Mat44::sIdentity();
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
void BodyInterface::SetRestitution(const BodyID &inBodyID, float inRestitution)
|
|
921
|
+
{
|
|
922
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
923
|
+
if (lock.Succeeded())
|
|
924
|
+
lock.GetBody().SetRestitution(inRestitution);
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
float BodyInterface::GetRestitution(const BodyID &inBodyID) const
|
|
928
|
+
{
|
|
929
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
930
|
+
if (lock.Succeeded())
|
|
931
|
+
return lock.GetBody().GetRestitution();
|
|
932
|
+
else
|
|
933
|
+
return 0.0f;
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
void BodyInterface::SetFriction(const BodyID &inBodyID, float inFriction)
|
|
937
|
+
{
|
|
938
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
939
|
+
if (lock.Succeeded())
|
|
940
|
+
lock.GetBody().SetFriction(inFriction);
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
float BodyInterface::GetFriction(const BodyID &inBodyID) const
|
|
944
|
+
{
|
|
945
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
946
|
+
if (lock.Succeeded())
|
|
947
|
+
return lock.GetBody().GetFriction();
|
|
948
|
+
else
|
|
949
|
+
return 0.0f;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
void BodyInterface::SetGravityFactor(const BodyID &inBodyID, float inGravityFactor)
|
|
953
|
+
{
|
|
954
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
955
|
+
if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
|
|
956
|
+
lock.GetBody().GetMotionPropertiesUnchecked()->SetGravityFactor(inGravityFactor);
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
float BodyInterface::GetGravityFactor(const BodyID &inBodyID) const
|
|
960
|
+
{
|
|
961
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
962
|
+
if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
|
|
963
|
+
return lock.GetBody().GetMotionPropertiesUnchecked()->GetGravityFactor();
|
|
964
|
+
else
|
|
965
|
+
return 1.0f;
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
void BodyInterface::SetMaxLinearVelocity(const BodyID &inBodyID, float inLinearVelocity)
|
|
969
|
+
{
|
|
970
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
971
|
+
if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
|
|
972
|
+
lock.GetBody().GetMotionPropertiesUnchecked()->SetMaxLinearVelocity(inLinearVelocity);
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
float BodyInterface::GetMaxLinearVelocity(const BodyID &inBodyID) const
|
|
976
|
+
{
|
|
977
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
978
|
+
if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
|
|
979
|
+
return lock.GetBody().GetMotionPropertiesUnchecked()->GetMaxLinearVelocity();
|
|
980
|
+
else
|
|
981
|
+
return 500.0f;
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
void BodyInterface::SetMaxAngularVelocity(const BodyID &inBodyID, float inAngularVelocity)
|
|
985
|
+
{
|
|
986
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
987
|
+
if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
|
|
988
|
+
lock.GetBody().GetMotionPropertiesUnchecked()->SetMaxAngularVelocity(inAngularVelocity);
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
float BodyInterface::GetMaxAngularVelocity(const BodyID &inBodyID) const
|
|
992
|
+
{
|
|
993
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
994
|
+
if (lock.Succeeded() && lock.GetBody().GetMotionPropertiesUnchecked() != nullptr)
|
|
995
|
+
return lock.GetBody().GetMotionPropertiesUnchecked()->GetMaxAngularVelocity();
|
|
996
|
+
else
|
|
997
|
+
return 0.25f * JPH_PI * 60.0f;
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
void BodyInterface::SetUseManifoldReduction(const BodyID &inBodyID, bool inUseReduction)
|
|
1001
|
+
{
|
|
1002
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
1003
|
+
if (lock.Succeeded())
|
|
1004
|
+
{
|
|
1005
|
+
Body &body = lock.GetBody();
|
|
1006
|
+
if (body.GetUseManifoldReduction() != inUseReduction)
|
|
1007
|
+
{
|
|
1008
|
+
body.SetUseManifoldReduction(inUseReduction);
|
|
1009
|
+
|
|
1010
|
+
// Flag collision cache invalid for this body
|
|
1011
|
+
if (body.IsInBroadPhase())
|
|
1012
|
+
mBodyManager->InvalidateContactCacheForBody(body);
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
bool BodyInterface::GetUseManifoldReduction(const BodyID &inBodyID) const
|
|
1018
|
+
{
|
|
1019
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
1020
|
+
if (lock.Succeeded())
|
|
1021
|
+
return lock.GetBody().GetUseManifoldReduction();
|
|
1022
|
+
else
|
|
1023
|
+
return true;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
void BodyInterface::SetIsSensor(const BodyID &inBodyID, bool inIsSensor)
|
|
1027
|
+
{
|
|
1028
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
1029
|
+
if (lock.Succeeded())
|
|
1030
|
+
lock.GetBody().SetIsSensor(inIsSensor);
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
bool BodyInterface::IsSensor(const BodyID &inBodyID) const
|
|
1034
|
+
{
|
|
1035
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
1036
|
+
if (lock.Succeeded())
|
|
1037
|
+
return lock.GetBody().IsSensor();
|
|
1038
|
+
else
|
|
1039
|
+
return false;
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
void BodyInterface::SetCollisionGroup(const BodyID &inBodyID, const CollisionGroup &inCollisionGroup)
|
|
1043
|
+
{
|
|
1044
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
1045
|
+
if (lock.Succeeded())
|
|
1046
|
+
lock.GetBody().SetCollisionGroup(inCollisionGroup);
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1049
|
+
const CollisionGroup &BodyInterface::GetCollisionGroup(const BodyID &inBodyID) const
|
|
1050
|
+
{
|
|
1051
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
1052
|
+
if (lock.Succeeded())
|
|
1053
|
+
return lock.GetBody().GetCollisionGroup();
|
|
1054
|
+
else
|
|
1055
|
+
return CollisionGroup::sInvalid;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
TransformedShape BodyInterface::GetTransformedShape(const BodyID &inBodyID) const
|
|
1059
|
+
{
|
|
1060
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
1061
|
+
if (lock.Succeeded())
|
|
1062
|
+
return lock.GetBody().GetTransformedShape();
|
|
1063
|
+
else
|
|
1064
|
+
return TransformedShape();
|
|
1065
|
+
}
|
|
1066
|
+
|
|
1067
|
+
uint64 BodyInterface::GetUserData(const BodyID &inBodyID) const
|
|
1068
|
+
{
|
|
1069
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
1070
|
+
if (lock.Succeeded())
|
|
1071
|
+
return lock.GetBody().GetUserData();
|
|
1072
|
+
else
|
|
1073
|
+
return 0;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1076
|
+
void BodyInterface::SetUserData(const BodyID &inBodyID, uint64 inUserData) const
|
|
1077
|
+
{
|
|
1078
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
1079
|
+
if (lock.Succeeded())
|
|
1080
|
+
lock.GetBody().SetUserData(inUserData);
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
const PhysicsMaterial *BodyInterface::GetMaterial(const BodyID &inBodyID, const SubShapeID &inSubShapeID) const
|
|
1084
|
+
{
|
|
1085
|
+
BodyLockRead lock(*mBodyLockInterface, inBodyID);
|
|
1086
|
+
if (lock.Succeeded())
|
|
1087
|
+
return lock.GetBody().GetShape()->GetMaterial(inSubShapeID);
|
|
1088
|
+
else
|
|
1089
|
+
return PhysicsMaterial::sDefault;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
void BodyInterface::InvalidateContactCache(const BodyID &inBodyID)
|
|
1093
|
+
{
|
|
1094
|
+
BodyLockWrite lock(*mBodyLockInterface, inBodyID);
|
|
1095
|
+
if (lock.SucceededAndIsInBroadPhase())
|
|
1096
|
+
mBodyManager->InvalidateContactCacheForBody(lock.GetBody());
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
JPH_NAMESPACE_END
|