@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.
Files changed (562) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +169 -0
  3. package/native/android/Cargo.lock +1848 -0
  4. package/native/android/Cargo.toml +20 -0
  5. package/native/android/src/lib.rs +1747 -0
  6. package/native/ios/Cargo.lock +1688 -0
  7. package/native/ios/Cargo.toml +19 -0
  8. package/native/ios/src/lib.rs +2258 -0
  9. package/native/linux/Cargo.lock +1719 -0
  10. package/native/linux/Cargo.toml +22 -0
  11. package/native/linux/src/lib.rs +2236 -0
  12. package/native/macos/Cargo.lock +3310 -0
  13. package/native/macos/Cargo.toml +29 -0
  14. package/native/macos/src/lib.rs +3444 -0
  15. package/native/shared/Cargo.lock +1898 -0
  16. package/native/shared/Cargo.toml +42 -0
  17. package/native/shared/assets/default_font.ttf +0 -0
  18. package/native/shared/build.rs +77 -0
  19. package/native/shared/shaders/common/fog.wgsl +16 -0
  20. package/native/shared/shaders/common/imposter.wgsl +112 -0
  21. package/native/shared/shaders/common/pbr.wgsl +186 -0
  22. package/native/shared/shaders/common/shadows.wgsl +77 -0
  23. package/native/shared/shaders/common/sky.wgsl +8 -0
  24. package/native/shared/shaders/common/tonemap.wgsl +25 -0
  25. package/native/shared/shaders/impulse_field.wgsl +53 -0
  26. package/native/shared/shaders/material_abi.wgsl +360 -0
  27. package/native/shared/shaders/materials/test_minimal.wgsl +42 -0
  28. package/native/shared/src/audio.rs +363 -0
  29. package/native/shared/src/custom_shaders.rs +104 -0
  30. package/native/shared/src/drs.rs +211 -0
  31. package/native/shared/src/engine.rs +186 -0
  32. package/native/shared/src/frame_callbacks.rs +88 -0
  33. package/native/shared/src/geometry.rs +236 -0
  34. package/native/shared/src/handles.rs +76 -0
  35. package/native/shared/src/input.rs +273 -0
  36. package/native/shared/src/jolt_sys.rs +822 -0
  37. package/native/shared/src/lib.rs +43 -0
  38. package/native/shared/src/models.rs +1941 -0
  39. package/native/shared/src/physics_jolt.rs +1528 -0
  40. package/native/shared/src/picking.rs +298 -0
  41. package/native/shared/src/postfx.rs +339 -0
  42. package/native/shared/src/profiler.rs +416 -0
  43. package/native/shared/src/renderer/atmosphere_lut.rs +573 -0
  44. package/native/shared/src/renderer/brdf_lut.rs +154 -0
  45. package/native/shared/src/renderer/formats.rs +778 -0
  46. package/native/shared/src/renderer/graph.rs +465 -0
  47. package/native/shared/src/renderer/hot_reload.rs +390 -0
  48. package/native/shared/src/renderer/impulse_field.rs +455 -0
  49. package/native/shared/src/renderer/material_pipeline.rs +604 -0
  50. package/native/shared/src/renderer/material_system.rs +2106 -0
  51. package/native/shared/src/renderer/mod.rs +13923 -0
  52. package/native/shared/src/renderer/planar_reflection.rs +458 -0
  53. package/native/shared/src/renderer/post_pass.rs +249 -0
  54. package/native/shared/src/renderer/shader_include.rs +205 -0
  55. package/native/shared/src/renderer/shader_library.rs +134 -0
  56. package/native/shared/src/renderer/shaders.rs +5855 -0
  57. package/native/shared/src/renderer/transient.rs +576 -0
  58. package/native/shared/src/renderer/types.rs +259 -0
  59. package/native/shared/src/renderer/util.rs +151 -0
  60. package/native/shared/src/scene.rs +1066 -0
  61. package/native/shared/src/sdf_cache.rs +274 -0
  62. package/native/shared/src/shadows.rs +551 -0
  63. package/native/shared/src/staging.rs +90 -0
  64. package/native/shared/src/string_header.rs +35 -0
  65. package/native/shared/src/text_renderer.rs +456 -0
  66. package/native/shared/src/textures.rs +154 -0
  67. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.cpp +242 -0
  68. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeBuilder.h +121 -0
  69. package/native/third_party/JoltPhysics/Jolt/AABBTree/AABBTreeToBuffer.h +296 -0
  70. package/native/third_party/JoltPhysics/Jolt/AABBTree/NodeCodec/NodeCodecQuadTreeHalfFloat.h +323 -0
  71. package/native/third_party/JoltPhysics/Jolt/AABBTree/TriangleCodec/TriangleCodecIndexed8BitPackSOA4Flags.h +555 -0
  72. package/native/third_party/JoltPhysics/Jolt/ConfigurationString.h +112 -0
  73. package/native/third_party/JoltPhysics/Jolt/Core/ARMNeon.h +94 -0
  74. package/native/third_party/JoltPhysics/Jolt/Core/Array.h +713 -0
  75. package/native/third_party/JoltPhysics/Jolt/Core/Atomics.h +44 -0
  76. package/native/third_party/JoltPhysics/Jolt/Core/BinaryHeap.h +96 -0
  77. package/native/third_party/JoltPhysics/Jolt/Core/ByteBuffer.h +74 -0
  78. package/native/third_party/JoltPhysics/Jolt/Core/Color.cpp +38 -0
  79. package/native/third_party/JoltPhysics/Jolt/Core/Color.h +98 -0
  80. package/native/third_party/JoltPhysics/Jolt/Core/Core.h +652 -0
  81. package/native/third_party/JoltPhysics/Jolt/Core/FPControlWord.h +143 -0
  82. package/native/third_party/JoltPhysics/Jolt/Core/FPException.h +96 -0
  83. package/native/third_party/JoltPhysics/Jolt/Core/FPFlushDenormals.h +43 -0
  84. package/native/third_party/JoltPhysics/Jolt/Core/Factory.cpp +92 -0
  85. package/native/third_party/JoltPhysics/Jolt/Core/Factory.h +54 -0
  86. package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.h +122 -0
  87. package/native/third_party/JoltPhysics/Jolt/Core/FixedSizeFreeList.inl +215 -0
  88. package/native/third_party/JoltPhysics/Jolt/Core/HashCombine.h +234 -0
  89. package/native/third_party/JoltPhysics/Jolt/Core/HashTable.h +876 -0
  90. package/native/third_party/JoltPhysics/Jolt/Core/InsertionSort.h +58 -0
  91. package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.cpp +27 -0
  92. package/native/third_party/JoltPhysics/Jolt/Core/IssueReporting.h +38 -0
  93. package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.h +311 -0
  94. package/native/third_party/JoltPhysics/Jolt/Core/JobSystem.inl +56 -0
  95. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.cpp +65 -0
  96. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemSingleThreaded.h +62 -0
  97. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.cpp +364 -0
  98. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemThreadPool.h +101 -0
  99. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.cpp +230 -0
  100. package/native/third_party/JoltPhysics/Jolt/Core/JobSystemWithBarrier.h +85 -0
  101. package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.cpp +51 -0
  102. package/native/third_party/JoltPhysics/Jolt/Core/LinearCurve.h +67 -0
  103. package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.h +182 -0
  104. package/native/third_party/JoltPhysics/Jolt/Core/LockFreeHashMap.inl +351 -0
  105. package/native/third_party/JoltPhysics/Jolt/Core/Memory.cpp +85 -0
  106. package/native/third_party/JoltPhysics/Jolt/Core/Memory.h +85 -0
  107. package/native/third_party/JoltPhysics/Jolt/Core/Mutex.h +223 -0
  108. package/native/third_party/JoltPhysics/Jolt/Core/MutexArray.h +98 -0
  109. package/native/third_party/JoltPhysics/Jolt/Core/NonCopyable.h +18 -0
  110. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.cpp +677 -0
  111. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.h +301 -0
  112. package/native/third_party/JoltPhysics/Jolt/Core/Profiler.inl +90 -0
  113. package/native/third_party/JoltPhysics/Jolt/Core/QuickSort.h +137 -0
  114. package/native/third_party/JoltPhysics/Jolt/Core/RTTI.cpp +149 -0
  115. package/native/third_party/JoltPhysics/Jolt/Core/RTTI.h +436 -0
  116. package/native/third_party/JoltPhysics/Jolt/Core/Reference.h +244 -0
  117. package/native/third_party/JoltPhysics/Jolt/Core/Result.h +174 -0
  118. package/native/third_party/JoltPhysics/Jolt/Core/STLAlignedAllocator.h +72 -0
  119. package/native/third_party/JoltPhysics/Jolt/Core/STLAllocator.h +127 -0
  120. package/native/third_party/JoltPhysics/Jolt/Core/STLLocalAllocator.h +170 -0
  121. package/native/third_party/JoltPhysics/Jolt/Core/STLTempAllocator.h +80 -0
  122. package/native/third_party/JoltPhysics/Jolt/Core/ScopeExit.h +49 -0
  123. package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.cpp +135 -0
  124. package/native/third_party/JoltPhysics/Jolt/Core/Semaphore.h +68 -0
  125. package/native/third_party/JoltPhysics/Jolt/Core/StaticArray.h +329 -0
  126. package/native/third_party/JoltPhysics/Jolt/Core/StreamIn.h +120 -0
  127. package/native/third_party/JoltPhysics/Jolt/Core/StreamOut.h +97 -0
  128. package/native/third_party/JoltPhysics/Jolt/Core/StreamUtils.h +168 -0
  129. package/native/third_party/JoltPhysics/Jolt/Core/StreamWrapper.h +53 -0
  130. package/native/third_party/JoltPhysics/Jolt/Core/StridedPtr.h +63 -0
  131. package/native/third_party/JoltPhysics/Jolt/Core/StringTools.cpp +101 -0
  132. package/native/third_party/JoltPhysics/Jolt/Core/StringTools.h +38 -0
  133. package/native/third_party/JoltPhysics/Jolt/Core/TempAllocator.h +209 -0
  134. package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.cpp +37 -0
  135. package/native/third_party/JoltPhysics/Jolt/Core/TickCounter.h +58 -0
  136. package/native/third_party/JoltPhysics/Jolt/Core/UnorderedMap.h +80 -0
  137. package/native/third_party/JoltPhysics/Jolt/Core/UnorderedSet.h +32 -0
  138. package/native/third_party/JoltPhysics/Jolt/Geometry/AABox.h +313 -0
  139. package/native/third_party/JoltPhysics/Jolt/Geometry/AABox4.h +224 -0
  140. package/native/third_party/JoltPhysics/Jolt/Geometry/ClipPoly.h +200 -0
  141. package/native/third_party/JoltPhysics/Jolt/Geometry/ClosestPoint.h +498 -0
  142. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.cpp +1467 -0
  143. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder.h +276 -0
  144. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.cpp +335 -0
  145. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexHullBuilder2D.h +105 -0
  146. package/native/third_party/JoltPhysics/Jolt/Geometry/ConvexSupport.h +188 -0
  147. package/native/third_party/JoltPhysics/Jolt/Geometry/EPAConvexHullBuilder.h +845 -0
  148. package/native/third_party/JoltPhysics/Jolt/Geometry/EPAPenetrationDepth.h +557 -0
  149. package/native/third_party/JoltPhysics/Jolt/Geometry/Ellipse.h +77 -0
  150. package/native/third_party/JoltPhysics/Jolt/Geometry/GJKClosestPoint.h +945 -0
  151. package/native/third_party/JoltPhysics/Jolt/Geometry/IndexedTriangle.h +130 -0
  152. package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.cpp +222 -0
  153. package/native/third_party/JoltPhysics/Jolt/Geometry/Indexify.h +19 -0
  154. package/native/third_party/JoltPhysics/Jolt/Geometry/MortonCode.h +40 -0
  155. package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.cpp +178 -0
  156. package/native/third_party/JoltPhysics/Jolt/Geometry/OrientedBox.h +39 -0
  157. package/native/third_party/JoltPhysics/Jolt/Geometry/Plane.h +104 -0
  158. package/native/third_party/JoltPhysics/Jolt/Geometry/RayAABox.h +241 -0
  159. package/native/third_party/JoltPhysics/Jolt/Geometry/RayCapsule.h +37 -0
  160. package/native/third_party/JoltPhysics/Jolt/Geometry/RayCylinder.h +101 -0
  161. package/native/third_party/JoltPhysics/Jolt/Geometry/RaySphere.h +96 -0
  162. package/native/third_party/JoltPhysics/Jolt/Geometry/RayTriangle.h +158 -0
  163. package/native/third_party/JoltPhysics/Jolt/Geometry/Sphere.h +72 -0
  164. package/native/third_party/JoltPhysics/Jolt/Geometry/Triangle.h +34 -0
  165. package/native/third_party/JoltPhysics/Jolt/Jolt.cmake +703 -0
  166. package/native/third_party/JoltPhysics/Jolt/Jolt.h +16 -0
  167. package/native/third_party/JoltPhysics/Jolt/Jolt.natvis +116 -0
  168. package/native/third_party/JoltPhysics/Jolt/Math/BVec16.h +99 -0
  169. package/native/third_party/JoltPhysics/Jolt/Math/BVec16.inl +177 -0
  170. package/native/third_party/JoltPhysics/Jolt/Math/DMat44.h +158 -0
  171. package/native/third_party/JoltPhysics/Jolt/Math/DMat44.inl +310 -0
  172. package/native/third_party/JoltPhysics/Jolt/Math/DVec3.h +291 -0
  173. package/native/third_party/JoltPhysics/Jolt/Math/DVec3.inl +941 -0
  174. package/native/third_party/JoltPhysics/Jolt/Math/Double3.h +48 -0
  175. package/native/third_party/JoltPhysics/Jolt/Math/DynMatrix.h +31 -0
  176. package/native/third_party/JoltPhysics/Jolt/Math/EigenValueSymmetric.h +177 -0
  177. package/native/third_party/JoltPhysics/Jolt/Math/FindRoot.h +42 -0
  178. package/native/third_party/JoltPhysics/Jolt/Math/Float2.h +36 -0
  179. package/native/third_party/JoltPhysics/Jolt/Math/Float3.h +50 -0
  180. package/native/third_party/JoltPhysics/Jolt/Math/Float4.h +44 -0
  181. package/native/third_party/JoltPhysics/Jolt/Math/GaussianElimination.h +102 -0
  182. package/native/third_party/JoltPhysics/Jolt/Math/HalfFloat.h +208 -0
  183. package/native/third_party/JoltPhysics/Jolt/Math/Mat44.h +243 -0
  184. package/native/third_party/JoltPhysics/Jolt/Math/Mat44.inl +952 -0
  185. package/native/third_party/JoltPhysics/Jolt/Math/Math.h +208 -0
  186. package/native/third_party/JoltPhysics/Jolt/Math/MathTypes.h +32 -0
  187. package/native/third_party/JoltPhysics/Jolt/Math/Matrix.h +259 -0
  188. package/native/third_party/JoltPhysics/Jolt/Math/Quat.h +268 -0
  189. package/native/third_party/JoltPhysics/Jolt/Math/Quat.inl +406 -0
  190. package/native/third_party/JoltPhysics/Jolt/Math/Real.h +44 -0
  191. package/native/third_party/JoltPhysics/Jolt/Math/Swizzle.h +19 -0
  192. package/native/third_party/JoltPhysics/Jolt/Math/Trigonometry.h +79 -0
  193. package/native/third_party/JoltPhysics/Jolt/Math/UVec4.h +232 -0
  194. package/native/third_party/JoltPhysics/Jolt/Math/UVec4.inl +636 -0
  195. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.cpp +71 -0
  196. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.h +308 -0
  197. package/native/third_party/JoltPhysics/Jolt/Math/Vec3.inl +942 -0
  198. package/native/third_party/JoltPhysics/Jolt/Math/Vec4.h +320 -0
  199. package/native/third_party/JoltPhysics/Jolt/Math/Vec4.inl +1152 -0
  200. package/native/third_party/JoltPhysics/Jolt/Math/Vector.h +211 -0
  201. package/native/third_party/JoltPhysics/Jolt/ObjectStream/GetPrimitiveTypeOfType.h +54 -0
  202. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.cpp +38 -0
  203. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStream.h +337 -0
  204. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.cpp +252 -0
  205. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryIn.h +57 -0
  206. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.cpp +165 -0
  207. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamBinaryOut.h +57 -0
  208. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.cpp +635 -0
  209. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamIn.h +148 -0
  210. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.cpp +166 -0
  211. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamOut.h +101 -0
  212. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.cpp +418 -0
  213. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextIn.h +55 -0
  214. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.cpp +255 -0
  215. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTextOut.h +62 -0
  216. package/native/third_party/JoltPhysics/Jolt/ObjectStream/ObjectStreamTypes.h +26 -0
  217. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttribute.h +111 -0
  218. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeEnum.h +67 -0
  219. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableAttributeTyped.h +60 -0
  220. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.cpp +15 -0
  221. package/native/third_party/JoltPhysics/Jolt/ObjectStream/SerializableObject.h +170 -0
  222. package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.cpp +70 -0
  223. package/native/third_party/JoltPhysics/Jolt/ObjectStream/TypeDeclarations.h +45 -0
  224. package/native/third_party/JoltPhysics/Jolt/Physics/Body/AllowedDOFs.h +68 -0
  225. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.cpp +426 -0
  226. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.h +452 -0
  227. package/native/third_party/JoltPhysics/Jolt/Physics/Body/Body.inl +197 -0
  228. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyAccess.h +68 -0
  229. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyActivationListener.h +28 -0
  230. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.cpp +234 -0
  231. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyCreationSettings.h +124 -0
  232. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyFilter.h +130 -0
  233. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyID.h +101 -0
  234. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.cpp +1099 -0
  235. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyInterface.h +324 -0
  236. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLock.h +111 -0
  237. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockInterface.h +134 -0
  238. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyLockMulti.h +120 -0
  239. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.cpp +1220 -0
  240. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyManager.h +403 -0
  241. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyPair.h +36 -0
  242. package/native/third_party/JoltPhysics/Jolt/Physics/Body/BodyType.h +19 -0
  243. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.cpp +185 -0
  244. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MassProperties.h +58 -0
  245. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.cpp +92 -0
  246. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.h +308 -0
  247. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionProperties.inl +178 -0
  248. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionQuality.h +31 -0
  249. package/native/third_party/JoltPhysics/Jolt/Physics/Body/MotionType.h +17 -0
  250. package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.cpp +354 -0
  251. package/native/third_party/JoltPhysics/Jolt/Physics/Character/Character.h +159 -0
  252. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.cpp +59 -0
  253. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterBase.h +157 -0
  254. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterID.h +98 -0
  255. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.cpp +1933 -0
  256. package/native/third_party/JoltPhysics/Jolt/Physics/Character/CharacterVirtual.h +752 -0
  257. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/AABoxCast.h +20 -0
  258. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdgeMode.h +17 -0
  259. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ActiveEdges.h +114 -0
  260. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BackFaceMode.h +16 -0
  261. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.cpp +16 -0
  262. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhase.h +109 -0
  263. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.cpp +313 -0
  264. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseBruteForce.h +38 -0
  265. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h +148 -0
  266. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceMask.h +92 -0
  267. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h +64 -0
  268. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.cpp +629 -0
  269. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuadTree.h +108 -0
  270. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/BroadPhaseQuery.h +56 -0
  271. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterMask.h +35 -0
  272. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/ObjectVsBroadPhaseLayerFilterTable.h +66 -0
  273. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.cpp +1768 -0
  274. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/BroadPhase/QuadTree.h +389 -0
  275. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.cpp +107 -0
  276. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastConvexVsTriangles.h +46 -0
  277. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastResult.h +37 -0
  278. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.cpp +223 -0
  279. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CastSphereVsTriangles.h +49 -0
  280. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollectFacesMode.h +16 -0
  281. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.cpp +155 -0
  282. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideConvexVsTriangles.h +56 -0
  283. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollidePointResult.h +25 -0
  284. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShape.h +106 -0
  285. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideShapeVsShapePerLeaf.h +94 -0
  286. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVertexIterator.h +110 -0
  287. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSoftBodyVerticesVsTriangles.h +102 -0
  288. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.cpp +121 -0
  289. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollideSphereVsTriangles.h +50 -0
  290. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollector.h +109 -0
  291. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionCollectorImpl.h +219 -0
  292. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.cpp +107 -0
  293. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionDispatch.h +97 -0
  294. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.cpp +35 -0
  295. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/CollisionGroup.h +97 -0
  296. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ContactListener.h +143 -0
  297. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.cpp +213 -0
  298. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/EstimateCollisionResponse.h +48 -0
  299. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.cpp +32 -0
  300. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilter.h +46 -0
  301. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.cpp +38 -0
  302. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/GroupFilterTable.h +130 -0
  303. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/InternalEdgeRemovingCollector.h +279 -0
  304. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.cpp +271 -0
  305. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ManifoldBetweenTwoFaces.h +44 -0
  306. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.cpp +448 -0
  307. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseQuery.h +77 -0
  308. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.cpp +62 -0
  309. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/NarrowPhaseStats.h +110 -0
  310. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayer.h +111 -0
  311. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterMask.h +52 -0
  312. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ObjectLayerPairFilterTable.h +78 -0
  313. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.cpp +35 -0
  314. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterial.h +57 -0
  315. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.cpp +38 -0
  316. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/PhysicsMaterialSimple.h +37 -0
  317. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/RayCast.h +87 -0
  318. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.cpp +318 -0
  319. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/BoxShape.h +115 -0
  320. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.cpp +438 -0
  321. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CapsuleShape.h +129 -0
  322. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.cpp +433 -0
  323. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShape.h +354 -0
  324. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CompoundShapeVisitors.h +461 -0
  325. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.cpp +1311 -0
  326. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexHullShape.h +202 -0
  327. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.cpp +566 -0
  328. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ConvexShape.h +150 -0
  329. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.cpp +418 -0
  330. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/CylinderShape.h +126 -0
  331. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.cpp +87 -0
  332. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/DecoratedShape.h +80 -0
  333. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.cpp +64 -0
  334. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/EmptyShape.h +75 -0
  335. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/GetTrianglesContext.h +248 -0
  336. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.cpp +2754 -0
  337. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/HeightFieldShape.h +380 -0
  338. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.cpp +1305 -0
  339. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MeshShape.h +228 -0
  340. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.cpp +596 -0
  341. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/MutableCompoundShape.h +176 -0
  342. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.cpp +217 -0
  343. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/OffsetCenterOfMassShape.h +140 -0
  344. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.cpp +541 -0
  345. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PlaneShape.h +147 -0
  346. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/PolyhedronSubmergedVolumeCalculator.h +319 -0
  347. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.cpp +333 -0
  348. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/RotatedTranslatedShape.h +161 -0
  349. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaleHelpers.h +83 -0
  350. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.cpp +238 -0
  351. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/ScaledShape.h +145 -0
  352. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.cpp +325 -0
  353. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/Shape.h +466 -0
  354. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.cpp +347 -0
  355. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SphereShape.h +125 -0
  356. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.cpp +674 -0
  357. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/StaticCompoundShape.h +139 -0
  358. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeID.h +138 -0
  359. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/SubShapeIDPair.h +65 -0
  360. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.cpp +453 -0
  361. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.gliffy +1 -0
  362. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCapsuleShape.h +135 -0
  363. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.cpp +691 -0
  364. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TaperedCylinderShape.h +132 -0
  365. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.cpp +430 -0
  366. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/Shape/TriangleShape.h +143 -0
  367. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeCast.h +173 -0
  368. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/ShapeFilter.h +73 -0
  369. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilter.h +40 -0
  370. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SimShapeFilterWrapper.h +58 -0
  371. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/SortReverseAndStore.h +48 -0
  372. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.cpp +180 -0
  373. package/native/third_party/JoltPhysics/Jolt/Physics/Collision/TransformedShape.h +194 -0
  374. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/CalculateSolverSteps.h +70 -0
  375. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.cpp +246 -0
  376. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConeConstraint.h +133 -0
  377. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.cpp +73 -0
  378. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/Constraint.h +243 -0
  379. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.cpp +289 -0
  380. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintManager.h +100 -0
  381. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AngleConstraintPart.h +257 -0
  382. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/AxisConstraintPart.h +682 -0
  383. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/DualAxisConstraintPart.h +276 -0
  384. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/GearConstraintPart.h +195 -0
  385. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/HingeRotationConstraintPart.h +222 -0
  386. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/IndependentAxisConstraintPart.h +246 -0
  387. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/PointConstraintPart.h +239 -0
  388. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RackAndPinionConstraintPart.h +196 -0
  389. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationEulerConstraintPart.h +283 -0
  390. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/RotationQuatConstraintPart.h +246 -0
  391. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SpringPart.h +169 -0
  392. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ConstraintPart/SwingTwistConstraintPart.h +597 -0
  393. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.cpp +1804 -0
  394. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/ContactConstraintManager.h +524 -0
  395. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.cpp +266 -0
  396. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/DistanceConstraint.h +120 -0
  397. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.cpp +215 -0
  398. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/FixedConstraint.h +96 -0
  399. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.cpp +188 -0
  400. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/GearConstraint.h +116 -0
  401. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.cpp +443 -0
  402. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/HingeConstraint.h +205 -0
  403. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.cpp +43 -0
  404. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/MotorSettings.h +66 -0
  405. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.cpp +458 -0
  406. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraint.h +191 -0
  407. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.cpp +85 -0
  408. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPath.h +76 -0
  409. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.cpp +308 -0
  410. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PathConstraintPathHermite.h +54 -0
  411. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.cpp +157 -0
  412. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PointConstraint.h +94 -0
  413. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.cpp +253 -0
  414. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/PulleyConstraint.h +137 -0
  415. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.cpp +189 -0
  416. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/RackAndPinionConstraint.h +118 -0
  417. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.cpp +900 -0
  418. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SixDOFConstraint.h +289 -0
  419. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.cpp +501 -0
  420. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SliderConstraint.h +198 -0
  421. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.cpp +35 -0
  422. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SpringSettings.h +70 -0
  423. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.cpp +524 -0
  424. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/SwingTwistConstraint.h +197 -0
  425. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.cpp +56 -0
  426. package/native/third_party/JoltPhysics/Jolt/Physics/Constraints/TwoBodyConstraint.h +65 -0
  427. package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.cpp +17 -0
  428. package/native/third_party/JoltPhysics/Jolt/Physics/DeterminismLog.h +159 -0
  429. package/native/third_party/JoltPhysics/Jolt/Physics/EActivation.h +16 -0
  430. package/native/third_party/JoltPhysics/Jolt/Physics/EPhysicsUpdateError.h +37 -0
  431. package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.cpp +492 -0
  432. package/native/third_party/JoltPhysics/Jolt/Physics/IslandBuilder.h +144 -0
  433. package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.cpp +582 -0
  434. package/native/third_party/JoltPhysics/Jolt/Physics/LargeIslandSplitter.h +187 -0
  435. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsLock.h +169 -0
  436. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.cpp +261 -0
  437. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsScene.h +104 -0
  438. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSettings.h +125 -0
  439. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsStepListener.h +37 -0
  440. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.cpp +2915 -0
  441. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsSystem.h +391 -0
  442. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.cpp +25 -0
  443. package/native/third_party/JoltPhysics/Jolt/Physics/PhysicsUpdateContext.h +176 -0
  444. package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.cpp +744 -0
  445. package/native/third_party/JoltPhysics/Jolt/Physics/Ragdoll/Ragdoll.h +245 -0
  446. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyContactListener.h +55 -0
  447. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.cpp +128 -0
  448. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyCreationSettings.h +75 -0
  449. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyManifold.h +74 -0
  450. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.cpp +1501 -0
  451. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyMotionProperties.h +333 -0
  452. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.cpp +354 -0
  453. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyShape.h +73 -0
  454. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.cpp +1487 -0
  455. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodySharedSettings.h +390 -0
  456. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyUpdateContext.h +63 -0
  457. package/native/third_party/JoltPhysics/Jolt/Physics/SoftBody/SoftBodyVertex.h +36 -0
  458. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorder.h +136 -0
  459. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.cpp +90 -0
  460. package/native/third_party/JoltPhysics/Jolt/Physics/StateRecorderImpl.h +50 -0
  461. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.cpp +306 -0
  462. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/MotorcycleController.h +119 -0
  463. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.cpp +547 -0
  464. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/TrackedVehicleController.h +169 -0
  465. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.cpp +33 -0
  466. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleAntiRollBar.h +33 -0
  467. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.cpp +376 -0
  468. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleCollisionTester.h +146 -0
  469. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.cpp +703 -0
  470. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleConstraint.h +252 -0
  471. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.cpp +17 -0
  472. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleController.h +87 -0
  473. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.cpp +81 -0
  474. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleDifferential.h +39 -0
  475. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.cpp +122 -0
  476. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleEngine.h +93 -0
  477. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.cpp +52 -0
  478. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTrack.h +56 -0
  479. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.cpp +159 -0
  480. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/VehicleTransmission.h +87 -0
  481. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.cpp +93 -0
  482. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/Wheel.h +148 -0
  483. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.cpp +866 -0
  484. package/native/third_party/JoltPhysics/Jolt/Physics/Vehicle/WheeledVehicleController.h +205 -0
  485. package/native/third_party/JoltPhysics/Jolt/RegisterTypes.cpp +204 -0
  486. package/native/third_party/JoltPhysics/Jolt/RegisterTypes.h +29 -0
  487. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.cpp +1107 -0
  488. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRenderer.h +383 -0
  489. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.cpp +168 -0
  490. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererPlayback.h +48 -0
  491. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.cpp +158 -0
  492. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererRecorder.h +130 -0
  493. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.cpp +80 -0
  494. package/native/third_party/JoltPhysics/Jolt/Renderer/DebugRendererSimple.h +88 -0
  495. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.cpp +165 -0
  496. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletalAnimation.h +91 -0
  497. package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.cpp +82 -0
  498. package/native/third_party/JoltPhysics/Jolt/Skeleton/Skeleton.h +72 -0
  499. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.cpp +237 -0
  500. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonMapper.h +145 -0
  501. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.cpp +87 -0
  502. package/native/third_party/JoltPhysics/Jolt/Skeleton/SkeletonPose.h +82 -0
  503. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.cpp +73 -0
  504. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitter.h +84 -0
  505. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.cpp +139 -0
  506. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterBinning.h +52 -0
  507. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.cpp +43 -0
  508. package/native/third_party/JoltPhysics/Jolt/TriangleSplitter/TriangleSplitterMean.h +28 -0
  509. package/native/third_party/JoltPhysics/LICENSE +7 -0
  510. package/native/third_party/JoltPhysics/README.md +173 -0
  511. package/native/third_party/bloom_jolt/CMakeLists.txt +78 -0
  512. package/native/third_party/bloom_jolt/include/bloom_jolt.h +519 -0
  513. package/native/third_party/bloom_jolt/src/bloom_jolt.cpp +1780 -0
  514. package/native/tvos/Cargo.lock +1692 -0
  515. package/native/tvos/Cargo.toml +22 -0
  516. package/native/tvos/src/lib.rs +3179 -0
  517. package/native/watchos/Cargo.lock +16 -0
  518. package/native/watchos/Cargo.toml +19 -0
  519. package/native/watchos/shaders/bloom_postfx.metal +99 -0
  520. package/native/watchos/src/BloomWatchApp.swift +1236 -0
  521. package/native/watchos/src/BloomWatchAudio.swift +179 -0
  522. package/native/watchos/src/audio.rs +55 -0
  523. package/native/watchos/src/draw_list.rs +223 -0
  524. package/native/watchos/src/ffi_stubs.rs +454 -0
  525. package/native/watchos/src/lib.rs +1013 -0
  526. package/native/watchos/src/models.rs +746 -0
  527. package/native/watchos/src/postfx.rs +91 -0
  528. package/native/watchos/src/scene.rs +534 -0
  529. package/native/watchos/src/textures.rs +184 -0
  530. package/native/web/Cargo.lock +1656 -0
  531. package/native/web/Cargo.toml +38 -0
  532. package/native/web/bloom_glue.js +218 -0
  533. package/native/web/build.sh +101 -0
  534. package/native/web/index.html +390 -0
  535. package/native/web/jolt_bridge.js +1311 -0
  536. package/native/web/src/lib.rs +2739 -0
  537. package/native/windows/Cargo.lock +1813 -0
  538. package/native/windows/Cargo.toml +31 -0
  539. package/native/windows/src/lib.rs +1933 -0
  540. package/package.json +558 -0
  541. package/src/audio/index.ts +151 -0
  542. package/src/core/colors.ts +56 -0
  543. package/src/core/index.ts +903 -0
  544. package/src/core/keys.ts +63 -0
  545. package/src/core/types.ts +102 -0
  546. package/src/index.ts +158 -0
  547. package/src/math/index.ts +502 -0
  548. package/src/mobile/index.ts +294 -0
  549. package/src/models/index.ts +859 -0
  550. package/src/physics/index.ts +1072 -0
  551. package/src/scene/index.ts +570 -0
  552. package/src/shapes/index.ts +120 -0
  553. package/src/text/index.ts +48 -0
  554. package/src/textures/index.ts +173 -0
  555. package/src/world/index.ts +22 -0
  556. package/src/world/loader.ts +385 -0
  557. package/src/world/prefab.ts +205 -0
  558. package/src/world/saver.ts +61 -0
  559. package/src/world/terrain.ts +254 -0
  560. package/src/world/types.ts +136 -0
  561. package/src/world/validate.ts +202 -0
  562. package/src/world/version.ts +47 -0
