@woosh/meep-engine 2.54.0 → 2.56.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 (286) hide show
  1. package/editor/view/node-graph/PortView.js +2 -2
  2. package/package.json +1 -1
  3. package/src/core/__module.js +1 -1
  4. package/src/core/binary/BinaryBuffer.js +2 -1
  5. package/src/core/cache/Cache.js +1 -1
  6. package/src/core/cache/LoadingCache.js +10 -5
  7. package/src/core/collection/Stack.js +11 -14
  8. package/src/core/collection/array/array_contains_duplicates.js +5 -2
  9. package/src/core/collection/array/array_contains_duplicates.spec.js +14 -0
  10. package/src/core/collection/array/array_copy_entire.js +6 -11
  11. package/src/core/collection/array/array_get_index_in_range.js +5 -0
  12. package/src/core/collection/array/array_get_index_in_range.spec.js +16 -0
  13. package/src/core/collection/array/array_remove_element.js +6 -9
  14. package/src/core/collection/array/array_remove_first.js +13 -6
  15. package/src/core/collection/array/array_remove_first.spec.js +39 -0
  16. package/src/core/collection/array/binarySearchHighIndex.spec.js +10 -9
  17. package/src/core/collection/array/groupArrayBy.js +1 -1
  18. package/src/core/collection/array/isArrayEqual.js +4 -1
  19. package/src/core/collection/array/randomizeArrayElementOrder.js +1 -0
  20. package/src/core/collection/array/randomizeArrayElementOrder.spec.js +27 -0
  21. package/src/core/collection/heap/Uin32Heap.spec.js +100 -0
  22. package/src/core/collection/heap/Uint32Heap.js +16 -7
  23. package/src/core/collection/list/List.js +1 -0
  24. package/src/core/collection/{HashMap.js → map/HashMap.js} +10 -10
  25. package/src/core/collection/{HashMap.spec.js → map/HashMap.spec.js} +1 -1
  26. package/src/core/collection/{ObservedMap.js → map/ObservedMap.js} +1 -1
  27. package/src/core/collection/{HashSet.js → set/HashSet.js} +4 -3
  28. package/src/core/collection/{Set.d.ts → set/Set.d.ts} +1 -1
  29. package/src/core/collection/{Set.js → set/Set.js} +17 -14
  30. package/src/core/function/FunctionCompiler.js +4 -4
  31. package/src/core/function/Functions.js +0 -19
  32. package/src/core/geom/2d/aabb/AABB2.js +1 -1
  33. package/src/core/geom/3d/SurfacePoint3.js +30 -20
  34. package/src/core/geom/3d/SurfacePoint3.spec.js +116 -0
  35. package/src/core/geom/3d/aabb/AABB3.js +13 -10
  36. package/src/core/geom/3d/aabb/{aabb3_array_contains_point.js → aabb3_array_intersects_point.js} +4 -1
  37. package/src/core/geom/3d/aabb/aabb3_from_min_max.js +25 -1
  38. package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +2 -25
  39. package/src/core/geom/3d/aabb/aabb3_signed_distance_sqr_to_point.js +5 -1
  40. package/src/core/geom/3d/apply_mat4_transform_to_direction_v3_array.js +5 -1
  41. package/src/core/geom/3d/apply_mat4_transform_to_v3_array.js +5 -1
  42. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +2 -2
  43. package/src/core/geom/3d/topology/struct/binary/io/bt_mesh_calc_edges.js +1 -1
  44. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentric.spec.js +26 -0
  45. package/src/core/geom/3d/v3_compute_triangle_normal.spec.js +18 -0
  46. package/src/core/geom/Vector2.js +1 -1
  47. package/src/core/geom/Vector3.js +1 -1
  48. package/src/core/geom/packing/miniball/Miniball.spec.js +24 -0
  49. package/src/core/math/statistics/computeStatisticalPartialMedian.js +2 -2
  50. package/src/core/model/ObservedInteger.js +12 -7
  51. package/src/core/model/ObservedString.js +10 -8
  52. package/src/core/model/node-graph/visual/NodeGraphVisualData.js +1 -1
  53. package/src/core/model/object/ImmutableObjectPool.js +1 -1
  54. package/src/core/model/object/read_property.js +2 -2
  55. package/src/core/model/object/write_property.js +3 -3
  56. package/src/core/model/reactive/evaluation/MultiPredicateEvaluator.js +1 -1
  57. package/src/core/primitives/numbers/compareNumbers.js +4 -4
  58. package/src/core/primitives/numbers/number_compare_ascending.js +9 -0
  59. package/src/core/primitives/numbers/number_compare_ascending.spec.js +9 -0
  60. package/src/core/primitives/numbers/number_compare_descending.js +9 -0
  61. package/src/core/primitives/numbers/number_compare_descending.spec.js +9 -0
  62. package/src/core/primitives/numbers/number_format_by_thousands.spec.js +12 -0
  63. package/src/core/primitives/numbers/number_pretty_print.js +1 -1
  64. package/src/core/primitives/strings/compareStrings.spec.js +12 -0
  65. package/src/core/primitives/strings/string_capitalize.js +15 -0
  66. package/src/core/primitives/strings/string_capitalize.spec.js +13 -0
  67. package/src/core/primitives/strings/string_compute_byte_size.js +21 -0
  68. package/src/core/primitives/strings/string_compute_common_prefix.js +44 -0
  69. package/src/core/primitives/strings/string_compute_common_prefix.spec.js +23 -0
  70. package/src/core/primitives/strings/string_format_camel_to_kebab.js +9 -0
  71. package/src/core/primitives/strings/string_format_camel_to_kebab.spec.js +8 -0
  72. package/src/core/primitives/strings/string_format_kebab_to_underscore.js +8 -0
  73. package/src/core/time/current_time_in_seconds.js +11 -0
  74. package/src/engine/Clock.js +3 -13
  75. package/src/engine/animation/curve/AnimationCurve.spec.js +27 -0
  76. package/src/engine/asset/AssetManager.js +5 -5
  77. package/src/engine/asset/loaders/GLTFAssetLoader.js +1 -1
  78. package/src/engine/ecs/EntityBlueprint.js +8 -10
  79. package/src/engine/ecs/EntityManager.js +8 -1
  80. package/src/engine/ecs/EntityManager.spec.js +56 -6
  81. package/src/engine/ecs/animation/Animation.spec.js +22 -0
  82. package/src/engine/ecs/animation/AnimationSerializationAdapter.js +2 -5
  83. package/src/engine/ecs/attachment/Attachment.js +24 -25
  84. package/src/engine/ecs/attachment/AttachmentBinding.js +27 -30
  85. package/src/engine/ecs/attachment/AttachmentSystem.js +21 -24
  86. package/src/engine/ecs/attachment/BoneAttachmentBinding.js +6 -9
  87. package/src/engine/ecs/attachment/TransformAttachmentBinding.js +0 -3
  88. package/src/engine/ecs/components/CharacterController.js +24 -18
  89. package/src/engine/ecs/components/Motion.js +0 -27
  90. package/src/engine/ecs/components/MotionSerializationAdapter.js +26 -0
  91. package/src/engine/ecs/components/PropertySet.js +0 -29
  92. package/src/engine/ecs/components/PropertySetSerializationAdapter.js +29 -0
  93. package/src/engine/ecs/components/SerializationMetadata.js +0 -28
  94. package/src/engine/ecs/components/SerializationMetadataSerializationAdapter.js +26 -0
  95. package/src/engine/ecs/components/Steering.js +0 -35
  96. package/src/engine/ecs/components/SteeringSerializationAdapter.js +34 -0
  97. package/src/engine/ecs/components/Tag.js +6 -102
  98. package/src/engine/ecs/components/TagSerializationAdapter.js +44 -0
  99. package/src/engine/ecs/components/TagSerializationUpgrader_0_1.js +18 -0
  100. package/src/engine/ecs/components/Timer.js +1 -1
  101. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +4 -3
  102. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleCooldownDescription.js +10 -14
  103. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescription.js +31 -39
  104. package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +1 -1
  105. package/src/engine/ecs/dynamic_actions/{DynamicRuleDescriptionTable.spec.js → rules/DynamicRuleDescriptionTable.spec.js} +12 -12
  106. package/src/engine/ecs/foliage/ecs/InstancedMeshSerializationAdapter.js +2 -5
  107. package/src/engine/ecs/fow/FogOfWarRevealer.js +2 -3
  108. package/src/engine/ecs/fow/serialization/FogOfWarRevealerSerializationAdapter.js +2 -5
  109. package/src/engine/ecs/fow/serialization/FogOfWarSerializationAdapter.js +5 -8
  110. package/src/engine/ecs/gui/GUIElementSerializationAdapter.js +2 -5
  111. package/src/engine/ecs/gui/hud/HeadsUpDisplaySerializationAdapter.js +3 -6
  112. package/src/engine/ecs/gui/position/ViewportPosition.js +2 -5
  113. package/src/engine/ecs/ik/IKConstraint.js +95 -0
  114. package/src/engine/ecs/ik/IKMath.js +6 -1
  115. package/src/engine/ecs/ik/IKProblem.js +17 -17
  116. package/src/engine/ecs/ik/InverseKinematics.js +14 -174
  117. package/src/engine/ecs/ik/InverseKinematicsSerializationAdapter.js +72 -0
  118. package/src/engine/ecs/ik/InverseKinematicsSystem.js +24 -26
  119. package/src/engine/ecs/speaker/Voice.js +5 -8
  120. package/src/engine/ecs/speaker/VoiceSystem.js +15 -19
  121. package/src/engine/ecs/speaker/lines/LineDescription.js +20 -25
  122. package/src/engine/ecs/speaker/lines/sets/LineSetDescription.js +15 -19
  123. package/src/engine/ecs/storage/BinaryBufferSerializer.js +3 -3
  124. package/src/engine/ecs/storage/binary/BinaryClassSerializationAdapter.js +7 -0
  125. package/src/engine/ecs/storage/binary/collection/BinaryCollectionSerializer.js +1 -1
  126. package/src/engine/ecs/storage/binary/object/ObjectBasedClassSerializationAdapter.js +6 -9
  127. package/src/engine/ecs/systems/TagSystem.js +1 -6
  128. package/src/engine/ecs/team/TeamSerializationAdapter.js +2 -5
  129. package/src/engine/ecs/terrain/ecs/Terrain.spec.js +5 -0
  130. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrain.js +23 -21
  131. package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSerializationAdapter.js +2 -5
  132. package/src/engine/ecs/terrain/ecs/layers/TerrainLayer.js +2 -2
  133. package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +2 -40
  134. package/src/engine/ecs/terrain/serialization/TerrainSerializationAdapter.js +7 -10
  135. package/src/engine/ecs/tooltip/TooltipComponent.spec.js +47 -0
  136. package/src/engine/ecs/tooltip/TooltipComponentSerializationAdapter.js +2 -5
  137. package/src/engine/ecs/transform/Transform.spec.js +52 -0
  138. package/src/engine/ecs/transform/TransformSerializationAdapter.js +2 -5
  139. package/src/engine/ecs/transform-attachment/TransformAttachment.js +18 -19
  140. package/src/engine/graphics/ecs/animation/AnimationController.js +20 -129
  141. package/src/engine/graphics/ecs/animation/AnimationControllerSerializationAdapter.js +27 -0
  142. package/src/engine/graphics/ecs/animation/AnimationRule.js +79 -0
  143. package/src/engine/graphics/ecs/animation/animator/graph/AnimationGraphSerializationAdapter.js +9 -11
  144. package/src/engine/graphics/ecs/animation/animator/graph/definition/serialization/AnimationGraphDefinitionSerializationAdapter.js +3 -5
  145. package/src/engine/graphics/ecs/camera/serialization/CameraSerializationAdapter.js +2 -5
  146. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSerializationAdapter.js +2 -6
  147. package/src/engine/graphics/ecs/camera/topdown/TopDownCameraLander.js +3 -15
  148. package/src/engine/graphics/ecs/decal/v2/DecalSerializationAdapter.js +2 -4
  149. package/src/engine/graphics/ecs/highlight/HighlightSerializationAdapter.js +2 -5
  150. package/src/engine/graphics/ecs/highlight/renderer/OutlineRenderer.js +1 -1
  151. package/src/engine/graphics/ecs/light/LightSerializationAdapter.js +2 -5
  152. package/src/engine/graphics/ecs/mesh/serialization/MeshSerializationAdapter.js +2 -5
  153. package/src/engine/graphics/ecs/mesh/skeleton/BoneMapping.js +2 -2
  154. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +3 -0
  155. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.spec.js +14 -0
  156. package/src/engine/graphics/ecs/mesh-v2/render/adapters/InstancedRendererAdapter.js +1 -1
  157. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.js +21 -9
  158. package/src/engine/graphics/ecs/mesh-v2/render/adapters/SGCacheKey.spec.js +79 -0
  159. package/src/engine/graphics/ecs/water/WaterSerializationAdapter.js +2 -5
  160. package/src/engine/graphics/geometry/optimization/merge/merge_geometry_hierarchy.js +1 -1
  161. package/src/engine/graphics/impostors/octahedral/ImpostorBaker.js +1 -1
  162. package/src/engine/graphics/material/manager/MaterialManager.js +1 -1
  163. package/src/engine/graphics/material/optimization/MaterialOptimizationContext.js +1 -1
  164. package/src/engine/graphics/particles/node-based/codegen/CodeContext.js +1 -1
  165. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParameterLookupTableSerializationAdapter.js +2 -5
  166. package/src/engine/graphics/particles/particular/engine/emitter/serde/ParticleEmitterSerializationAdapter.js +2 -5
  167. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +1 -1
  168. package/src/engine/graphics/render/visibility/IncrementalDeltaSet.spec.js +7 -6
  169. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +1 -1
  170. package/src/engine/graphics/texture/sampler/serialization/Sampler2DSerializationAdapter.js +2 -5
  171. package/src/engine/grid/grid2transform/GridPosition2Transform.js +11 -13
  172. package/src/engine/grid/grid2transform/GridPosition2TransformSerializationAdapter.js +3 -5
  173. package/src/engine/grid/obstacle/GridObstacleSerializationAdapter.js +2 -5
  174. package/src/engine/grid/position/GridPositionSerializationAdapter.js +2 -5
  175. package/src/engine/grid/transform2grid/Transform2GridPosition.js +10 -13
  176. package/src/engine/input/devices/KeyboardDevice.js +5 -2
  177. package/src/engine/input/devices/KeyboardDevice.spec.js +12 -0
  178. package/src/engine/input/devices/PointerDevice.js +5 -1
  179. package/src/engine/input/ecs/components/Input.js +37 -11
  180. package/src/engine/input/ecs/ism/InputBinding.js +30 -12
  181. package/src/engine/intelligence/behavior/ecs/BehaviorComponentSerializationAdapter.js +7 -10
  182. package/src/engine/intelligence/behavior/ecs/WaitForEventBehaviorSerializationAdapter.js +2 -5
  183. package/src/engine/intelligence/behavior/primitive/FailingBehaviorSerializationAdapter.js +2 -6
  184. package/src/engine/intelligence/behavior/primitive/SucceedingBehaviorSerializationAdapter.js +2 -5
  185. package/src/engine/intelligence/blackboard/BlackboardSerializationAdapter.js +2 -5
  186. package/src/engine/knowledge/database/StaticKnowledgeDatabase.js +12 -13
  187. package/src/engine/knowledge/database/StaticKnowledgeDatabase.spec.js +23 -0
  188. package/src/engine/navigation/ecs/components/PathSerializationAdapter.js +2 -5
  189. package/src/engine/navigation/ecs/path_following/PathFollowerSerializationAdapter.js +2 -5
  190. package/src/engine/navigation/grid/find_path_on_grid_astar.spec.js +25 -0
  191. package/src/engine/options/OptionAbstract.js +6 -5
  192. package/src/engine/options/OptionGroup.js +13 -25
  193. package/src/engine/options/OptionGroup.spec.js +61 -0
  194. package/src/engine/save/storage/InMemoryStorage.js +3 -2
  195. package/src/engine/simulation/Ticker.js +17 -20
  196. package/src/engine/sound/ecs/SoundController.js +2 -6
  197. package/src/engine/sound/ecs/SoundListener.js +3 -21
  198. package/src/engine/sound/ecs/emitter/SoundEmitterSerializationAdapter.js +2 -6
  199. package/src/generation/GridTaskGroup.js +5 -9
  200. package/src/generation/filtering/numeric/CellFilterCache.js +12 -16
  201. package/src/generation/filtering/numeric/complex/CellFilterFXAA.js +31 -32
  202. package/src/generation/filtering/numeric/complex/CellFilterLookupTable.js +6 -9
  203. package/src/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +7 -10
  204. package/src/generation/filtering/numeric/complex/CellFilterSobel.js +6 -9
  205. package/src/generation/filtering/numeric/math/CellFilterMembershipGeneralizedBell.js +18 -21
  206. package/src/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +24 -25
  207. package/src/generation/filtering/numeric/sampling/CellFilterSampleLayerLinear.js +1 -1
  208. package/src/generation/grid/GridData.js +23 -22
  209. package/src/generation/grid/GridData.spec.js +41 -0
  210. package/src/generation/grid/GridTaskGenerator.js +7 -8
  211. package/src/generation/grid/layers/GridDataLayer.js +23 -25
  212. package/src/generation/markers/GridActionRuleSet.js +20 -22
  213. package/src/generation/markers/GridCellActionPlaceMarker.js +40 -43
  214. package/src/generation/markers/GridCellActionPlaceMarkerGroup.js +7 -9
  215. package/src/generation/markers/MarkerNode.js +44 -44
  216. package/src/generation/markers/actions/MarkerNodeActionEntityPlacement.js +15 -18
  217. package/src/generation/markers/actions/MarkerNodeActionSequence.js +6 -9
  218. package/src/generation/markers/actions/MarkerNodeProcessingRuleSet.js +5 -7
  219. package/src/generation/markers/actions/MarkerProcessingRule.js +25 -26
  220. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorClingToTerrain.js +12 -15
  221. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorRandomRotation.js +2 -5
  222. package/src/generation/markers/actions/placement/MarkerNodeEntityProcessorSequence.js +6 -9
  223. package/src/generation/markers/actions/probability/MarkerNodeActionSelectWeighted.js +8 -11
  224. package/src/generation/markers/actions/probability/MarkerNodeActionWeightedElement.js +13 -13
  225. package/src/generation/markers/actions/util/GridCellActionDebugBreak.js +5 -8
  226. package/src/generation/markers/actions/util/GridCellActionLogToConsole.js +1 -4
  227. package/src/generation/markers/emitter/MarkerNodeConsumerBuffer.js +10 -13
  228. package/src/generation/markers/emitter/MarkerNodeEmitterFromAction.js +5 -9
  229. package/src/generation/markers/emitter/MarkerNodeEmitterGridCellAction.js +12 -15
  230. package/src/generation/markers/emitter/MarkerNodeEmitterGroup.js +5 -8
  231. package/src/generation/markers/emitter/MarkerNodeEmitterPredicated.js +18 -21
  232. package/src/generation/markers/matcher/MarkerNodeMatcher.js +2 -1
  233. package/src/generation/markers/matcher/MarkerNodeMatcherBinary.js +12 -13
  234. package/src/generation/markers/matcher/MarkerNodeMatcherContainsTag.js +7 -9
  235. package/src/generation/markers/matcher/MarkerNodeMatcherNot.js +7 -9
  236. package/src/generation/markers/predicate/GridDataNodePredicateBinary.js +10 -14
  237. package/src/generation/markers/predicate/GridDataNodePredicateNot.js +9 -11
  238. package/src/generation/markers/predicate/GridDataNodePredicateOverlaps.js +6 -9
  239. package/src/generation/markers/transform/MarkerNodeTransformRotateRandom.js +2 -6
  240. package/src/generation/markers/transform/MarkerNodeTransformerAddPositionYFromFilter.js +6 -9
  241. package/src/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +1 -4
  242. package/src/generation/markers/transform/MarkerNodeTransformerRecordProperty.js +12 -15
  243. package/src/generation/markers/transform/MarkerNodeTransformerRecordPropertyClosure.js +14 -17
  244. package/src/generation/markers/transform/MarkerNodeTransformerRecordUniqueRandomEnum.js +21 -23
  245. package/src/generation/markers/transform/MarkerNodeTransformerRemoveTag.js +1 -4
  246. package/src/generation/markers/transform/MarkerNodeTransformerSequence.js +6 -9
  247. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilter.js +13 -17
  248. package/src/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.js +12 -16
  249. package/src/generation/placement/GridCellActionTransformNearbyMarkers.js +26 -29
  250. package/src/generation/placement/GridCellPlacementRule.js +30 -32
  251. package/src/generation/placement/action/GridCellActionPlaceTags.js +26 -28
  252. package/src/generation/placement/action/GridCellActionWriteFilterToLayer.js +16 -20
  253. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +13 -16
  254. package/src/generation/placement/action/random/weighted/WeightedGridCellAction.js +11 -14
  255. package/src/generation/placement/action/util/CellMatcherWithinAABB.js +2 -6
  256. package/src/generation/placement/action/util/GridCellActionSequence.js +7 -9
  257. package/src/generation/placement/action/util/GridCellDisplacedAction.js +9 -12
  258. package/src/generation/rules/CellMatcherFromFilter.js +6 -9
  259. package/src/generation/rules/CellMatcherLayerBitMaskTest.js +6 -9
  260. package/src/generation/rules/GridLayerCellMatcher.js +11 -14
  261. package/src/generation/rules/cell/CellMatcherContainsMarkerWithinRadius.js +11 -14
  262. package/src/generation/rules/cell/CellMatcherGridPattern.js +6 -8
  263. package/src/generation/rules/cell/GridPatternMatcherCell.js +11 -12
  264. package/src/generation/rules/logic/CellMatcherBinary.js +10 -14
  265. package/src/generation/rules/logic/CellMatcherDecorator.js +5 -8
  266. package/src/generation/theme/AreaMask.js +15 -17
  267. package/src/generation/theme/AreaTheme.js +7 -8
  268. package/src/generation/theme/TerrainLayerDescription.js +10 -12
  269. package/src/generation/theme/TerrainLayerRule.js +11 -13
  270. package/src/generation/theme/TerrainTheme.js +6 -7
  271. package/src/generation/theme/Theme.js +15 -17
  272. package/src/generation/theme/ThemeEngine.js +17 -19
  273. package/src/view/string_tag_to_css_class_name.js +2 -2
  274. package/src/view/tooltip/gml/TooltipParser.js +2 -2
  275. package/src/core/cache/PersistentCacheAdapter.js +0 -378
  276. package/src/core/collection/LazyStream.js +0 -23
  277. package/src/core/collection/LazyStream.spec.js +0 -13
  278. package/src/core/collection/heap/BinaryHeap.js +0 -153
  279. package/src/core/primitives/strings/StringUtils.js +0 -105
  280. package/src/core/primitives/strings/StringUtils.spec.js +0 -42
  281. package/src/engine/ecs/components/GeometryBVH.js +0 -44
  282. package/src/engine/ecs/components/MonsterAI.js +0 -15
  283. package/src/engine/ecs/systems/GeometryBVHSystem.js +0 -36
  284. package/src/generation/markers/MarkerRelation.js +0 -13
  285. /package/src/core/collection/{HashMap.d.ts → map/HashMap.d.ts} +0 -0
  286. /package/src/core/collection/{HashSet.d.ts → set/HashSet.d.ts} +0 -0
