@woosh/meep-engine 2.56.1 → 2.58.0

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 (322) hide show
  1. package/editor/Editor.js +4 -4
  2. package/editor/ecs/component/editors/ColorEditor.js +1 -1
  3. package/editor/ecs/component/editors/ImagePathEditor.js +2 -2
  4. package/editor/ecs/component/editors/{LargeStrongEditor.js → LargeStringEditor.js} +1 -1
  5. package/editor/process/symbolic/buildThreeJSHelperEntity.js +3 -3
  6. package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +3 -3
  7. package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +3 -3
  8. package/editor/tools/GridPaintTool.js +3 -3
  9. package/editor/tools/TopDownCameraControlTool.js +1 -1
  10. package/editor/tools/TransformTool.js +1 -1
  11. package/editor/tools/engine/Tool.js +9 -23
  12. package/editor/tools/engine/ToolEngine.js +5 -7
  13. package/editor/tools/paint/TerrainHeightPaintTool.js +2 -2
  14. package/editor/tools/paint/TerrainPaintTool.js +2 -2
  15. package/editor/tools/paint/TerrainTexturePaintTool.js +2 -2
  16. package/editor/tools/v2/prototypeTransformControls.js +3 -3
  17. package/editor/view/ecs/ComponentControlView.js +2 -1
  18. package/package.json +1 -1
  19. package/samples/generation/main.js +2 -2
  20. package/samples/terrain/from_image.js +2 -2
  21. package/samples/terrain/from_image_2.js +4 -4
  22. package/src/core/binary/byteArrayToString.js +28 -0
  23. package/src/core/binary/downloadAsFile.js +28 -0
  24. package/src/core/binary/downloadUrlAsFile.js +14 -0
  25. package/src/core/binary/jsonToStringToByteArray.js +27 -0
  26. package/src/core/binary/stringToByteArray.js +24 -0
  27. package/src/core/bvh2/BinaryNode.spec.js +2 -1
  28. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +1 -1
  29. package/src/core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js +1 -1
  30. package/src/core/bvh2/traversal/__process_point_if_within_planes.js +1 -1
  31. package/src/core/cache/LoadingCache.js +3 -2
  32. package/src/core/collection/array/arraySetSortingDiff.spec.js +12 -12
  33. package/src/core/collection/array/weightedRandomFromArray.js +2 -2
  34. package/src/core/color/Color.js +6 -6
  35. package/src/core/color/Color.spec.js +27 -1
  36. package/src/core/color/YCbCr/YCbCr.spec.js +16 -0
  37. package/src/core/color/{YCbCr_to_rgb_uint24.js → YCbCr/YCbCr_to_rgb_uint24.js} +6 -6
  38. package/src/core/color/YCbCr/rgb_to_YCbCr_uint24.js +16 -0
  39. package/src/core/color/{hex2rgb.js → hex/hex2rgb.js} +1 -1
  40. package/src/core/color/{rgb2hex.js → hex/rgb2hex.js} +1 -1
  41. package/src/core/color/{hsv2rgb.js → hsv/hsv2rgb.js} +3 -3
  42. package/src/core/color/hsv/rgb2hsv.js +49 -0
  43. package/src/core/color/{kelvin_to_rgb.js → kelvin/kelvin_to_rgb.js} +1 -1
  44. package/src/core/color/{kelvin_to_rgb.spec.js → kelvin/kelvin_to_rgb.spec.js} +2 -2
  45. package/src/core/color/{prototype_kelvin_to_rgb.js → kelvin/prototype_kelvin_to_rgb.js} +5 -5
  46. package/src/core/color/{rgb_to_kelvin.spec.js → kelvin/rgb_to_kelvin.spec.js} +1 -1
  47. package/src/core/color/{parseColor.js → parse_color.js} +5 -5
  48. package/src/core/color/parse_color.spec.js +18 -0
  49. package/src/core/color/rgb2uint24.js +3 -3
  50. package/src/core/color/sRGB/sRGB.spec.js +16 -0
  51. package/src/core/color/xyz/XYZ.spec.js +16 -0
  52. package/src/core/color/xyz/rgb_to_xyz.js +15 -0
  53. package/src/core/color/xyz/xyz_to_rgb.js +14 -0
  54. package/src/core/events/signal/Signal.js +5 -0
  55. package/src/core/events/signal/{signalAggregateByTimeWindow.js → signal_aggregate_by_time_window.js} +1 -1
  56. package/src/core/events/signal/{SignalUtils.js → signal_filter.js} +1 -2
  57. package/src/core/fsm/simple/SimpleStateMachine.spec.js +34 -2
  58. package/src/core/geom/2d/spline_bezier2_2d.js +26 -0
  59. package/src/core/geom/2d/spline_bezier2_2d.spec.js +16 -0
  60. package/src/core/geom/3d/SurfacePoint3.js +1 -1
  61. package/src/core/geom/3d/aabb/aabb3_compute_plane_side.js +1 -1
  62. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +1 -1
  63. package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +1 -1
  64. package/src/core/geom/3d/compute_circle_bounding_box.js +1 -1
  65. package/src/core/geom/3d/cone/computeConeBoundingBox.js +1 -1
  66. package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
  67. package/src/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +1 -1
  68. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.js +1 -1
  69. package/src/core/geom/3d/matrix/m4_multiply.js +2 -2
  70. package/src/core/geom/3d/matrix/m4_multiply.spec.js +11 -0
  71. package/src/core/geom/3d/matrix/m4_multiply_alphatensor.spec.js +11 -0
  72. package/src/core/geom/3d/morton/split_by_2.js +1 -1
  73. package/src/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +1 -1
  74. package/src/core/geom/3d/normal/spherical/sphere_map_transform.js +1 -1
  75. package/src/core/geom/3d/plane/is_point_within_planes.js +1 -1
  76. package/src/core/geom/3d/plane/lerp_planes_to_array.js +1 -1
  77. package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.js +1 -1
  78. package/src/core/geom/3d/plane/plane3_compute_line_segment_intersection.js +1 -1
  79. package/src/core/geom/3d/plane/plane3_compute_ray_intersection.js +1 -1
  80. package/src/core/geom/3d/plane/plane3_lerp.js +2 -2
  81. package/src/core/geom/3d/plane/plane3_projectPoint.js +1 -1
  82. package/src/core/geom/3d/plane/plane3_slerp.js +3 -3
  83. package/src/core/geom/3d/ray/ray_computeNearestPointToPoint.js +1 -1
  84. package/src/core/geom/3d/ray/ray_distance_to_point.js +1 -1
  85. package/src/core/geom/3d/shape/UnionShape3D.js +3 -3
  86. package/src/core/geom/3d/shape/UnitCubeShape3D.js +1 -1
  87. package/src/core/geom/3d/shape/UnitSphereShape3D.js +1 -1
  88. package/src/core/geom/3d/shape/util/shape_to_visual_entity.js +10 -10
  89. package/src/core/geom/3d/sphere/sphere_intersects_ray.js +1 -1
  90. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +6 -0
  91. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +1 -1
  92. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.spec.js +1 -1
  93. package/src/core/geom/3d/tetrahedra/compute_circumsphere.js +1 -1
  94. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +1 -0
  95. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.spec.js +10 -2
  96. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +2 -2
  97. package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +1 -1
  98. package/src/core/geom/3d/topology/samples/sampleFloodFill.js +4 -4
  99. package/src/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +1 -1
  100. package/src/core/geom/3d/topology/simplify/quadratic/Quadratic3.js +1 -1
  101. package/src/core/geom/3d/topology/simplify/tm_edge_collapse_is_degenerate_flip.js +2 -2
  102. package/src/core/geom/3d/topology/struct/TopoVertex.js +1 -1
  103. package/src/core/geom/3d/topology/util/compute_face_connection_weight.js +2 -2
  104. package/src/core/geom/3d/triangle/computeTrianglePlaneSide.js +1 -1
  105. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.js +1 -1
  106. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js +1 -1
  107. package/src/core/geom/3d/v3_compute_triangle_normal.js +1 -1
  108. package/src/core/geom/Quaternion.js +1 -1
  109. package/src/core/geom/Vector3.js +7 -7
  110. package/src/core/geom/Vector3.spec.js +68 -1
  111. package/src/core/geom/mat2/m2_add.js +17 -0
  112. package/src/core/geom/mat2/m2_determinant.js +8 -0
  113. package/src/core/geom/mat2/m2_multiply.js +17 -0
  114. package/src/core/geom/mat2/m2_multiply_scalar.js +18 -0
  115. package/src/core/geom/mat2/m2_multiply_transposed.js +18 -0
  116. package/src/core/geom/mat2/m2_sub_transposed.js +17 -0
  117. package/src/{view → core/geom/mat3}/m3_cm_compose_transform.js +0 -29
  118. package/src/core/geom/mat3/m3_cm_extract_rotation.js +8 -0
  119. package/src/core/geom/mat3/m3_cm_from_translation.js +19 -0
  120. package/src/{view/multiplyMatrices3.js → core/geom/mat3/m3_multiply.js} +2 -2
  121. package/src/{view → core/geom/mat3}/m3_rm_compose_transform.js +0 -9
  122. package/src/core/geom/mat3/m3_rm_extract_scale.js +7 -0
  123. package/src/core/geom/{3d/vector/allocate_v3.js → vec3/v3_allocate.js} +1 -1
  124. package/src/core/geom/{v3_angle_between.js → vec3/v3_angle_between.js} +1 -1
  125. package/src/core/geom/vec3/v3_dot_array_array.js +20 -0
  126. package/src/core/geom/{v3_lerp.js → vec3/v3_lerp.js} +1 -1
  127. package/src/core/graph/SquareMatrix.js +26 -3
  128. package/src/core/graph/SquareMatrix.spec.js +52 -2
  129. package/src/core/math/clamp01.js +1 -0
  130. package/src/core/math/fract.js +3 -1
  131. package/src/core/math/inverseLerp.js +7 -5
  132. package/src/core/math/lerp.js +5 -5
  133. package/src/core/math/physics/spring/computeHookeForce.js +9 -0
  134. package/src/core/math/remap.js +19 -0
  135. package/src/core/math/remap.spec.js +15 -0
  136. package/src/core/math/smoothStep.spec.js +16 -0
  137. package/src/core/math/spline/spline_bezier2.js +13 -0
  138. package/src/core/math/spline/spline_bezier2.spec.js +13 -0
  139. package/src/core/model/object/compareValues.js +2 -2
  140. package/src/core/model/object/read_property.js +10 -2
  141. package/src/core/model/object/write_property.js +3 -23
  142. package/src/core/model/object/write_property.spec.js +26 -0
  143. package/src/core/primitives/numbers/number_pretty_print.spec.js +19 -0
  144. package/src/core/process/action/AsynchronousDelayAction.js +2 -2
  145. package/src/core/process/executor/profile/ConcurrentExecutorProfiler.js +1 -1
  146. package/src/engine/EngineHarness.js +7 -7
  147. package/src/engine/EntityCreator.js +5 -5
  148. package/src/engine/__module.js +1 -1
  149. package/src/engine/achievements/AchievementManager.js +2 -2
  150. package/src/engine/animation/AnimationUtils.js +4 -4
  151. package/src/engine/animation/behavior/animateProperty.js +2 -2
  152. package/src/engine/animation/curve/draw/build_plot_entity_from_array.js +3 -3
  153. package/src/engine/animation/playAnimationTrack.js +3 -3
  154. package/src/engine/animation/playTrackRealTime.js +3 -3
  155. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +2 -2
  156. package/src/engine/control/ControlContext.js +7 -7
  157. package/src/engine/ecs/{EntityBuilder.d.ts → Entity.d.ts} +5 -5
  158. package/src/engine/ecs/{EntityBuilder.js → Entity.js} +29 -29
  159. package/src/engine/ecs/{EntityBuilder.spec.js → Entity.spec.js} +17 -17
  160. package/src/engine/ecs/EntityBlueprint.d.ts +2 -2
  161. package/src/engine/ecs/EntityBlueprint.js +3 -3
  162. package/src/engine/ecs/EntityBlueprint.spec.js +2 -2
  163. package/src/engine/ecs/{EntityBuilderFlags.js → EntityFlags.js} +1 -1
  164. package/src/engine/ecs/EntityObserver.spec.js +8 -8
  165. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +5 -5
  166. package/src/engine/ecs/foliage/ecs/InstancedMeshUtils.js +3 -3
  167. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts +2 -2
  168. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.js +5 -5
  169. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
  170. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
  171. package/src/engine/ecs/parent/EntityNode.d.ts +3 -3
  172. package/src/engine/ecs/parent/EntityNode.js +5 -5
  173. package/src/engine/ecs/parent/testHuDPerf.js +2 -2
  174. package/src/engine/ecs/speaker/VoiceSystem.js +5 -5
  175. package/src/engine/ecs/systems/SteeringSystem.js +1 -1
  176. package/src/engine/ecs/terrain/ecs/splat/SplatMapOptimizerDebugger.js +1 -1
  177. package/src/engine/ecs/tooltip/testTooltipComponentSystem.js +3 -3
  178. package/src/engine/graphics/camera/makeOrbitalCameraController.js +3 -3
  179. package/src/engine/graphics/camera/testClippingPlaneComputation.js +3 -3
  180. package/src/engine/graphics/debug/createDebugLabel.js +3 -3
  181. package/src/engine/graphics/ecs/camera/Camera.js +1 -1
  182. package/src/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +1 -1
  183. package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js +3 -3
  184. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +3 -11
  185. package/src/engine/graphics/ecs/decal/v2/prototypeDecalEditor.js +3 -3
  186. package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +14 -14
  187. package/src/engine/graphics/ecs/highlight/Highlight.js +20 -102
  188. package/src/engine/graphics/ecs/mesh/Mesh.js +12 -18
  189. package/src/engine/graphics/ecs/mesh/MeshSystem.js +41 -26
  190. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +1 -1
  191. package/src/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +3 -3
  192. package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +5 -5
  193. package/src/engine/graphics/ecs/mesh-v2/sample/prototype_sg_raycast.js +6 -6
  194. package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +3 -3
  195. package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +3 -3
  196. package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.js +4 -4
  197. package/src/engine/graphics/ecs/path/tube/build/makeTubeGeometry.js +1 -1
  198. package/src/engine/graphics/ecs/path/tube/build/make_cap.js +3 -3
  199. package/src/engine/graphics/ecs/path/tube/build/make_ring_vertices.js +1 -1
  200. package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +3 -3
  201. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +2 -2
  202. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +2 -2
  203. package/src/engine/graphics/geometry/MikkT/InitTriInfo.js +5 -6
  204. package/src/engine/graphics/geometry/MikkT/MikkTSpace.js +3 -3
  205. package/src/engine/graphics/geometry/MikkT/NormalizeSafe.js +1 -2
  206. package/src/engine/graphics/geometry/MikkT/STSpace.js +3 -3
  207. package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.js +2 -2
  208. package/src/engine/graphics/geometry/bvh/buffered/BVHGeometryRaycaster.js +1 -1
  209. package/src/engine/graphics/geometry/clipping/ClippedGeometry.js +1 -1
  210. package/src/engine/graphics/geometry/optimization/merge/prototypeGeometryMerge.js +4 -4
  211. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +7 -7
  212. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +1 -1
  213. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +102 -95
  214. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.spec.js +25 -0
  215. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -35
  216. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +39 -2
  217. package/src/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +2 -2
  218. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +22 -6
  219. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts +2 -2
  220. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +3 -3
  221. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +10 -10
  222. package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
  223. package/src/engine/graphics/render/buffer/simple-fx/taa/prototypeTAA.js +2 -2
  224. package/src/engine/graphics/render/forward_plus/LightManager.js +1 -1
  225. package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +13 -13
  226. package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +3 -3
  227. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +1 -1
  228. package/src/engine/graphics/render/layers/RenderLayerUtils.js +1 -1
  229. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +8 -7
  230. package/src/engine/graphics/sh3/LightProbeVolume.js +3 -3
  231. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +2 -2
  232. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +2 -2
  233. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +1 -1
  234. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +1 -1
  235. package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +1 -1
  236. package/src/engine/graphics/sh3/prototypeSH3Probe.js +3 -3
  237. package/src/engine/graphics/sh3/sky/hosek/data.js +3744 -0
  238. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +10 -3786
  239. package/src/engine/graphics/sh3/visualise_probe.js +3 -3
  240. package/src/engine/graphics/shadows/testShadowMapRendering.js +3 -3
  241. package/src/engine/graphics/texture/atlas/AbstractTextureAtlas.js +1 -1
  242. package/src/engine/graphics/texture/atlas/AtlasPatch.js +0 -1
  243. package/src/engine/graphics/texture/atlas/AtlasPatchFlag.js +8 -1
  244. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +25 -0
  245. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.spec.js +54 -0
  246. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +101 -160
  247. package/src/engine/graphics/texture/atlas/TextureAtlas.js +18 -1
  248. package/src/engine/graphics/texture/sampler/downloadSamplerAsPNG.js +1 -1
  249. package/src/engine/graphics/texture/sampler/sampler2d_ensure_uint8_RGBA.js +22 -0
  250. package/src/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +2 -2
  251. package/src/engine/graphics/util/projectSphere.js +1 -1
  252. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
  253. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +2 -2
  254. package/src/engine/intelligence/behavior/composite/ParallelBehavior.spec.js +13 -12
  255. package/src/engine/navigation/ecs/components/Path.js +1 -1
  256. package/src/engine/physics/fluid/prototype.js +3 -3
  257. package/src/engine/physics/mls-mpm/MLS_MPM.js +11 -106
  258. package/src/engine/reference/v2/Reference.js +6 -2
  259. package/src/engine/save/storage/JsonStringCodec.js +1 -1
  260. package/src/engine/save/storage/LocalStorage.js +2 -1
  261. package/src/engine/sound/ecs/emitter/SoundEmitter.js +7 -7
  262. package/src/engine/sound/ecs/emitter/SoundTrack.js +6 -6
  263. package/src/engine/ui/GUIEngine.js +4 -4
  264. package/src/engine/ui/notification/NotificationManager.js +3 -3
  265. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +1 -1
  266. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +2 -4
  267. package/src/generation/markers/debug/visualizeMarkers.js +2 -2
  268. package/src/generation/markers/prototypeGridCellActionPlaceMarker.js +2 -2
  269. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -2
  270. package/src/generation/theme/ThemeEngine.js +2 -2
  271. package/src/generation/theme/ThemeEngine.spec.js +7 -0
  272. package/src/view/View.js +21 -13
  273. package/src/view/elements/ColorPickerView.js +2 -2
  274. package/src/view/minimap/gl/MarkerGL.js +20 -18
  275. package/src/view/minimap/gl/MinimapMarkersGL.js +2 -1
  276. package/editor/tools/FoliagePaintTool.js +0 -168
  277. package/editor/tools/engine/ToolStateMachine.js +0 -53
  278. package/src/core/NumberFormat.js +0 -4
  279. package/src/core/binary/ByteArrayTools.js +0 -137
  280. package/src/core/binary/NaiveBitSet.js +0 -69
  281. package/src/core/binary/objects/StandardTypeBuilder.js +0 -126
  282. package/src/core/binary/serde/JsonSerializer.js +0 -113
  283. package/src/core/color/rgb2hsv.js +0 -47
  284. package/src/core/color/rgb_to_YCbCr_uint24.js +0 -16
  285. package/src/core/fsm/StateMachine.js +0 -440
  286. package/src/core/fsm/Transition.js +0 -65
  287. package/src/core/geom/Bezier.js +0 -24
  288. package/src/core/geom/Bezier.spec.js +0 -16
  289. package/src/core/math/spline/quadraticCurve.js +0 -11
  290. package/src/core/math/spline/quadraticCurve.spec.js +0 -13
  291. package/src/core/primitives/numbers/compareNumbers.js +0 -9
  292. package/src/engine/graphics/ecs/decal/Decal.js +0 -10
  293. package/src/engine/graphics/ecs/decal/DecalSystem.js +0 -99
  294. package/src/engine/graphics/ecs/decal/threejs/DecalGeometry.js +0 -298
  295. package/src/engine/graphics/ecs/trail/Trail.js +0 -83
  296. package/src/engine/graphics/ecs/trail/TrailMaterial.js +0 -67
  297. package/src/engine/graphics/ecs/trail/TrailMaterial2.js +0 -73
  298. package/src/engine/graphics/ecs/trail/TrailSystem.js +0 -162
  299. package/src/engine/graphics/ecs/water2/NodeWaterShader1.js +0 -213
  300. package/src/engine/graphics/ecs/water2/shader/JBWaterShader.js +0 -315
  301. package/src/engine/graphics/geometry/MikkT/Length.js +0 -10
  302. package/src/engine/graphics/texture/ImageLoader.js +0 -33
  303. package/src/engine/graphics/three/DDSLoader.js +0 -286
  304. package/src/engine/graphics/three/Water2.js +0 -343
  305. package/src/engine/physics/spring/computeHookeForce.js +0 -9
  306. package/src/engine/reference/v1/ReferenceManager.js +0 -124
  307. /package/src/core/color/{hex2rgb.spec.js → hex/hex2rgb.spec.js} +0 -0
  308. /package/src/core/color/{rgb2hex.spec.js → hex/rgb2hex.spec.js} +0 -0
  309. /package/src/core/color/{hsv2rgb.spec.js → hsv/hsv2rgb.spec.js} +0 -0
  310. /package/src/core/color/{rgb_to_kelvin.js → kelvin/rgb_to_kelvin.js} +0 -0
  311. /package/src/core/color/{linear_to_sRGB.js → sRGB/linear_to_sRGB.js} +0 -0
  312. /package/src/core/color/{sRGB_to_linear.js → sRGB/sRGB_to_linear.js} +0 -0
  313. /package/src/core/geom/{m3_determinant.js → mat3/m3_determinant.js} +0 -0
  314. /package/src/core/geom/{v3_distance.js → vec3/v3_distance.js} +0 -0
  315. /package/src/core/geom/{v3_distance_above_plane.js → vec3/v3_distance_above_plane.js} +0 -0
  316. /package/src/core/geom/{v3_distance_above_plane.spec.js → vec3/v3_distance_above_plane.spec.js} +0 -0
  317. /package/src/core/geom/{v3_distance_sqr.d.ts → vec3/v3_distance_sqr.d.ts} +0 -0
  318. /package/src/core/geom/{v3_distance_sqr.js → vec3/v3_distance_sqr.js} +0 -0
  319. /package/src/core/geom/{v3_dot.js → vec3/v3_dot.js} +0 -0
  320. /package/src/core/geom/{v3_length.js → vec3/v3_length.js} +0 -0
  321. /package/src/core/geom/{v3_length_sqr.js → vec3/v3_length_sqr.js} +0 -0
  322. /package/src/core/geom/{v3_slerp.js → vec3/v3_slerp.js} +0 -0
