@woosh/meep-engine 2.33.22 → 2.33.26

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 (288) hide show
  1. package/core/bvh2/BinaryNode.js +1 -1
  2. package/core/bvh2/aabb3/AABB3.js +18 -0
  3. package/core/bvh2/aabb3/AABB3Math.js +1 -1
  4. package/core/bvh2/binary/2/BinaryUint32BVH.js +498 -0
  5. package/core/bvh2/binary/2/BinaryUint32BVH.spec.js +54 -0
  6. package/core/bvh2/binary/IndexedBinaryBVH.js +22 -26
  7. package/core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js +5 -1
  8. package/core/bvh2/traversal/__detailed_box_volume_intersection.js +31 -11
  9. package/core/collection/ArrayUtils.js +1 -1
  10. package/core/collection/array/arrayQuickSort.js +9 -6
  11. package/core/collection/array/array_swap.js +22 -0
  12. package/core/collection/array/binarySearchHighIndex.js +1 -1
  13. package/core/collection/array/computeHashArray.js +22 -0
  14. package/core/collection/array/computeHashIntegerArray.js +15 -0
  15. package/core/collection/array/copyArray.js +2 -2
  16. package/core/collection/table/DataType2TypedArrayConstructorMapping.js +15 -0
  17. package/core/color/Color.js +2 -1
  18. package/core/function/FunctionCompiler.js +2 -1
  19. package/core/geom/3d/aabb/aabb3_computeDistanceAbovePlane.js +9 -33
  20. package/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +10 -2
  21. package/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +41 -0
  22. package/core/geom/3d/morton/mortonEncode_magicbits.js +2 -1
  23. package/core/geom/3d/morton/reinterpret_float32_as_int32.js +13 -0
  24. package/core/geom/3d/morton/v3_morton_encode_transformed.js +33 -0
  25. package/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +1 -1
  26. package/core/geom/3d/plane/plane_computeConvex3PlaneIntersection.js +13 -14
  27. package/core/geom/3d/ray/ray_computeNearestPointToPoint.js +37 -0
  28. package/core/geom/3d/shape/AbstractShape3D.js +65 -0
  29. package/core/geom/3d/shape/TransformedShape3D.js +181 -0
  30. package/core/geom/3d/shape/TransformedShape3D.spec.js +33 -0
  31. package/core/geom/3d/shape/UnionShape3D.js +255 -0
  32. package/core/geom/3d/shape/UnitCubeShape3D.js +101 -0
  33. package/core/geom/3d/shape/UnitCubeShape3D.spec.js +42 -0
  34. package/core/geom/3d/shape/UnitSphereShape3D.js +55 -0
  35. package/core/geom/3d/shape/util/compute_signed_distance_gradient_by_sampling.js +48 -0
  36. package/core/geom/3d/shape/util/shape_to_visual_entity.js +159 -0
  37. package/core/geom/3d/voxel/DenseBitVolume3D.js +87 -0
  38. package/core/geom/3d/voxel/buildVolumeFromProjectedGeometry.js +23 -0
  39. package/core/geom/AABB2.js +1 -1
  40. package/core/geom/ConicRay.js +3 -1
  41. package/core/geom/LineSegment.js +0 -78
  42. package/core/geom/Matrix4.js +7 -8
  43. package/core/geom/Plane.js +14 -9
  44. package/core/geom/Rectangle.js +2 -1
  45. package/core/geom/Vector1.js +1 -1
  46. package/core/geom/Vector3.js +2 -1
  47. package/core/geom/Vector4.js +2 -1
  48. package/core/geom/random/randomPointInBox.js +7 -3
  49. package/core/geom/random/randomPointInPoint.js +6 -3
  50. package/core/geom/random/randomPointInSphere.js +9 -5
  51. package/core/geom/random/randomPointOnBox.js +7 -3
  52. package/core/geom/random/randomPointOnSphere.js +6 -3
  53. package/core/geom/v3_length.js +8 -3
  54. package/core/graph/graph_k_means_cluster.js +1 -1
  55. package/core/json/resolvePathByArray.js +2 -2
  56. package/core/math/MathUtils.js +0 -354
  57. package/core/math/MathUtils.spec.js +7 -1
  58. package/core/math/gaussian.js +9 -0
  59. package/core/math/hash/computeHashFloat.js +17 -0
  60. package/core/math/hash/computeHashFloatArray.js +34 -0
  61. package/core/math/hash/computeObjectHash.js +54 -0
  62. package/core/math/intersects1D.js +19 -0
  63. package/core/math/interval/NumericInterval.js +2 -2
  64. package/core/math/isValueBetween.js +10 -0
  65. package/core/math/isValueBetweenInclusive.js +10 -0
  66. package/core/math/noise/curl_noise_3dt.js +1 -1
  67. package/core/math/noise/sdnoise.js +10 -10
  68. package/core/math/overlap1D.js +19 -0
  69. package/core/math/pingpong.js +17 -0
  70. package/core/math/random/makeRangedRandom.js +19 -0
  71. package/core/math/random/randomFloatBetween.js +14 -0
  72. package/core/math/random/randomFromArray.js +19 -0
  73. package/core/math/random/randomGaussian.js +15 -0
  74. package/core/math/random/randomIntegerBetween.js +14 -0
  75. package/core/math/random/roundFair.js +15 -0
  76. package/core/math/separation1D.js +21 -0
  77. package/core/math/solveQuadratic.js +25 -0
  78. package/core/model/BoundedValue.js +1 -1
  79. package/core/model/node-graph/node/NodeInstancePortReference.js +1 -1
  80. package/core/model/node-graph/node/Port.js +1 -1
  81. package/core/model/reactive/evaluation/MultiPredicateEvaluator.spec.js +3 -1
  82. package/core/model/reactive/model/ReactiveBinaryExpression.js +1 -1
  83. package/core/model/reactive/model/terminal/ReactiveLiteralNumber.js +1 -1
  84. package/core/model/reactive/model/terminal/ReactiveReference.js +1 -1
  85. package/core/model/reactive/model/util/createRandomReactiveExpression.js +1 -1
  86. package/core/model/stat/LinearModifier.js +1 -1
  87. package/core/primitives/array/computeIntegerArrayHash.js +1 -1
  88. package/{engine/graphics/render/forward_plus/materials → core/primitives/strings}/insert_after.js +3 -0
  89. package/core/primitives/strings/insert_after_or_replace.js +27 -0
  90. package/editor/process/symbolic/makeHelperBoxGeometry.js +44 -0
  91. package/editor/view/ecs/EntityEditor.js +2 -2
  92. package/editor/view/ecs/components/particles/ParticleEmitterController.js +2 -2
  93. package/engine/EngineHarness.js +1 -0
  94. package/engine/animation/AnimationUtils.js +5 -5
  95. package/engine/animation/curve/AnimationCurve.js +72 -0
  96. package/engine/animation/curve/Keyframe.js +27 -0
  97. package/engine/animation/keyed2/AnimationTrack.js +27 -3
  98. package/engine/asset/Asset.js +1 -1
  99. package/engine/asset/loaders/GLTFAssetLoader.d.ts +1 -1
  100. package/engine/asset/loaders/GLTFAssetLoader.js +10 -0
  101. package/engine/asset/loaders/image/ImageRGBADataAsset.js +8 -1
  102. package/engine/asset/loaders/material/computeImageBitmapEquality.js +11 -0
  103. package/engine/asset/loaders/material/computeImageBitmapHash.js +22 -28
  104. package/engine/asset/loaders/material/computeMaterialHash.js +3 -1
  105. package/engine/asset/loaders/material/computeTextureHash.js +2 -1
  106. package/engine/ecs/EntityBuilder.js +25 -5
  107. package/engine/ecs/animation/Animation.js +2 -1
  108. package/engine/ecs/animation/InverseKinematics.js +2 -1
  109. package/engine/ecs/attachment/AttachmentBinding.js +8 -0
  110. package/engine/ecs/attachment/AttachmentSystem.js +4 -0
  111. package/engine/ecs/attachment/TransformAttachmentBinding.js +14 -44
  112. package/engine/ecs/components/Tag.js +27 -6
  113. package/engine/ecs/dynamic_actions/DynamicActorSystem.js +2 -1
  114. package/engine/ecs/dynamic_actions/DynamicRuleDescriptionTable.spec.js +3 -5
  115. package/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +1 -1
  116. package/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +1 -1
  117. package/engine/ecs/foliage/ecs/Foliage2.js +1 -1
  118. package/engine/ecs/fow/FogOfWar.js +4 -0
  119. package/engine/ecs/fow/FogOfWarSystem.js +2 -0
  120. package/engine/ecs/fow/shader/FogOfWarRenderer.js +1 -1
  121. package/engine/ecs/gui/GUIElement.js +1 -1
  122. package/engine/ecs/gui/hud/HeadsUpDisplay.js +1 -1
  123. package/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +2 -0
  124. package/engine/ecs/gui/position/ViewportPosition.js +2 -1
  125. package/engine/ecs/system/AbstractContextSystem.js +1 -1
  126. package/engine/ecs/systems/RangedAttackSystem.js +1 -1
  127. package/engine/ecs/systems/SteeringSystem.js +1 -1
  128. package/engine/ecs/systems/TagSystem.js +17 -0
  129. package/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -1
  130. package/engine/ecs/tooltip/TooltipComponent.js +15 -0
  131. package/engine/ecs/transform/Transform.js +19 -6
  132. package/engine/ecs/util/hideEntityGracefully.js +18 -0
  133. package/engine/graphics/GraphicsEngine.js +11 -23
  134. package/engine/graphics/camera/testClippingPlaneComputation.js +2 -2
  135. package/engine/graphics/composit/CompositLayer.js +17 -4
  136. package/engine/graphics/composit/CompositingStages.js +8 -0
  137. package/engine/graphics/composit/LayerCompositer.js +35 -6
  138. package/engine/graphics/ecs/animation/animator/AnimationClip.js +2 -1
  139. package/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -1
  140. package/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -1
  141. package/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -1
  142. package/engine/graphics/ecs/animation/animator/graph/AnimationGraph.js +2 -1
  143. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -1
  144. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +1 -1
  145. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +2 -1
  146. package/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +1 -1
  147. package/engine/graphics/ecs/highlight/HighlightDefinition.js +2 -1
  148. package/engine/graphics/ecs/highlight/plugin/OutlineRenderPlugin.js +11 -7
  149. package/engine/graphics/ecs/light/Light.d.ts +1 -1
  150. package/engine/graphics/ecs/light/Light.js +5 -0
  151. package/engine/graphics/ecs/light/binding/three/ThreeLightBinding.js +5 -1
  152. package/engine/graphics/ecs/mesh/Mesh.js +2 -1
  153. package/engine/graphics/ecs/mesh-v2/DrawMode.js +5 -0
  154. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +13 -0
  155. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +32 -18
  156. package/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts +6 -0
  157. package/engine/graphics/ecs/path/testPathDisplaySystem.js +98 -98
  158. package/engine/graphics/ecs/trail2d/Trail2D.js +17 -4
  159. package/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts +2 -3
  160. package/engine/graphics/ecs/trail2d/Trail2DSystem.js +34 -118
  161. package/engine/graphics/geometry/AttributeSpec.js +105 -0
  162. package/engine/graphics/{micron/format/MicronVertexDataSpec.js → geometry/VertexDataSpec.js} +56 -25
  163. package/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +7 -7
  164. package/engine/graphics/micron/build/fill_patch_geometry_data.js +1 -1
  165. package/engine/graphics/micron/buildPatchwork.js +1 -1
  166. package/engine/graphics/micron/format/MicronGeometry.js +3 -3
  167. package/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.js +2 -2
  168. package/engine/graphics/micron/format/serialization/deserialize_attribute_spec.js +1 -1
  169. package/engine/graphics/micron/format/serialization/serialize_attribute_spec.js +1 -1
  170. package/engine/graphics/micron/render/PatchCacheKey.js +1 -1
  171. package/engine/graphics/micron/render/instanced/AttributeDataTexture.js +5 -5
  172. package/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +1 -1
  173. package/engine/graphics/particles/ParticleEmitterLibrary.js +3 -0
  174. package/engine/graphics/particles/ecs/{ParticleEmitterSystem2.js → ParticleEmitterSystem.js} +17 -9
  175. package/engine/graphics/particles/particular/engine/ParticularEngine.js +12 -4
  176. package/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +84 -0
  177. package/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +106 -169
  178. package/engine/graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js +5 -0
  179. package/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +14 -3
  180. package/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +141 -14
  181. package/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +8 -7
  182. package/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +37 -0
  183. package/engine/graphics/particles/particular/engine/emitter/distance_to_camera.js +25 -0
  184. package/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +8 -2
  185. package/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -1
  186. package/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +1 -1
  187. package/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +1 -1
  188. package/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +24 -0
  189. package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +262 -71
  190. package/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +9 -9
  191. package/engine/graphics/particles/particular/engine/shader/ShaderManager.js +80 -46
  192. package/engine/graphics/particles/particular/engine/shader/debugAtlas.js +14 -0
  193. package/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +2 -5
  194. package/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +2 -6
  195. package/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +2 -7
  196. package/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +2 -5
  197. package/engine/graphics/particles/particular/engine/simulator/update_parameters.js +1 -1
  198. package/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +1 -1
  199. package/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +1 -1
  200. package/engine/graphics/particles/particular/engine/utils/volume/AttributeValue.js +141 -0
  201. package/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +478 -0
  202. package/engine/graphics/particles/particular/engine/utils/volume/lut_to_sampler.js +27 -0
  203. package/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +935 -0
  204. package/engine/graphics/particles/particular/group/Operation.js +18 -0
  205. package/engine/graphics/particles/particular/group/OperationType.js +9 -0
  206. package/engine/graphics/particles/particular/group/ParticleAttribute.js +2 -1
  207. package/engine/graphics/particles/particular/group/ParticleAttributeType.js +11 -0
  208. package/engine/graphics/particles/particular/group/ParticleDataType.js +10 -0
  209. package/engine/graphics/particles/particular/group/ParticleGroup.js +7 -245
  210. package/engine/graphics/particles/particular/group/ParticleGroup.spec.js +3 -1
  211. package/engine/graphics/particles/particular/group/ParticleSpecification.js +21 -14
  212. package/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +20 -0
  213. package/engine/graphics/particles/particular/group/optimizeCommandQueue.js +162 -0
  214. package/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +19 -0
  215. package/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
  216. package/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +13 -7
  217. package/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameter.js +2 -1
  218. package/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameterSet.js +1 -1
  219. package/engine/graphics/render/forward_plus/LightManager.js +126 -95
  220. package/engine/graphics/render/forward_plus/PointLight.js +9 -0
  221. package/engine/graphics/render/forward_plus/PointLightData.js +1 -1
  222. package/engine/graphics/render/forward_plus/SpotLight.js +9 -0
  223. package/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +2 -2
  224. package/engine/graphics/render/forward_plus/computeFrustumCorners.js +14 -32
  225. package/engine/graphics/render/forward_plus/materials/FP_INJECTION_POINT_ACCUMULATION.js +1 -0
  226. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_ACCUMULATION.js +32 -0
  227. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_DECODE_PARS.js +51 -0
  228. package/engine/graphics/render/forward_plus/materials/FP_SHADER_CHUNK_PREAMBLE.js +25 -0
  229. package/engine/graphics/render/forward_plus/materials/fp_build_fragment_shader.js +31 -120
  230. package/engine/graphics/render/forward_plus/materials/fp_build_vertex_lighting_shared.js +35 -0
  231. package/engine/graphics/render/forward_plus/materials/fp_build_vertex_shader.js +4 -5
  232. package/engine/graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js +1 -1
  233. package/engine/graphics/render/forward_plus/plugin/MaterialTransformer.js +10 -3
  234. package/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +595 -60
  235. package/engine/graphics/render/forward_plus/prototypeLightManager.js +256 -136
  236. package/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +8 -0
  237. package/engine/graphics/render/forward_plus/query/cube_mapping.js +38 -0
  238. package/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +86 -0
  239. package/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +73 -0
  240. package/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_objects.js +131 -0
  241. package/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +129 -0
  242. package/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +33 -0
  243. package/engine/graphics/render/forward_plus/read_frustum_corner.js +14 -0
  244. package/engine/graphics/render/forward_plus/testClusterEquality.js +22 -0
  245. package/engine/graphics/render/layers/RenderLayerUtils.js +7 -4
  246. package/engine/graphics/render/visibility/IncrementalDeltaSet.js +11 -0
  247. package/engine/graphics/render/visibility/hiz/prototypeHiZ.js +2 -2
  248. package/engine/graphics/shaders/TerrainShader.js +4 -5
  249. package/engine/graphics/shadows/ShadowMapRenderer.js +8 -2
  250. package/engine/graphics/texture/atlas/AtlasPatch.js +7 -2
  251. package/engine/graphics/texture/atlas/TextureAtlas.js +2 -2
  252. package/engine/graphics/texture/sampler/HarmonicDiffusionGrid.spec.js +1 -1
  253. package/engine/graphics/texture/sampler/SampleTraverser.js +1 -1
  254. package/engine/graphics/texture/sampler/Sampler2D.js +8 -7
  255. package/engine/graphics/texture/sampler/distanceField.spec.js +1 -1
  256. package/engine/graphics/texture/sampler/scaleSampler2D.js +7 -10
  257. package/engine/graphics/trail/x/RibbonMaterialX.js +3 -3
  258. package/engine/graphics/trail/x/RibbonX.js +17 -2
  259. package/engine/graphics/trail/x/RibbonXPlugin.js +51 -1
  260. package/engine/graphics/util/composeMatrix4.js +33 -23
  261. package/engine/graphics/util/decompose_matrix_4_array.js +61 -0
  262. package/engine/grid/components/GridObstacle.js +3 -10
  263. package/engine/intelligence/behavior/ecs/BehaviorComponent.js +30 -14
  264. package/engine/intelligence/behavior/selector/WeightedElement.js +2 -1
  265. package/engine/intelligence/optimization/RandomOptimizer.js +1 -1
  266. package/engine/knowledge/database/StaticKnowledgeDataTable.js +6 -1
  267. package/engine/navigation/ecs/components/Path.js +1 -6
  268. package/engine/navigation/grid/FastBinaryHeap.spec.js +1 -1
  269. package/engine/reference/v2/Reference.js +6 -0
  270. package/engine/sound/ecs/emitter/SoundEmitter.js +2 -1
  271. package/engine/sound/ecs/emitter/SoundTrack.js +2 -1
  272. package/engine/sound/material/concrete/RandomSoundMaterial.js +1 -1
  273. package/engine/ui/notification/notificationGenerator.js +1 -1
  274. package/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +1 -1
  275. package/generation/grid/generation/GridTaskExecuteRuleTimes.js +2 -1
  276. package/generation/markers/actions/MarkerNodeActionSelectRandom.js +1 -1
  277. package/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.js +1 -1
  278. package/generation/placement/action/random/CellActionSelectRandom.js +1 -1
  279. package/generation/theme/ThemeEngine.js +2 -2
  280. package/misc/makeMaterialIconCached.js +2 -2
  281. package/package.json +3 -3
  282. package/view/View.js +4 -2
  283. package/view/elements/image/HTMLElementCacheKey.js +2 -1
  284. package/view/elements/radial/RadialText.js +2 -1
  285. package/view/minimap/gl/MinimapMarkersGL.js +6 -100
  286. package/view/minimap/gl/buildMaterial.js +94 -0
  287. package/engine/graphics/micron/format/MicronGeometryBufferAttributeSpec.js +0 -71
  288. package/engine/graphics/render/forward_plus/queryBVH_Frustum.js +0 -345
