@woosh/meep-engine 2.110.14 → 2.111.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 (465) hide show
  1. package/build/meep.cjs +442 -370
  2. package/build/meep.min.js +1 -1
  3. package/build/meep.module.js +442 -370
  4. package/editor/tools/v2/BlenderCameraOrientationGizmo.js +4 -2
  5. package/package.json +4 -2
  6. package/src/core/events/signal/Signal.d.ts.map +1 -1
  7. package/src/core/events/signal/Signal.js +289 -255
  8. package/src/core/events/signal/SignalHandler.d.ts +7 -2
  9. package/src/core/events/signal/SignalHandler.d.ts.map +1 -1
  10. package/src/core/events/signal/SignalHandler.js +12 -6
  11. package/src/core/events/signal/signal_handler_list_find.d.ts +8 -0
  12. package/src/core/events/signal/signal_handler_list_find.d.ts.map +1 -0
  13. package/src/core/events/signal/signal_handler_list_find.js +23 -0
  14. package/src/core/events/signal/signal_handler_list_last.d.ts +7 -0
  15. package/src/core/events/signal/signal_handler_list_last.d.ts.map +1 -0
  16. package/src/core/events/signal/signal_handler_list_last.js +14 -0
  17. package/src/core/events/signal/signal_handler_list_validate.d.ts +8 -0
  18. package/src/core/events/signal/signal_handler_list_validate.d.ts.map +1 -0
  19. package/src/core/events/signal/signal_handler_list_validate.js +29 -0
  20. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts +2 -3
  21. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.d.ts.map +1 -1
  22. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +3 -3
  23. package/src/engine/graphics/ecs/camera/Camera.d.ts.map +1 -1
  24. package/src/engine/graphics/ecs/camera/Camera.js +2 -2
  25. package/src/engine/graphics/ecs/camera/CameraSystem.d.ts.map +1 -1
  26. package/src/engine/graphics/ecs/camera/CameraSystem.js +10 -2
  27. package/src/engine/graphics/ecs/camera/quaternion_invert_orientation.d.ts +7 -0
  28. package/src/engine/graphics/ecs/camera/quaternion_invert_orientation.d.ts.map +1 -0
  29. package/src/engine/graphics/ecs/camera/{InvertQuaternionOrientation.js → quaternion_invert_orientation.js} +6 -5
  30. package/editor/actions/concrete/ModifyPatchSampler2DAction.spec.js +0 -30
  31. package/src/core/IdPool.spec.js +0 -29
  32. package/src/core/UUID.spec.js +0 -8
  33. package/src/core/binary/32BitEncoder.spec.js +0 -11
  34. package/src/core/binary/Base64.spec.js +0 -14
  35. package/src/core/binary/BinaryBuffer.spec.js +0 -324
  36. package/src/core/binary/BitSet.spec.js +0 -468
  37. package/src/core/binary/EncodingBinaryBuffer.spec.js +0 -16
  38. package/src/core/binary/align_32.spec.js +0 -11
  39. package/src/core/binary/align_4.spec.js +0 -20
  40. package/src/core/binary/data_view/DataViewStructAccessor.spec.js +0 -20
  41. package/src/core/binary/de_interleave_2_bits.spec.js +0 -21
  42. package/src/core/binary/dec2hex.spec.js +0 -13
  43. package/src/core/binary/hex2dec.spec.js +0 -22
  44. package/src/core/binary/int32_to_binary_string.spec.js +0 -9
  45. package/src/core/binary/operations/bitCount.spec.js +0 -19
  46. package/src/core/binary/operations/ceilPowerOfTwo.spec.js +0 -17
  47. package/src/core/binary/reverse_bits_uint32.spec.js +0 -18
  48. package/src/core/binary/split_by_2.spec.js +0 -22
  49. package/src/core/binary/split_by_3.spec.js +0 -22
  50. package/src/core/binary/uint8_to_float.spec.js +0 -7
  51. package/src/core/bvh2/binary/2/BinaryUint32BVH.spec.js +0 -136
  52. package/src/core/bvh2/bvh3/BVH.spec.js +0 -361
  53. package/src/core/bvh2/bvh3/BvhClient.spec.js +0 -51
  54. package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.spec.js +0 -60
  55. package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.spec.js +0 -22
  56. package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.spec.js +0 -64
  57. package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.spec.js +0 -29
  58. package/src/core/bvh2/bvh3/query/bvh_query_user_data_nearest_to_point.spec.js +0 -209
  59. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.spec.js +0 -41
  60. package/src/core/cache/Cache.spec.js +0 -277
  61. package/src/core/cache/FrequencySketch.spec.js +0 -5
  62. package/src/core/cache/LoadingCache.spec.js +0 -120
  63. package/src/core/codegen/LineBuilder.spec.js +0 -41
  64. package/src/core/collection/CuckooFilter.spec.js +0 -111
  65. package/src/core/collection/RingBuffer.spec.js +0 -59
  66. package/src/core/collection/Stack.spec.js +0 -63
  67. package/src/core/collection/array/arrayPickBestElement.spec.js +0 -7
  68. package/src/core/collection/array/arraySetSortingDiff.spec.js +0 -74
  69. package/src/core/collection/array/array_contains_duplicates.spec.js +0 -14
  70. package/src/core/collection/array/array_copy.spec.js +0 -19
  71. package/src/core/collection/array/array_deduplicate.spec.js +0 -11
  72. package/src/core/collection/array/array_get_index_in_range.spec.js +0 -16
  73. package/src/core/collection/array/array_remove_first.spec.js +0 -39
  74. package/src/core/collection/array/array_shuffle.spec.js +0 -27
  75. package/src/core/collection/array/binarySearchHighIndex.spec.js +0 -51
  76. package/src/core/collection/array/isArrayEqual.spec.js +0 -25
  77. package/src/core/collection/array/typed/is_typed_array_equals.spec.js +0 -71
  78. package/src/core/collection/array/weightedRandomFromArray.spec.js +0 -22
  79. package/src/core/collection/heap/BinaryHeap.spec.js +0 -137
  80. package/src/core/collection/heap/Uint32Heap.spec.js +0 -172
  81. package/src/core/collection/list/List.spec.js +0 -438
  82. package/src/core/collection/list/ListForwarder.spec.js +0 -101
  83. package/src/core/collection/map/HashMap.spec.js +0 -291
  84. package/src/core/collection/queue/Deque.spec.js +0 -276
  85. package/src/core/collection/set/HashSet.spec.js +0 -39
  86. package/src/core/collection/set/compute_set_difference.spec.js +0 -45
  87. package/src/core/collection/set/compute_set_intersection.spec.js +0 -45
  88. package/src/core/collection/table/RowFirstTable.spec.js +0 -323
  89. package/src/core/collection/table/RowFirstTableSpec.spec.js +0 -49
  90. package/src/core/collection/table/bind/TableRecord.spec.js +0 -27
  91. package/src/core/color/Color.spec.js +0 -174
  92. package/src/core/color/YCbCr/YCbCr.spec.js +0 -16
  93. package/src/core/color/hex/hex2rgb.spec.js +0 -10
  94. package/src/core/color/hex/rgb2hex.spec.js +0 -13
  95. package/src/core/color/hsv/hsv2rgb.spec.js +0 -43
  96. package/src/core/color/kelvin/kelvin_to_rgb.spec.js +0 -61
  97. package/src/core/color/kelvin/rgb_to_kelvin.spec.js +0 -15
  98. package/src/core/color/oklab/Okhsv.spec.js +0 -17
  99. package/src/core/color/oklab/XYZ.spec.js +0 -17
  100. package/src/core/color/oklab/oklab_to_xyz.spec.js +0 -31
  101. package/src/core/color/oklab/xyz_to_oklab.spec.js +0 -31
  102. package/src/core/color/parse_color.spec.js +0 -18
  103. package/src/core/color/sRGB/sRGB.spec.js +0 -16
  104. package/src/core/color/xyz/XYZ.spec.js +0 -16
  105. package/src/core/events/signal/Signal.spec.js +0 -253
  106. package/src/core/events/signal/SignalBinding.spec.js +0 -58
  107. package/src/core/fsm/simple/SimpleStateMachine.spec.js +0 -107
  108. package/src/core/fsm/simple/SimpleStateMachineDescription.spec.js +0 -103
  109. package/src/core/function/extractFunctionBody.spec.js +0 -15
  110. package/src/core/geom/2d/Rectangle.spec.js +0 -62
  111. package/src/core/geom/2d/aabb/AABB2.spec.js +0 -153
  112. package/src/core/geom/2d/aabb/aabb2_compute_center_from_multiple.spec.js +0 -11
  113. package/src/core/geom/2d/aabb/aabb2_compute_overlap.spec.js +0 -56
  114. package/src/core/geom/2d/aabb/aabb2_contains.spec.js +0 -40
  115. package/src/core/geom/2d/aabb/aabb2_distance_to_point.spec.js +0 -17
  116. package/src/core/geom/2d/aabb/aabb2_intersects_ray.spec.js +0 -28
  117. package/src/core/geom/2d/aabb/aabb2_signed_distance_sqr_to_point.spec.js +0 -40
  118. package/src/core/geom/2d/bvh/BVH2D.spec.js +0 -359
  119. package/src/core/geom/2d/bvh/bvh2d_query_all_data_by_circle.spec.js +0 -89
  120. package/src/core/geom/2d/circle/circle_compute_circle_intersection.spec.js +0 -79
  121. package/src/core/geom/2d/compute_polygon_area_2d.spec.js +0 -10
  122. package/src/core/geom/2d/compute_triangle_area_2d.spec.js +0 -9
  123. package/src/core/geom/2d/convex-hull/convex_hull_jarvis_2d.spec.js +0 -33
  124. package/src/core/geom/2d/convex-hull/convex_hull_monotone_2d.spec.js +0 -33
  125. package/src/core/geom/2d/hash-grid/SpatialHashGrid.spec.js +0 -254
  126. package/src/core/geom/2d/hash-grid/shg_query_elements_circle.spec.js +0 -85
  127. package/src/core/geom/2d/hash-grid/shg_query_elements_line.spec.js +0 -102
  128. package/src/core/geom/2d/quad-tree/QuadTreeNode.spec.js +0 -235
  129. package/src/core/geom/2d/quad-tree/qt_match_data_by_circle.spec.js +0 -86
  130. package/src/core/geom/2d/quad-tree-binary/QuadTree.spec.js +0 -53
  131. package/src/core/geom/2d/r-tree/StaticR2Tree.spec.js +0 -62
  132. package/src/core/geom/2d/spline_bezier2_2d.spec.js +0 -16
  133. package/src/core/geom/2d/uv_map_circle_to_square.spec.js +0 -28
  134. package/src/core/geom/2d/uv_map_square_to_circle.spec.js +0 -30
  135. package/src/core/geom/3d/SurfacePoint3.spec.js +0 -116
  136. package/src/core/geom/3d/aabb/AABB3.spec.js +0 -257
  137. package/src/core/geom/3d/aabb/aabb3_array_intersects_point.spec.js +0 -48
  138. package/src/core/geom/3d/aabb/aabb3_build_corners.spec.js +0 -27
  139. package/src/core/geom/3d/aabb/aabb3_compute_distance_above_plane_max.spec.js +0 -8
  140. package/src/core/geom/3d/aabb/aabb3_compute_plane_side.spec.js +0 -25
  141. package/src/core/geom/3d/aabb/aabb3_corner_edge_mapping.spec.js +0 -39
  142. package/src/core/geom/3d/aabb/aabb3_edge_corner_mapping.spec.js +0 -32
  143. package/src/core/geom/3d/aabb/aabb3_expand_array.spec.js +0 -16
  144. package/src/core/geom/3d/aabb/aabb3_from_v3_array.spec.js +0 -32
  145. package/src/core/geom/3d/aabb/aabb3_intersects_aabb3.spec.js +0 -115
  146. package/src/core/geom/3d/aabb/aabb3_intersects_ray.spec.js +0 -161
  147. package/src/core/geom/3d/aabb/aabb3_matrix4_project.spec.js +0 -54
  148. package/src/core/geom/3d/aabb/aabb3_raycast.spec.js +0 -37
  149. package/src/core/geom/3d/aabb/aabb3_score_boxes_SAH.spec.js +0 -14
  150. package/src/core/geom/3d/cone/computeConePlaneSide.spec.js +0 -13
  151. package/src/core/geom/3d/cone/compute_bounding_cone_of_2_cones.spec.js +0 -95
  152. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.spec.js +0 -61
  153. package/src/core/geom/3d/mat4/MATRIX_4_IDENTITY.spec.js +0 -10
  154. package/src/core/geom/3d/mat4/m4_multiply.spec.js +0 -34
  155. package/src/core/geom/3d/mat4/m4_multiply_alphatensor.spec.js +0 -35
  156. package/src/core/geom/3d/morton/v3_morton_encode_transformed.spec.js +0 -20
  157. package/src/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +0 -41
  158. package/src/core/geom/3d/normal/octahedron/encoding.spec.js +0 -54
  159. package/src/core/geom/3d/plane/plane3_projectPoint.spec.js +0 -54
  160. package/src/core/geom/3d/plane/plane3_slerp.spec.js +0 -209
  161. package/src/core/geom/3d/ray/ray3_array_compose.spec.js +0 -14
  162. package/src/core/geom/3d/shape/TransformedShape3D.spec.js +0 -55
  163. package/src/core/geom/3d/shape/UnitCubeShape3D.spec.js +0 -42
  164. package/src/core/geom/3d/sphere/harmonics/sh3_dering_optimize_positive.spec.js +0 -53
  165. package/src/core/geom/3d/sphere/harmonics/sh3_vector_accumulate.spec.js +0 -27
  166. package/src/core/geom/3d/sphere/sphere_intersects_point.spec.js +0 -134
  167. package/src/core/geom/3d/sphere/sphere_intersects_ray.spec.js +0 -60
  168. package/src/core/geom/3d/sphere/sphere_radius_sqr_from_v3_array_transformed.spec.js +0 -8
  169. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.spec.js +0 -233
  170. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.spec.js +0 -66
  171. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.spec.js +0 -36
  172. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_build_from_grid.spec.js +0 -61
  173. package/src/core/geom/3d/tetrahedra/delaunay/tetrahedral_mesh_compute_sub_determinant.spec.js +0 -30
  174. package/src/core/geom/3d/tetrahedra/tetrahedron_compute_signed_volume.spec.js +0 -24
  175. package/src/core/geom/3d/tetrahedra/tetrahedron_contains_point.spec.js +0 -66
  176. package/src/core/geom/3d/topology/simplify/collapseEdge.spec.js +0 -24
  177. package/src/core/geom/3d/topology/struct/TopoEdge.spec.js +0 -52
  178. package/src/core/geom/3d/topology/struct/TopoVertex.spec.js +0 -128
  179. package/src/core/geom/3d/topology/struct/binary/BinaryElementPool.spec.js +0 -36
  180. package/src/core/geom/3d/topology/struct/binary/BinaryTopology.spec.js +0 -16
  181. package/src/core/geom/3d/topology/struct/binary/io/bt_index_geometry_to_topology.spec.js +0 -84
  182. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_edge_has_vertex.spec.js +0 -15
  183. package/src/core/geom/3d/topology/struct/binary/query/bt_mesh_edge_other_vertex.spec.js +0 -16
  184. package/src/core/geom/3d/triangle/computeTriangleClosestPointToPointBarycentric.spec.js +0 -100
  185. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.spec.js +0 -25
  186. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.spec.js +0 -26
  187. package/src/core/geom/3d/v3_compute_triangle_normal.spec.js +0 -46
  188. package/src/core/geom/ConicRay.spec.js +0 -24
  189. package/src/core/geom/Quaternion.spec.js +0 -429
  190. package/src/core/geom/Vector1.spec.js +0 -74
  191. package/src/core/geom/Vector2.spec.js +0 -295
  192. package/src/core/geom/Vector3.spec.js +0 -285
  193. package/src/core/geom/Vector4.spec.js +0 -11
  194. package/src/core/geom/normalize_angle_rad.spec.js +0 -45
  195. package/src/core/geom/packing/computeBoundingSphereOfSpheres.spec.js +0 -24
  196. package/src/core/geom/packing/max-rect/MaxRectanglesPacker.spec.js +0 -60
  197. package/src/core/geom/packing/miniball/Miniball.spec.js +0 -35
  198. package/src/core/geom/packing/miniball/Subspan.spec.js +0 -51
  199. package/src/core/geom/random/randomPointOnBox.spec.js +0 -57
  200. package/src/core/geom/vec/vector_normalize.spec.js +0 -15
  201. package/src/core/geom/vec3/v3_angle_cos_between.spec.js +0 -124
  202. package/src/core/geom/vec3/v3_displace_in_direction.spec.js +0 -80
  203. package/src/core/geom/vec3/v3_distance_above_plane.spec.js +0 -40
  204. package/src/core/graph/Edge.spec.js +0 -85
  205. package/src/core/graph/SquareMatrix.spec.js +0 -102
  206. package/src/core/graph/coloring/colorizeGraphGreedy.spec.js +0 -26
  207. package/src/core/graph/convert_graph_to_dot_string.spec.js +0 -28
  208. package/src/core/graph/eigen/matrix_eigenvalues_in_place.spec.js +0 -57
  209. package/src/core/graph/graph_k_means_cluster.spec.js +0 -23
  210. package/src/core/graph/mn_graph_coarsen.spec.js +0 -45
  211. package/src/core/graph/v2/Graph.spec.js +0 -364
  212. package/src/core/json/resolvePath.spec.js +0 -14
  213. package/src/core/lang/reactive/compileReactiveExpression.spec.js +0 -169
  214. package/src/core/math/bessel_j0.spec.js +0 -43
  215. package/src/core/math/clamp.spec.js +0 -15
  216. package/src/core/math/computeGreatestCommonDivisor.spec.js +0 -9
  217. package/src/core/math/computeIsoscelesTriangleApexAngle.spec.js +0 -6
  218. package/src/core/math/computeWholeDivisorLow.spec.js +0 -9
  219. package/src/core/math/copysign.spec.js +0 -13
  220. package/src/core/math/epsilonEquals.spec.js +0 -17
  221. package/src/core/math/factorial.spec.js +0 -9
  222. package/src/core/math/fract.spec.js +0 -11
  223. package/src/core/math/hash/computeHashFloatArray.spec.js +0 -11
  224. package/src/core/math/hash/computeObjectHash.spec.js +0 -42
  225. package/src/core/math/hash/murmur3_32.spec.js +0 -8
  226. package/src/core/math/hash/squirrel3.spec.js +0 -16
  227. package/src/core/math/iabs.spec.js +0 -9
  228. package/src/core/math/interval/NumericInterval.spec.js +0 -89
  229. package/src/core/math/interval/isValueBetween.spec.js +0 -11
  230. package/src/core/math/interval/isValueBetweenInclusive.spec.js +0 -16
  231. package/src/core/math/interval/overlap1D.spec.js +0 -10
  232. package/src/core/math/inverseLerp.spec.js +0 -13
  233. package/src/core/math/isPowerOfTwo.spec.js +0 -9
  234. package/src/core/math/isqrt.spec.js +0 -9
  235. package/src/core/math/lerp.spec.js +0 -15
  236. package/src/core/math/linalg/solve_linear_system.spec.js +0 -70
  237. package/src/core/math/max.spec.js +0 -25
  238. package/src/core/math/max2.spec.js +0 -13
  239. package/src/core/math/max3.spec.js +0 -29
  240. package/src/core/math/min2.spec.js +0 -37
  241. package/src/core/math/min3.spec.js +0 -29
  242. package/src/core/math/newton_solver_1d.spec.js +0 -9
  243. package/src/core/math/nextOdd.spec.js +0 -9
  244. package/src/core/math/noise/create_simplex_noise_2d.spec.js +0 -21
  245. package/src/core/math/noise/sdnoise.spec.js +0 -87
  246. package/src/core/math/physics/irradiance/interpolate_irradiance_linear.spec.js +0 -20
  247. package/src/core/math/physics/irradiance/interpolate_irradiance_lograrithmic.spec.js +0 -18
  248. package/src/core/math/physics/irradiance/interpolate_irradiance_smith.spec.js +0 -20
  249. package/src/core/math/pingpong.spec.js +0 -11
  250. package/src/core/math/random/MersenneTwister.spec.js +0 -19
  251. package/src/core/math/random/randomFloatBetween.spec.js +0 -9
  252. package/src/core/math/random/randomGaussian.spec.js +0 -9
  253. package/src/core/math/random/randomIntegerBetween.spec.js +0 -8
  254. package/src/core/math/random/roundFair.spec.js +0 -12
  255. package/src/core/math/random/seededRandomMersenneTwister.spec.js +0 -10
  256. package/src/core/math/random/seededRandom_Mulberry32.spec.js +0 -19
  257. package/src/core/math/remap.spec.js +0 -15
  258. package/src/core/math/sign.spec.js +0 -13
  259. package/src/core/math/smoothStep.spec.js +0 -16
  260. package/src/core/math/smootherStep.spec.js +0 -16
  261. package/src/core/math/solveQuadratic.spec.js +0 -18
  262. package/src/core/math/spline/cubicCurve.spec.js +0 -13
  263. package/src/core/math/spline/makeCubicCurve.spec.js +0 -9
  264. package/src/core/math/spline/spline_bezier2.spec.js +0 -13
  265. package/src/core/math/spline/spline_bezier3_bounds.spec.js +0 -37
  266. package/src/core/math/spline/spline_hermite3.spec.js +0 -18
  267. package/src/core/math/spline/spline_hermite3_bounds.spec.js +0 -37
  268. package/src/core/math/statistics/computeSampleSize_Cochran.spec.js +0 -12
  269. package/src/core/math/statistics/computeStatisticalMean.spec.js +0 -9
  270. package/src/core/math/statistics/computeStatisticalPartialMedian.spec.js +0 -13
  271. package/src/core/math/statistics/computeStatisticalPercentile.spec.js +0 -11
  272. package/src/core/math/statistics/computeStatisticalVariance.spec.js +0 -10
  273. package/src/core/math/statistics/halton_sequence.spec.js +0 -40
  274. package/src/core/math/statistics/radical_inverse_VdC_base_2.spec.js +0 -9
  275. package/src/core/math/statistics/softmax.spec.js +0 -9
  276. package/src/core/model/BooleanVector3.spec.js +0 -51
  277. package/src/core/model/BoundedValue.spec.js +0 -17
  278. package/src/core/model/ModuleRegistry.spec.js +0 -31
  279. package/src/core/model/ObservedBoolean.spec.js +0 -81
  280. package/src/core/model/ObservedInteger.spec.js +0 -51
  281. package/src/core/model/node-graph/Connection.spec.js +0 -33
  282. package/src/core/model/node-graph/NodeGraph.spec.js +0 -107
  283. package/src/core/model/node-graph/node/NodeDescription.spec.js +0 -81
  284. package/src/core/model/node-graph/node/NodeInstance.spec.js +0 -82
  285. package/src/core/model/node-graph/node/NodeInstancePortReference.spec.js +0 -109
  286. package/src/core/model/node-graph/node/NodeRegistry.spec.js +0 -123
  287. package/src/core/model/node-graph/node/Port.spec.js +0 -102
  288. package/src/core/model/node-graph/type/DataType.spec.js +0 -47
  289. package/src/core/model/node-graph/type/ParametricDataType.spec.js +0 -63
  290. package/src/core/model/node-graph/visual/PortVisualData.spec.js +0 -16
  291. package/src/core/model/object/ObjectPoolFactory.spec.js +0 -54
  292. package/src/core/model/object/objectDeepEquals.spec.js +0 -54
  293. package/src/core/model/object/write_property.spec.js +0 -26
  294. package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.spec.js +0 -158
  295. package/src/core/model/reactive/js/compileReactiveToJS.spec.js +0 -14
  296. package/src/core/model/reactive/model/logic/ReactiveAnd.spec.js +0 -51
  297. package/src/core/model/reactive/model/logic/ReactiveOr.spec.js +0 -53
  298. package/src/core/model/reactive/model/terminal/ReactiveReference.spec.js +0 -26
  299. package/src/core/model/reactive/trigger/BlackboardTrigger.spec.js +0 -24
  300. package/src/core/model/reactive/trigger/ReactiveTrigger.spec.js +0 -5
  301. package/src/core/model/stat/LinearModifier.spec.js +0 -96
  302. package/src/core/model/stat/Stat.spec.js +0 -111
  303. package/src/core/parser/simple/readHexToken.spec.js +0 -21
  304. package/src/core/parser/simple/readIdentifierToken.spec.js +0 -32
  305. package/src/core/parser/simple/readNumberToken.spec.js +0 -17
  306. package/src/core/parser/simple/readReferenceToken.spec.js +0 -18
  307. package/src/core/parser/simple/readStringToken.spec.js +0 -57
  308. package/src/core/parser/simple/readUnsignedIntegerToken.spec.js +0 -6
  309. package/src/core/path/computeFileExtension.spec.js +0 -13
  310. package/src/core/path/computePathBase.spec.js +0 -13
  311. package/src/core/path/computePathDirectory.spec.js +0 -8
  312. package/src/core/primitives/array/computeStridedIntegerArrayHash.spec.js +0 -28
  313. package/src/core/primitives/numbers/computeHashFloat.spec.js +0 -14
  314. package/src/core/primitives/numbers/number_compare_ascending.spec.js +0 -9
  315. package/src/core/primitives/numbers/number_compare_descending.spec.js +0 -9
  316. package/src/core/primitives/numbers/number_format_by_thousands.spec.js +0 -12
  317. package/src/core/primitives/numbers/number_pretty_print.spec.js +0 -19
  318. package/src/core/primitives/strings/compareStrings.spec.js +0 -12
  319. package/src/core/primitives/strings/computeStringHash.spec.js +0 -20
  320. package/src/core/primitives/strings/insert_after.spec.js +0 -16
  321. package/src/core/primitives/strings/insert_before.spec.js +0 -16
  322. package/src/core/primitives/strings/string_capitalize.spec.js +0 -13
  323. package/src/core/primitives/strings/string_compute_common_prefix.spec.js +0 -23
  324. package/src/core/primitives/strings/string_format_camel_to_kebab.spec.js +0 -8
  325. package/src/core/primitives/strings/string_jaro_winkler.spec.js +0 -39
  326. package/src/core/primitives/strings/string_strip_trailing.spec.js +0 -27
  327. package/src/core/process/PromiseWatcher.spec.js +0 -69
  328. package/src/core/process/executor/ConcurrentExecutor.spec.js +0 -135
  329. package/src/core/process/task/util/actionTask.spec.js +0 -14
  330. package/src/core/process/task/util/countTask.spec.js +0 -18
  331. package/src/core/process/undo/ActionProcessor.spec.js +0 -64
  332. package/src/engine/Clock.spec.js +0 -26
  333. package/src/engine/Engine.spec.js +0 -15
  334. package/src/engine/achievements/Achievement.spec.js +0 -21
  335. package/src/engine/animation/curve/AnimationCurve.spec.js +0 -248
  336. package/src/engine/animation/curve/Keyframe.spec.js +0 -42
  337. package/src/engine/animation/curve/animation_curve_optimize.spec.js +0 -50
  338. package/src/engine/animation/curve/compression/downsample_float_array_curve_by_error.spec.js +0 -47
  339. package/src/engine/animation/curve/compression/sample_animation_curve_to_float_array.spec.js +0 -29
  340. package/src/engine/animation/keyed2/AnimationTrackPlayback.spec.js +0 -94
  341. package/src/engine/asset/AssetDescription.spec.js +0 -27
  342. package/src/engine/asset/AssetManager.spec.js +0 -50
  343. package/src/engine/asset/loaders/image/png/PNG.spec.js +0 -5
  344. package/src/engine/asset/loaders/image/png/PNGReader.spec.js +0 -5
  345. package/src/engine/asset/loaders/image/png/crc.spec.js +0 -15
  346. package/src/engine/control/ControlContext.spec.js +0 -81
  347. package/src/engine/ecs/Entity.spec.js +0 -188
  348. package/src/engine/ecs/EntityBlueprint.spec.js +0 -52
  349. package/src/engine/ecs/EntityComponentDataset.spec.js +0 -895
  350. package/src/engine/ecs/EntityManager.spec.js +0 -210
  351. package/src/engine/ecs/EntityObserver.spec.js +0 -184
  352. package/src/engine/ecs/animation/Animation.spec.js +0 -22
  353. package/src/engine/ecs/animation/AnimationClip.spec.js +0 -5
  354. package/src/engine/ecs/components/Tag.spec.js +0 -47
  355. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.spec.js +0 -126
  356. package/src/engine/ecs/fow/FogOfWar.spec.js +0 -13
  357. package/src/engine/ecs/guid/UUID.spec.js +0 -100
  358. package/src/engine/ecs/guid/UUIDSerializationAdapter.spec.js +0 -21
  359. package/src/engine/ecs/parent/EntityNode.spec.js +0 -104
  360. package/src/engine/ecs/renderable/Renderable.spec.js +0 -10
  361. package/src/engine/ecs/storage/binary/BinarySerializationRegistry.spec.js +0 -139
  362. package/src/engine/ecs/storage/binary/collection/BinaryCollectionSerialization.spec.js +0 -259
  363. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter.spec.js +0 -59
  364. package/src/engine/ecs/storage/binary/object/BinaryObjectSerializationAdapter2.spec.js +0 -123
  365. package/src/engine/ecs/terrain/ecs/Terrain.spec.js +0 -5
  366. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.spec.js +0 -38
  367. package/src/engine/ecs/terrain/overlay/TerrainOverlay.spec.js +0 -6
  368. package/src/engine/ecs/terrain/tiles/TerrainTile.spec.js +0 -25
  369. package/src/engine/ecs/tooltip/TooltipComponent.spec.js +0 -47
  370. package/src/engine/ecs/transform/Transform.spec.js +0 -310
  371. package/src/engine/ecs/transform/TransformSerializationAdapter.spec.js +0 -28
  372. package/src/engine/ecs/transform-attachment/TransformAttachment.spec.js +0 -103
  373. package/src/engine/graphics/ecs/animation/animator/graph/AnimationGraph.spec.js +0 -5
  374. package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.spec.js +0 -5
  375. package/src/engine/graphics/ecs/camera/InvertQuaternionOrientation.d.ts +0 -7
  376. package/src/engine/graphics/ecs/camera/InvertQuaternionOrientation.d.ts.map +0 -1
  377. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraController.spec.js +0 -94
  378. package/src/engine/graphics/ecs/decal/v2/Decal.spec.js +0 -5
  379. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.spec.js +0 -19
  380. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.spec.js +0 -5
  381. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.spec.js +0 -79
  382. package/src/engine/graphics/ecs/path/tube/TubePathStyle.spec.js +0 -5
  383. package/src/engine/graphics/ecs/path/tube/build/build_geometry_catmullrom.spec.js +0 -32
  384. package/src/engine/graphics/geometry/MikkT/MikkTSpace.spec.js +0 -28
  385. package/src/engine/graphics/geometry/bvh/buffered/bvh32_from_unindexed_geometry.spec.js +0 -22
  386. package/src/engine/graphics/particles/particular/engine/MovingBoundingBox.spec.js +0 -70
  387. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.spec.js +0 -47
  388. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.spec.js +0 -100
  389. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +0 -225
  390. package/src/engine/graphics/particles/particular/engine/parameter/ParameterLookupTable.spec.js +0 -215
  391. package/src/engine/graphics/particles/particular/engine/parameter/ParameterSet.spec.js +0 -75
  392. package/src/engine/graphics/particles/particular/group/ParticleGroup.spec.js +0 -270
  393. package/src/engine/graphics/render/buffer/slot/parameter/ProgramValueSlotParameter.spec.js +0 -21
  394. package/src/engine/graphics/render/forward_plus/LightManager.spec.js +0 -94
  395. package/src/engine/graphics/render/forward_plus/cluster/write_cluster_planes.spec.js +0 -79
  396. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.spec.js +0 -102
  397. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.spec.js +0 -78
  398. package/src/engine/graphics/texture/atlas/TextureAtlas.spec.js +0 -319
  399. package/src/engine/graphics/texture/sampler/HarmonicDiffusionGrid.spec.js +0 -99
  400. package/src/engine/graphics/texture/sampler/Sampler2D.spec.js +0 -224
  401. package/src/engine/graphics/texture/sampler/copy_Sampler2D_channel_data.spec.js +0 -90
  402. package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_NaiveFlood.spec.js +0 -183
  403. package/src/engine/graphics/texture/sampler/distance/computeUnsignedDistanceField.spec.js +0 -183
  404. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale.spec.js +0 -73
  405. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.spec.js +0 -31
  406. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_linear.spec.js +0 -44
  407. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_mipmap.spec.js +0 -13
  408. package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_up_linear.spec.js +0 -14
  409. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_max.spec.js +0 -40
  410. package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min_indices.spec.js +0 -15
  411. package/src/engine/graphics/texture/sampler/sampler2d_copy_with_margins.spec.js +0 -31
  412. package/src/engine/graphics/texture/sampler/sampler2d_to_data_url.spec.js +0 -10
  413. package/src/engine/graphics/texture/sampler/sampler2d_to_uint8_RGBA.spec.js +0 -52
  414. package/src/engine/graphics/texture/sampler/serialization/TextureBinaryBufferSerializer.spec.js +0 -38
  415. package/src/engine/graphics/three/expand_aabb_by_transformed_three_object.spec.js +0 -108
  416. package/src/engine/graphics/trail/x/RibbonX.spec.js +0 -5
  417. package/src/engine/grid/obstacle/GridObstacle.spec.js +0 -175
  418. package/src/engine/input/devices/InputDeviceSwitch.spec.js +0 -5
  419. package/src/engine/input/devices/KeyboardDevice.spec.js +0 -12
  420. package/src/engine/input/devices/PointerDevice.spec.js +0 -12
  421. package/src/engine/intelligence/behavior/Behavior.spec.js +0 -15
  422. package/src/engine/intelligence/behavior/SelectorBehavior.spec.js +0 -18
  423. package/src/engine/intelligence/behavior/behavior_to_dot.spec.js +0 -25
  424. package/src/engine/intelligence/behavior/composite/ParallelBehavior.spec.js +0 -166
  425. package/src/engine/intelligence/behavior/composite/SequenceBehavior.spec.js +0 -17
  426. package/src/engine/intelligence/behavior/decorator/RepeatBehavior.spec.js +0 -32
  427. package/src/engine/intelligence/behavior/ecs/BehaviorSystem.spec.js +0 -75
  428. package/src/engine/intelligence/behavior/util/ConditionBehavior.spec.js +0 -24
  429. package/src/engine/intelligence/blackboard/Blackboard.spec.js +0 -111
  430. package/src/engine/intelligence/blackboard/BlackboardSerializationAdapter.spec.js +0 -30
  431. package/src/engine/intelligence/blackboard/make_blackboard_proxy.spec.js +0 -23
  432. package/src/engine/intelligence/mcts/MonteCarlo.spec.js +0 -244
  433. package/src/engine/intelligence/mcts/StateNode.spec.js +0 -49
  434. package/src/engine/intelligence/optimization/RandomOptimizer.spec.js +0 -57
  435. package/src/engine/intelligence/resource/ResourceAllocationSolver.spec.js +0 -104
  436. package/src/engine/intelligence/resource/StrategicResourceAllocator.spec.js +0 -46
  437. package/src/engine/knowledge/database/StaticKnowledgeDataTable.spec.js +0 -26
  438. package/src/engine/knowledge/database/StaticKnowledgeDatabase.spec.js +0 -23
  439. package/src/engine/navigation/ecs/components/Path.spec.js +0 -195
  440. package/src/engine/navigation/ecs/path_following/PathFollower.spec.js +0 -27
  441. package/src/engine/navigation/grid/find_path_on_grid_astar.spec.js +0 -87
  442. package/src/engine/notify/NotificationLog.spec.js +0 -17
  443. package/src/engine/options/Option.spec.js +0 -69
  444. package/src/engine/options/OptionGroup.spec.js +0 -61
  445. package/src/engine/physics/gjk/expanding_polytope_algorithm.spec.js +0 -46
  446. package/src/engine/physics/inverse_kinematics/fabrik/fabrik3d_solve_primitive.spec.js +0 -43
  447. package/src/engine/plugin/EnginePlugin.spec.js +0 -5
  448. package/src/engine/reference/v2/Reference.spec.js +0 -44
  449. package/src/engine/scene/Scene.spec.js +0 -20
  450. package/src/engine/scene/SceneManager.spec.js +0 -131
  451. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.spec.js +0 -49
  452. package/src/engine/ui/tiles2d/TileGrid.spec.js +0 -20
  453. package/src/engine/ui/tiles2d/computeTileGridMove.spec.js +0 -54
  454. package/src/generation/automata/CaveGeneratorCellularAutomata.spec.js +0 -12
  455. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.spec.js +0 -30
  456. package/src/generation/filtering/numeric/complex/CellFilterGaussianBlur.spec.js +0 -17
  457. package/src/generation/filtering/numeric/process/computeCellFilterGradient.spec.js +0 -288
  458. package/src/generation/grid/GridData.spec.js +0 -46
  459. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.spec.js +0 -116
  460. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.spec.js +0 -106
  461. package/src/generation/placement/action/GridCellActionPlaceTags.spec.js +0 -21
  462. package/src/generation/rules/CellMatcherLayerBitMaskTest.spec.js +0 -22
  463. package/src/generation/rules/cell/GridPatternMatcher.spec.js +0 -285
  464. package/src/generation/theme/ThemeEngine.spec.js +0 -7
  465. package/src/view/tooltip/gml/TooltipParser.spec.js +0 -142
