@woosh/meep-engine 2.33.20 → 2.33.24

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 (285) hide show
  1. package/core/assert.js +3 -1
  2. package/core/bvh2/BinaryNode.js +1 -1
  3. package/core/bvh2/aabb3/AABB3.js +18 -0
  4. package/core/bvh2/aabb3/AABB3Math.js +1 -1
  5. package/core/bvh2/binary/2/BinaryUint32BVH.js +498 -0
  6. package/core/bvh2/binary/2/BinaryUint32BVH.spec.js +54 -0
  7. package/core/bvh2/binary/IndexedBinaryBVH.js +22 -26
  8. package/core/bvh2/traversal/__detailed_box_volume_intersection.js +11 -8
  9. package/core/collection/ArrayUtils.js +1 -1
  10. package/core/collection/HashMap.js +66 -22
  11. package/core/collection/array/arrayQuickSort.js +9 -6
  12. package/core/collection/array/array_swap.js +22 -0
  13. package/core/collection/array/computeHashArray.js +22 -0
  14. package/core/collection/array/computeHashIntegerArray.js +15 -0
  15. package/core/collection/table/DataType2TypedArrayConstructorMapping.js +15 -0
  16. package/core/color/Color.js +2 -1
  17. package/core/function/FunctionCompiler.js +2 -1
  18. package/core/geom/3d/CircleMath.js +4 -4
  19. package/core/geom/3d/aabb/aabb3_computeDistanceAbovePlane.js +9 -33
  20. package/core/geom/3d/cone/computeConeBoundingBox.js +4 -4
  21. package/core/geom/3d/{compute_bounding_cone_of_2_cones.js → cone/compute_bounding_cone_of_2_cones.js} +3 -3
  22. package/core/geom/3d/{compute_bounding_cone_of_2_cones.spec.js → cone/compute_bounding_cone_of_2_cones.spec.js} +1 -1
  23. package/core/geom/3d/frustum/array_setFromProjectionMatrix.js +1 -1
  24. package/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +11 -3
  25. package/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +41 -0
  26. package/core/geom/3d/morton/mortonEncode_magicbits.js +2 -1
  27. package/core/geom/3d/morton/reinterpret_float32_as_int32.js +13 -0
  28. package/core/geom/3d/morton/v3_morton_encode_transformed.js +33 -0
  29. package/core/geom/3d/{encode_unit3_hemioct.js → normal/hemioct/encode_unit3_hemioct.js} +0 -0
  30. package/core/geom/3d/{unit_hemioct.spec.js → normal/hemioct/unit_hemioct.spec.js} +1 -1
  31. package/core/geom/3d/normal/lamber_azimuth/transform.js +61 -0
  32. package/core/geom/3d/normal/spherical/sphere_map_transform.js +77 -0
  33. package/core/geom/3d/{lerp_planes_to_array.js → plane/lerp_planes_to_array.js} +1 -3
  34. package/core/geom/3d/plane/plane3_lerp.js +3 -1
  35. package/core/geom/3d/plane/plane3_slerp.js +4 -1
  36. package/core/geom/3d/{plane_computeConvex3PlaneIntersection.js → plane/plane_computeConvex3PlaneIntersection.js} +14 -16
  37. package/core/geom/3d/ray/ray_computeNearestPointToPoint.js +37 -0
  38. package/core/geom/3d/shape/AbstractShape3D.js +29 -0
  39. package/core/geom/3d/shape/CompositeShape.js +60 -0
  40. package/core/geom/3d/shape/TransformedShape3D.js +70 -0
  41. package/core/geom/3d/shape/UnitCubeShape3D.js +13 -0
  42. package/core/geom/3d/shape/UnitSphereShape3D.js +16 -0
  43. package/core/geom/3d/topology/TopoTriangle.js +1 -1
  44. package/core/geom/3d/topology/TopoVertex.js +1 -1
  45. package/core/geom/3d/topology/bounds/computeTraingleClusterNormalBoundingCone.js +2 -2
  46. package/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +1 -1
  47. package/core/geom/3d/topology/simplify/quadratic/Quadratic3.js +1 -1
  48. package/core/geom/3d/triangle/computeTrianglePlaneSide.js +1 -1
  49. package/core/geom/3d/triangle/computeTriangleRayIntersection.js +1 -1
  50. package/core/geom/3d/voxel/DenseBitVolume3D.js +87 -0
  51. package/core/geom/3d/voxel/buildVolumeFromProjectedGeometry.js +23 -0
  52. package/core/geom/AABB2.js +1 -1
  53. package/core/geom/ConicRay.js +3 -1
  54. package/core/geom/LineSegment.js +1 -77
  55. package/core/geom/Matrix4.js +8 -8
  56. package/core/geom/Plane.js +15 -10
  57. package/core/geom/Quaternion.js +2 -1
  58. package/core/geom/Rectangle.js +2 -1
  59. package/core/geom/Vector1.js +1 -1
  60. package/core/geom/Vector3.d.ts +2 -0
  61. package/core/geom/Vector3.js +35 -159
  62. package/core/geom/Vector3.spec.js +2 -1
  63. package/core/geom/Vector4.js +2 -1
  64. package/core/geom/random/randomPointInBox.js +7 -3
  65. package/core/geom/random/randomPointInPoint.js +6 -3
  66. package/core/geom/random/randomPointInSphere.js +6 -3
  67. package/core/geom/random/randomPointOnBox.js +7 -3
  68. package/core/geom/random/randomPointOnSphere.js +6 -3
  69. package/core/geom/v3_angle_between.js +31 -0
  70. package/core/geom/v3_distance.js +16 -0
  71. package/core/geom/v3_distance_sqr.js +17 -0
  72. package/core/geom/v3_dot.js +13 -0
  73. package/core/geom/v3_length.js +10 -0
  74. package/core/geom/v3_length_sqr.js +10 -0
  75. package/core/geom/v3_lerp.js +21 -0
  76. package/core/geom/v3_slerp.js +48 -0
  77. package/core/graph/graph_k_means_cluster.js +1 -1
  78. package/core/math/MathUtils.js +0 -354
  79. package/core/math/MathUtils.spec.js +7 -1
  80. package/core/math/gaussian.js +9 -0
  81. package/core/math/hash/computeHashFloat.js +17 -0
  82. package/core/math/hash/computeHashFloatArray.js +34 -0
  83. package/core/math/hash/computeObjectHash.js +54 -0
  84. package/core/math/intersects1D.js +19 -0
  85. package/core/math/interval/NumericInterval.js +2 -2
  86. package/core/math/isValueBetween.js +10 -0
  87. package/core/math/isValueBetweenInclusive.js +10 -0
  88. package/core/math/noise/curl_noise_3dt.js +1 -1
  89. package/core/math/noise/sdnoise.js +10 -10
  90. package/core/math/overlap1D.js +19 -0
  91. package/core/math/pingpong.js +17 -0
  92. package/core/math/random/makeRangedRandom.js +19 -0
  93. package/core/math/random/randomFloatBetween.js +14 -0
  94. package/core/math/random/randomFromArray.js +19 -0
  95. package/core/math/random/randomGaussian.js +15 -0
  96. package/core/math/random/randomIntegerBetween.js +14 -0
  97. package/core/math/random/roundFair.js +15 -0
  98. package/core/math/separation1D.js +21 -0
  99. package/core/math/solveQuadratic.js +25 -0
  100. package/core/model/BoundedValue.js +1 -1
  101. package/core/model/node-graph/node/NodeInstancePortReference.js +1 -1
  102. package/core/model/node-graph/node/Port.js +1 -1
  103. package/core/model/reactive/evaluation/MultiPredicateEvaluator.spec.js +3 -1
  104. package/core/model/reactive/model/ReactiveBinaryExpression.js +1 -1
  105. package/core/model/reactive/model/terminal/ReactiveLiteralNumber.js +1 -1
  106. package/core/model/reactive/model/terminal/ReactiveReference.js +1 -1
  107. package/core/model/reactive/model/util/createRandomReactiveExpression.js +1 -1
  108. package/core/model/stat/LinearModifier.js +1 -1
  109. package/core/primitives/array/computeIntegerArrayHash.js +6 -1
  110. package/engine/animation/curve/AnimationCurve.js +72 -0
  111. package/engine/animation/curve/Keyframe.js +27 -0
  112. package/engine/animation/keyed2/AnimationTrack.js +27 -3
  113. package/engine/asset/Asset.js +1 -1
  114. package/engine/asset/loaders/GLTFAssetLoader.d.ts +1 -1
  115. package/engine/asset/loaders/GLTFAssetLoader.js +10 -0
  116. package/engine/asset/loaders/image/ImageRGBADataAsset.js +8 -1
  117. package/engine/asset/loaders/material/computeImageBitmapEquality.js +11 -0
  118. package/engine/asset/loaders/material/computeImageBitmapHash.js +22 -28
  119. package/engine/asset/loaders/material/computeMaterialHash.js +4 -3
  120. package/engine/asset/loaders/material/computeTextureEquality.js +13 -5
  121. package/engine/asset/loaders/material/computeTextureHash.js +2 -1
  122. package/engine/ecs/animation/Animation.js +2 -1
  123. package/engine/ecs/animation/InverseKinematics.js +2 -1
  124. package/engine/ecs/animation/OneBoneSurfaceAlignmentSolver.js +3 -1
  125. package/engine/ecs/animation/TwoBoneInverseKinematicsSolver.js +3 -1
  126. package/engine/ecs/dynamic_actions/DynamicActorSystem.js +2 -1
  127. package/engine/ecs/dynamic_actions/DynamicRuleDescriptionTable.spec.js +3 -5
  128. package/engine/ecs/dynamic_actions/actions/definition/WeightedRandomActionDescription.js +1 -1
  129. package/engine/ecs/evaluation/complex/PointFitnessGaussianBlur.js +1 -1
  130. package/engine/ecs/foliage/ecs/Foliage2.js +1 -1
  131. package/engine/ecs/fow/FogOfWar.js +2 -3
  132. package/engine/ecs/fow/shader/FogOfWarRenderer.js +1 -1
  133. package/engine/ecs/gui/GUIElement.js +1 -1
  134. package/engine/ecs/gui/hud/HeadsUpDisplay.js +1 -1
  135. package/engine/ecs/gui/hud/HeadsUpDisplaySystem.js +1 -1
  136. package/engine/ecs/gui/position/ViewportPosition.js +2 -1
  137. package/engine/ecs/systems/RangedAttackSystem.js +1 -1
  138. package/engine/ecs/systems/SteeringSystem.js +3 -2
  139. package/engine/ecs/terrain/ecs/Terrain.js +6 -0
  140. package/engine/ecs/terrain/ecs/layers/TerrainLayers.js +5 -0
  141. package/engine/ecs/terrain/ecs/splat/SplatMapping.js +5 -0
  142. package/engine/ecs/terrain/tiles/TerrainTileManager.js +1 -1
  143. package/engine/ecs/tooltip/TooltipComponent.js +15 -0
  144. package/engine/ecs/util/hideEntityGracefully.js +18 -0
  145. package/engine/graphics/GraphicsEngine.js +1 -0
  146. package/engine/graphics/camera/testClippingPlaneComputation.js +2 -2
  147. package/engine/graphics/ecs/animation/animator/AnimationClip.js +2 -1
  148. package/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -1
  149. package/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -1
  150. package/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -1
  151. package/engine/graphics/ecs/animation/animator/graph/AnimationGraph.js +2 -1
  152. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -1
  153. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +1 -1
  154. package/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +2 -1
  155. package/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +2 -2
  156. package/engine/graphics/ecs/highlight/HighlightDefinition.js +2 -1
  157. package/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +0 -53
  158. package/engine/graphics/ecs/light/Light.d.ts +1 -1
  159. package/engine/graphics/ecs/light/Light.js +3 -0
  160. package/engine/graphics/ecs/mesh/Mesh.js +2 -1
  161. package/engine/graphics/ecs/mesh-v2/ShadedGeometry.d.ts +13 -0
  162. package/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.d.ts +6 -0
  163. package/engine/graphics/ecs/path/testPathDisplaySystem.js +98 -98
  164. package/engine/graphics/ecs/trail2d/Trail2D.js +17 -4
  165. package/engine/graphics/ecs/trail2d/Trail2DSystem.d.ts +2 -3
  166. package/engine/graphics/ecs/trail2d/Trail2DSystem.js +34 -118
  167. package/engine/graphics/geometry/AttributeSpec.js +105 -0
  168. package/engine/graphics/{micron/format/MicronVertexDataSpec.js → geometry/VertexDataSpec.js} +56 -25
  169. package/engine/graphics/geometry/bvh/buffered/BVHGeometryRaycaster.js +2 -1
  170. package/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +7 -7
  171. package/engine/graphics/micron/build/clustering/computeFaceCurvatureScore.js +1 -1
  172. package/engine/graphics/micron/build/clustering/compute_face_connection_weight.js +1 -1
  173. package/engine/graphics/micron/build/fill_patch_geometry_data.js +1 -1
  174. package/engine/graphics/micron/build/hierarchy/computePatchMergeScore.js +1 -1
  175. package/engine/graphics/micron/build/hierarchy/patch_combine.js +1 -1
  176. package/engine/graphics/micron/buildPatchwork.js +1 -1
  177. package/engine/graphics/micron/format/MicronGeometry.js +3 -3
  178. package/engine/graphics/micron/format/serialization/MicronGeometryBinarySerializationAdapter.js +2 -2
  179. package/engine/graphics/micron/format/serialization/deserialize_attribute_spec.js +1 -1
  180. package/engine/graphics/micron/format/serialization/serialize_attribute_spec.js +1 -1
  181. package/engine/graphics/micron/render/PatchCacheKey.js +1 -1
  182. package/engine/graphics/micron/render/instanced/AttributeDataTexture.js +5 -5
  183. package/engine/graphics/micron/render/refinement/is_patch_facing_back.js +2 -2
  184. package/engine/graphics/micron/render/v1/ThreeVirtualGeometryAdapter.js +1 -1
  185. package/engine/graphics/particles/particular/engine/ParticularEngine.js +4 -2
  186. package/engine/graphics/particles/particular/engine/emitter/PARTICULAR_PARTICLE_SPECIFICATION.js +84 -0
  187. package/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +92 -144
  188. package/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +14 -3
  189. package/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +51 -12
  190. package/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +3 -2
  191. package/engine/graphics/particles/particular/engine/emitter/computeEmissionFunction.js +37 -0
  192. package/engine/graphics/particles/particular/engine/emitter/distance_to_camera.js +25 -0
  193. package/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +8 -2
  194. package/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.js +2 -1
  195. package/engine/graphics/particles/particular/engine/parameter/ParameterTrack.js +1 -1
  196. package/engine/graphics/particles/particular/engine/parameter/ParticleParameter.js +1 -1
  197. package/engine/graphics/particles/particular/engine/renderers/billboard/BILLBOARD_PARTICLE_SPECIFICATION.js +21 -0
  198. package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +0 -20
  199. package/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +9 -9
  200. package/engine/graphics/particles/particular/engine/shader/ShaderManager.js +7 -25
  201. package/engine/graphics/particles/particular/engine/simulator/SimulationStepApplyForce.js +2 -5
  202. package/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseAcceleration.js +2 -6
  203. package/engine/graphics/particles/particular/engine/simulator/SimulationStepCurlNoiseVelocity.js +2 -7
  204. package/engine/graphics/particles/particular/engine/simulator/SimulationStepFixedPhysics.js +2 -5
  205. package/engine/graphics/particles/particular/engine/simulator/update_parameters.js +1 -1
  206. package/engine/graphics/particles/particular/engine/utils/distributeParticlesOnObject3D.js +1 -1
  207. package/engine/graphics/particles/particular/engine/utils/distrubuteParticlesOnMesh.js +1 -1
  208. package/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +384 -0
  209. package/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +558 -0
  210. package/engine/graphics/particles/particular/group/Operation.js +18 -0
  211. package/engine/graphics/particles/particular/group/OperationType.js +9 -0
  212. package/engine/graphics/particles/particular/group/ParticleAttribute.js +2 -1
  213. package/engine/graphics/particles/particular/group/ParticleAttributeType.js +11 -0
  214. package/engine/graphics/particles/particular/group/ParticleDataType.js +10 -0
  215. package/engine/graphics/particles/particular/group/ParticleGroup.js +7 -245
  216. package/engine/graphics/particles/particular/group/ParticleGroup.spec.js +3 -1
  217. package/engine/graphics/particles/particular/group/ParticleSpecification.js +21 -14
  218. package/engine/graphics/particles/particular/group/itemSizeFromAttributeType.js +20 -0
  219. package/engine/graphics/particles/particular/group/optimizeCommandQueue.js +162 -0
  220. package/engine/graphics/particles/particular/group/typedArrayConstructorFromDataType.js +19 -0
  221. package/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
  222. package/engine/graphics/render/buffer/simple-fx/ao/AmbientOcclusionPostProcessEffect.js +1 -1
  223. package/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameter.js +2 -1
  224. package/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameterSet.js +1 -1
  225. package/engine/graphics/render/forward_plus/LightManager.js +126 -95
  226. package/engine/graphics/render/forward_plus/PointLight.js +9 -0
  227. package/engine/graphics/render/forward_plus/PointLightData.js +1 -1
  228. package/engine/graphics/render/forward_plus/SpotLight.js +9 -0
  229. package/engine/graphics/render/forward_plus/cluster/compute_light_data_hash_0.js +2 -2
  230. package/engine/graphics/render/forward_plus/computeFrustumCorners.js +15 -33
  231. package/engine/graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js +1 -1
  232. package/engine/graphics/render/forward_plus/plugin/MaterialTransformer.js +12 -2
  233. package/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +6 -6
  234. package/engine/graphics/render/forward_plus/prototypeLightManager.js +231 -136
  235. package/engine/graphics/render/forward_plus/query/analytical_triplanar_corner_mapping.js +8 -0
  236. package/engine/graphics/render/forward_plus/query/cube_mapping.js +38 -0
  237. package/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +86 -0
  238. package/engine/graphics/render/forward_plus/query/point_light_inside_volume.js +73 -0
  239. package/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_objects.js +131 -0
  240. package/engine/graphics/render/forward_plus/query/query_bvh_frustum_from_texture.js +129 -0
  241. package/engine/graphics/render/forward_plus/query/spot_light_inside_volume.js +33 -0
  242. package/engine/graphics/render/forward_plus/read_frustum_corner.js +14 -0
  243. package/engine/graphics/render/forward_plus/testClusterEquality.js +22 -0
  244. package/engine/graphics/render/layers/RenderLayerUtils.js +8 -5
  245. package/engine/graphics/render/visibility/IncrementalDeltaSet.js +11 -0
  246. package/engine/graphics/render/visibility/hiz/prototypeHiZ.js +2 -2
  247. package/engine/graphics/texture/atlas/AtlasPatch.js +7 -2
  248. package/engine/graphics/texture/atlas/TextureAtlas.js +18 -14
  249. package/engine/graphics/texture/sampler/HarmonicDiffusionGrid.spec.js +1 -1
  250. package/engine/graphics/texture/sampler/SampleTraverser.js +1 -1
  251. package/engine/graphics/texture/sampler/Sampler2D.js +8 -7
  252. package/engine/graphics/texture/sampler/distanceField.spec.js +1 -1
  253. package/engine/graphics/texture/sampler/scaleSampler2D.js +7 -10
  254. package/engine/graphics/trail/x/RibbonMaterialX.js +3 -3
  255. package/engine/graphics/trail/x/RibbonX.js +17 -2
  256. package/engine/graphics/trail/x/RibbonXPlugin.js +51 -1
  257. package/engine/graphics/util/projectSphere.js +1 -1
  258. package/engine/grid/components/GridObstacle.js +3 -10
  259. package/engine/intelligence/behavior/selector/WeightedElement.js +2 -1
  260. package/engine/intelligence/optimization/RandomOptimizer.js +1 -1
  261. package/engine/navigation/ecs/components/Path.js +3 -2
  262. package/engine/navigation/grid/FastBinaryHeap.spec.js +1 -1
  263. package/engine/reference/v2/Reference.js +6 -0
  264. package/engine/sound/ecs/emitter/SoundEmitter.js +2 -1
  265. package/engine/sound/ecs/emitter/SoundTrack.js +2 -1
  266. package/engine/sound/material/concrete/RandomSoundMaterial.js +1 -1
  267. package/engine/ui/notification/notificationGenerator.js +1 -1
  268. package/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +3 -2
  269. package/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +1 -1
  270. package/generation/grid/generation/GridTaskExecuteRuleTimes.js +2 -1
  271. package/generation/markers/GridCellActionPlaceMarker.js +13 -1
  272. package/generation/markers/MarkerNode.js +6 -0
  273. package/generation/markers/actions/MarkerNodeActionSelectRandom.js +1 -1
  274. package/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.js +1 -1
  275. package/generation/placement/action/random/CellActionSelectRandom.js +1 -1
  276. package/generation/theme/ThemeEngine.js +5 -2
  277. package/misc/makeMaterialIconCached.js +2 -2
  278. package/package.json +3 -3
  279. package/view/View.js +4 -2
  280. package/view/elements/image/HTMLElementCacheKey.js +2 -1
  281. package/view/elements/radial/RadialText.js +2 -1
  282. package/view/minimap/gl/MinimapMarkersGL.js +19 -101
  283. package/view/minimap/gl/buildMaterial.js +94 -0
  284. package/engine/graphics/micron/format/MicronGeometryBufferAttributeSpec.js +0 -71
  285. package/engine/graphics/render/forward_plus/queryBVH_Frustum.js +0 -345