@@ -8,25 +8,21 @@ import { max2 } from "../../../../core/math/max2.js";
8
8
  import { System } from '../../../ecs/System.js';
9
9
  import { Transform } from '../../../ecs/transform/Transform.js';
10
10
  import Vector3 from '../../../../core/geom/Vector3.js';
11
- import { computeHashFloat, computeHashIntegerArray } from '../../../../core/math/MathUtils.js';
12
11
 
13
12
  import Trail2D, { Trail2DFlags } from './Trail2D.js';
14
- import { ClampToEdgeWrapping, DoubleSide, LinearFilter, TextureLoader } from 'three';
15
13
 
16
14
  import { LeafNode } from '../../../../core/bvh2/LeafNode.js';
17
15
  import ThreeFactory from '../../three/ThreeFactory.js';
18
16
  import { GraphicsEngine } from "../../GraphicsEngine.js";
19
- import { ReferenceManager } from "../../../reference/v1/ReferenceManager.js";
20
- import { AssetManager } from "../../../asset/AssetManager.js";
21
- import { Cache } from "../../../../core/cache/Cache.js";
22
17
  import { RibbonXFixedPhysicsSimulator } from "../../trail/x/simulator/RibbonXFixedPhysicsSimulator.js";
23
18
  import { RibbonX } from "../../trail/x/RibbonX.js";