@@ -1,113 +0,0 @@
1
- import LineBuilder from "../../codegen/LineBuilder.js";
2
- import SchemeRegistry from "../../model/scheme/SchemeRegistry.js";
3
-
4
- function JsonSerializer(registry = new SchemeRegistry()) {
5
- this.registry = registry;
6
- this.serializers = {};
7
- }
8
-
9
- /**
10
- *
11
- * @param value
12
- * @param {Type} type
13
- * @param {Map} visitedObjects
14
- * @private
15
- */
16
- JsonSerializer.prototype.__serialize = function (value, type, visitedObjects) {
17
- const existing = visitedObjects.get(value);
18
- if (existing !== undefined) {
19
- //cycle detected
20
- return existing;
21
- }
22
-
23
- const serializer = this.getSerializer(typeName);
24
-
25
- const result = serializer(value);
26
-
27
- visitedObjects.put(value, result);
28
-
29
- return result;
30
- };
31
-
32
- JsonSerializer.prototype.serialize = function (value) {
33
- const type = value.constructor.@schema;
34
-
35
- return this.__serialize(value, type, new Map());
36
- };
37
-
38
- JsonSerializer.prototype.addSerializer = function (name, serializer) {
39
- this.serializers[name] = serializer;
40
- };
41
-
42
- /**
43
- *
44
- * @param {String} typeName
45
- * @returns {function}
46
- */
47
- JsonSerializer.prototype.getSerializer = function (typeName) {
48
- let serializer = this.serializers[typeName];
49
-
50
- if (serializer === undefined) {
51
- const schema = this.registry.get(typeName);
52
- serializer = this.buildSerializer(schema);
53
- this.addSerializer(typeName, serializer);
54
- }
55
-
56
- return serializer;
57
- };
58
-
59
- /**
60
- *
61
- * @param {Type} type
62
- */
63
- JsonSerializer.prototype.buildSerializer = function (type) {
64
-
65
- const fields = type.fields;
66
-
67
- const fieldSerializers = [];
68
- const fieldCount = fields.length;
69
-
70
- const serializerNames = [];
71
-
72
- for (let i = 0; i < fieldCount; i++) {
73
- const field = fields[i];
74
-
75
- const fieldType = field.type;
76
-
77
- serializerNames[i] = "$" + field.name;
78
-
79
- fieldSerializers[i] = this.getSerializer(fieldType.name);
80
- }
81
-
82
- const lb = new LineBuilder();
83
-
84
- lb.add("return function(value){")
85
- .indent()
86
- .add("return {")
87
- .indent();
88
-
89
- for (let i = 0; i < fieldCount; i++) {
90
- const field = fields[i];
91
-
92
- const serializerName = serializerNames[i];
93
-
94
- const lastLine = i + 1 >= fieldCount;
95
-
96
- const accessorSnippet = "value." + field.name + (field.observed ? ".get()" : "");
97
- const serializedValueSnippet = serializerName + "(" + accessorSnippet + ")";
98
-
99
- lb.add(field.name + " : " + serializedValueSnippet + (lastLine ? "" : ","));
100
- }
101
-
102
- lb.dedent()
103
- .add("};")
104
- .dedent()
105
- .add("};");
106
-
107
-
108
- const builder = new Function(serializerNames, lb.build());
109
-
110
- return builder(fieldSerializers);
111
- };
112
-
113
- export default JsonSerializer;
@@ -1,47 +0,0 @@
1
- /**
2
- *
3
- * @param {number} r 0 to 255
4
- * @param {number} g 0 to 255
5
- * @param {number} b 0 to 255
6
- * @returns {{h: number, s: number, v: number}}
7
- */
8
- export function rgb2hsv(r, g, b) {
9
-
10
- r /= 255;
11
- g /= 255;
12
- b /= 255;
13
-
14
-
15
- const max = Math.max(r, g, b);
16
- const min = Math.min(r, g, b);
17
-
18
- var h, s, v = max;
19
-
20
- var d = max - min;
21
-
22
- s = max === 0 ? 0 : d / max;
23
-
24
- if (max === min) {
25
- h = 0; // achromatic
26
- } else {
27
- switch (max) {
28
- case r:
29
- h = (g - b) / d + (g < b ? 6 : 0);
30
- break;
31
- case g:
32
- h = (b - r) / d + 2;
33
- break;
34
- case b:
35
- h = (r - g) / d + 4;
36
- break;
37
- }
38
-
39
- h /= 6;
40
- }
41
-
42
- return {
43
- h,
44
- s,
45
- v
46
- };
47
- }
@@ -1,16 +0,0 @@
1
- import { rgb2uint24 } from "./rgb2uint24.js";
2
-
3
- export function rgb_to_YCbCr_uint24(r, g, b) {
4
- const Y = 0.299 * r + 0.587 * g + 0.114 * b;
5
- const Cb = -0.169 * r - 0.331 * g + 0.499 * b + 128;
6
- const Cr = 0.499 * g - 0.418 * g - 0.0813 * b + 128;
7
- /**
8
- *
9
- * @see https://en.wikipedia.org/wiki/YUV
10
- * @param {number} r
11
- * @param {number} g
12
- * @param {number} b
13
- * @returns {number}
14
- */
15
- return rgb2uint24(Y,Cb,Cr);
16
- }
@@ -1,440 +0,0 @@
1
- /**
2
- * Created by Alex on 01/09/2014.
3
- */
4
-
5
-
6
- import { assert } from "../assert.js";
7
- import { dispatchViaProxy } from "../events/signal/Signal.js";
8
- import Graph from "../graph/Graph.js";
9
- import Future from "../process/Future.js";
10
- import Transition from "./Transition.js";
11
-
12
- /**
13
- *
14
- * @enum {number}
15
- */
16
- export const StateMachineEventType = {
17
- StateEntered: 0,
18
- StateExited: 1
19
- };
20
-
21
- /**
22
- * @template {T}
23
- * @constructor
24
- */
25
- function StateMachine() {
26
- this.graph = new Graph();
27
- this.state = null;
28
- this.isLocked = false;
29
-
30
- /**
31
- *
32
- * @type {Map<any, Array>}
33
- */
34
- this.stateProcessorMap = new Map();
35
-
36
- this.stateEntryHandlers = new Map();
37
- this.stateExitHandlers = new Map();
38
-
39
- /**
40
- * Used for debug mainly
41
- * @type {Array<T>}
42
- * @private
43
- */
44
- this.__history = [];
45
- }
46
-
47
- /**
48
- *
49
- * @param {T} source
50
- * @param {T} target
51
- * @param {Transition~action} action
52
- * @param {Transition~condition} [condition]
53
- * @returns {Transition}
54
- */
55
- StateMachine.prototype.createTransition = function (source, target, action, condition) {
56
- const transition = new Transition(source, target, action, condition);
57
- this.addTransition(transition);
58
- return transition;
59
- };
60
-
61
- /**
62
- *
63
- * @param {T} state
64
- * @param {StateMachineEventType} type
65
- * @param {function} handler
66
- */
67
- StateMachine.prototype.addEventHandler = function (state, type, handler) {
68
- let eventMap;
69
-
70
- if (type === StateMachineEventType.StateEntered) {
71
- eventMap = this.stateEntryHandlers;
72
- } else if (type === StateMachineEventType.StateExited) {
73
- eventMap = this.stateExitHandlers;
74
- } else {
75
- throw new Error(`Unknown event type '${type}'`);
76
- }
77
-
78
- const handlers = eventMap.get(state);
79
- if (handlers === undefined) {
80
- eventMap.set(state, [handler]);
81
- } else {
82
- handlers.push(handler);
83
- }
84
- };
85
-
86
- /**
87
- *
88
- * @param {T} state
89
- * @param {StateMachineEventType} type
90
- * @param {function} handler
91
- */
92
- StateMachine.prototype.removeEventHandler = function (state, type, handler) {
93
- let eventMap;
94
-
95
- if (type === StateMachineEventType.StateEntered) {
96
- eventMap = this.stateEntryHandlers;
97
- } else if (type === StateMachineEventType.StateExited) {
98
- eventMap = this.stateExitHandlers;
99
- } else {
100
- throw new Error(`Unknown event type '${type}'`);
101
- }
102
-
103
-
104
- const handlers = eventMap.get(state);
105
- if (handlers === undefined) {
106
- //no handlers, clearly handler was not registered
107
- console.warn('No listeners registered');
108
- } else {
109
- const i = handlers.indexOf(handler);
110
-
111
- if (i === -1) {
112
- console.warn('Listener not found');
113
- return;
114
- }
115
-
116
- handlers.splice(i, 1);
117
- }
118
- };
119
-
120
- /**
121
- *
122
- * @param {Transition} t
123
- */
124
- StateMachine.prototype.addTransition = function (t) {
125
- this.graph.addEdge(t);
126
- };
127
-
128
- /**
129
- *
130
- * @param {T} s
131
- */
132
- StateMachine.prototype.addState = function (s) {
133
- this.graph.addNode(s);
134
- };
135
-
136
- /**
137
- *
138
- * @param {T} state
139
- * @param {function():Promise<T>} processor
140
- */
141
- StateMachine.prototype.addStateProcessor = function (state, processor) {
142
- assert.notEqual(state, undefined, 'state was undefined');
143
- assert.equal(typeof processor, 'function', `processor must be a function, instead was '${typeof processor}'`)
144
-
145
- if (!this.graph.containsNode(state)) {
146
- throw new Error(`State ${state} is not found in the graph`);
147
- }
148
-
149
- const processors = this.stateProcessorMap.get(state);
150
-
151
- if (processors === undefined) {
152
- this.stateProcessorMap.set(state, [processor]);
153
- } else {
154
- processors.push(state);
155
- }
156
- };
157
-
158
- /**
159
- *
160
- * @param {Array.<*>} states
161
- */
162
- StateMachine.prototype.addAllStates = function (states) {
163
- let i = 0;
164
- const l = states.length;
165
- for (; i < l; i++) {
166
- this.addState(states[i]);
167
- }
168
- };
169
-
170
-
171
- /**
172
- *
173
- * @param {T} s
174
- */
175
- StateMachine.prototype.setState = function (s) {
176
- // console.warn('setState', s);
177
-
178
- const oldState = this.state;
179
-
180
- this.state = s;
181
-
182
- const exitHandlers = this.stateExitHandlers.get(oldState);
183
-
184
- if (exitHandlers !== undefined) {
185
- dispatchViaProxy(exitHandlers, [oldState, s]);
186
- }
187
-
188
- const entryHandlers = this.stateEntryHandlers.get(s);
189
-
190
- if (entryHandlers !== undefined) {
191
- dispatchViaProxy(entryHandlers, [s, oldState]);
192
- }
193
-
194
- this.__history.push(s);
195
- };
196
-
197
- /**
198
- *
199
- * @returns {T}
200
- */
201
- StateMachine.prototype.getState = function () {
202
- return this.state;
203
- };
204
-
205
- /**
206
- * Causes the state machine to enter a given state
207
- * @param {T} s
208
- */
209
- StateMachine.prototype.enterState = function (s) {
210
- if (this.isLocked) {
211
- throw new Error(`State Machine is locked, unable to set state from '${this.state}' to '${s}'`);
212
- }
213
-
214
- this.setState(s);
215
-
216
- //try all state processors in turn until all have been tried and failed or one has succeeded
217
- const processors = this.stateProcessorMap.get(s);
218
-
219
- const self = this;
220
-
221
-
222
- function executeStateProcessors(sm, processors) {
223
-
224
- let i = 0;
225
- const numProcessors = processors.length;
226
-
227
- function lockSM() {
228
- sm.isLocked = true;
229
- }
230
-
231
- function unlockSM() {
232
- sm.isLocked = false;
233
- }
234
-
235
- function executeNext() {
236
-
237
- const processor = processors[i];
238
-
239
- i++;
240
-
241
- let pendingProcess;
242
-
243
- try {
244
- pendingProcess = processor();
245
- } catch (e) {
246
- console.warn('Exception in state processor function, treating as failure and continuing.', e);
247
- handleTaskFailure();
248
- return;
249
- }
250
-
251
- assert.ok((pendingProcess instanceof Promise || pendingProcess instanceof Future), `processor must return a promise or a future, instead returned something else (${pendingProcess})`);
252
-
253
- self.__pendingProcess = pendingProcess;
254
-
255
- pendingProcess.then(handleTaskCompletion, handleTaskFailure);
256
- }
257
-
258
- function handleTaskCompletion(newState) {
259
- if (!self.graph.containsNode(newState)) {
260
- //produced state is not contained in the graph, treat as failure
261
- console.error(`Processor produced state that is not present in the graph, treating as failure.`);
262
-
263
- handleTaskFailure();
264
- } else {
265
- let foundTraversableEdge = false;
266
-
267
- self.graph.findTraversableEdges(s, newState, function (edge) {
268
- foundTraversableEdge = true;
269
- });
270
-
271
- if (!foundTraversableEdge) {
272
- console.error(`Processor requests an illegal move from state '${s}' to '${newState}', no valid transition exists. Treating as failure`);
273
- handleTaskFailure();
274
- } else {
275
- //unlock
276
- unlockSM();
277
- //transition
278
- self.enterState(newState);
279
- }
280
- }
281
- }
282
-
283
- function handleTaskFailure() {
284
- if (i === numProcessors) {
285
- //we're done
286
- unlockSM();
287
- } else {
288
- executeNext();
289
- }
290
- }
291
-
292
- lockSM();
293
-
294
- executeNext();
295
- }
296
-
297
- if (processors === undefined || processors.length === 0) {
298
- //no state processors
299
- } else {
300
- executeStateProcessors(this, processors);
301
- }
302
- };
303
-
304
- StateMachine.prototype.canTransitionTo = function (nextState) {
305
- const source = this.state;
306
- let result = false;
307
- this.traverseValidTransitions(function (node, edge) {
308
- if (node === nextState && edge.condition(source, node)) {
309
- result = true;
310
- //stop traversal
311
- return false;
312
- }
313
- });
314
- return result;
315
- };
316
-
317
- /**
318
- *
319
- * @param {Graph~visitor} visitor
320
- */
321
- StateMachine.prototype.traverseValidTransitions = function (visitor) {
322
- const source = this.state;
323
- this.graph.traverseSuccessors(source, function (node, edge) {
324
- if (edge.condition(source, node)) {
325
- return visitor(node, edge);
326
- }
327
- });
328
- };
329
-
330
-
331
- /**
332
- *
333
- * @param {Transition} transition
334
- * @param {T} targetState
335
- * @returns {Promise}
336
- */
337
- StateMachine.prototype.transitionOn = function (transition, targetState) {
338
- assert.equal(transition.second, targetState, `transition destination is not equal to targetState`);
339
-
340
- const sm = this;
341
- return new Promise(function (resolve, reject) {
342
- if (transition === null) {
343
- //no transition was found
344
- reject("no transition found");
345
- }
346
- //check lock on state machine
347
- if (sm.isLocked) {
348
- reject("state machine is locked, can not execute transition");
349
- }
350
-
351
- const stateFrom = sm.state;
352
-
353
- //lock state machine
354
- sm.isLocked = true;
355
-
356
- let promise;
357
-
358
- try {
359
- promise = transition.action(stateFrom, targetState);
360
- } catch (e) {
361
- //failed to perform transition
362
- promise = Promise.reject(e);
363
- }
364
-
365
- function handleTransitionSuccess() {
366
- sm.isLocked = false;
367
- sm.enterState(targetState);
368
- resolve();
369
- }
370
-
371
- function handleTransitionFailed(e) {
372
- sm.isLocked = false;
373
- reject(e);
374
- }
375
-
376
- promise.then(handleTransitionSuccess, handleTransitionFailed);
377
- });
378
- };
379
-
380
- /**
381
- *
382
- * @param {T} nextState Adjacent state
383
- * @returns {Promise}
384
- */
385
- StateMachine.prototype.transitionTo = function (nextState) {
386
- const sm = this;
387
- const state = sm.state;
388
-
389
- return new Promise(function (resolve, reject) {
390
- if (state === nextState) {
391
- //already there
392
- resolve();
393
- }
394
- let transition = null;
395
-
396
- sm.traverseValidTransitions(function (target, t) {
397
- if (t.second !== nextState) {
398
- //wrong target
399
- return;
400
- }
401
-
402
- transition = t;
403
- //stop traversal
404
- return false;
405
- });
406
-
407
- sm.transitionOn(transition, nextState).then(resolve, reject);
408
- });
409
- };
410
-
411
- /**
412
- *
413
- * @param {*} targetState
414
- * @returns {Promise}
415
- */
416
- StateMachine.prototype.navigateTo = function (targetState) {
417
- //find path
418
- const graph = this.graph;
419
-
420
- const start = this.state;
421
-
422
- const path = graph.findPath(start, targetState);
423
-
424
- if (path === null) {
425
- return Promise.reject(`no path found from ${start} to '${targetState}'`);
426
- }
427
-
428
- let result = Promise.resolve();
429
-
430
- let i = 1;
431
- const l = path.length;
432
- for (; i < l; i++) {
433
- const next = path[i];
434
- result = result.then(this.transitionTo(next));
435
- }
436
-
437
- return result;
438
- };
439
-
440
- export { StateMachine };
@@ -1,65 +0,0 @@
1
- /**
2
- * Created by Alex on 24/03/2016.
3
- */
4
-
5
-
6
- import { Edge, EdgeDirectionType } from "../graph/Edge.js";
7
-
8
- const TransitionExecutionMode = {
9
- Synchronous: 0,
10
- Asynchronous: 1
11
- };
12
-
13
- /**
14
- * @callback Transition~action
15
- * @param {*} source Node of transition origin
16
- * @param {*} target Node of destination
17
- * @returns {Promise} Promise is evaluated to perform transition, and transition is not finished until promise is resolved
18
- */
19
-
20
- /**
21
- * @callback Transition~condition
22
- * @param {*} source
23
- * @param {*} target
24
- * @returns {boolean} judgement on validity of transition from source to target
25
- */
26
-
27
- /**
28
- *
29
- * @param {*} source
30
- * @param {*} target
31
- * @returns {boolean}
32
- */
33
- function fTrue(source, target) {
34
- return true;
35
- }
36
-
37
- class Transition extends Edge {
38
- /**
39
- *
40
- * @param {*} source
41
- * @param {*} target
42
- * @param {Transition~action} action
43
- * @param {Transition~condition} condition
44
- * @constructor
45
- * @extends Edge
46
- */
47
- constructor(source, target, action, condition) {
48
- super(source, target);
49
- //make it a directed edge
50
- this.direction = EdgeDirectionType.Forward;
51
-
52
- this.action = action;
53
- this.condition = (typeof condition === "function") ? condition : fTrue;
54
- }
55
-
56
- /**
57
- * @inheritDoc Transition~action
58
- */
59
- static EmptyAction(source, target) {
60
- return Promise.resolve();
61
- }
62
- }
63
-
64
-
65
- export default Transition;
@@ -1,24 +0,0 @@
1
- /**
2
- *
3
- * @param {Vector2} result
4
- * @param {number} p0x
5
- * @param {number} p0y
6
- * @param {number} p1x
7
- * @param {number} p1y
8
- * @param {number} p2x
9
- * @param {number} p2y
10
- * @param {number} t
11
- */
12
- export function computeQuadraticBezier2D(result, p0x, p0y, p1x, p1y, p2x, p2y, t) {
13
- const minus = 1 - t;
14
- const minus2 = minus * minus;
15
-
16
- const f = minus * 2 * t;
17
- const t2 = t * t;
18
-
19
-
20
- const x0 = p0x * minus2 + p1x * f + p2x * t2;
21
- const y0 = p0y * minus2 + p1y * f + p2y * t2;
22
-
23
- result.set(x0, y0);
24
- }
@@ -1,16 +0,0 @@
1
- import { computeQuadraticBezier2D } from "./Bezier.js";
2
- import Vector2 from "./Vector2.js";
3
-
4
- test("computeQuadraticBezier2D hits knots",()=>{
5
- const v2 = new Vector2();
6
-
7
- computeQuadraticBezier2D(v2,1,3,5,7,11,13,0);
8
-
9
- expect(v2.x).toBeCloseTo(1);
10
- expect(v2.y).toBeCloseTo(3);
11
-
12
- computeQuadraticBezier2D(v2,1,3,5,7,11,13,1);
13
-
14
- expect(v2.x).toBeCloseTo(11);
15
- expect(v2.y).toBeCloseTo(13);
16
- });