@@ -344,6 +344,7 @@ GraphicsEngine.prototype.start = function () {
344
344
  };
345
345
 
346
346
  const webGLRenderer = this.renderer = new WebGLRenderer(rendererParameters);
347
+
347
348
  //print GPU info
348
349
  const GPU_NAME = this.getGPUName();
349
350
 
@@ -95,11 +95,11 @@ function makeConfig(engine) {
95
95
  new TopDownCameraControllerSystem(graphics),
96
96
  new TopDownCameraLanderSystem(),
97
97
  new CameraSystem(graphics.scene, graphics),
98
- new MeshSystem(graphics, assetManager),
98
+ new MeshSystem(engine),
99
99
  new ClingToTerrainSystem(),
100
100
  new TerrainSystem(graphics, assetManager),
101
101
  new WaterSystem(graphics),
102
- new Trail2DSystem(graphics, assetManager),
102
+ new Trail2DSystem(engine),
103
103
  new Foliage2System(assetManager, graphics),
104
104
  new ViewportPositionSystem(graphics.viewport.size),
105
105
  new GridPosition2TransformSystem(),
@@ -1,8 +1,9 @@
1
- import { computeHashFloat, computeHashIntegerArray} from "../../../../../core/math/MathUtils.js";
2
1
  import { min2 } from "../../../../../core/math/min2.js";
3
2
  import { AnimationClipFlag } from "./AnimationClipFlag.js";
4
3
  import { LoopOnce, LoopRepeat } from "three";
5
4
  import { AnimationEventTypes } from "./AnimationEventTypes.js";
5
+ import { computeHashIntegerArray } from "../../../../../core/collection/array/computeHashIntegerArray.js";
6
+ import { computeHashFloat } from "../../../../../core/math/hash/computeHashFloat.js";
6
7
 
7
8
  export class AnimationClip {
8
9
  constructor() {
@@ -1,7 +1,8 @@
1
1
  import { isArrayEqual } from "../../../../../core/collection/ArrayUtils.js";
2
- import { computeHashArray, computeHashIntegerArray } from "../../../../../core/math/MathUtils.js";
3
2
  import { computeStringHash } from "../../../../../core/primitives/strings/computeStringHash.js";
4
3
  import { invokeObjectHash } from "../../../../../core/model/object/invokeObjectHash.js";
4
+ import { computeHashArray } from "../../../../../core/collection/array/computeHashArray.js";
5
+ import { computeHashIntegerArray } from "../../../../../core/collection/array/computeHashIntegerArray.js";
5
6
 
6
7
  /**
7
8
  *
@@ -1,4 +1,5 @@
1
- import { computeHashFloat, computeHashIntegerArray } from "../../../../../core/math/MathUtils.js";
1
+ import { computeHashIntegerArray } from "../../../../../core/collection/array/computeHashIntegerArray.js";
2
+ import { computeHashFloat } from "../../../../../core/math/hash/computeHashFloat.js";
2
3
 
3
4
  export class AnimationNotification {
4
5
  constructor() {
@@ -1,6 +1,7 @@
1
- import { computeHashIntegerArray, computeObjectHash } from "../../../../../core/math/MathUtils.js";
2
1
  import { objectDeepEquals } from "../../../../../core/model/object/objectDeepEquals.js";
3
2
  import { computeStringHash } from "../../../../../core/primitives/strings/computeStringHash.js";
3
+ import { computeHashIntegerArray } from "../../../../../core/collection/array/computeHashIntegerArray.js";
4
+ import { computeObjectHash } from "../../../../../core/math/hash/computeObjectHash.js";
4
5
 
5
6
  export class AnimationNotificationDefinition {
6
7
  constructor() {
@@ -3,11 +3,12 @@ import { AnimationTransition } from "./AnimationTransition.js";
3
3
  import { AnimationStateType } from "./AnimationStateType.js";
4
4
  import { AnimationMixer } from "three";
5
5
  import { AnimationGraphFlag } from "./AnimationGraphFlag.js";
6
- import { computeHashFloat, computeHashIntegerArray } from "../../../../../../core/math/MathUtils.js";
7
6
  import { writeAnimationGraphDefinitionToJSON } from "./definition/serialization/writeAnimationGraphDefinitionToJSON.js";
8
7
  import { readAnimationGraphDefinitionFromJSON } from "./definition/serialization/readAnimationGraphDefinitionFromJSON.js";
9
8
  import { assert } from "../../../../../../core/assert.js";
10
9
  import { threeUpdateTransform } from "../../../../util/threeUpdateTransform.js";
10
+ import { computeHashIntegerArray } from "../../../../../../core/collection/array/computeHashIntegerArray.js";
11
+ import { computeHashFloat } from "../../../../../../core/math/hash/computeHashFloat.js";
11
12
 
12
13
  export class AnimationGraph {
13
14
  constructor() {
@@ -4,8 +4,9 @@ import { AnimationStateDefinition } from "./AnimationStateDefinition.js";
4
4
  import { AnimationClipDefinition } from "../../AnimationClipDefinition.js";
5
5
  import { AnimationClip } from "../../AnimationClip.js";
6
6
  import { isArrayEqual } from "../../../../../../../core/collection/ArrayUtils.js";
7
- import { computeHashArray, computeHashIntegerArray } from "../../../../../../../core/math/MathUtils.js";
8
7
  import { invokeObjectHash } from "../../../../../../../core/model/object/invokeObjectHash.js";
8
+ import { computeHashArray } from "../../../../../../../core/collection/array/computeHashArray.js";
9
+ import { computeHashIntegerArray } from "../../../../../../../core/collection/array/computeHashIntegerArray.js";
9
10
 
10
11
  export class AnimationGraphDefinition {
11
12
  constructor() {
@@ -1,5 +1,5 @@
1
1
  import { AnimationStateType } from "../AnimationStateType.js";
2
- import { computeHashIntegerArray } from "../../../../../../../core/math/MathUtils.js";
2
+ import { computeHashIntegerArray } from "../../../../../../../core/collection/array/computeHashIntegerArray.js";
3
3
 
4
4
  export class AnimationStateDefinition {
5
5
  constructor() {
@@ -1,5 +1,6 @@
1
- import { computeHashFloat, computeHashIntegerArray } from "../../../../../../../core/math/MathUtils.js";
2
1
  import { computeStringHash } from "../../../../../../../core/primitives/strings/computeStringHash.js";
2
+ import { computeHashIntegerArray } from "../../../../../../../core/collection/array/computeHashIntegerArray.js";
3
+ import { computeHashFloat } from "../../../../../../../core/math/hash/computeHashFloat.js";
3
4
 
4
5
  export class AnimationTransitionDefinition {
5
6
  constructor() {
@@ -1,7 +1,7 @@
1
- import { isValueBetweenInclusive } from "../../../../core/math/MathUtils.js";
2
1
  import { frustumFromCamera } from "./CameraSystem.js";
3
2
  import { Frustum as ThreeFrustum } from "three";
4
- import { v3_dot } from "../../../../core/geom/Vector3.js";
3
+ import { v3_dot } from "../../../../core/geom/v3_dot.js";
4
+ import { isValueBetweenInclusive } from "../../../../core/math/isValueBetweenInclusive.js";
5
5
 
6
6
  const CLIPPING_EPSILON = 0.001;
7
7
 
@@ -1,7 +1,8 @@
1
1
  import { Color } from "../../../../core/color/Color.js";
2
2
  import { assert } from "../../../../core/assert.js";
3
- import { computeHashFloat, computeHashIntegerArray } from "../../../../core/math/MathUtils.js";
4
3
  import { COMPONENT_SERIALIZATION_TRANSIENT_FIELD } from "../../../ecs/storage/COMPONENT_SERIALIZATION_TRANSIENT_FIELD.js";
4
+ import { computeHashIntegerArray } from "../../../../core/collection/array/computeHashIntegerArray.js";
5
+ import { computeHashFloat } from "../../../../core/math/hash/computeHashFloat.js";
5
6
 
6
7
  export class HighlightDefinition {
7
8
  constructor() {
@@ -18,8 +18,6 @@ import {
18
18
  Vector2,
19
19
  WebGLRenderTarget
20
20
  } from "three";
21
- import { Sampler2D } from "../../../texture/sampler/Sampler2D.js";
22
- import convertSampler2D2Canvas from "../../../texture/sampler/Sampler2D2Canvas.js";
23
21
  import { makeHighlightDecodeShader } from "./HighlightDecodeShader.js";
24
22
  import { makeDilationShader } from "./makeDilationShader.js";
25
23
  import { ScreenSpaceQuadShader } from "../../../shaders/ScreenSpaceQuadShader.js";
@@ -500,57 +498,6 @@ export class OutlineRenderer {
500
498
  renderer.setRenderTarget(null);
501
499
  }
502
500
 
503
- debugObjectIDs() {
504
-
505
- const s = Sampler2D.uint8(4, this.__renderTargetObjectId_t0.width, this.__renderTargetObjectId_t0.height);
506
-
507
- this.renderer.readRenderTargetPixels(this.__renderTargetObjectId_t0, 0, 0, this.__renderTargetObjectId_t0.width, this.__renderTargetObjectId_t0.height, s);
508
-
509
-
510
- const htmlCanvasElement = convertSampler2D2Canvas(s, 1, 0);
511
-
512
- htmlCanvasElement.style.zIndex = 10000;
513
- htmlCanvasElement.style.position = "absolute";
514
-
515
- document.body.appendChild(htmlCanvasElement);
516
- }
517
-
518
- /**
519
- *
520
- * @param {Object3D} object
521
- */
522
- renderObjectId(object) {
523
- if (object.isMesh || object.isSkinnedMesh) {
524
-
525
- const geometry = object.geometry;
526
-
527
- if (geometry === undefined) {
528
- return;
529
- }
530
-
531
- const renderer = this.renderer;
532
-
533
- if (object.isSkinnedMesh) {
534
-
535
- renderer.renderBufferDirect(this.camera, null, geometry, material_id_skinned, object, null);
536
-
537
- } else {
538
- renderer.renderBufferDirect(this.camera, null, geometry, material_id_unskinned, object, null);
539
- }
540
-
541
- }
542
-
543
- const children = object.children;
544
-
545
- const child_count = children.length;
546
-
547
- for (let i = 0; i < child_count; i++) {
548
- const child = children[i];
549
-
550
- this.renderObjectId(child);
551
- }
552
- }
553
-
554
501
  /**
555
502
  *
556
503
  * @param {Material} material
@@ -1,6 +1,6 @@
1
1
  import ObservedEnum from "../../../../core/model/ObservedEnum";
2
2
  import {Color} from "../../../../core/color/Color";
3
- import {Vector1} from "../../../../core/geom/Vector1";
3
+ import Vector1 from "../../../../core/geom/Vector1";
4
4
  import ObservedBoolean from "../../../../core/model/ObservedBoolean";
5
5
  import {LightType} from "./LightType";
6
6
 
@@ -103,7 +103,10 @@ export class Light {
103
103
 
104
104
  if (json.intensity !== undefined) {
105
105
  this.intensity.fromJSON(json.intensity);
106
+ } else {
107
+ this.intensity.set(1);
106
108
  }
109
+
107
110
  if (json.castShadow !== undefined) {
108
111
  this.castShadow.fromJSON(json.castShadow);
109
112
  }
@@ -3,13 +3,14 @@
3
3
  */
4
4
  import { AABB3 } from "../../../../core/bvh2/aabb3/AABB3.js";
5
5
  import { LeafNode } from "../../../../core/bvh2/LeafNode.js";
6
- import { computeHashFloat, computeHashIntegerArray } from "../../../../core/math/MathUtils.js";
7
6
  import { getSkeletonBoneByType } from "./SkeletonUtils.js";
8
7
  import { assert } from "../../../../core/assert.js";
9
8
  import { computeStringHash } from "../../../../core/primitives/strings/computeStringHash.js";
10
9
  import { Transform } from "../../../ecs/transform/Transform.js";
11
10
  import { updateNodeByTransformAndBBB } from "./updateNodeByTransformAndBBB.js";
12
11
  import { applyTransformToThreeObject } from "./applyTransformToThreeObject.js";
12
+ import { computeHashIntegerArray } from "../../../../core/collection/array/computeHashIntegerArray.js";
13
+ import { computeHashFloat } from "../../../../core/math/hash/computeHashFloat.js";
13
14
 
14
15
  /**
15
16
  *
@@ -0,0 +1,13 @@
1
+ import {BufferGeometry, Material} from "three";
2
+ import {AABB3} from "../../../../core/bvh2/aabb3/AABB3";
3
+
4
+ export class ShadedGeometry {
5
+ readonly geometry: BufferGeometry
6
+ readonly material: Material
7
+
8
+ readonly bvh: Readonly<AABB3>
9
+
10
+ from(geometry: BufferGeometry, material: Material): void
11
+
12
+ static from(geometry: BufferGeometry, material: Material): ShadedGeometry
13
+ }
@@ -0,0 +1,6 @@
1
+ import {System} from "../../../ecs/System";
2
+ import Engine from "../../../Engine";
3
+
4
+ export class ShadedGeometrySystem extends System {
5
+ constructor(engine: Engine)
6
+ }
@@ -106,11 +106,11 @@ function makeConfig(engine) {
106
106
  new TopDownCameraControllerSystem(graphics),
107
107
  new TopDownCameraLanderSystem(),
108
108
  new CameraSystem(graphics.scene, graphics),
109
- new MeshSystem(graphics, assetManager),
109
+ new MeshSystem(engine),
110
110
  new ClingToTerrainSystem(),
111
111
  new TerrainSystem(graphics, assetManager),
112
112
  new WaterSystem(graphics),
113
- new Trail2DSystem(graphics, assetManager),
113
+ new Trail2DSystem(engine),
114
114
  new Foliage2System(assetManager, graphics),
115
115
  new ViewportPositionSystem(graphics.viewport.size),
116
116
  new GridPosition2TransformSystem(),
@@ -179,11 +179,11 @@ function catmullRom(points) {
179
179
  cv.link();
180
180
 
181
181
  cv.css({
182
- position: "absolute",
183
- left: 0,
184
- right: 0,
185
- zIndex: 99999
186
- });
182
+ position: "absolute",
183
+ left: 0,
184
+ right: 0,
185
+ zIndex: 99999
186
+ });
187
187
 
188
188
  const sample = [];
189
189
 
@@ -216,92 +216,92 @@ function sample_style_entity() {
216
216
  const style = new EntityPathStyle();
217
217
  style.spacing = 0.6;
218
218
  style.marker_start = EntityPathMarkerDefinition.from({
219
- blueprint: EntityBlueprint.from([
220
- Transform.fromJSON({}),
221
- Mesh.fromJSON({
222
- url: "data/models/arrow-symbols/arrow4/model-green.gltf",
223
- castShadow: true,
224
- receiveShadow: true
225
- })
226
- ]),
227
- transform: Transform.fromJSON({
228
- scale: {
229
- x: 0.3,
230
- y: 0.3,
231
- z: 0.3
232
- },
233
- rotation: {
234
- x: 0.5,
235
- y: -0.5,
236
- z: 0.5,
237
- w: 0.5
238
- },
239
- position: {
240
- x: 0,
241
- y: 1,
242
- z: 0
243
- }
244
- })
245
- });
219
+ blueprint: EntityBlueprint.from([
220
+ Transform.fromJSON({}),
221
+ Mesh.fromJSON({
222
+ url: "data/models/arrow-symbols/arrow4/model-green.gltf",
223
+ castShadow: true,
224
+ receiveShadow: true
225
+ })
226
+ ]),
227
+ transform: Transform.fromJSON({
228
+ scale: {
229
+ x: 0.3,
230
+ y: 0.3,
231
+ z: 0.3
232
+ },
233
+ rotation: {
234
+ x: 0.5,
235
+ y: -0.5,
236
+ z: 0.5,
237
+ w: 0.5
238
+ },
239
+ position: {
240
+ x: 0,
241
+ y: 1,
242
+ z: 0
243
+ }
244
+ })
245
+ });
246
246
  style.marker_end = EntityPathMarkerDefinition.from({
247
- blueprint: EntityBlueprint.from([
248
- Transform.fromJSON({}),
249
- Mesh.fromJSON({
250
- url: "data/models/arrow-symbols/arrow4/model-red.gltf",
251
- castShadow: true,
252
- receiveShadow: true
253
- })
254
- ]),
255
- transform: Transform.fromJSON({
256
- scale: {
257
- x: 0.3,
258
- y: 0.3,
259
- z: 0.3
260
- },
261
- rotation: {
262
- x: 0.5,
263
- y: -0.5,
264
- z: 0.5,
265
- w: 0.5
266
- },
267
- position: {
268
- x: 0,
269
- y: 1,
270
- z: 0
271
- }
272
- })
273
- });
247
+ blueprint: EntityBlueprint.from([
248
+ Transform.fromJSON({}),
249
+ Mesh.fromJSON({
250
+ url: "data/models/arrow-symbols/arrow4/model-red.gltf",
251
+ castShadow: true,
252
+ receiveShadow: true
253
+ })
254
+ ]),
255
+ transform: Transform.fromJSON({
256
+ scale: {
257
+ x: 0.3,
258
+ y: 0.3,
259
+ z: 0.3
260
+ },
261
+ rotation: {
262
+ x: 0.5,
263
+ y: -0.5,
264
+ z: 0.5,
265
+ w: 0.5
266
+ },
267
+ position: {
268
+ x: 0,
269
+ y: 1,
270
+ z: 0
271
+ }
272
+ })
273
+ });
274
274
  style.marker_main = EntityPathMarkerDefinition.from({
275
- blueprint: EntityBlueprint.from([
276
- Transform.fromJSON({}),
277
- Mesh.fromJSON({
278
- url: "data/models/Barel-Roll Droid/handpainted.gltf",
279
- castShadow: true,
280
- receiveShadow: true
281
- }),
282
- Animation.fromJSON({
283
- clips: [
284
- {
285
- name: "fly",
286
- repeatCount: Infinity
287
- }
288
- ]
289
- }),
290
- Highlight.fromOne(1, 0, 0, 1)
291
- ]),
292
- transform: Transform.fromJSON({
293
- scale: {
294
- x: 0.2,
295
- y: 0.2,
296
- z: 0.2
297
- },
298
- position: {
299
- x: 0,
300
- y: 1,
301
- z: 0
302
- }
303
- })
304
- });
275
+ blueprint: EntityBlueprint.from([
276
+ Transform.fromJSON({}),
277
+ Mesh.fromJSON({
278
+ url: "data/models/Barel-Roll Droid/handpainted.gltf",
279
+ castShadow: true,
280
+ receiveShadow: true
281
+ }),
282
+ Animation.fromJSON({
283
+ clips: [
284
+ {
285
+ name: "fly",
286
+ repeatCount: Infinity
287
+ }
288
+ ]
289
+ }),
290
+ Highlight.fromOne(1, 0, 0, 1)
291
+ ]),
292
+ transform: Transform.fromJSON({
293
+ scale: {
294
+ x: 0.2,
295
+ y: 0.2,
296
+ z: 0.2
297
+ },
298
+ position: {
299
+ x: 0,
300
+ y: 1,
301
+ z: 0
302
+ }
303
+ })
304
+ });
305
305
 
306
306
  return style;
307
307
  }
@@ -337,13 +337,13 @@ function main(engine) {
337
337
  // ], 50));
338
338
 
339
339
  _p.setPositionsFromVectorArray([
340
- new Vector3(3, 1, 1),
341
- new Vector3(3, 1, 3),
342
- new Vector3(7, 1, 3),
343
- new Vector3(7, 1, 7),
344
- new Vector3(3, 1, 7),
345
- new Vector3(3, 1, 8),
346
- ]);
340
+ new Vector3(3, 1, 1),
341
+ new Vector3(3, 1, 3),
342
+ new Vector3(7, 1, 3),
343
+ new Vector3(7, 1, 7),
344
+ new Vector3(3, 1, 7),
345
+ new Vector3(3, 1, 8),
346
+ ]);
347
347
 
348
348
 
349
349
  const trailPathStyle = new RibbonPathStyle();
@@ -5,6 +5,7 @@
5
5
 
6
6
  import Vector3 from "../../../../core/geom/Vector3.js";
7
7
  import Vector4 from "../../../../core/geom/Vector4.js";
8
+ import { RibbonXMaterialSpec } from "../../trail/x/RibbonXMaterialSpec.js";
8
9
 
9
10
  /**
10
11
  * @readonly
@@ -24,8 +25,6 @@ class Trail2D {
24
25
  */
25
26
  this.maxAge = 5;
26
27
 
27
- this.textureURL = null;
28
-
29
28
  /**
30
29
  * Trail width
31
30
  * @type {number}
@@ -65,9 +64,9 @@ class Trail2D {
65
64
 
66
65
  /**
67
66
  * transient
68
- * @type {Material|null}
67
+ * @type {RibbonXMaterialSpec}
69
68
  */
70
- this.material = null;
69
+ this.material = new RibbonXMaterialSpec();
71
70
 
72
71
  /**
73
72
  * transient
@@ -82,6 +81,20 @@ class Trail2D {
82
81
  this.flags = Trail2DFlags.Spawning | Trail2DFlags.Aging;
83
82
  }
84
83
 
84
+ dispose() {
85
+ if (this.ribbon !== null) {
86
+ this.ribbon.dispose();
87
+ }
88
+ }
89
+
90
+ get textureURL() {
91
+ return this.material.diffuse;
92
+ }
93
+
94
+ set textureURL(v) {
95
+ this.material.diffuse = v;
96
+ }
97
+
85
98
  /**
86
99
  *
87
100
  * @param {number|Trail2DFlags} flag
@@ -1,7 +1,6 @@
1
1
  import {System} from "../../../ecs/System";
2
- import {GraphicsEngine} from "../../GraphicsEngine";
3
- import {AssetManager} from "../../../asset/AssetManager";
2
+ import Engine from "../../../Engine";
4
3
 
5
4
  export default class Trail2DSystem extends System {
6
- constructor(graphics: GraphicsEngine, assetManager: AssetManager)
5
+ constructor(engine: Engine)
7
6
  }