24
19
  import {
25
20
  RIBBON_ATTRIBUTE_ADDRESS_AGE,
26
21
  RIBBON_ATTRIBUTE_ADDRESS_UV_OFFSET
27
22
  } from "../../trail/x/ribbon_attributes_spec.js";
28
- import { RibbonMaterialX } from "../../trail/x/RibbonMaterialX.js";
29
- import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
23
+ import { Reference } from "../../../reference/v2/Reference.js";
24
+ import { RibbonXPlugin } from "../../trail/x/RibbonXPlugin.js";
25
+ import { assert } from "../../../../core/assert.js";
30
26
 
31
27
  const v3Temp1 = new Vector3();
32
28
 
@@ -34,69 +30,32 @@ const v3_array = [];
34
30
 
35
31
  class Trail2DSystem extends System {
36
32
  /**
37
- *
38
- * @param {GraphicsEngine} graphics
39
- * @param {AssetManager} assetManager
33
+ * @param {Engine} engine
40
34
  * @constructor
41
35
  */
42
- constructor(graphics, assetManager) {
36
+ constructor(engine) {
43
37
  super();
44
38
 
45
- this.dependencies = [Trail2D, Transform];
46
-
47
- if (!(graphics instanceof GraphicsEngine)) {
48
- throw new Error("'renderer' must be of type GraphicsEngine");
49
- }
50
-
51
- if (!(assetManager instanceof AssetManager)) {
52
- throw new Error("'assetManager' must be of type AssetManager");
53
- }
39
+ assert.defined(engine, 'engine');
40
+ assert.notNull(engine, 'engine');
41
+ assert.equal(engine.isEngine, true, 'engine.isEngine !== true');
54
42
 
55
- /**
56
- *
57
- * @type {GraphicsEngine}
58
- */
59
- this.graphics = graphics;
43
+ this.dependencies = [Trail2D, Transform];
60
44
 
61
45
  /**
62
46
  *
63
- * @type {AssetManager}
47
+ * @type {Engine}
48
+ * @private
64
49
  */
65
- this.assetManager = assetManager;
66
-
67
- function constructTexture(url) {
68
- const assetPromise = assetManager.promise(url, "texture");
69
-
70
- const texturePromise = assetPromise
71
- .then(function (asset) {
72
-
73
- const texture = asset.create();
74
-
75
- texture.wrapS = ClampToEdgeWrapping;
76
- texture.wrapT = ClampToEdgeWrapping;
77
-
78
- texture.magFilter = LinearFilter;
79
- texture.minFilter = LinearFilter;
50
+ this.__engine = engine;
80
51
 
81
- return texture;
82
- });
83
-
84
- return texturePromise;
85
- }
86
-
87
- function destructTexture(url, texturePromise) {
88
- texturePromise.then(function (t) {
89
- //release used resourced
90
- t.dispose();
91
- });
92
- }
52
+ const graphics = engine.graphics;
93
53
 
94
54
  /**
95
55
  *
96
- * @type {ReferenceManager<string,Promise.<THREE.Texture>>}
56
+ * @type {GraphicsEngine}
97
57
  */
98
- this.textures = new ReferenceManager(constructTexture, destructTexture);
99
-
58
+ this.graphics = graphics;
100
59
 
101
60
  /**
102
61
  *
@@ -117,28 +76,11 @@ class Trail2DSystem extends System {
117
76
  this.simulator = new RibbonXFixedPhysicsSimulator();
118
77
 
119
78
  /**
79
+ *
80
+ * @type {Reference<RibbonXPlugin>}
120
81
  * @private
121
- * @readonly
122
- * @type {Cache<Trail2D, Material>}
123
82
  */
124
- this.materialCache = new Cache({
125
- maxWeight: 100,
126
- keyHashFunction(trail) {
127
- return computeHashIntegerArray(
128
- computeStringHash(trail.textureURL),
129
- computeHashFloat(trail.width),
130
- computeHashFloat(trail.maxAge),
131
- trail.color.hash()
132
- );
133
- },
134
- keyEqualityFunction(a, b) {
135
- return a.textureURL === b.textureURL
136
- && a.width === b.width
137
- && a.maxAge === b.maxAge
138
- && a.color.equals(b.color)
139
- ;
140
- }
141
- });
83
+ this.__ribbon_plugin = Reference.NULL;
142
84
 
143
85
 
144
86
  /**
@@ -149,7 +91,7 @@ class Trail2DSystem extends System {
149
91
  this.__timeDelta = 0;
150
92
  }
151
93
 
152
- startup(entityManager, readyCallback, errorCallback) {
94
+ async startup(entityManager, readyCallback, errorCallback) {
153
95
  this.entityManager = entityManager;
154
96
 
155
97
  this.renderLayer = this.graphics.layers.create('trail-2d-system');
@@ -161,19 +103,7 @@ class Trail2DSystem extends System {
161
103
 
162
104
  this.bvh = this.renderLayer.bvh;
163
105
 
164
-
165
- this.graphics.viewport.size.onChanged.add((x, y) => {
166
- const ecd = this.entityManager.dataset;
167
-
168
- if (ecd === null) {
169
- // no dataset attached
170
- return;
171
- }
172
-
173
- ecd.traverseComponents(Trail2D, trail => {
174
- trail.material.uniforms.resolution.value.set(x, y);
175
- });
176
- });
106
+ this.__ribbon_plugin = await this.__engine.plugins.acquire(RibbonXPlugin);
177
107
 
178
108
  readyCallback();
179
109
  }
@@ -181,32 +111,9 @@ class Trail2DSystem extends System {
181
111
  shutdown(entityManager, readyCallback, errorCallback) {
182
112
  this.graphics.layers.remove(this.renderLayer);
183
113
 
184
- readyCallback();
185
- }
186
-
187
- /**
188
- *
189
- * @param {Trail2D} trail
190
- * @returns {Material}
191
- */
192
- obtainMaterial(trail) {
193
-
194
- const material = new RibbonMaterialX({
195
- transparent: true,
196
- depthWrite: false,
197
- wireframe: false,
198
- side: DoubleSide,
199
- defines: {
200
- USE_TEXTURE: false
201
- }
202
- });
203
-
204
- if (trail.textureURL !== null) {
205
- material.uniforms.uDiffuse.value = new TextureLoader().load(trail.textureURL);
206
- material.defines.USE_TEXTURE = true;
207
- }
114
+ this.__ribbon_plugin.release();
208
115
 
209
- return material;
116
+ readyCallback();
210
117
  }
211
118
 
212
119
  /**
@@ -231,9 +138,9 @@ class Trail2DSystem extends System {
231
138
 
232
139
  const geometry = ribbon.getGeometry();
233
140
 
234
- const material = this.obtainMaterial(trail);
141
+ const ribbons = this.__ribbon_plugin.getValue();
235
142
 
236
- material.uniforms.resolution.value.copy(this.graphics.viewport.size);
143
+ const material = ribbons.obtain_material_x(trail.material);
237
144
 
238
145
  const mesh = ThreeFactory.createMesh(geometry, material);
239
146
 
@@ -274,12 +181,21 @@ class Trail2DSystem extends System {
274
181
  );
275
182
 
276
183
  trail.bvhLeaf = leafNode;
277
- trail.material = material;
278
184
 
279
185
  this.bvh.insertNode(leafNode);
280
186
  }
281
187
 
188
+ /**
189
+ *
190
+ * @param {Trail2D} component
191
+ * @param {Transform} transform
192
+ * @param {number} entity
193
+ */
282
194
  unlink(component, transform, entity) {
195
+
196
+ // release resources
197
+ component.dispose();
198
+
283
199
  component.bvhLeaf.disconnect();
284
200
  }
285
201
 
@@ -0,0 +1,105 @@
1
+ import { DataType } from "../../../core/collection/table/DataType.js";
2
+ import { computeStringHash } from "../../../core/primitives/strings/computeStringHash.js";
3
+ import { DataTypeByteSizes } from "../../../core/collection/table/DataTypeByteSizes.js";
4
+ import { assert } from "../../../core/assert.js";
5
+
6
+ export class AttributeSpec {
7
+ constructor() {
8
+ /**
9
+ *
10
+ * @type {string}
11
+ */
12
+ this.name = "";
13
+
14
+ /**
15
+ *
16
+ * @type {DataType}
17
+ */
18
+ this.type = DataType.Float32;
19
+
20
+ /**
21
+ *
22
+ * @type {number}
23
+ */
24
+ this.itemSize = 1;
25
+
26
+ /**
27
+ * Normalized values will be automatically converted to float32 in the shader
28
+ * This gives good optimization opportunities for things like normal vectors
29
+ * Applies to integer types only
30
+ * @type {boolean}
31
+ */
32
+ this.normalized = false;
33
+ }
34
+
35
+ static fromJSON(j) {
36
+ const r = new AttributeSpec();
37
+
38
+ r.fromJSON(j);
39
+
40
+ return r;
41
+ }
42
+
43
+ fromJSON({
44
+ name,
45
+ type,
46
+ itemSize,
47
+ normalized = false
48
+ }) {
49
+
50
+ assert.isString(name, 'name');
51
+ assert.enum(type, DataType, 'type');
52
+
53
+ assert.isNumber(itemSize, 'itemSize');
54
+ assert.isNonNegativeInteger(itemSize, 'itemSize');
55
+ assert.greaterThanOrEqual(itemSize, 1, 'itemSize must be >= 1');
56
+
57
+ assert.isBoolean(normalized, 'normalized');
58
+
59
+ this.name = name;
60
+ this.type = type;
61
+ this.itemSize = itemSize;
62
+ this.normalized = normalized;
63
+ }
64
+
65
+ hash() {
66
+ return computeStringHash(this.name);
67
+ }
68
+
69
+ /**
70
+ *
71
+ * @param {AttributeSpec} other
72
+ * @returns {boolean}
73
+ */
74
+ equals(other) {
75
+ return this.type === other.type
76
+ && this.itemSize === other.itemSize
77
+ && this.normalized === other.normalized
78
+ && this.name === other.name
79
+ ;
80
+ }
81
+
82
+ /**
83
+ *
84
+ * @returns {number}
85
+ */
86
+ getByteSize() {
87
+ return this.itemSize * DataTypeByteSizes[this.type];
88
+ }
89
+
90
+ /**
91
+ *
92
+ * @param {AttributeSpec} a
93
+ * @param {AttributeSpec} b
94
+ * @return {number}
95
+ */
96
+ static byName(a, b) {
97
+ return a.name.localeCompare(b.name);
98
+ }
99
+ }
100
+
101
+ /**
102
+ * @readonly
103
+ * @type {boolean}
104
+ */
105
+ AttributeSpec.prototype.isAttributeSpec = true;
@@ -1,14 +1,14 @@
1
- import { isArrayEqual } from "../../../../core/collection/ArrayUtils.js";
2
- import { computeHashArray } from "../../../../core/math/MathUtils.js";
3
- import { invokeObjectHash } from "../../../../core/model/object/invokeObjectHash.js";
1
+ import { isArrayEqual } from "../../../core/collection/ArrayUtils.js";
2
+ import { invokeObjectHash } from "../../../core/model/object/invokeObjectHash.js";
3
+ import { computeHashArray } from "../../../core/collection/array/computeHashArray.js";
4
4
 
5
5
  const DEFAULT_HASH = 123456;
6
6
 
7
- export class MicronVertexDataSpec {
7
+ export class VertexDataSpec {
8
8
  constructor() {
9
9
  /**
10
10
  *
11
- * @type {MicronGeometryBufferAttributeSpec[]}
11
+ * @type {AttributeSpec[]}
12
12
  */
13
13
  this.attributes = [];
14
14
 
@@ -22,7 +22,49 @@ export class MicronVertexDataSpec {
22
22
 
23
23
  /**
24
24
  *
25
- * @param {MicronGeometryBufferAttributeSpec[]} attributes
25
+ * @param {string} name
26
+ * @return {AttributeSpec|undefined}
27
+ */
28
+ getAttributeByName(name) {
29
+
30
+ const attributes = this.attributes;
31
+ const n = attributes.length;
32
+
33
+ for (let i = 0; i < n; i++) {
34
+ const attribute = attributes[i];
35
+
36
+ if (attribute.name === name) {
37
+ return attribute;
38
+ }
39
+ }
40
+
41
+ return undefined;
42
+ }
43
+
44
+ /**
45
+ *
46
+ * @param {AttributeSpec} attribute
47
+ * @return {VertexDataSpec}
48
+ */
49
+ add(attribute) {
50
+
51
+ //check uniqueness of name
52
+ if (this.getAttributeByName(attribute.name) !== undefined) {
53
+ throw new Error(`Attribute named '${attribute.name}' already exists`);
54
+ }
55
+
56
+ this.attributes.push(attribute);
57
+
58
+ // reset hash
59
+ this.__hash = DEFAULT_HASH;
60
+
61
+ //for chaining, return self
62
+ return this;
63
+ }
64
+
65
+ /**
66
+ *
67
+ * @param {AttributeSpec[]} attributes
26
68
  */
27
69
  setAttributes(attributes) {
28
70
  this.attributes = attributes;
@@ -33,7 +75,7 @@ export class MicronVertexDataSpec {
33
75
 
34
76
  /**
35
77
  *
36
- * @param {MicronVertexDataSpec} other
78
+ * @param {VertexDataSpec} other
37
79
  * @returns {boolean}
38
80
  */
39
81
  equals(other) {
@@ -56,24 +98,6 @@ export class MicronVertexDataSpec {
56
98
  return this.__hash;
57
99
  }
58
100
 
59
- /**
60
- *
61
- * @param {string} name
62
- * @return {MicronGeometryBufferAttributeSpec|undefined}
63
- */
64
- getAttributeByName(name) {
65
- const attributes = this.attributes;
66
- const n = attributes.length;
67
- for (let i = 0; i < n; i++) {
68
- const spec = attributes[i];
69
-
70
- if (spec.name === name) {
71
- return spec;
72
- }
73
- }
74
-
75
- }
76
-
77
101
  /**
78
102
  *
79
103
  * @returns {number}
@@ -93,3 +117,10 @@ export class MicronVertexDataSpec {
93
117
  return result;
94
118
  }
95
119
  }
120
+
121
+
122
+ /**
123
+ * @readonly
124
+ * @type {boolean}
125
+ */
126
+ VertexDataSpec.prototype.isVertexDataSpec = true;
@@ -2,7 +2,7 @@ import { TopoMesh } from "../../../../core/geom/3d/topology/TopoMesh.js";
2
2
  import { PatchRepresentation } from "./PatchRepresentation.js";
3
3
  import { MicronGeometry } from "../format/MicronGeometry.js";
4
4
  import { buildAbstractPatchHierarchy } from "./hierarchy/buildAbstractPatchHierarchy.js";
5
- import { MicronGeometryBufferAttributeSpec } from "../format/MicronGeometryBufferAttributeSpec.js";
5
+ import { AttributeSpec } from "../../geometry/AttributeSpec.js";
6
6
  import { typedArrayToDataType } from "../../../../core/collection/array/typedArrayToDataType.js";
7
7
  import { DataType } from "../../../../core/collection/table/DataType.js";
8
8
  import { MicronGeometryPatch } from "../format/MicronGeometryPatch.js";
@@ -28,7 +28,7 @@ function current_time_millis() {
28
28
 
29
29
  /**
30
30
  *
31
- * @param {MicronGeometryBufferAttributeSpec} spec
31
+ * @param {AttributeSpec} spec
32
32
  * @param {THREE.BufferAttribute} source
33
33
  */
34
34
  function custom_attribute_format_normal(spec, source) {
@@ -39,7 +39,7 @@ function custom_attribute_format_normal(spec, source) {
39
39
 
40
40
  /**
41
41
  *
42
- * @param {MicronGeometryBufferAttributeSpec} spec
42
+ * @param {AttributeSpec} spec
43
43
  * @param {THREE.BufferAttribute} source
44
44
  */
45
45
  function custom_attribute_format_uv(spec, source) {
@@ -49,7 +49,7 @@ function custom_attribute_format_uv(spec, source) {
49
49
 
50
50
  /**
51
51
  *
52
- * @param {MicronGeometryBufferAttributeSpec} spec
52
+ * @param {AttributeSpec} spec
53
53
  * @param {THREE.BufferAttribute} source
54
54
  * @param {string} name
55
55
  */
@@ -76,7 +76,7 @@ function format_attribute(spec, source, name) {
76
76
  /**
77
77
  *
78
78
  * @param {THREE.BufferGeometry} buffer_geometry
79
- * @returns {MicronGeometryBufferAttributeSpec[]}
79
+ * @returns {AttributeSpec[]}
80
80
  */
81
81
  function attributes_from_buffer_geometry(buffer_geometry) {
82
82
  const result = [];
@@ -84,7 +84,7 @@ function attributes_from_buffer_geometry(buffer_geometry) {
84
84
  const source_attributes = buffer_geometry.attributes;
85
85
  for (const attributesKey in source_attributes) {
86
86
  const source_attribute = source_attributes[attributesKey];
87
- const spec = new MicronGeometryBufferAttributeSpec();
87
+ const spec = new AttributeSpec();
88
88
 
89
89
  format_attribute(spec, source_attribute, attributesKey);
90
90
 
@@ -92,7 +92,7 @@ function attributes_from_buffer_geometry(buffer_geometry) {
92
92
  }
93
93
 
94
94
  // to ensure that input order of attributes does not matter, we sort the attributes by name
95
- result.sort(MicronGeometryBufferAttributeSpec.byName);
95
+ result.sort(AttributeSpec.byName);
96
96
 
97
97
  return result;
98
98
  }
@@ -110,7 +110,7 @@ const DataConverterType = {
110
110
 
111
111
  /**
112
112
  * How to convert data from source three.js buffer attribute to what we store in the patch description based on the supplied micron spec
113
- * @param {MicronGeometryBufferAttributeSpec} spec
113
+ * @param {AttributeSpec} spec
114
114
  * @param {THREE.BufferAttribute} source
115
115
  * @returns {DataConverterType}
116
116
  */
@@ -2,7 +2,7 @@ import { FrontSide, Group, Mesh, MeshBasicMaterial, MeshStandardMaterial } from
2
2
  import { patchToBufferGeometry } from "./util/patchToBufferGeometry.js";
3
3
  import { Color } from "../../../core/color/Color.js";
4
4
  import { seededRandom } from "../../../core/math/random/seededRandom.js";
5
- import { randomFloatBetween } from "../../../core/math/MathUtils.js";
5
+ import { randomFloatBetween } from "../../../core/math/random/randomFloatBetween.js";
6
6
 
7
7
  /**
8
8
  *
@@ -1,4 +1,4 @@
1
- import { MicronVertexDataSpec } from "./MicronVertexDataSpec.js";
1
+ import { VertexDataSpec } from "../../geometry/VertexDataSpec.js";
2
2
  import { assert } from "../../../../core/assert.js";
3
3
 
4
4
  let id_counter = 0;
@@ -30,9 +30,9 @@ export class MicronGeometry {
30
30
 
31
31
  /**
32
32
  *
33
- * @type {MicronVertexDataSpec|null}
33
+ * @type {VertexDataSpec|null}
34
34
  */
35
- this.vertex_spec = new MicronVertexDataSpec();
35
+ this.vertex_spec = new VertexDataSpec();
36
36
 
37
37
  /**
38
38
  *
@@ -1,6 +1,6 @@
1
1
  import { BinaryClassSerializationAdapter } from "../../../../ecs/storage/binary/BinaryClassSerializationAdapter.js";
2
2
  import { MicronGeometry } from "../MicronGeometry.js";
3
- import { MicronGeometryBufferAttributeSpec } from "../MicronGeometryBufferAttributeSpec.js";
3
+ import { AttributeSpec } from "../../../geometry/AttributeSpec.js";
4
4
  import { MicronGeometryPatch } from "../MicronGeometryPatch.js";
5
5
  import { serialize_patch } from "./serialize_patch.js";
6
6
  import { deserialize_patch } from "./deserialize_patch.js";
@@ -63,7 +63,7 @@ export class MicronGeometryBinarySerializationAdapter extends BinaryClassSeriali
63
63
  const attribute_count = buffer.readUintVar();
64
64
  const attributes = [];
65
65
  for (let i = 0; i < attribute_count; i++) {
66
- const spec = new MicronGeometryBufferAttributeSpec();
66
+ const spec = new AttributeSpec();
67
67
 
68
68
  deserialize_attribute_spec(buffer, spec);
69
69
  attributes[i] = spec;
@@ -3,7 +3,7 @@ import { computeDataTypeByIndex } from "../../../../../core/collection/table/com
3
3
  /**
4
4
  *
5
5
  * @param {BinaryBuffer} buffer
6
- * @param {MicronGeometryBufferAttributeSpec} spec
6
+ * @param {AttributeSpec} spec
7
7
  */
8
8
  export function deserialize_attribute_spec(buffer, spec) {
9
9
 
@@ -3,7 +3,7 @@ import { DataTypeIndices } from "../../../../../core/collection/table/DataTypeIn
3
3
  /**
4
4
  *
5
5
  * @param {BinaryBuffer} buffer
6
- * @param {MicronGeometryBufferAttributeSpec} spec
6
+ * @param {AttributeSpec} spec
7
7
  */
8
8
  export function serialize_attribute_spec(buffer, spec) {
9
9
  buffer.writeUTF8String(spec.name);
@@ -1,7 +1,7 @@
1
1
  import { mortonEncode_magicbits } from "../../../../core/geom/3d/morton/mortonEncode_magicbits.js";
2
- import { computeHashFloat } from "../../../../core/math/MathUtils.js";
3
2
  import { isArrayEqualStrict } from "../../../../core/collection/array/isArrayEqualStrict.js";
4
3
  import { SimpleObjectPoolFactory } from "../../../../core/model/object/SimpleObjectPoolFactory.js";
4
+ import { computeHashFloat } from "../../../../core/math/hash/computeHashFloat.js";
5
5
 
6
6
  export class PatchCacheKey {
7
7
  constructor() {
@@ -53,18 +53,18 @@ function normalized_internal_format(dt, channel_count) {
53
53
  export class AttributeDataTexture {
54
54
  /**
55
55
  *
56
- * @param {MicronGeometryBufferAttributeSpec} spec
56
+ * @param {AttributeSpec} spec
57
57
  * @param {number} column_count
58
58
  */
59
59
  constructor(spec, column_count) {
60
60
  assert.defined(spec, 'spec');
61
- assert.equal(spec.isMicronGeometryBufferAttributeSpec, true, 'spec.isMicronGeometryBufferAttributeSpec !== true');
61
+ assert.equal(spec.isAttributeSpec, true, 'spec.isAttributeSpec !== true');
62
62
 
63
63
  assert.isNonNegativeInteger(column_count, 'column_count');
64
64
 
65
65
  /**
66
66
  *
67
- * @type {MicronGeometryBufferAttributeSpec}
67
+ * @type {AttributeSpec}
68
68
  * @private
69
69
  */
70
70
  this.__spec = spec;
@@ -90,7 +90,7 @@ export class AttributeDataTexture {
90
90
 
91
91
  /**
92
92
  *
93
- * @return {MicronGeometryBufferAttributeSpec}
93
+ * @return {AttributeSpec}
94
94
  */
95
95
  get spec() {
96
96
  return this.__spec;
@@ -320,7 +320,7 @@ export class AttributeDataTexture {
320
320
  /**
321
321
  *
322
322
  * @return {AttributeDataTexture}
323
- * @param {MicronGeometryBufferAttributeSpec} spec
323
+ * @param {AttributeSpec} spec
324
324
  * @param {number} column_count
325
325
  */
326
326
  static from(spec, column_count) {
@@ -4,7 +4,7 @@ import { DataType2TypedArrayConstructorMapping } from "../../../../../core/colle
4
4
  import { getTransformedPositionsCached } from "./getTransformedPositionsCached.js";
5
5
  import { Color } from "../../../../../core/color/Color.js";
6
6
  import { seededRandom } from "../../../../../core/math/random/seededRandom.js";
7
- import { randomFloatBetween } from "../../../../../core/math/MathUtils.js";
7
+ import { randomFloatBetween } from "../../../../../core/math/random/randomFloatBetween.js";
8
8
 
9
9
 
10
10
  const scratch_random = seededRandom(0);
@@ -2,6 +2,9 @@ import { ParticleEmitter } from "./particular/engine/emitter/ParticleEmitter.js"
2
2
  import { GameAssetType } from "../../asset/GameAssetType.js";
3
3
  import { assert } from "../../../core/assert.js";
4
4
 
5
+ /**
6
+ * @deprecated Use "Effect" API to achieve the same results
7
+ */
5
8
  export class ParticleEmitterLibrary {
6
9
  /**
7
10
  *