@@ -2,23 +2,23 @@ import { ObjectPoolFactory } from "../../../core/model/object/ObjectPoolFactory.
2
2
  import { noop } from "../../../core/function/Functions.js";
3
3
 
4
4
  export class IKProblem {
5
- constructor() {
6
- /**
7
- *
8
- * @type {IKConstraint}
9
- */
10
- this.constraint = null;
11
- /**
12
- *
13
- * @type {Skeleton}
14
- */
15
- this.skeleton = null;
16
- /**
17
- *
18
- * @type {Terrain}
19
- */
20
- this.terrain = null;
21
- }
5
+
6
+ /**
7
+ *
8
+ * @type {IKConstraint}
9
+ */
10
+ constraint = null;
11
+ /**
12
+ *
13
+ * @type {Skeleton}
14
+ */
15
+ skeleton = null;
16
+ /**
17
+ *
18
+ * @type {Terrain}
19
+ */
20
+ terrain = null;
21
+
22
22
  }
23
23
 
24
24
  /**
@@ -1,110 +1,13 @@
1
- import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSerializationAdapter.js";
2
- import { NumericInterval } from "../../../core/math/interval/NumericInterval.js";
3
- import { computeStringHash } from "../../../core/primitives/strings/computeStringHash.js";
4
- import { computeHashIntegerArray } from "../../../core/collection/array/computeHashIntegerArray.js";
5
- import { computeHashFloat } from "../../../core/primitives/numbers/computeHashFloat.js";
1
+ import { IKConstraint } from "./IKConstraint.js";
6
2
 
7
- class IKConstraint {
8
- constructor() {
9
3
 
10
- /**
11
- * End bone that is going to be placed
12
- * @type {String}
13
- */
14
- this.effector = "";
15
-
16
- /**
17
- * How far should effector be from the contact, positive values result in effector not reaching the surface, and negative result in penetration
18
- * @example For a foot effector this would be distance above the ground
19
- * @type {number}
20
- */
21
- this.offset = 0;
22
-
23
- /**
24
- * Positive distance from the surface at which IK starts to take effect, low value represents full effect and high value represents where the influence begins
25
- * @type {NumericInterval}
26
- */
27
- this.distance = new NumericInterval(0, 0);
28
-
29
- /**
30
- *
31
- * @type {number}
32
- */
33
- this.strength = 1;
34
-
35
- /**
36
- *
37
- * @type {number}
38
- */
39
- this.limit = Math.PI;
40
-
41
- /**
42
- * Solver to be used for this constraint
43
- * @type {string}
44
- */
45
- this.solver = "2BIK";
46
- }
47
-
48
- /**
49
- *
50
- * @param {IKConstraint} other
51
- */
52
- copy(other) {
53
- this.effector = other.effector;
54
- this.offset = other.offset;
55
- this.distance.copy(other.distance);
56
- this.strength = other.strength;
57
- this.limit = other.limit;
58
- this.solver = other.solver;
59
- }
60
-
61
- clone() {
62
- const r = new IKConstraint();
63
-
64
- r.copy(this);
65
-
66
- return r;
67
- }
4
+ export class InverseKinematics {
68
5
 
69
6
  /**
70
- *
71
- * @param {IKConstraint} other
72
- * @returns {boolean}
7
+ * @readonly
8
+ * @type {IKConstraint[]}
73
9
  */
74
- equals(other) {
75
- return this.effector === other.effector
76
- && this.offset === other.offset
77
- && this.distance.equals(other.distance)
78
- && this.strength === other.strength
79
- && this.limit === other.limit
80
- && this.solver === other.solver;
81
- }
82
-
83
- /**
84
- *
85
- * @return {number}
86
- */
87
- hash() {
88
- return computeHashIntegerArray(
89
- computeStringHash(this.effector),
90
- computeHashFloat(this.offset),
91
- this.distance.hash(),
92
- computeHashFloat(this.strength),
93
- computeHashFloat(this.limit),
94
- computeStringHash(this.solver)
95
- );
96
- }
97
- }
98
-
99
-
100
- export class InverseKinematics {
101
- constructor() {
102
- /**
103
- *
104
- * @type {IKConstraint[]}
105
- */
106
- this.constraints = [];
107
- }
10
+ constraints = [];
108
11
 
109
12
  /**
110
13
  *
@@ -143,7 +46,15 @@ export class InverseKinematics {
143
46
  * @param {number} limit
144
47
  * @param {String} solver
145
48
  */
146
- add({ effector, offset = 0, distanceMin = 0, distanceMax = 0.1, strength = 1, limit = Math.PI * 0.9, solver = "2BIK" }) {
49
+ add({
50
+ effector,
51
+ offset = 0,
52
+ distanceMin = 0,
53
+ distanceMax = 0.1,
54
+ strength = 1,
55
+ limit = Math.PI * 0.9,
56
+ solver = "2BIK"
57
+ }) {
147
58
  const c = new IKConstraint();
148
59
 
149
60
  c.effector = effector;
@@ -205,74 +116,3 @@ export class InverseKinematics {
205
116
 
206
117
  InverseKinematics.typeName = "InverseKinematics";
207
118
 
208
- export class InverseKinematicsSerializationAdapter extends BinaryClassSerializationAdapter {
209
- constructor() {
210
- super();
211
-
212
- this.klass = InverseKinematics;
213
- this.version = 0;
214
- }
215
-
216
- /**
217
- *
218
- * @param {BinaryBuffer} buffer
219
- * @param {InverseKinematics} value
220
- */
221
- serialize(buffer, value) {
222
- const constraints = value.constraints;
223
- const n = constraints.length;
224
- buffer.writeUintVar(n);
225
-
226
- for (let i = 0; i < n; i++) {
227
- const constraint = constraints[i];
228
-
229
- buffer.writeUTF8String(constraint.effector);
230
-
231
- buffer.writeFloat32(constraint.offset);
232
- buffer.writeFloat32(constraint.strength);
233
- buffer.writeFloat32(constraint.limit);
234
-
235
- buffer.writeFloat32(constraint.distance.min);
236
- buffer.writeFloat32(constraint.distance.max);
237
-
238
- buffer.writeUTF8String(constraint.solver);
239
- }
240
- }
241
-
242
- /**
243
- *
244
- * @param {BinaryBuffer} buffer
245
- * @param {InverseKinematics} value
246
- */
247
- deserialize(buffer, value) {
248
- const n = buffer.readUintVar();
249
-
250
- const constraints = [];
251
-
252
- for (let i = 0; i < n; i++) {
253
- const effector = buffer.readUTF8String();
254
-
255
- const offset = buffer.readFloat32();
256
- const strength = buffer.readFloat32();
257
- const limit = buffer.readFloat32();
258
-
259
- const distanceMin = buffer.readFloat32();
260
- const distanceMax = buffer.readFloat32();
261
-
262
- const solver = buffer.readUTF8String();
263
-
264
- const ikConstraint = new IKConstraint();
265
-
266
- ikConstraint.effector = effector;
267
- ikConstraint.offset = offset;
268
- ikConstraint.strength = strength;
269
- ikConstraint.limit = limit;
270
- ikConstraint.distance.set(distanceMin, distanceMax);
271
- ikConstraint.solver = solver;
272
-
273
- constraints.push(ikConstraint);
274
- }
275
-
276
- value.constraints = constraints;
277
- }
278
- }
@@ -0,0 +1,72 @@
1
+ import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSerializationAdapter.js";
2
+ import { IKConstraint } from "./IKConstraint.js";
3
+ import { InverseKinematics } from "./InverseKinematics.js";
4
+
5
+ export class InverseKinematicsSerializationAdapter extends BinaryClassSerializationAdapter {
6
+
7
+ klass = InverseKinematics;
8
+ version = 0;
9
+
10
+ /**
11
+ *
12
+ * @param {BinaryBuffer} buffer
13
+ * @param {InverseKinematics} value
14
+ */
15
+ serialize(buffer, value) {
16
+ const constraints = value.constraints;
17
+ const n = constraints.length;
18
+ buffer.writeUintVar(n);
19
+
20
+ for (let i = 0; i < n; i++) {
21
+ const constraint = constraints[i];
22
+
23
+ buffer.writeUTF8String(constraint.effector);
24
+
25
+ buffer.writeFloat32(constraint.offset);
26
+ buffer.writeFloat32(constraint.strength);
27
+ buffer.writeFloat32(constraint.limit);
28
+
29
+ buffer.writeFloat32(constraint.distance.min);
30
+ buffer.writeFloat32(constraint.distance.max);
31
+
32
+ buffer.writeUTF8String(constraint.solver);
33
+ }
34
+ }
35
+
36
+ /**
37
+ *
38
+ * @param {BinaryBuffer} buffer
39
+ * @param {InverseKinematics} value
40
+ */
41
+ deserialize(buffer, value) {
42
+ const n = buffer.readUintVar();
43
+
44
+ const constraints = [];
45
+
46
+ for (let i = 0; i < n; i++) {
47
+ const effector = buffer.readUTF8String();
48
+
49
+ const offset = buffer.readFloat32();
50
+ const strength = buffer.readFloat32();
51
+ const limit = buffer.readFloat32();
52
+
53
+ const distanceMin = buffer.readFloat32();
54
+ const distanceMax = buffer.readFloat32();
55
+
56
+ const solver = buffer.readUTF8String();
57
+
58
+ const ikConstraint = new IKConstraint();
59
+
60
+ ikConstraint.effector = effector;
61
+ ikConstraint.offset = offset;
62
+ ikConstraint.strength = strength;
63
+ ikConstraint.limit = limit;
64
+ ikConstraint.distance.set(distanceMin, distanceMax);
65
+ ikConstraint.solver = solver;
66
+
67
+ constraints.push(ikConstraint);
68
+ }
69
+
70
+ value.constraints = constraints;
71
+ }
72
+ }
@@ -11,32 +11,30 @@ import { ResourceAccessKind } from "../../../core/model/ResourceAccessKind.js";
11
11
 
12
12
 
13
13
  export class InverseKinematicsSystem extends System {
14
- constructor() {
15
- super();
16
-
17
- this.dependencies = [InverseKinematics, Mesh];
18
-
19
- this.components_used = [
20
- ResourceAccessSpecification.from(Mesh,ResourceAccessKind.Read|ResourceAccessSpecification.Write)
21
- ];
22
-
23
- /**
24
- *
25
- * @type {{"2BIK": TwoBoneInverseKinematicsSolver}}
26
- */
27
- this.solvers = {
28
- "2BIK": new TwoBoneInverseKinematicsSolver(),
29
- "1BSA": new OneBoneSurfaceAlignmentSolver()
30
- };
31
-
32
- this.problems = {};
33
-
34
- /**
35
- *
36
- * @type {Terrain}
37
- */
38
- this.__terrain = null;
39
- }
14
+
15
+ dependencies = [InverseKinematics, Mesh];
16
+
17
+ components_used = [
18
+ ResourceAccessSpecification.from(Mesh, ResourceAccessKind.Read | ResourceAccessSpecification.Write)
19
+ ];
20
+
21
+ /**
22
+ *
23
+ * @type {{"2BIK": TwoBoneInverseKinematicsSolver}}
24
+ */
25
+ solvers = {
26
+ "2BIK": new TwoBoneInverseKinematicsSolver(),
27
+ "1BSA": new OneBoneSurfaceAlignmentSolver()
28
+ };
29
+
30
+ problems = {};
31
+
32
+ /**
33
+ *
34
+ * @type {Terrain}
35
+ */
36
+ __terrain = null;
37
+
40
38
 
41
39
  get componentClass() {
42
40
  return InverseKinematics;
@@ -1,12 +1,9 @@
1
1
  export class Voice {
2
- constructor() {
3
-
4
- /**
5
- *
6
- * @type {number}
7
- */
8
- this.flags = 0;
9
- }
2
+ /**
3
+ *
4
+ * @type {number}
5
+ */
6
+ flags = 0;
10
7
 
11
8
  /**
12
9
  *
@@ -52,25 +52,21 @@ const TIMING_MINIMUM_READ_TIME = 1.2;
52
52
  const temp_lines = [];
53
53
 
54
54
  class LineWeigher {
55
- constructor() {
56
-
57
- /**
58
- *
59
- * @type {number}
60
- */
61
- this.entity = -1;
62
- /**
63
- *
64
- * @type {VoiceSystem}
65
- */
66
- this.system = null;
67
-
68
- /**
69
- *
70
- * @type {number}
71
- */
72
- this.time = 0;
73
- }
55
+ /**
56
+ *
57
+ * @type {number}
58
+ */
59
+ entity = -1;
60
+ /**
61
+ *
62
+ * @type {VoiceSystem}
63
+ */
64
+ system = null;
65
+ /**
66
+ *
67
+ * @type {number}
68
+ */
69
+ time = 0;
74
70
 
75
71
  /**
76
72
  *
@@ -1,31 +1,26 @@
1
1
  import { assert } from "../../../../core/assert.js";
2
2
 
3
3
  export class LineDescription {
4
- constructor() {
5
- /**
6
- * Unique id
7
- * @type {string}
8
- */
9
- this.id = "";
10
-
11
- /**
12
- * Comment about the line, useful for development purposes
13
- * @type {string}
14
- */
15
- this.comment = "";
16
-
17
- /**
18
- * Localization key for the line of text
19
- * @type {string}
20
- */
21
- this.text = "";
22
-
23
- /**
24
- * Time the line should be displayed on the screen before being removed, normalized value, 1 means standard, 1.5 means 50% longer
25
- * @type {number}
26
- */
27
- this.displayDuration = 1;
28
- }
4
+ /**
5
+ * Unique id
6
+ * @type {string}
7
+ */
8
+ id = "";
9
+ /**
10
+ * Comment about the line, useful for development purposes
11
+ * @type {string}
12
+ */
13
+ comment = "";
14
+ /**
15
+ * Localization key for the line of text
16
+ * @type {string}
17
+ */
18
+ text = "";
19
+ /**
20
+ * Time the line should be displayed on the screen before being removed, normalized value, 1 means standard, 1.5 means 50% longer
21
+ * @type {number}
22
+ */
23
+ displayDuration = 1;
29
24
 
30
25
  fromJSON({
31
26
  id,
@@ -1,25 +1,21 @@
1
1
  const temp_array = [];
2
2
 
3
3
  export class LineSetDescription {
4
- constructor() {
5
- /**
6
- *
7
- * @type {string}
8
- */
9
- this.id = "";
10
-
11
- /**
12
- *
13
- * @type {LineDescription[]}
14
- */
15
- this.lines = [];
16
-
17
- /**
18
- *
19
- * @type {LineSetDescription[]}
20
- */
21
- this.sets = [];
22
- }
4
+ /**
5
+ *
6
+ * @type {string}
7
+ */
8
+ id = "";
9
+ /**
10
+ *
11
+ * @type {LineDescription[]}
12
+ */
13
+ lines = [];
14
+ /**
15
+ *
16
+ * @type {LineSetDescription[]}
17
+ */
18
+ sets = [];
23
19
 
24
20
  /**
25
21
  * Collect all lines from this set recursively
@@ -2,9 +2,9 @@ import { SerializationFlags, SerializationMetadata } from "../components/Seriali
2
2
  import { assert } from "../../../core/assert.js";
3
3
  import { BinaryCollectionSerializer } from "./binary/collection/BinaryCollectionSerializer.js";
4
4
  import { COMPONENT_SERIALIZATION_TRANSIENT_FIELD } from "./COMPONENT_SERIALIZATION_TRANSIENT_FIELD.js";
5
- import { currentTimeInSeconds } from "../../Clock.js";
6
5
  import { BinaryObjectSerializationAdapter } from "./binary/object/BinaryObjectSerializationAdapter.js";
7
6
  import { logger } from "../../logging/GlobalLogger.js";
7
+ import { current_time_in_seconds } from "../../../core/time/current_time_in_seconds.js";
8
8
 
9
9
  /**
10
10
  * @template T
@@ -136,7 +136,7 @@ class BinaryBufferSerializer {
136
136
  continue;
137
137
  }
138
138
 
139
- const __start_time = currentTimeInSeconds();
139
+ const __start_time = current_time_in_seconds();
140
140
 
141
141
  let lastEntity = 0;
142
142
 
@@ -158,7 +158,7 @@ class BinaryBufferSerializer {
158
158
 
159
159
  const numComponentsWritten = collectionSerializer.getElementCount();
160
160
 
161
- const __end_time = currentTimeInSeconds();
161
+ const __end_time = current_time_in_seconds();
162
162
 
163
163
  collectionSerializer.finalize();
164
164
 
@@ -1,12 +1,19 @@
1
+ /**
2
+ * Defines how to serialize and deserialize an instance of a given class
3
+ */
1
4
  export class BinaryClassSerializationAdapter {
2
5
 
3
6
  /**
7
+ * Class that this adapter handles
4
8
  * @protected
5
9
  * @type {Class}
6
10
  */
7
11
  klass = null;
8
12
 
9
13
  /**
14
+ * Format version number, used to check for format changes and data compatibility
15
+ * Increment the number if you change the adapter to indicate the change in format
16
+ * See {@link BinaryClassUpgrader} for details on how to handle support for outdated format versions
10
17
  * @protected
11
18
  * @type {number}
12
19
  */
@@ -1,6 +1,6 @@
1
1
  import { assert } from "../../../../../core/assert.js";
2
2
  import { BinaryCollectionHeaderCodec, BinaryCollectionHeaderLayout } from "./BinaryCollectionHeaderCodec.js";
3
- import { HashMap } from "../../../../../core/collection/HashMap.js";
3
+ import { HashMap } from "../../../../../core/collection/map/HashMap.js";
4
4
  import { returnEmptyArray } from "../../../../../core/function/Functions.js";
5
5
 
6
6
  export class BinaryCollectionSerializer {
@@ -1,15 +1,12 @@
1
1
  import { BinaryClassSerializationAdapter } from "../BinaryClassSerializationAdapter.js";
2
2
 
3
- export class ObjectBasedClassSerializationAdapter extends BinaryClassSerializationAdapter{
4
- constructor(){
5
- super();
3
+ export class ObjectBasedClassSerializationAdapter extends BinaryClassSerializationAdapter {
6
4
 
7
- /**
8
- *
9
- * @type {BinaryObjectSerializationAdapter}
10
- */
11
- this.objectAdapter = null;
12
- }
5
+ /**
6
+ *
7
+ * @type {BinaryObjectSerializationAdapter}
8
+ */
9
+ objectAdapter = null;
13
10
 
14
11
  /**
15
12
  *
@@ -6,13 +6,8 @@ import Tag from '../components/Tag.js';
6
6
 
7
7
 
8
8
  class TagSystem extends System {
9
- constructor() {
10
- super();
11
9
 
12
- this.dependencies = [Tag];
13
-
14
- this.entityManager = null;
15
- }
10
+ dependencies = [Tag];
16
11
 
17
12
  /**
18
13
  *
@@ -2,12 +2,9 @@ import { BinaryClassSerializationAdapter } from "../storage/binary/BinaryClassSe
2
2
  import Team from "./Team.js";
3
3
 
4
4
  export class TeamSerializationAdapter extends BinaryClassSerializationAdapter {
5
- constructor() {
6
- super();
7
5
 
8
- this.klass = Team;
9
- this.version = 0;
10
- }
6
+ klass = Team;
7
+ version = 0;
11
8
 
12
9
  /**
13
10
  *
@@ -0,0 +1,5 @@
1
+ import Terrain from "./Terrain.js";
2
+
3
+ test("constructor does not throw", () => {
4
+ new Terrain();
5
+ });