@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,48 @@
1
+ import { Color, Font, Vec2 } from '../core/types';
2
+
3
+ // FFI declarations
4
+ declare function bloom_draw_text(text: number, x: number, y: number, size: number, r: number, g: number, b: number, a: number): void;
5
+ declare function bloom_measure_text(text: number, size: number): number;
6
+ declare function bloom_load_font(path: number, size: number): number;
7
+ declare function bloom_draw_text_ex(font: number, text: number, x: number, y: number, size: number, spacing: number, r: number, g: number, b: number, a: number): void;
8
+ declare function bloom_measure_text_ex(font: number, text: number, size: number, spacing: number): number;
9
+ declare function bloom_unload_font(font: number): void;
10
+
11
+ export function drawText(text: string, x: number, y: number, size: number, color: Color): void {
12
+ bloom_draw_text(text as any, x, y, size, color.r, color.g, color.b, color.a);
13
+ }
14
+
15
+ /// RGBA variant of `drawText`. Prefer this over passing a `Color` object on
16
+ /// Android (aarch64): Perry 0.5.x miscompiles `color.r` field reads that feed
17
+ /// straight into an f64 FFI slot, producing NaN for all color components and
18
+ /// dropping the glyph quads. Passing raw numbers bypasses the object read.
19
+ export function drawTextRgba(text: string, x: number, y: number, size: number, r: number, g: number, b: number, a: number): void {
20
+ bloom_draw_text(text as any, x, y, size, r, g, b, a);
21
+ }
22
+
23
+ export function measureText(text: string, size: number): number {
24
+ return bloom_measure_text(text as any, size);
25
+ }
26
+
27
+ export function loadFont(path: string, size: number): Font {
28
+ const handle = bloom_load_font(path as any, size);
29
+ return { handle, size };
30
+ }
31
+
32
+ export function loadFontEx(path: string, size: number): Font {
33
+ const handle = bloom_load_font(path as any, size);
34
+ return { handle, size };
35
+ }
36
+
37
+ export function unloadFont(font: Font): void {
38
+ bloom_unload_font(font.handle);
39
+ }
40
+
41
+ export function drawTextEx(font: Font, text: string, pos: Vec2, size: number, spacing: number, color: Color): void {
42
+ bloom_draw_text_ex(font.handle, text as any, pos.x, pos.y, size, spacing, color.r, color.g, color.b, color.a);
43
+ }
44
+
45
+ export function measureTextEx(font: Font, text: string, size: number, spacing: number): Vec2 {
46
+ const width = bloom_measure_text_ex(font.handle, text as any, size, spacing);
47
+ return { x: width, y: size };
48
+ }
@@ -0,0 +1,173 @@
1
+ import { spawn, parallelMap } from 'perry/thread';
2
+ import { Color, Rect, Texture } from '../core/types';
3
+
4
+ // FFI declarations
5
+ declare function bloom_load_texture(path: number): number;
6
+ declare function bloom_unload_texture(handle: number): void;
7
+ declare function bloom_draw_texture(handle: number, x: number, y: number, r: number, g: number, b: number, a: number): void;
8
+ declare function bloom_draw_texture_rec(handle: number, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, r: number, g: number, b: number, a: number): void;
9
+ declare function bloom_draw_texture_pro(handle: number, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number, ox: number, oy: number, rot: number, r: number, g: number, b: number, a: number): void;
10
+ declare function bloom_get_texture_width(handle: number): number;
11
+ declare function bloom_get_texture_height(handle: number): number;
12
+ declare function bloom_load_image(path: number): number;
13
+ declare function bloom_image_resize(handle: number, w: number, h: number): void;
14
+ declare function bloom_image_crop(handle: number, x: number, y: number, w: number, h: number): void;
15
+ declare function bloom_image_flip_h(handle: number): void;
16
+ declare function bloom_image_flip_v(handle: number): void;
17
+ declare function bloom_load_texture_from_image(handle: number): number;
18
+ declare function bloom_gen_texture_mipmaps(handle: number): void;
19
+ declare function bloom_set_texture_filter(handle: number, mode: number): void;
20
+
21
+ export const FILTER_LINEAR = 0;
22
+ export const FILTER_NEAREST = 1;
23
+
24
+ export function setTextureFilter(texture: Texture, mode: number): void {
25
+ bloom_set_texture_filter(texture.id, mode);
26
+ }
27
+
28
+ export function loadTexture(path: string): Texture {
29
+ const id = bloom_load_texture(path as any);
30
+ const width = bloom_get_texture_width(id);
31
+ const height = bloom_get_texture_height(id);
32
+ return { id, width, height };
33
+ }
34
+
35
+ export function unloadTexture(texture: Texture): void {
36
+ bloom_unload_texture(texture.id);
37
+ }
38
+
39
+ export function drawTexture(texture: Texture, x: number, y: number, tint: Color): void {
40
+ bloom_draw_texture(texture.id, x, y, tint.r, tint.g, tint.b, tint.a);
41
+ }
42
+
43
+ export function drawTextureRec(texture: Texture, source: Rect, position: { x: number; y: number }, tint: Color): void {
44
+ bloom_draw_texture_rec(texture.id, source.x, source.y, source.width, source.height, position.x, position.y, tint.r, tint.g, tint.b, tint.a);
45
+ }
46
+
47
+ export function drawTexturePro(
48
+ texture: Texture, source: Rect, dest: Rect,
49
+ origin: { x: number; y: number }, rotation: number, tint: Color,
50
+ ): void {
51
+ bloom_draw_texture_pro(
52
+ texture.id,
53
+ source.x, source.y, source.width, source.height,
54
+ dest.x, dest.y, dest.width, dest.height,
55
+ origin.x, origin.y, rotation,
56
+ tint.r, tint.g, tint.b, tint.a,
57
+ );
58
+ }
59
+
60
+ // Raw variant: takes primitives directly. Workaround for aarch64 Android
61
+ // Perry miscompilation where obj.field reads feeding f64 FFI args arrive as NaN.
62
+ export function drawTextureProRaw(
63
+ textureId: number,
64
+ sx: number, sy: number, sw: number, sh: number,
65
+ dx: number, dy: number, dw: number, dh: number,
66
+ ox: number, oy: number, rotation: number,
67
+ r: number, g: number, b: number, a: number,
68
+ ): void {
69
+ bloom_draw_texture_pro(textureId, sx, sy, sw, sh, dx, dy, dw, dh, ox, oy, rotation, r, g, b, a);
70
+ }
71
+
72
+ export function getTextureWidth(texture: Texture): number {
73
+ return texture.width;
74
+ }
75
+
76
+ export function getTextureHeight(texture: Texture): number {
77
+ return texture.height;
78
+ }
79
+
80
+ export function loadImage(path: string): number {
81
+ return bloom_load_image(path as any);
82
+ }
83
+
84
+ export function imageResize(imageHandle: number, width: number, height: number): void {
85
+ bloom_image_resize(imageHandle, width, height);
86
+ }
87
+
88
+ export function imageCrop(imageHandle: number, x: number, y: number, width: number, height: number): void {
89
+ bloom_image_crop(imageHandle, x, y, width, height);
90
+ }
91
+
92
+ export function imageFlipH(imageHandle: number): void {
93
+ bloom_image_flip_h(imageHandle);
94
+ }
95
+
96
+ export function imageFlipV(imageHandle: number): void {
97
+ bloom_image_flip_v(imageHandle);
98
+ }
99
+
100
+ export function loadTextureFromImage(imageHandle: number): Texture {
101
+ const id = bloom_load_texture_from_image(imageHandle);
102
+ const width = bloom_get_texture_width(id);
103
+ const height = bloom_get_texture_height(id);
104
+ return { id, width, height };
105
+ }
106
+
107
+ export function genTextureMipmaps(texture: Texture): void {
108
+ bloom_gen_texture_mipmaps(texture.id);
109
+ }
110
+
111
+ // Async / threaded loading
112
+
113
+ declare function bloom_stage_texture(path: number): number;
114
+ declare function bloom_commit_texture(handle: number): number;
115
+ declare function bloom_load_render_texture(width: number, height: number): number;
116
+ declare function bloom_unload_render_texture(handle: number): void;
117
+ declare function bloom_begin_texture_mode(handle: number): void;
118
+ declare function bloom_end_texture_mode(): void;
119
+ declare function bloom_get_render_texture_texture(handle: number): number;
120
+
121
+ export async function loadTextureAsync(path: string): Promise<Texture> {
122
+ const stagingHandle = await spawn(() => bloom_stage_texture(path as any));
123
+ const id = bloom_commit_texture(stagingHandle);
124
+ const width = bloom_get_texture_width(id);
125
+ const height = bloom_get_texture_height(id);
126
+ return { id, width, height };
127
+ }
128
+
129
+ export function stageTextures(paths: string[]): number[] {
130
+ return parallelMap(paths, (path: string) => bloom_stage_texture(path as any));
131
+ }
132
+
133
+ export function commitTexture(stagingHandle: number): Texture {
134
+ const id = bloom_commit_texture(stagingHandle);
135
+ const width = bloom_get_texture_width(id);
136
+ const height = bloom_get_texture_height(id);
137
+ return { id, width, height };
138
+ }
139
+
140
+ // ============================================================
141
+ // Q1: Offscreen Render Targets
142
+ // ============================================================
143
+
144
+ /**
145
+ * Create an offscreen render texture. Rendering commands between
146
+ * beginTextureMode and endTextureMode draw into this texture instead
147
+ * of the screen. Use getRenderTextureTexture to get a Texture for
148
+ * drawing the result via drawTexture.
149
+ *
150
+ * NOTE: GPU implementation is a stub in this version. The FFI surface
151
+ * is stable; the actual render-to-texture plumbing will land in a
152
+ * focused GPU session.
153
+ */
154
+ export function loadRenderTexture(width: number, height: number): number {
155
+ return bloom_load_render_texture(width, height);
156
+ }
157
+
158
+ export function unloadRenderTexture(handle: number): void {
159
+ bloom_unload_render_texture(handle);
160
+ }
161
+
162
+ export function beginTextureMode(handle: number): void {
163
+ bloom_begin_texture_mode(handle);
164
+ }
165
+
166
+ export function endTextureMode(): void {
167
+ bloom_end_texture_mode();
168
+ }
169
+
170
+ export function getRenderTextureTexture(handle: number): Texture {
171
+ const id = bloom_get_render_texture_texture(handle);
172
+ return { id, width: 0, height: 0 };
173
+ }
@@ -0,0 +1,22 @@
1
+ // Bloom shared world module.
2
+ //
3
+ // Defines the on-disk world/prefab schema that the Bloom world editor writes
4
+ // and every Bloom game reads. Games and the editor both import from this
5
+ // module via `import { ... } from 'bloom/world'`.
6
+ //
7
+ // Files:
8
+ // - types.ts schema interfaces (WorldData, PrefabData, ...)
9
+ // - version.ts schema version + migration
10
+ // - validate.ts runtime schema validation
11
+ // - loader.ts loadWorld / instantiateWorld (reads JSON, spawns scene nodes)
12
+ // - saver.ts saveWorld / savePrefab (writes JSON)
13
+ // - prefab.ts loadPrefab / expandPrefab / cycle detection
14
+ // - terrain.ts buildHeightmapMesh / sampleHeight / raycastTerrain / defaultTerrain
15
+
16
+ export * from './types';
17
+ export * from './version';
18
+ export * from './validate';
19
+ export * from './loader';
20
+ export * from './saver';
21
+ export * from './prefab';
22
+ export * from './terrain';
@@ -0,0 +1,385 @@
1
+ // World loader — reads a `*.world.json` file from disk, validates it, and
2
+ // spawns scene nodes. Consumed by both the editor (to display the world) and
3
+ // by every Bloom game (to load its level at runtime).
4
+ //
5
+ // The loader has two entry points:
6
+ //
7
+ // loadWorld(path) — pure: reads + parses + migrates + validates.
8
+ // Returns a WorldData object. No scene side-effects.
9
+ //
10
+ // instantiateWorld(w, ctx) — creates scene nodes, applies lighting, and
11
+ // returns a map of entity id -> scene node handle.
12
+ // The caller provides a context that resolves
13
+ // model references to loaded model handles.
14
+ //
15
+ // Splitting parse from instantiate lets the editor hold a `WorldData` in memory
16
+ // and re-sync scene nodes on edits, without re-reading the file every frame.
17
+
18
+ import { readFile } from '../core/index';
19
+ import {
20
+ createSceneNode,
21
+ attachModelToNode,
22
+ setSceneNodeTransform,
23
+ setSceneNodeColor,
24
+ setSceneNodeVisible,
25
+ setSceneNodeParent,
26
+ updateSceneNodeGeometry,
27
+ SceneNodeHandle,
28
+ enableShadows,
29
+ disableShadows,
30
+ addDirectionalLight,
31
+ } from '../scene/index';
32
+ import {
33
+ mat4Identity,
34
+ mat4Translate,
35
+ mat4RotateX,
36
+ mat4RotateY,
37
+ mat4RotateZ,
38
+ mat4Scale,
39
+ } from '../math/index';
40
+ import { Mat4, Vec3 } from '../core/types';
41
+ import {
42
+ WorldData,
43
+ EntityData,
44
+ TransformData,
45
+ Vec3Lit,
46
+ Vec4Lit,
47
+ } from './types';
48
+ import { migrateWorldData } from './version';
49
+ import { validateWorld, formatValidationErrors } from './validate';
50
+ import {
51
+ PrefabRegistry,
52
+ PrefabLeaf,
53
+ expandPrefab,
54
+ } from './prefab';
55
+ import { buildHeightmapMesh } from './terrain';
56
+
57
+ // Context passed to `instantiateWorld`. The caller is responsible for loading
58
+ // GLB models and supplying handles via `getModelHandle`. This inverts the
59
+ // dependency so games and the editor can use their own asset-caching policy.
60
+ export interface InstantiateContext {
61
+ // Resolve a `modelRef` (e.g. "models/tree_oak.glb") to a loaded model handle.
62
+ // Return 0 if the model is unavailable — the entity is then skipped and a
63
+ // warning is appended to `result.warnings`.
64
+ getModelHandle: (modelRef: string) => number;
65
+
66
+ // Prefab registry for expanding prefab entities. Passing null causes prefab
67
+ // entities to be skipped (with a warning).
68
+ prefabRegistry: PrefabRegistry | null;
69
+
70
+ // Called once per successfully spawned entity. The editor uses this hook to
71
+ // populate its `HandleMap` (EntityId <-> SceneNodeHandle bi-map).
72
+ onEntitySpawned?: (entityId: string, handle: SceneNodeHandle) => void;
73
+
74
+ // Called once for the terrain scene node, if the world has a terrain.
75
+ // The editor uses this to track the terrain handle for brush updates.
76
+ onTerrainSpawned?: (handle: SceneNodeHandle) => void;
77
+ }
78
+
79
+ export interface InstantiateResult {
80
+ // One handle per spawned world entity. Prefab entities yield a root group
81
+ // node whose children are the expanded prefab leaves.
82
+ entityHandles: Map<string, SceneNodeHandle>;
83
+
84
+ // Scene node handle for the terrain mesh, or 0 if the world has no terrain.
85
+ terrainHandle: SceneNodeHandle;
86
+
87
+ // Non-fatal problems encountered during instantiation: missing models,
88
+ // unresolved prefab references, cycles. The world still instantiates,
89
+ // with the offending entities skipped.
90
+ warnings: string[];
91
+ }
92
+
93
+ // Read, parse, migrate, and validate a world file. Throws on parse error or
94
+ // validation failure — the caller can catch and present the error message.
95
+ export function loadWorld(path: string): WorldData {
96
+ const text = readFile(path);
97
+ if (!text || text.length === 0) {
98
+ throw new Error('loadWorld: file is empty or missing: ' + path);
99
+ }
100
+
101
+ let raw: WorldData;
102
+ try {
103
+ raw = JSON.parse(text) as WorldData;
104
+ } catch (e) {
105
+ throw new Error('loadWorld: invalid JSON in ' + path + ': ' + (e as Error).message);
106
+ }
107
+
108
+ const migrated = migrateWorldData(raw);
109
+ const check = validateWorld(migrated);
110
+ if (!check.ok) {
111
+ throw new Error('loadWorld: ' + path + '\n' + formatValidationErrors(check.errors));
112
+ }
113
+
114
+ return migrated;
115
+ }
116
+
117
+ // Spawn scene nodes for every entity in the world and apply environment
118
+ // settings (lighting, shadows). Terrain, water, and rivers are also spawned
119
+ // when present. Water and river rendering depend on engine additions that
120
+ // land in later tasks; for now they are no-ops with TODO warnings.
121
+ export function instantiateWorld(world: WorldData, ctx: InstantiateContext): InstantiateResult {
122
+ const result: InstantiateResult = {
123
+ entityHandles: new Map<string, SceneNodeHandle>(),
124
+ terrainHandle: 0,
125
+ warnings: [],
126
+ };
127
+
128
+ // Apply environment first so the first frame renders with correct lighting.
129
+ applyEnvironment(world);
130
+
131
+ // Terrain before entities so entities can drop onto it visually.
132
+ if (world.terrain) {
133
+ result.terrainHandle = spawnTerrain(world);
134
+ if (result.terrainHandle !== 0 && ctx.onTerrainSpawned) {
135
+ ctx.onTerrainSpawned(result.terrainHandle);
136
+ }
137
+ }
138
+
139
+ // Spawn each entity. Prefab entities are expanded into a root group node
140
+ // with one child per leaf glb.
141
+ for (let i = 0; i < world.entities.length; i++) {
142
+ const entity = world.entities[i];
143
+ const handle = spawnEntity(entity, ctx, result.warnings);
144
+ if (handle !== 0) {
145
+ result.entityHandles.set(entity.id, handle);
146
+ if (ctx.onEntitySpawned) {
147
+ ctx.onEntitySpawned(entity.id, handle);
148
+ }
149
+ }
150
+ }
151
+
152
+ if (world.water.length > 0) {
153
+ result.warnings.push(
154
+ 'world has ' + world.water.length + ' water volume(s) — water rendering pending engine Q8 shader',
155
+ );
156
+ }
157
+ if (world.rivers.length > 0) {
158
+ result.warnings.push(
159
+ 'world has ' + world.rivers.length + ' river(s) — river rendering pending engine Q9 spline ribbon helper',
160
+ );
161
+ }
162
+
163
+ return result;
164
+ }
165
+
166
+ // Build the terrain mesh from the heightmap grid and upload it to a dedicated
167
+ // scene node. Called once per world load; the editor's brush tool re-uploads
168
+ // the mesh on each stroke via `updateSceneNodeGeometry` directly.
169
+ function spawnTerrain(world: WorldData): SceneNodeHandle {
170
+ if (!world.terrain) return 0;
171
+ const mesh = buildHeightmapMesh(world.terrain);
172
+ const node = createSceneNode();
173
+ updateSceneNodeGeometry(node, mesh.vertices, mesh.indices);
174
+ setSceneNodeTransform(node, mat4Identity());
175
+ setSceneNodeVisible(node, true);
176
+ return node;
177
+ }
178
+
179
+ // ---- entity spawning -------------------------------------------------------
180
+
181
+ function spawnEntity(
182
+ entity: EntityData,
183
+ ctx: InstantiateContext,
184
+ warnings: string[],
185
+ ): SceneNodeHandle {
186
+ if (entity.modelRef !== null && entity.modelRef.length > 0) {
187
+ return spawnModelEntity(entity, ctx, warnings);
188
+ }
189
+
190
+ if (entity.prefabRef !== null && entity.prefabRef.length > 0) {
191
+ return spawnPrefabEntity(entity, ctx, warnings);
192
+ }
193
+
194
+ warnings.push('entity ' + entity.id + ' has neither modelRef nor prefabRef — skipped');
195
+ return 0;
196
+ }
197
+
198
+ function spawnModelEntity(
199
+ entity: EntityData,
200
+ ctx: InstantiateContext,
201
+ warnings: string[],
202
+ ): SceneNodeHandle {
203
+ const modelRef = entity.modelRef as string;
204
+ const modelHandle = ctx.getModelHandle(modelRef);
205
+ if (modelHandle === 0) {
206
+ warnings.push('entity ' + entity.id + ' references unknown model "' + modelRef + '" — skipped');
207
+ return 0;
208
+ }
209
+
210
+ const node = createSceneNode();
211
+ attachModelToNode(node, modelHandle, 0);
212
+ setSceneNodeTransform(node, trsToMat4(entity.transform));
213
+
214
+ if (entity.tint !== null) {
215
+ applyTint(node, entity.tint);
216
+ }
217
+
218
+ setSceneNodeVisible(node, true);
219
+ return node;
220
+ }
221
+
222
+ function spawnPrefabEntity(
223
+ entity: EntityData,
224
+ ctx: InstantiateContext,
225
+ warnings: string[],
226
+ ): SceneNodeHandle {
227
+ if (!ctx.prefabRegistry) {
228
+ warnings.push(
229
+ 'entity ' + entity.id + ' references prefab "' + entity.prefabRef + '" but no PrefabRegistry was provided — skipped',
230
+ );
231
+ return 0;
232
+ }
233
+
234
+ // Create a root group node at the entity's transform. Expanded leaves are
235
+ // parented to this root so the editor gizmo can move the whole prefab as
236
+ // one unit.
237
+ const root = createSceneNode();
238
+ const rootMatrix = trsToMat4(entity.transform);
239
+ setSceneNodeTransform(root, rootMatrix);
240
+ setSceneNodeVisible(root, true);
241
+
242
+ // Expand the prefab into its leaf glbs and spawn one scene node per leaf.
243
+ // `expandPrefab` accumulates leaves into `leaves` and any errors into a
244
+ // local list which we fold into the top-level warnings.
245
+ const leaves: PrefabLeaf[] = [];
246
+ const expandErrors: string[] = [];
247
+ const visited = new Set<string>();
248
+ expandPrefab(
249
+ ctx.prefabRegistry,
250
+ entity.prefabRef as string,
251
+ mat4Identity(),
252
+ entity.tint,
253
+ entity.tags,
254
+ leaves,
255
+ expandErrors,
256
+ visited,
257
+ 'world.entities[' + entity.id + ']',
258
+ );
259
+
260
+ for (let i = 0; i < expandErrors.length; i++) warnings.push(expandErrors[i]);
261
+
262
+ for (let i = 0; i < leaves.length; i++) {
263
+ const leaf = leaves[i];
264
+ const modelHandle = ctx.getModelHandle(leaf.modelRef);
265
+ if (modelHandle === 0) {
266
+ warnings.push(
267
+ 'prefab leaf ' + leaf.sourcePath + ' references unknown model "' + leaf.modelRef + '" — skipped',
268
+ );
269
+ continue;
270
+ }
271
+ const leafNode = createSceneNode();
272
+ attachModelToNode(leafNode, modelHandle, 0);
273
+ setSceneNodeTransform(leafNode, leaf.worldMatrix);
274
+ if (leaf.tint !== null) applyTint(leafNode, leaf.tint);
275
+ setSceneNodeParent(leafNode, root);
276
+ setSceneNodeVisible(leafNode, true);
277
+ }
278
+
279
+ return root;
280
+ }
281
+
282
+ // ---- environment -----------------------------------------------------------
283
+
284
+ function applyEnvironment(world: WorldData): void {
285
+ const env = world.environment;
286
+ if (!env) return;
287
+
288
+ // Primary directional light (sun). Additional lights can be added by the
289
+ // game/editor through `addDirectionalLight` / `addPointLight` directly.
290
+ addDirectionalLight(
291
+ env.sunDirection[0], env.sunDirection[1], env.sunDirection[2],
292
+ env.sunColor[0] * env.sunIntensity,
293
+ env.sunColor[1] * env.sunIntensity,
294
+ env.sunColor[2] * env.sunIntensity,
295
+ env.sunIntensity,
296
+ );
297
+
298
+ if (env.shadowsEnabled) {
299
+ enableShadows();
300
+ } else {
301
+ disableShadows();
302
+ }
303
+ }
304
+
305
+ // ---- TRS -> column-major 4x4 -----------------------------------------------
306
+
307
+ // Build a column-major 4x4 matrix from TRS: M = T * Rz * Ry * Rx * S.
308
+ // The rotation order matches glTF / Blender / most game engines (XYZ Euler,
309
+ // applied right-to-left so X spin happens first in object space).
310
+ export function trsToMat4(t: TransformData): Mat4 {
311
+ const pos: Vec3 = { x: t.position[0], y: t.position[1], z: t.position[2] };
312
+ const scl: Vec3 = { x: t.scale[0], y: t.scale[1], z: t.scale[2] };
313
+
314
+ let m = mat4Identity();
315
+ m = mat4Translate(m, pos);
316
+ m = mat4RotateZ(m, t.rotation[2]);
317
+ m = mat4RotateY(m, t.rotation[1]);
318
+ m = mat4RotateX(m, t.rotation[0]);
319
+ m = mat4Scale(m, scl);
320
+ return m;
321
+ }
322
+
323
+ // Apply an RGBA tint to a scene node. Pulled into a helper so it can be reused
324
+ // by prefab expansion (where children inherit the parent entity's tint unless
325
+ // they override it).
326
+ function applyTint(node: SceneNodeHandle, tint: Vec4Lit): void {
327
+ setSceneNodeColor(node, tint[0], tint[1], tint[2], tint[3]);
328
+ }
329
+
330
+ // ---- factory helpers used by the editor to create new data ----------------
331
+
332
+ // Build an empty world with sensible defaults. The editor calls this from
333
+ // File -> New. Games should prefer `loadWorld` from a file on disk.
334
+ export function createEmptyWorld(id: string, name: string): WorldData {
335
+ return {
336
+ schemaVersion: 1,
337
+ name: name,
338
+ id: id,
339
+ bounds: { min: [-50, -10, -50], max: [50, 50, 50] },
340
+ environment: {
341
+ skyColor: [0.53, 0.81, 0.92],
342
+ ambientColor: [1.0, 1.0, 1.0],
343
+ ambientIntensity: 0.35,
344
+ sunDirection: [-0.5, -1.0, -0.3],
345
+ sunColor: [1.0, 0.95, 0.85],
346
+ sunIntensity: 1.0,
347
+ fogStart: 40,
348
+ fogEnd: 120,
349
+ fogColor: [0.7, 0.8, 0.9],
350
+ shadowsEnabled: true,
351
+ },
352
+ terrain: null,
353
+ entities: [],
354
+ water: [],
355
+ rivers: [],
356
+ metadata: {},
357
+ };
358
+ }
359
+
360
+ // Build an empty entity with default transform. The editor calls this when
361
+ // the place tool drops a model at a hit point.
362
+ export function createEntity(id: string, modelRef: string, position: Vec3Lit): EntityData {
363
+ return {
364
+ id: id,
365
+ name: basename(modelRef),
366
+ modelRef: modelRef,
367
+ prefabRef: null,
368
+ transform: {
369
+ position: position,
370
+ rotation: [0, 0, 0],
371
+ scale: [1, 1, 1],
372
+ },
373
+ tint: null,
374
+ tags: [],
375
+ userData: {},
376
+ };
377
+ }
378
+
379
+ function basename(path: string): string {
380
+ const slash = path.lastIndexOf('/');
381
+ const dot = path.lastIndexOf('.');
382
+ const start = slash < 0 ? 0 : slash + 1;
383
+ const end = dot < start ? path.length : dot;
384
+ return path.substring(start, end);
385
+ }