@@ -0,0 +1,91 @@
1
+ //! Post-processing effect state. Atomic floats the Swift root view polls
2
+ //! each frame and translates into SwiftUI view modifiers.
3
+ //!
4
+ //! What maps cleanly onto built-in SwiftUI modifiers:
5
+ //! - vignette → `.overlay(RadialGradient)` (strength + softness)
6
+ //! - manual exposure → `.brightness(ev - 1.0)` approximation
7
+ //! - auto exposure → identity (SceneKit's own tone mapping handles most of it)
8
+ //!
9
+ //! What would need a Metal shader via `.colorEffect(shader:)` (watchOS 10+)
10
+ //! and a Perry-side .metal compilation step — deferred:
11
+ //! - chromatic aberration (per-channel position offset)
12
+ //! - film grain (time-animated noise)
13
+ //! - sun shafts (radial blur + light scattering)
14
+ //!
15
+ //! The corresponding bloom_set_* calls still store their values so a future
16
+ //! shader pipeline can pick them up without breaking TS code today.
17
+
18
+ use std::sync::atomic::{AtomicU64, AtomicBool, Ordering};
19
+
20
+ static ENABLED: AtomicBool = AtomicBool::new(true);
21
+ static VIGNETTE_STRENGTH: AtomicU64 = AtomicU64::new(0);
22
+ static VIGNETTE_SOFTNESS: AtomicU64 = AtomicU64::new(0);
23
+ static CA_STRENGTH: AtomicU64 = AtomicU64::new(0);
24
+ static FILM_GRAIN: AtomicU64 = AtomicU64::new(0);
25
+ static EXPOSURE: AtomicU64 = AtomicU64::new(1.0f64.to_bits());
26
+ static AUTO_EXPOSURE: AtomicBool = AtomicBool::new(false);
27
+ static SUN_STRENGTH: AtomicU64 = AtomicU64::new(0);
28
+ static SUN_DECAY: AtomicU64 = AtomicU64::new(0.85f64.to_bits());
29
+ static SUN_R: AtomicU64 = AtomicU64::new(1.0f64.to_bits());
30
+ static SUN_G: AtomicU64 = AtomicU64::new(0.9f64.to_bits());
31
+ static SUN_B: AtomicU64 = AtomicU64::new(0.7f64.to_bits());
32
+
33
+ fn store(a: &AtomicU64, v: f64) { a.store(v.to_bits(), Ordering::Relaxed); }
34
+ fn load(a: &AtomicU64) -> f64 { f64::from_bits(a.load(Ordering::Relaxed)) }
35
+
36
+ pub fn set_enabled(on: bool) { ENABLED.store(on, Ordering::Relaxed); }
37
+ pub fn set_vignette(strength: f64, softness: f64) {
38
+ store(&VIGNETTE_STRENGTH, strength);
39
+ store(&VIGNETTE_SOFTNESS, softness);
40
+ }
41
+ pub fn set_chromatic_aberration(s: f64) { store(&CA_STRENGTH, s); }
42
+ pub fn set_film_grain(s: f64) { store(&FILM_GRAIN, s); }
43
+ pub fn set_exposure(v: f64) {
44
+ store(&EXPOSURE, v);
45
+ AUTO_EXPOSURE.store(false, Ordering::Relaxed);
46
+ }
47
+ pub fn set_auto_exposure(on: bool) { AUTO_EXPOSURE.store(on, Ordering::Relaxed); }
48
+
49
+ pub fn set_sun_shafts(strength: f64, decay: f64, r: f64, g: f64, b: f64) {
50
+ store(&SUN_STRENGTH, strength);
51
+ store(&SUN_DECAY, decay);
52
+ store(&SUN_R, r);
53
+ store(&SUN_G, g);
54
+ store(&SUN_B, b);
55
+ }
56
+
57
+ #[repr(C)]
58
+ #[derive(Clone, Copy)]
59
+ pub struct PostFxState {
60
+ pub enabled: u32,
61
+ pub auto_exposure: u32,
62
+ pub vignette_strength: f32,
63
+ pub vignette_softness: f32,
64
+ pub chromatic_aberration: f32,
65
+ pub film_grain: f32,
66
+ pub exposure: f32,
67
+ pub sun_strength: f32,
68
+ pub sun_decay: f32,
69
+ pub sun_r: f32,
70
+ pub sun_g: f32,
71
+ pub sun_b: f32,
72
+ }
73
+
74
+ pub fn snapshot(out: *mut PostFxState) {
75
+ if out.is_null() { return; }
76
+ let s = PostFxState {
77
+ enabled: if ENABLED.load(Ordering::Relaxed) { 1 } else { 0 },
78
+ auto_exposure: if AUTO_EXPOSURE.load(Ordering::Relaxed) { 1 } else { 0 },
79
+ vignette_strength: load(&VIGNETTE_STRENGTH) as f32,
80
+ vignette_softness: load(&VIGNETTE_SOFTNESS) as f32,
81
+ chromatic_aberration: load(&CA_STRENGTH) as f32,
82
+ film_grain: load(&FILM_GRAIN) as f32,
83
+ exposure: load(&EXPOSURE) as f32,
84
+ sun_strength: load(&SUN_STRENGTH) as f32,
85
+ sun_decay: load(&SUN_DECAY) as f32,
86
+ sun_r: load(&SUN_R) as f32,
87
+ sun_g: load(&SUN_G) as f32,
88
+ sun_b: load(&SUN_B) as f32,
89
+ };
90
+ unsafe { *out = s; }
91
+ }
@@ -0,0 +1,534 @@
1
+ //! Retained scene graph for `bloom_scene_*` FFI.
2
+ //!
3
+ //! Mirrors `bloom-shared/scene.rs` but stripped down to what SceneKit can
4
+ //! consume: nodes carry a 4x4 transform, color/PBR material, optional
5
+ //! texture handle, and an optional indexed triangle mesh. Swift polls a
6
+ //! snapshot each frame via `bloom_watchos_scene_*` FFI and mirrors the
7
+ //! graph into SCNNodes.
8
+ //!
9
+ //! `geometry_version` bumps on every `update_geometry` call so the Swift
10
+ //! side can cache `SCNGeometry` objects across frames — rebuilding geometry
11
+ //! each frame for static meshes would burn the watch's GPU.
12
+
13
+ use std::sync::Mutex;
14
+
15
+ // Dirty-flag bits — Node.dirty_flags is the bitwise-OR of these. Each Node
16
+ // mutator sets its corresponding bit; drain_dirty reports them to Swift and
17
+ // clears on consumption. Newly created nodes start with DIRTY_ALL so Swift
18
+ // sees every field on the first drain.
19
+ pub const DIRTY_TRANSFORM: u32 = 1 << 0;
20
+ pub const DIRTY_MATERIAL: u32 = 1 << 1;
21
+ pub const DIRTY_VISIBILITY: u32 = 1 << 2;
22
+ pub const DIRTY_PARENT: u32 = 1 << 3;
23
+ pub const DIRTY_GEOMETRY: u32 = 1 << 4;
24
+ pub const DIRTY_SKIN: u32 = 1 << 5;
25
+ pub const DIRTY_ALL: u32 = DIRTY_TRANSFORM | DIRTY_MATERIAL | DIRTY_VISIBILITY
26
+ | DIRTY_PARENT | DIRTY_GEOMETRY | DIRTY_SKIN;
27
+
28
+ #[repr(C)]
29
+ #[derive(Clone, Copy)]
30
+ pub struct SceneNodeInfo {
31
+ pub dirty_flags: u32,
32
+ pub handle: u32,
33
+ pub parent: u32,
34
+ pub visible: u32,
35
+ pub geometry_version: u32,
36
+
37
+ pub color: [f32; 4],
38
+ pub roughness: f32,
39
+ pub metalness: f32,
40
+ /// Legacy single-slot texture handle (diffuse / base color). Kept for
41
+ /// bloom_scene_set_material_texture which predates the PBR slot set.
42
+ pub texture: u32,
43
+ pub has_geometry: u32,
44
+
45
+ pub transform: [f32; 16],
46
+
47
+ /// PBR texture slots — set via bloom_scene_attach_model from a loaded
48
+ /// glTF material. 0 = not set (fall back to color / roughness /
49
+ /// metalness factors instead).
50
+ pub tex_base_color: u32,
51
+ pub tex_normal: u32,
52
+ pub tex_metallic_roughness: u32,
53
+ pub tex_emissive: u32,
54
+ pub tex_occlusion: u32,
55
+ /// Bumps whenever any skin_* data changes on this node. Swift rebuilds
56
+ /// the SCNSkinner when it sees a new version. 0 = no skin.
57
+ pub skin_version: u32,
58
+ }
59
+
60
+ struct Node {
61
+ visible: bool,
62
+ parent: u32,
63
+ transform: [f32; 16],
64
+ color: [f32; 4],
65
+ roughness: f32,
66
+ metalness: f32,
67
+ texture: u32,
68
+ tex_base_color: u32,
69
+ tex_normal: u32,
70
+ tex_metallic_roughness: u32,
71
+ tex_emissive: u32,
72
+ tex_occlusion: u32,
73
+ positions: Vec<f32>,
74
+ normals: Vec<f32>,
75
+ uvs: Vec<f32>,
76
+ indices: Vec<u32>,
77
+ geometry_version: u32,
78
+ /// Bitmask of DIRTY_* flags that need to go out to Swift on the next
79
+ /// drain. Freshly created nodes start with DIRTY_ALL so Swift builds a
80
+ /// full SCNNode on first sight.
81
+ dirty_flags: u32,
82
+
83
+ // Skinning data (SCNSkinner). Present only on the mesh-carrying node of
84
+ // a skinned glTF primitive. skin_version bumps when any of the fields
85
+ // below change, signalling Swift to rebuild the skinner.
86
+ skin_joint_handles: Vec<u32>, // bloom scene handles of the bones
87
+ skin_inverse_bind: Vec<[f32; 16]>, // one per joint
88
+ skin_vertex_joints: Vec<u32>, // 4 per vertex (as in glTF JOINTS_0)
89
+ skin_vertex_weights: Vec<f32>, // 4 per vertex (as in glTF WEIGHTS_0)
90
+ skin_version: u32,
91
+
92
+ // Animation tracks attached to this skinned mesh. Each track targets a
93
+ // bone by bloom handle. Swift builds CAKeyframeAnimations from them when
94
+ // attaching the SCNSkinner. anim_version bumps alongside skin_version.
95
+ anim_tracks: Vec<AnimTrack>,
96
+ }
97
+
98
+ pub struct AnimTrack {
99
+ pub bone_handle: u32,
100
+ pub path: u32, // 0 = translation, 1 = rotation, 2 = scale
101
+ pub times: Vec<f32>,
102
+ pub values: Vec<f32>,
103
+ }
104
+
105
+ impl Node {
106
+ fn empty() -> Self {
107
+ let mut t = [0.0f32; 16];
108
+ t[0] = 1.0; t[5] = 1.0; t[10] = 1.0; t[15] = 1.0; // identity
109
+ Self {
110
+ visible: true,
111
+ parent: 0,
112
+ transform: t,
113
+ color: [1.0, 1.0, 1.0, 1.0],
114
+ roughness: 0.6,
115
+ metalness: 0.0,
116
+ texture: 0,
117
+ tex_base_color: 0, tex_normal: 0, tex_metallic_roughness: 0,
118
+ tex_emissive: 0, tex_occlusion: 0,
119
+ positions: Vec::new(),
120
+ normals: Vec::new(),
121
+ uvs: Vec::new(),
122
+ indices: Vec::new(),
123
+ geometry_version: 0,
124
+ dirty_flags: DIRTY_ALL,
125
+ skin_joint_handles: Vec::new(),
126
+ skin_inverse_bind: Vec::new(),
127
+ skin_vertex_joints: Vec::new(),
128
+ skin_vertex_weights: Vec::new(),
129
+ skin_version: 0,
130
+ anim_tracks: Vec::new(),
131
+ }
132
+ }
133
+ }
134
+
135
+ #[repr(C)]
136
+ #[derive(Clone, Copy)]
137
+ pub struct Light {
138
+ pub kind: u32, // 1 = directional, 2 = point
139
+ pub _pad: u32,
140
+ pub pos_or_dir: [f32; 3],
141
+ pub range: f32,
142
+ pub color: [f32; 3],
143
+ pub intensity: f32,
144
+ }
145
+
146
+ struct Inner {
147
+ nodes: Vec<Option<Node>>, // 1-based: nodes[0] is always None (handle 0 = "none")
148
+ lights: Vec<Light>,
149
+ /// Handles of nodes destroyed since the last Swift drain. Swift consumes
150
+ /// via drain_destroyed() and removes the matching SCNNodes from its cache.
151
+ destroyed_queue: Vec<u32>,
152
+ }
153
+
154
+ static INNER: Mutex<Inner> = Mutex::new(Inner {
155
+ nodes: Vec::new(),
156
+ lights: Vec::new(),
157
+ destroyed_queue: Vec::new(),
158
+ });
159
+
160
+ fn with<F, R>(f: F) -> R where F: FnOnce(&mut Inner) -> R {
161
+ let mut g = INNER.lock().unwrap();
162
+ if g.nodes.is_empty() {
163
+ g.nodes.push(None); // sentinel at index 0
164
+ }
165
+ f(&mut *g)
166
+ }
167
+
168
+ // ============================================================
169
+ // Mutations — called from bloom_scene_* FFI in lib.rs
170
+ // ============================================================
171
+
172
+ pub fn create() -> u32 {
173
+ with(|inner| {
174
+ // Reuse a freed slot if one exists.
175
+ for (i, slot) in inner.nodes.iter_mut().enumerate().skip(1) {
176
+ if slot.is_none() {
177
+ *slot = Some(Node::empty());
178
+ return i as u32;
179
+ }
180
+ }
181
+ inner.nodes.push(Some(Node::empty()));
182
+ (inner.nodes.len() - 1) as u32
183
+ })
184
+ }
185
+
186
+ pub fn destroy(handle: u32) {
187
+ with(|inner| {
188
+ let existed = if let Some(slot) = inner.nodes.get_mut(handle as usize) {
189
+ if slot.is_some() { *slot = None; true } else { false }
190
+ } else { false };
191
+ if existed { inner.destroyed_queue.push(handle); }
192
+ // Any node with this as parent becomes a root — flag PARENT dirty
193
+ // so Swift reparents it.
194
+ for n in inner.nodes.iter_mut().flatten() {
195
+ if n.parent == handle {
196
+ n.parent = 0;
197
+ n.dirty_flags |= DIRTY_PARENT;
198
+ }
199
+ }
200
+ });
201
+ }
202
+
203
+ fn mutate<F: FnOnce(&mut Node)>(handle: u32, f: F) {
204
+ with(|inner| {
205
+ if let Some(Some(n)) = inner.nodes.get_mut(handle as usize) {
206
+ f(n);
207
+ }
208
+ });
209
+ }
210
+
211
+ fn mark_dirty<F: FnOnce(&mut Node)>(handle: u32, bits: u32, f: F) {
212
+ mutate(handle, |n| {
213
+ f(n);
214
+ n.dirty_flags |= bits;
215
+ });
216
+ }
217
+
218
+ pub fn set_visible(handle: u32, v: bool) {
219
+ mark_dirty(handle, DIRTY_VISIBILITY, |n| n.visible = v);
220
+ }
221
+ pub fn set_parent(handle: u32, parent: u32) {
222
+ mark_dirty(handle, DIRTY_PARENT, |n| n.parent = parent);
223
+ }
224
+ pub fn set_transform(handle: u32, m: [f32; 16]) {
225
+ mark_dirty(handle, DIRTY_TRANSFORM, |n| n.transform = m);
226
+ }
227
+ pub fn set_color(handle: u32, rgba: [f32; 4]) {
228
+ mark_dirty(handle, DIRTY_MATERIAL, |n| n.color = rgba);
229
+ }
230
+ pub fn set_pbr(handle: u32, rough: f32, metal: f32) {
231
+ mark_dirty(handle, DIRTY_MATERIAL, |n| { n.roughness = rough; n.metalness = metal; });
232
+ }
233
+ pub fn set_texture(handle: u32, tex: u32) {
234
+ mark_dirty(handle, DIRTY_MATERIAL, |n| n.texture = tex);
235
+ }
236
+
237
+ pub fn set_pbr_textures(handle: u32,
238
+ base_color: u32, normal: u32, metallic_roughness: u32,
239
+ emissive: u32, occlusion: u32,
240
+ ) {
241
+ mark_dirty(handle, DIRTY_MATERIAL, |n| {
242
+ n.tex_base_color = base_color;
243
+ n.tex_normal = normal;
244
+ n.tex_metallic_roughness = metallic_roughness;
245
+ n.tex_emissive = emissive;
246
+ n.tex_occlusion = occlusion;
247
+ });
248
+ }
249
+
250
+ pub fn set_skin(handle: u32,
251
+ joint_handles: Vec<u32>, inverse_bind: Vec<[f32; 16]>,
252
+ vertex_joints: Vec<u32>, vertex_weights: Vec<f32>,
253
+ ) {
254
+ mark_dirty(handle, DIRTY_SKIN, |n| {
255
+ n.skin_joint_handles = joint_handles;
256
+ n.skin_inverse_bind = inverse_bind;
257
+ n.skin_vertex_joints = vertex_joints;
258
+ n.skin_vertex_weights = vertex_weights;
259
+ n.skin_version = n.skin_version.wrapping_add(1);
260
+ });
261
+ }
262
+
263
+ /// Replace the animation tracks on a skinned mesh node. Bumps skin_version
264
+ /// so Swift re-picks them up alongside the skinner rebuild.
265
+ pub fn set_anim_tracks(handle: u32, tracks: Vec<AnimTrack>) {
266
+ mark_dirty(handle, DIRTY_SKIN, |n| {
267
+ n.anim_tracks = tracks;
268
+ n.skin_version = n.skin_version.wrapping_add(1);
269
+ });
270
+ }
271
+
272
+ /// TS → native FFI layout: 12 f64s per vertex — xyz, nx ny nz, rgba, uv.
273
+ /// Color is ignored (material color wins via bloom_scene_set_material_color).
274
+ /// Directly install pre-decoded geometry (from a loaded model) into a scene
275
+ /// node, bypassing the 12-f64-per-vertex TS FFI layout.
276
+ pub fn set_geometry(handle: u32,
277
+ positions: Vec<f32>, normals: Vec<f32>, uvs: Vec<f32>, indices: Vec<u32>,
278
+ ) {
279
+ mark_dirty(handle, DIRTY_GEOMETRY, |n| {
280
+ n.positions = positions;
281
+ n.normals = normals;
282
+ n.uvs = uvs;
283
+ n.indices = indices;
284
+ n.geometry_version = n.geometry_version.wrapping_add(1);
285
+ });
286
+ }
287
+
288
+ pub fn update_geometry_f64(handle: u32, verts: &[f64], indices: &[f64]) {
289
+ mark_dirty(handle, DIRTY_GEOMETRY, |n| {
290
+ let count = verts.len() / 12;
291
+ n.positions.clear();
292
+ n.normals.clear();
293
+ n.uvs.clear();
294
+ n.positions.reserve(count * 3);
295
+ n.normals.reserve(count * 3);
296
+ n.uvs.reserve(count * 2);
297
+ for i in 0..count {
298
+ let base = i * 12;
299
+ n.positions.push(verts[base] as f32);
300
+ n.positions.push(verts[base+1] as f32);
301
+ n.positions.push(verts[base+2] as f32);
302
+ n.normals.push(verts[base+3] as f32);
303
+ n.normals.push(verts[base+4] as f32);
304
+ n.normals.push(verts[base+5] as f32);
305
+ n.uvs.push(verts[base+10] as f32);
306
+ n.uvs.push(verts[base+11] as f32);
307
+ }
308
+ n.indices.clear();
309
+ n.indices.reserve(indices.len());
310
+ for &i in indices { n.indices.push(i as u32); }
311
+ n.geometry_version = n.geometry_version.wrapping_add(1);
312
+ });
313
+ }
314
+
315
+ pub fn add_directional_light(dx: f32, dy: f32, dz: f32, r: f32, g: f32, b: f32, intensity: f32) {
316
+ with(|inner| {
317
+ inner.lights.push(Light {
318
+ kind: 1, _pad: 0,
319
+ pos_or_dir: [dx, dy, dz], range: 0.0,
320
+ color: [r, g, b], intensity,
321
+ });
322
+ });
323
+ }
324
+
325
+ pub fn add_point_light(x: f32, y: f32, z: f32, range: f32, r: f32, g: f32, b: f32, intensity: f32) {
326
+ with(|inner| {
327
+ inner.lights.push(Light {
328
+ kind: 2, _pad: 0,
329
+ pos_or_dir: [x, y, z], range,
330
+ color: [r, g, b], intensity,
331
+ });
332
+ });
333
+ }
334
+
335
+ pub fn clear_lights() {
336
+ with(|inner| inner.lights.clear());
337
+ }
338
+
339
+ pub fn node_count() -> usize {
340
+ with(|inner| inner.nodes.iter().filter(|n| n.is_some()).count())
341
+ }
342
+
343
+ // ============================================================
344
+ // Snapshot API — called from Swift each frame.
345
+ // ============================================================
346
+
347
+ /// Delta-sync: emit only nodes whose dirty_flags are non-zero, and clear
348
+ /// flags on the nodes we report. Swift calls this once per frame and
349
+ /// applies the reported changes — static scenes get O(0) cost, moving
350
+ /// scenes scale with the number of actually-changing nodes.
351
+ pub fn drain_dirty(dst: *mut SceneNodeInfo, max: i64) -> i64 {
352
+ if dst.is_null() || max <= 0 { return 0; }
353
+ with(|inner| {
354
+ let mut written = 0i64;
355
+ for (i, slot) in inner.nodes.iter_mut().enumerate() {
356
+ if written >= max { break; }
357
+ let Some(n) = slot else { continue };
358
+ if n.dirty_flags == 0 { continue; }
359
+ let info = SceneNodeInfo {
360
+ dirty_flags: n.dirty_flags,
361
+ handle: i as u32,
362
+ parent: n.parent,
363
+ visible: if n.visible { 1 } else { 0 },
364
+ geometry_version: n.geometry_version,
365
+ color: n.color,
366
+ roughness: n.roughness,
367
+ metalness: n.metalness,
368
+ texture: n.texture,
369
+ has_geometry: if n.indices.is_empty() { 0 } else { 1 },
370
+ transform: n.transform,
371
+ tex_base_color: n.tex_base_color,
372
+ tex_normal: n.tex_normal,
373
+ tex_metallic_roughness: n.tex_metallic_roughness,
374
+ tex_emissive: n.tex_emissive,
375
+ tex_occlusion: n.tex_occlusion,
376
+ skin_version: n.skin_version,
377
+ };
378
+ unsafe { *dst.add(written as usize) = info; }
379
+ n.dirty_flags = 0;
380
+ written += 1;
381
+ }
382
+ written
383
+ })
384
+ }
385
+
386
+ /// Drain the list of handles destroyed since the last call. Swift pulls
387
+ /// these and removes the matching SCNNodes from its retainedNodes map.
388
+ pub fn drain_destroyed(dst: *mut u32, max: i64) -> i64 {
389
+ if dst.is_null() || max <= 0 { return 0; }
390
+ with(|inner| {
391
+ let n = inner.destroyed_queue.len().min(max as usize);
392
+ unsafe {
393
+ std::ptr::copy_nonoverlapping(inner.destroyed_queue.as_ptr(), dst, n);
394
+ }
395
+ inner.destroyed_queue.drain(..n);
396
+ n as i64
397
+ })
398
+ }
399
+
400
+ pub fn copy_lights(dst: *mut Light, max: i64) -> i64 {
401
+ if dst.is_null() || max <= 0 { return 0; }
402
+ with(|inner| {
403
+ let n = inner.lights.len().min(max as usize);
404
+ unsafe { std::ptr::copy_nonoverlapping(inner.lights.as_ptr(), dst, n); }
405
+ n as i64
406
+ })
407
+ }
408
+
409
+ /// Pointer + counts for a node's geometry arrays. Pointers are valid as long
410
+ /// as the node exists and `update_geometry` isn't called on it — Swift reads
411
+ /// synchronously in one pass so this is safe for the sync protocol.
412
+ #[repr(C)]
413
+ #[derive(Clone, Copy)]
414
+ pub struct GeometryPtrs {
415
+ pub positions: *const f32,
416
+ pub position_count: u32,
417
+ pub normals: *const f32,
418
+ pub normal_count: u32,
419
+ pub uvs: *const f32,
420
+ pub uv_count: u32,
421
+ pub indices: *const u32,
422
+ pub index_count: u32,
423
+ }
424
+
425
+ #[repr(C)]
426
+ #[derive(Clone, Copy)]
427
+ pub struct SkinPtrs {
428
+ pub joint_handles: *const u32,
429
+ pub joint_count: u32,
430
+ pub inverse_bind: *const f32, // flat 16-float matrices
431
+ pub inverse_bind_matrix_count: u32,
432
+ pub vertex_joints: *const u32, // 4 per vertex
433
+ pub vertex_joint_count: u32, // total entries (= vertex_count * 4)
434
+ pub vertex_weights: *const f32, // 4 per vertex
435
+ pub vertex_weight_count: u32,
436
+ }
437
+
438
+ #[repr(C)]
439
+ #[derive(Clone, Copy)]
440
+ pub struct AnimTrackInfo {
441
+ pub bone_handle: u32,
442
+ pub path: u32, // 0 = translation, 1 = rotation, 2 = scale
443
+ pub key_count: u32,
444
+ pub _pad: u32,
445
+ pub times: *const f32, // length = key_count
446
+ pub values: *const f32, // length = key_count * (3 or 4)
447
+ }
448
+
449
+ pub fn anim_track_count(handle: u32) -> i64 {
450
+ with(|inner| {
451
+ if let Some(Some(n)) = inner.nodes.get(handle as usize) {
452
+ n.anim_tracks.len() as i64
453
+ } else { 0 }
454
+ })
455
+ }
456
+
457
+ pub fn anim_track_info(handle: u32, idx: i64, out: *mut AnimTrackInfo) {
458
+ if out.is_null() { return; }
459
+ with(|inner| {
460
+ if let Some(Some(n)) = inner.nodes.get(handle as usize) {
461
+ if let Some(t) = n.anim_tracks.get(idx as usize) {
462
+ unsafe {
463
+ *out = AnimTrackInfo {
464
+ bone_handle: t.bone_handle,
465
+ path: t.path,
466
+ key_count: t.times.len() as u32,
467
+ _pad: 0,
468
+ times: t.times.as_ptr(),
469
+ values: t.values.as_ptr(),
470
+ };
471
+ }
472
+ }
473
+ }
474
+ });
475
+ }
476
+
477
+ pub fn skin_ptrs(handle: u32) -> SkinPtrs {
478
+ with(|inner| {
479
+ let empty = SkinPtrs {
480
+ joint_handles: std::ptr::null(), joint_count: 0,
481
+ inverse_bind: std::ptr::null(), inverse_bind_matrix_count: 0,
482
+ vertex_joints: std::ptr::null(), vertex_joint_count: 0,
483
+ vertex_weights: std::ptr::null(), vertex_weight_count: 0,
484
+ };
485
+ if let Some(Some(n)) = inner.nodes.get(handle as usize) {
486
+ SkinPtrs {
487
+ joint_handles: n.skin_joint_handles.as_ptr(),
488
+ joint_count: n.skin_joint_handles.len() as u32,
489
+ inverse_bind: n.skin_inverse_bind.as_ptr() as *const f32,
490
+ inverse_bind_matrix_count: n.skin_inverse_bind.len() as u32,
491
+ vertex_joints: n.skin_vertex_joints.as_ptr(),
492
+ vertex_joint_count: n.skin_vertex_joints.len() as u32,
493
+ vertex_weights: n.skin_vertex_weights.as_ptr(),
494
+ vertex_weight_count: n.skin_vertex_weights.len() as u32,
495
+ }
496
+ } else {
497
+ empty
498
+ }
499
+ })
500
+ }
501
+
502
+ pub fn geometry_ptrs(handle: u32) -> GeometryPtrs {
503
+ with(|inner| {
504
+ if let Some(Some(n)) = inner.nodes.get(handle as usize) {
505
+ GeometryPtrs {
506
+ positions: n.positions.as_ptr(),
507
+ position_count: n.positions.len() as u32,
508
+ normals: n.normals.as_ptr(),
509
+ normal_count: n.normals.len() as u32,
510
+ uvs: n.uvs.as_ptr(),
511
+ uv_count: n.uvs.len() as u32,
512
+ indices: n.indices.as_ptr(),
513
+ index_count: n.indices.len() as u32,
514
+ }
515
+ } else {
516
+ GeometryPtrs {
517
+ positions: std::ptr::null(), position_count: 0,
518
+ normals: std::ptr::null(), normal_count: 0,
519
+ uvs: std::ptr::null(), uv_count: 0,
520
+ indices: std::ptr::null(), index_count: 0,
521
+ }
522
+ }
523
+ })
524
+ }
525
+
526
+ pub fn get_transform(handle: u32) -> [f32; 16] {
527
+ with(|inner| {
528
+ if let Some(Some(n)) = inner.nodes.get(handle as usize) {
529
+ n.transform
530
+ } else {
531
+ let mut t = [0.0f32; 16]; t[0] = 1.0; t[5] = 1.0; t[10] = 1.0; t[15] = 1.0; t
532
+ }
533
+ })
534
+ }