@@ -1,210 +0,0 @@
1
- import { EntityManager } from "./EntityManager.js";
2
- import { System, SystemState } from "./System.js";
3
- import { jest } from '@jest/globals';
4
- import { IllegalStateException } from "../../core/fsm/exceptions/IllegalStateException.js";
5
- import { EntityComponentDataset } from "./EntityComponentDataset.js";
6
-
7
- /**
8
- *
9
- * @returns {Promise<EntityManager>}
10
- */
11
- function makeEm(systems = []) {
12
- const em = new EntityManager();
13
-
14
- //add systems
15
- systems.forEach(s => em.addSystem(s));
16
-
17
- return new Promise(function (resolve, reject) {
18
- //startup
19
- em.startup(function () {
20
- resolve(em);
21
- }, reject);
22
- });
23
- }
24
-
25
- class DummyComponent {
26
- }
27
-
28
- class DummySystem extends System {
29
- dependencies = [DummyComponent];
30
- }
31
-
32
- test("constructor doesn't throw", () => {
33
- expect(() => new EntityManager()).not.toThrow();
34
- });
35
-
36
- test("startup with no systems without errors", () => {
37
- const em = new EntityManager();
38
-
39
- return new Promise(function (resolve, reject) {
40
- //startup
41
- em.startup(resolve, reject);
42
- });
43
- });
44
-
45
- test("startup/shutdown with no systems without errors", async () => {
46
- const em = new EntityManager();
47
-
48
- await new Promise(function (resolve, reject) {
49
- //startup
50
- em.startup(resolve, reject);
51
- });
52
-
53
- await new Promise(function (resolve, reject) {
54
- //shutdown
55
- em.shutdown(resolve, reject)
56
- });
57
- });
58
-
59
- test("startup/shutdown with dummy systems without errors", async () => {
60
- const em = new EntityManager();
61
-
62
- const dummySystem = new DummySystem();
63
-
64
- const systemStartup = jest.spyOn(dummySystem, 'startup');
65
- const systemShutdown = jest.spyOn(dummySystem, 'shutdown');
66
-
67
- em.addSystem(dummySystem);
68
-
69
- await new Promise(function (resolve, reject) {
70
- //startup
71
- em.startup(resolve, reject);
72
- });
73
-
74
- expect(systemStartup).toHaveBeenCalledTimes(1);
75
- expect(systemShutdown).not.toHaveBeenCalled();
76
-
77
- await new Promise(function (resolve, reject) {
78
- //shutdown
79
- em.shutdown(resolve, reject)
80
- });
81
-
82
- expect(systemStartup).toHaveBeenCalledTimes(1);
83
- expect(systemShutdown).toHaveBeenCalledTimes(1);
84
- });
85
-
86
- test("call to 'simulate' propagate to registered system", () => {
87
- const dummySystem = new DummySystem();
88
- const update = jest.spyOn(dummySystem, 'update');
89
-
90
- return makeEm([dummySystem])
91
- .then((em) => {
92
- em.simulate(7);
93
-
94
- expect(update).toHaveBeenCalledTimes(1);
95
- expect(update).toHaveBeenLastCalledWith(7);
96
- });
97
- });
98
-
99
-
100
- test("call to 'simulate' ticks fixed update correctly", async () => {
101
-
102
- const dummySystem = new DummySystem();
103
- const fixedUpdate = jest.spyOn(dummySystem, 'fixedUpdate');
104
-
105
- const em = await makeEm([dummySystem]);
106
-
107
- em.fixedUpdateStepSize = 1.1;
108
-
109
- em.simulate(3.3001);
110
-
111
- expect(fixedUpdate).toHaveBeenCalledTimes(3);
112
- expect(fixedUpdate).toHaveBeenLastCalledWith(1.1);
113
- });
114
-
115
- test("hasSystem", async () => {
116
-
117
- const dummySystem = new DummySystem();
118
- const em = await makeEm([]);
119
-
120
- expect(em.hasSystem(DummySystem)).toBe(false);
121
-
122
- await em.addSystem(dummySystem);
123
-
124
- expect(em.hasSystem(DummySystem)).toBe(true);
125
- });
126
-
127
- test("addSystem", async () => {
128
- const em = await makeEm([]);
129
-
130
- const s1 = new DummySystem();
131
-
132
- await em.addSystem(s1);
133
-
134
- expect(s1.state.get()).toEqual(SystemState.RUNNING)
135
-
136
- // system is already added, expect silent return
137
- expect(() => em.addSystem(s1)).not.toThrow();
138
-
139
- // 2 systems of the same class are not allowed
140
- expect(() => em.addSystem(new DummySystem())).toThrow(IllegalStateException);
141
- });
142
-
143
- test("add system to running manager", async () => {
144
-
145
- const em = new EntityManager();
146
-
147
- await new Promise((resolve, reject) => em.startup(resolve, reject));
148
-
149
- const system = new DummySystem();
150
-
151
- await em.addSystem(system);
152
-
153
- expect(em.hasSystem(DummySystem)).toBe(true);
154
- });
155
-
156
- test("removeSystem", async () => {
157
-
158
- const system = new DummySystem();
159
-
160
- const em = await makeEm([system]);
161
-
162
- expect(await em.removeSystem(system)).toBe(true);
163
-
164
- expect(em.hasSystem(DummySystem)).toBe(false);
165
-
166
- expect(system.state.get()).toEqual(SystemState.STOPPED);
167
-
168
- // Try again, this time we expect nothing to happen
169
- expect(await em.removeSystem(system)).toEqual(false);
170
- });
171
-
172
- test("attempt to detach dataset when none is attached", () => {
173
- const manager = new EntityManager();
174
-
175
- expect(() => manager.detachDataSet()).not.toThrow();
176
-
177
- // do it second time, in case something changes in the above call
178
- expect(() => manager.detachDataSet()).not.toThrow();
179
- });
180
-
181
- test("getComponentTypeMap with 1 system", async () => {
182
-
183
- const em = await makeEm([
184
- new DummySystem()
185
- ]);
186
-
187
- expect(em.getComponentTypeMap()).toEqual([DummyComponent]);
188
- });
189
-
190
- test("attempting to attach another dataset before detaching previous one should throw", () => {
191
-
192
- const em = new EntityManager();
193
-
194
- em.attachDataSet(new EntityComponentDataset());
195
-
196
- expect(() => em.attachDataSet(new EntityComponentDataset())).toThrow();
197
-
198
- });
199
-
200
- test("attaching same dataset should succeed", () => {
201
-
202
- const em = new EntityManager();
203
-
204
- const ecd = new EntityComponentDataset();
205
- em.attachDataSet(ecd);
206
-
207
- em.attachDataSet(ecd); // second time
208
-
209
- expect(em.dataset).toBe(ecd);
210
- });
@@ -1,184 +0,0 @@
1
- import { jest } from '@jest/globals';
2
- import { noop } from "../../core/function/noop.js";
3
- import GridPosition from "../grid/position/GridPosition.js";
4
- import Entity from "./Entity.js";
5
- import { EntityComponentDataset } from "./EntityComponentDataset.js";
6
- import { EntityObserver } from "./EntityObserver.js";
7
- import { Transform } from "./transform/Transform.js";
8
-
9
- /**
10
- *
11
- * @return {EntityComponentDataset}
12
- */
13
- function makeDataset() {
14
-
15
- const dataset = new EntityComponentDataset();
16
-
17
- dataset.setComponentTypeMap([Transform, GridPosition]);
18
-
19
- return dataset;
20
- }
21
-
22
- test("valid constructor invocation does not throw", () => {
23
- new EntityObserver([Transform, GridPosition], noop, noop);
24
- });
25
-
26
- test("callbacks are not invoked in the constructor", () => {
27
- const completed = jest.fn();
28
- const broken = jest.fn();
29
-
30
- const observer = new EntityObserver([Transform, GridPosition], completed, broken);
31
-
32
- expect(completed).not.toHaveBeenCalled();
33
- expect(broken).not.toHaveBeenCalled();
34
- });
35
-
36
- test("existing entities that match are supplied via callback when attaching", () => {
37
- const completed = jest.fn();
38
- const broken = jest.fn();
39
-
40
-
41
- const dataset = makeDataset();
42
-
43
- const t0 = new Transform();
44
- const g0 = new GridPosition();
45
- const entity0 = new Entity().add(t0).add(g0).build(dataset);
46
-
47
- const t1 = new Transform();
48
- const g1 = new GridPosition();
49
- const entity1 = new Entity().add(t1).add(g1).build(dataset);
50
-
51
- new Entity().add(new Transform()).build(dataset);
52
-
53
- const observer = new EntityObserver([Transform, GridPosition], completed, broken);
54
-
55
- observer.connect(dataset);
56
-
57
- expect(broken).not.toHaveBeenCalled();
58
- expect(completed).toHaveBeenCalledTimes(2);
59
-
60
- expect(completed.mock.calls[0]).toEqual([t0, g0, entity0]);
61
- expect(completed.mock.calls[1]).toEqual([t1, g1, entity1]);
62
- });
63
-
64
- test("completed matches are observed when they happen after attachment", () => {
65
- const completed = jest.fn();
66
- const broken = jest.fn();
67
-
68
- const dataset = makeDataset();
69
-
70
- const t0 = new Transform();
71
- const g0 = new GridPosition();
72
- const entity0 = new Entity().add(t0).build(dataset);
73
-
74
- const observer = new EntityObserver([Transform, GridPosition], completed, broken);
75
-
76
- observer.connect(dataset);
77
-
78
- expect(broken).not.toHaveBeenCalled();
79
- expect(completed).not.toHaveBeenCalled();
80
-
81
- dataset.addComponentToEntity(entity0, g0);
82
-
83
- expect(completed).toHaveBeenCalledTimes(1);
84
-
85
- expect(completed.mock.calls[0]).toEqual([t0, g0, entity0]);
86
- });
87
-
88
- test("broken matches are observed", () => {
89
- const completed = jest.fn();
90
- const broken = jest.fn();
91
-
92
-
93
- const dataset = makeDataset();
94
- const t0 = new Transform();
95
- const g0 = new GridPosition();
96
- const entityBuilder = new Entity().add(t0).add(g0);
97
- const entity0 = entityBuilder.build(dataset);
98
-
99
- const observer = new EntityObserver([Transform, GridPosition], completed, broken);
100
-
101
- observer.connect(dataset);
102
-
103
- entityBuilder.removeComponent(GridPosition);
104
-
105
- expect(broken).toHaveBeenCalledTimes(1);
106
-
107
- expect(broken.mock.calls[0]).toEqual([t0, g0, entity0]);
108
- });
109
-
110
- test("matching entities added after connect are observed", () => {
111
- const completed = jest.fn();
112
- const broken = jest.fn();
113
-
114
-
115
- const dataset = makeDataset();
116
- const t0 = new Transform();
117
- const g0 = new GridPosition();
118
- const entityBuilder = new Entity().add(t0).add(g0);
119
-
120
- const observer = new EntityObserver([Transform, GridPosition], completed, broken);
121
-
122
- const entity0 = entityBuilder.build(dataset);
123
-
124
- observer.connect(dataset);
125
-
126
- expect(completed).toHaveBeenCalledTimes(1);
127
-
128
- expect(completed).toHaveBeenLastCalledWith(t0, g0, entity0);
129
- });
130
-
131
- test("match after connect and break", () => {
132
- const completed = jest.fn();
133
- const broken = jest.fn();
134
-
135
- const dataset = makeDataset();
136
- const t0 = new Transform();
137
- const g0 = new GridPosition();
138
- const entityBuilder = new Entity().add(t0).add(g0);
139
-
140
- const observer = new EntityObserver([Transform, GridPosition], completed, broken);
141
-
142
- const entity0 = entityBuilder.build(dataset);
143
-
144
- //observe completed
145
- observer.connect(dataset);
146
-
147
- expect(completed).toHaveBeenCalledTimes(1);
148
-
149
- expect(completed).toHaveBeenLastCalledWith(t0, g0, entity0);
150
-
151
- //break
152
- entityBuilder.removeComponent(GridPosition);
153
-
154
- expect(broken).toHaveBeenCalledTimes(1);
155
-
156
- expect(broken).toHaveBeenLastCalledWith(t0, g0, entity0);
157
-
158
- //remove last component
159
- entityBuilder.removeComponent(Transform);
160
-
161
- //broken shouldn't be called more
162
- expect(broken).toHaveBeenCalledTimes(1);
163
-
164
- //completed shouldn't be called more
165
- expect(completed).toHaveBeenCalledTimes(1);
166
-
167
- //remove entity
168
- entityBuilder.destroy();
169
-
170
- //broken shouldn't be called more
171
- expect(broken).toHaveBeenCalledTimes(1);
172
-
173
- //completed shouldn't be called more
174
- expect(completed).toHaveBeenCalledTimes(1);
175
- });
176
-
177
- test("disconnect doesn't throw", () => {
178
- const dataset = makeDataset();
179
- const observer = new EntityObserver([Transform, GridPosition], noop, noop);
180
-
181
- observer.connect(dataset);
182
-
183
- observer.disconnect();
184
- });
@@ -1,22 +0,0 @@
1
- import { Animation } from "./Animation.js";
2
- import { AnimationClip } from "./AnimationClip.js";
3
-
4
- test("constructor does not throw", () => {
5
- new Animation()
6
- });
7
-
8
- test("equality", () => {
9
-
10
- const a = new Animation();
11
- const b = new Animation();
12
-
13
- expect(a.equals(b)).toBe(true);
14
-
15
- a.clips.add(new AnimationClip());
16
-
17
- expect(a.equals(b)).toBe(false);
18
-
19
- b.clips.add(new AnimationClip());
20
-
21
- expect(a.equals(b)).toBe(true);
22
- });
@@ -1,5 +0,0 @@
1
- import { AnimationClip } from "./AnimationClip.js";
2
-
3
- test("constructor does not throw", () => {
4
- expect(() => new AnimationClip()).not.toThrow();
5
- });
@@ -1,47 +0,0 @@
1
- import Tag from "./Tag.js";
2
-
3
- test("constructor", () => {
4
- new Tag();
5
- });
6
-
7
- test("containsOneOf", () => {
8
-
9
- const tag = Tag.fromJSON(['a', 'b']);
10
-
11
- expect(tag.containsOneOf([])).toBe(false);
12
- expect(tag.containsOneOf(['c'])).toBe(false);
13
- expect(tag.containsOneOf(['a'])).toBe(true);
14
- expect(tag.containsOneOf(['b'])).toBe(true);
15
- expect(tag.containsOneOf(['a', 'b'])).toBe(true);
16
-
17
- });
18
-
19
- test("hash", () => {
20
-
21
- const tag = Tag.fromJSON(['a', 'b']);
22
-
23
- const hash = tag.hash();
24
-
25
- expect(tag.hash()).toEqual(hash);
26
-
27
- expect(typeof hash).toBe("number");
28
- expect(Number.isInteger(hash)).toBe(true);
29
- });
30
-
31
- test("equals", () => {
32
-
33
-
34
- const a = Tag.fromJSON(['a', 'b']);
35
- const b = Tag.fromJSON([]);
36
- const c = Tag.fromJSON(['a']);
37
- const d = Tag.fromJSON(['b']);
38
- const e = Tag.fromJSON(['a', 'b']);
39
- const f = Tag.fromJSON(['a', 'c']);
40
-
41
- expect(a.equals(b)).toBe(false);
42
- expect(a.equals(c)).toBe(false);
43
- expect(a.equals(d)).toBe(false);
44
- expect(a.equals(e)).toBe(true);
45
- expect(a.equals(f)).toBe(false);
46
-
47
- });
@@ -1,126 +0,0 @@
1
- import { seededRandom } from "../../../../core/math/random/seededRandom.js";
2
- import { DynamicRuleDescriptionTable } from "./DynamicRuleDescriptionTable.js";
3
- import {
4
- createRandomReactiveExpression
5
- } from "../../../../core/model/reactive/model/util/createRandomReactiveExpression.js";
6
- import { ReactiveReference } from "../../../../core/model/reactive/model/terminal/ReactiveReference.js";
7
- import { ReactiveLiteralNumber } from "../../../../core/model/reactive/model/terminal/ReactiveLiteralNumber.js";
8
- import { ReactiveLiteralString } from "../../../../core/model/reactive/model/terminal/ReactiveLiteralString.js";
9
- import { ReactiveLiteralBoolean } from "../../../../core/model/reactive/model/terminal/ReactiveLiteralBoolean.js";
10
- import { DynamicRuleDescription } from "./DynamicRuleDescription.js";
11
- import DataType from "../../../../core/parser/simple/DataType.js";
12
- import { randomFromArray } from "../../../../core/math/random/randomFromArray.js";
13
- import { randomFloatBetween } from "../../../../core/math/random/randomFloatBetween.js";
14
- import { randomIntegerBetween } from "../../../../core/math/random/randomIntegerBetween.js";
15
-
16
- describe.skip('performance', () => {
17
-
18
- test('match performance', () => {
19
- const random = seededRandom(12319);
20
-
21
- const table = new DynamicRuleDescriptionTable();
22
-
23
-
24
- const names = [];
25
-
26
- const NAME_COUNT = 100;
27
- for (let i = 0; i < NAME_COUNT; i++) {
28
- names.push(`n${i}`);
29
- }
30
-
31
- const references = names.map(n => {
32
- const ref = new ReactiveReference(n);
33
-
34
- ref.dataType = DataType.Number;
35
-
36
- return ref;
37
- });
38
-
39
- const literals = [];
40
-
41
- for (let i = 0; i < 5; i++) {
42
- literals.push(ReactiveLiteralNumber.from(randomFloatBetween(random, -10, 10)));
43
- }
44
-
45
- for (let i = 0; i < 5; i++) {
46
- literals.push(ReactiveLiteralString.from(`string-${i}`));
47
- }
48
-
49
- literals.push(ReactiveLiteralBoolean.from(true));
50
- literals.push(ReactiveLiteralBoolean.from(false));
51
-
52
- const terminals = references.concat(literals);
53
-
54
- const expressions = [];
55
-
56
- const EXPRESSION_COUNT = 5000;
57
- for (let i = 0; i < EXPRESSION_COUNT; i++) {
58
-
59
- let exp;
60
-
61
- do {
62
- exp = createRandomReactiveExpression(random, terminals, randomIntegerBetween(random, 3, 15));
63
- } while (exp.dataType !== DataType.Boolean);
64
-
65
- expressions.push(exp);
66
-
67
-
68
- const r = new DynamicRuleDescription();
69
- r.id = `id-${i}`;
70
- r.condition = exp;
71
-
72
- r.build();
73
-
74
- table.add(r);
75
- }
76
-
77
- table.buildIndex();
78
-
79
- const contexts = [];
80
-
81
- const CONTEXT_COUNT = 5000;
82
-
83
- for (let i = 0; i < CONTEXT_COUNT; i++) {
84
- const v = {};
85
-
86
- for (let j = 0; j < NAME_COUNT; j++) {
87
- const roll = random();
88
-
89
- if (roll < 0.03) {
90
- continue;
91
- }
92
-
93
- const name = names[j];
94
-
95
- v[name] = randomIntegerBetween(random, 3, 15);
96
- }
97
-
98
- contexts[i] = v;
99
- }
100
-
101
- const prewarm_random = seededRandom(63);
102
-
103
- // pre-warm code
104
- for (let i = 0; i < 10; i++) {
105
-
106
- const context = randomFromArray(prewarm_random, contexts);
107
-
108
- table.matchBest(context);
109
- }
110
-
111
- const t0 = performance.now();
112
-
113
- for (let i = 0; i < CONTEXT_COUNT; i++) {
114
- const context = contexts[i];
115
-
116
- table.matchBest(context);
117
- }
118
-
119
- const overall_time = (performance.now() - t0) / 1000;
120
-
121
-
122
- const overall_time_ps = overall_time * 1e12;
123
-
124
- console.log(`Time per expression: ${Math.round(overall_time_ps / (CONTEXT_COUNT * EXPRESSION_COUNT))}ps(picoseconds)`);
125
- });
126
- });
@@ -1,13 +0,0 @@
1
- import { FogOfWar } from "./FogOfWar.js";
2
-
3
- test('getWorldClearance', () => {
4
- const fog = new FogOfWar();
5
-
6
- fog.resize(1, 1, 2);
7
-
8
- expect(fog.getWorldClearance(1, 1)).toBe(255);
9
-
10
- fog.reveal(0, 0, 0.5);
11
-
12
- expect(fog.getWorldClearance(1, 1)).toBe(0);
13
- });
@@ -1,100 +0,0 @@
1
- import { UUID } from "./UUID.js";
2
-
3
- test("uniqueness out of 2", () => {
4
- const a = UUID.v1();
5
- const b = UUID.v1();
6
-
7
- expect(a.equals(b)).toBe(false);
8
- });
9
-
10
- test("equality", () => {
11
- const a = UUID.parse("a88bb73a-c89f-11ed-afa1-0242ac120002");
12
- const b = UUID.parse("a88bb73a-c89f-11ed-afa1-0242ac120002");
13
-
14
- expect(a.equals(b)).toBe(true);
15
-
16
- b.parse("bb75b300-c89f-11ed-afa1-0242ac120002");
17
-
18
- expect(a.equals(b)).toBe(false);
19
- });
20
-
21
- test("hash stability", () => {
22
- const guid = new UUID();
23
-
24
- expect(guid.hash()).toBe(guid.hash());
25
- });
26
-
27
- test("copy", () => {
28
- const a = UUID.parse("a88bb73a-c89f-11ed-afa1-0242ac120002");
29
- const a_string = a.toString();
30
-
31
- const b = UUID.parse("bb75b300-c89f-11ed-afa1-0242ac120002");
32
-
33
- expect(a.equals(b)).toBe(false);
34
-
35
- b.copy(a);
36
-
37
- expect(a.equals(b)).toBe(true);
38
-
39
- // make sure that "a" is not changed
40
- expect(a.toString()).toEqual(a_string);
41
- });
42
-
43
- test("to/from JSON consistency", () => {
44
- const a = UUID.parse("bb75b300-c89f-11ed-afa1-0242ac120002");
45
-
46
- const b = new UUID();
47
-
48
- b.fromJSON(a.toJSON());
49
-
50
- expect(b.equals(a)).toBe(true)
51
- });
52
-
53
- test(".data setter performs a copy instead of assignment", () => {
54
- const id = new UUID();
55
-
56
- const data = new Uint8Array(16);
57
-
58
- id.data = data;
59
-
60
- expect(id.data).not.toBe(data);
61
- });
62
-
63
- test(".data set/get", () => {
64
- const a = new UUID();
65
-
66
- const sample_0 = [
67
- 0xFF, 0xFF, 0xFF, 0xFF,
68
- 0xFF, 0xFF, 0xFF, 0xFF,
69
- 0xFF, 0xFF, 0xFF, 0xFF,
70
- 0xFF, 0xFF, 0xFF, 0xFF,
71
- ];
72
-
73
- a.data = sample_0;
74
-
75
- expect(Array.from(a.data)).toEqual(sample_0);
76
-
77
- const sample_1 = [
78
- 0x00, 0x01, 0x02, 0x03,
79
- 0x04, 0x05, 0x06, 0x07,
80
- 0x08, 0x09, 0x0A, 0x0B,
81
- 0x0C, 0x0D, 0x0E, 0x0F,
82
- ];
83
-
84
- a.data = sample_1;
85
-
86
- expect(Array.from(a.data)).toEqual(sample_1);
87
- });
88
-
89
- test("version bits in v4", () => {
90
- const uuid = UUID.v4();
91
-
92
- expect((uuid.data[6] >> 4) & 0xF).toEqual(4);
93
- });
94
-
95
- test("static 'string' method",()=>{
96
- const s = UUID.string();
97
-
98
- expect(typeof s).toBe("string");
99
- expect(s.length).toBe(36);
100
- });