@woosh/meep-engine 2.56.1 → 2.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/editor/Editor.js +4 -4
  2. package/editor/ecs/component/editors/ColorEditor.js +1 -1
  3. package/editor/ecs/component/editors/ImagePathEditor.js +2 -2
  4. package/editor/ecs/component/editors/{LargeStrongEditor.js → LargeStringEditor.js} +1 -1
  5. package/editor/process/symbolic/buildThreeJSHelperEntity.js +3 -3
  6. package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +3 -3
  7. package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +3 -3
  8. package/editor/tools/GridPaintTool.js +3 -3
  9. package/editor/tools/TopDownCameraControlTool.js +1 -1
  10. package/editor/tools/TransformTool.js +1 -1
  11. package/editor/tools/engine/Tool.js +9 -23
  12. package/editor/tools/engine/ToolEngine.js +5 -7
  13. package/editor/tools/paint/TerrainHeightPaintTool.js +2 -2
  14. package/editor/tools/paint/TerrainPaintTool.js +2 -2
  15. package/editor/tools/paint/TerrainTexturePaintTool.js +2 -2
  16. package/editor/tools/v2/prototypeTransformControls.js +3 -3
  17. package/editor/view/ecs/ComponentControlView.js +2 -1
  18. package/package.json +1 -1
  19. package/samples/generation/main.js +2 -2
  20. package/samples/terrain/from_image.js +2 -2
  21. package/samples/terrain/from_image_2.js +4 -4
  22. package/src/core/binary/byteArrayToString.js +28 -0
  23. package/src/core/binary/downloadAsFile.js +28 -0
  24. package/src/core/binary/downloadUrlAsFile.js +14 -0
  25. package/src/core/binary/jsonToStringToByteArray.js +27 -0
  26. package/src/core/binary/stringToByteArray.js +24 -0
  27. package/src/core/bvh2/BinaryNode.spec.js +2 -1
  28. package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +1 -1
  29. package/src/core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js +1 -1
  30. package/src/core/bvh2/traversal/__process_point_if_within_planes.js +1 -1
  31. package/src/core/cache/LoadingCache.js +3 -2
  32. package/src/core/collection/array/arraySetSortingDiff.spec.js +12 -12
  33. package/src/core/collection/array/weightedRandomFromArray.js +2 -2
  34. package/src/core/color/Color.js +6 -6
  35. package/src/core/color/Color.spec.js +27 -1
  36. package/src/core/color/YCbCr/YCbCr.spec.js +16 -0
  37. package/src/core/color/{YCbCr_to_rgb_uint24.js → YCbCr/YCbCr_to_rgb_uint24.js} +6 -6
  38. package/src/core/color/YCbCr/rgb_to_YCbCr_uint24.js +16 -0
  39. package/src/core/color/{hex2rgb.js → hex/hex2rgb.js} +1 -1
  40. package/src/core/color/{rgb2hex.js → hex/rgb2hex.js} +1 -1
  41. package/src/core/color/{hsv2rgb.js → hsv/hsv2rgb.js} +3 -3
  42. package/src/core/color/hsv/rgb2hsv.js +49 -0
  43. package/src/core/color/{kelvin_to_rgb.js → kelvin/kelvin_to_rgb.js} +1 -1
  44. package/src/core/color/{kelvin_to_rgb.spec.js → kelvin/kelvin_to_rgb.spec.js} +2 -2
  45. package/src/core/color/{prototype_kelvin_to_rgb.js → kelvin/prototype_kelvin_to_rgb.js} +5 -5
  46. package/src/core/color/{rgb_to_kelvin.spec.js → kelvin/rgb_to_kelvin.spec.js} +1 -1
  47. package/src/core/color/{parseColor.js → parse_color.js} +5 -5
  48. package/src/core/color/parse_color.spec.js +18 -0
  49. package/src/core/color/rgb2uint24.js +3 -3
  50. package/src/core/color/sRGB/sRGB.spec.js +16 -0
  51. package/src/core/color/xyz/XYZ.spec.js +16 -0
  52. package/src/core/color/xyz/rgb_to_xyz.js +15 -0
  53. package/src/core/color/xyz/xyz_to_rgb.js +14 -0
  54. package/src/core/events/signal/Signal.js +5 -0
  55. package/src/core/events/signal/{signalAggregateByTimeWindow.js → signal_aggregate_by_time_window.js} +1 -1
  56. package/src/core/events/signal/{SignalUtils.js → signal_filter.js} +1 -2
  57. package/src/core/fsm/simple/SimpleStateMachine.spec.js +34 -2
  58. package/src/core/geom/2d/spline_bezier2_2d.js +26 -0
  59. package/src/core/geom/2d/spline_bezier2_2d.spec.js +16 -0
  60. package/src/core/geom/3d/SurfacePoint3.js +1 -1
  61. package/src/core/geom/3d/aabb/aabb3_compute_plane_side.js +1 -1
  62. package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +1 -1
  63. package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +1 -1
  64. package/src/core/geom/3d/compute_circle_bounding_box.js +1 -1
  65. package/src/core/geom/3d/cone/computeConeBoundingBox.js +1 -1
  66. package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
  67. package/src/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +1 -1
  68. package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.js +1 -1
  69. package/src/core/geom/3d/matrix/m4_multiply.js +2 -2
  70. package/src/core/geom/3d/matrix/m4_multiply.spec.js +11 -0
  71. package/src/core/geom/3d/matrix/m4_multiply_alphatensor.spec.js +11 -0
  72. package/src/core/geom/3d/morton/split_by_2.js +1 -1
  73. package/src/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +1 -1
  74. package/src/core/geom/3d/normal/spherical/sphere_map_transform.js +1 -1
  75. package/src/core/geom/3d/plane/is_point_within_planes.js +1 -1
  76. package/src/core/geom/3d/plane/lerp_planes_to_array.js +1 -1
  77. package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.js +1 -1
  78. package/src/core/geom/3d/plane/plane3_compute_line_segment_intersection.js +1 -1
  79. package/src/core/geom/3d/plane/plane3_compute_ray_intersection.js +1 -1
  80. package/src/core/geom/3d/plane/plane3_lerp.js +2 -2
  81. package/src/core/geom/3d/plane/plane3_projectPoint.js +1 -1
  82. package/src/core/geom/3d/plane/plane3_slerp.js +3 -3
  83. package/src/core/geom/3d/ray/ray_computeNearestPointToPoint.js +1 -1
  84. package/src/core/geom/3d/ray/ray_distance_to_point.js +1 -1
  85. package/src/core/geom/3d/shape/UnionShape3D.js +3 -3
  86. package/src/core/geom/3d/shape/UnitCubeShape3D.js +1 -1
  87. package/src/core/geom/3d/shape/UnitSphereShape3D.js +1 -1
  88. package/src/core/geom/3d/shape/util/shape_to_visual_entity.js +10 -10
  89. package/src/core/geom/3d/sphere/sphere_intersects_ray.js +1 -1
  90. package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +6 -0
  91. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +1 -1
  92. package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.spec.js +1 -1
  93. package/src/core/geom/3d/tetrahedra/compute_circumsphere.js +1 -1
  94. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +1 -0
  95. package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.spec.js +10 -2
  96. package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +2 -2
  97. package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +1 -1
  98. package/src/core/geom/3d/topology/samples/sampleFloodFill.js +4 -4
  99. package/src/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +1 -1
  100. package/src/core/geom/3d/topology/simplify/quadratic/Quadratic3.js +1 -1
  101. package/src/core/geom/3d/topology/simplify/tm_edge_collapse_is_degenerate_flip.js +2 -2
  102. package/src/core/geom/3d/topology/struct/TopoVertex.js +1 -1
  103. package/src/core/geom/3d/topology/util/compute_face_connection_weight.js +2 -2
  104. package/src/core/geom/3d/triangle/computeTrianglePlaneSide.js +1 -1
  105. package/src/core/geom/3d/triangle/computeTriangleRayIntersection.js +1 -1
  106. package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js +1 -1
  107. package/src/core/geom/3d/v3_compute_triangle_normal.js +1 -1
  108. package/src/core/geom/Quaternion.js +1 -1
  109. package/src/core/geom/Vector3.js +7 -7
  110. package/src/core/geom/Vector3.spec.js +68 -1
  111. package/src/core/geom/mat2/m2_add.js +17 -0
  112. package/src/core/geom/mat2/m2_determinant.js +8 -0
  113. package/src/core/geom/mat2/m2_multiply.js +17 -0
  114. package/src/core/geom/mat2/m2_multiply_scalar.js +18 -0
  115. package/src/core/geom/mat2/m2_multiply_transposed.js +18 -0
  116. package/src/core/geom/mat2/m2_sub_transposed.js +17 -0
  117. package/src/{view → core/geom/mat3}/m3_cm_compose_transform.js +0 -29
  118. package/src/core/geom/mat3/m3_cm_extract_rotation.js +8 -0
  119. package/src/core/geom/mat3/m3_cm_from_translation.js +19 -0
  120. package/src/{view/multiplyMatrices3.js → core/geom/mat3/m3_multiply.js} +2 -2
  121. package/src/{view → core/geom/mat3}/m3_rm_compose_transform.js +0 -9
  122. package/src/core/geom/mat3/m3_rm_extract_scale.js +7 -0
  123. package/src/core/geom/{3d/vector/allocate_v3.js → vec3/v3_allocate.js} +1 -1
  124. package/src/core/geom/{v3_angle_between.js → vec3/v3_angle_between.js} +1 -1
  125. package/src/core/geom/vec3/v3_dot_array_array.js +20 -0
  126. package/src/core/geom/{v3_lerp.js → vec3/v3_lerp.js} +1 -1
  127. package/src/core/graph/SquareMatrix.js +26 -3
  128. package/src/core/graph/SquareMatrix.spec.js +52 -2
  129. package/src/core/math/clamp01.js +1 -0
  130. package/src/core/math/fract.js +3 -1
  131. package/src/core/math/inverseLerp.js +7 -5
  132. package/src/core/math/lerp.js +5 -5
  133. package/src/core/math/physics/spring/computeHookeForce.js +9 -0
  134. package/src/core/math/remap.js +19 -0
  135. package/src/core/math/remap.spec.js +15 -0
  136. package/src/core/math/smoothStep.spec.js +16 -0
  137. package/src/core/math/spline/spline_bezier2.js +13 -0
  138. package/src/core/math/spline/spline_bezier2.spec.js +13 -0
  139. package/src/core/model/object/compareValues.js +2 -2
  140. package/src/core/model/object/read_property.js +10 -2
  141. package/src/core/model/object/write_property.js +3 -23
  142. package/src/core/model/object/write_property.spec.js +26 -0
  143. package/src/core/primitives/numbers/number_pretty_print.spec.js +19 -0
  144. package/src/core/process/action/AsynchronousDelayAction.js +2 -2
  145. package/src/core/process/executor/profile/ConcurrentExecutorProfiler.js +1 -1
  146. package/src/engine/EngineHarness.js +7 -7
  147. package/src/engine/EntityCreator.js +5 -5
  148. package/src/engine/__module.js +1 -1
  149. package/src/engine/achievements/AchievementManager.js +2 -2
  150. package/src/engine/animation/AnimationUtils.js +4 -4
  151. package/src/engine/animation/behavior/animateProperty.js +2 -2
  152. package/src/engine/animation/curve/draw/build_plot_entity_from_array.js +3 -3
  153. package/src/engine/animation/playAnimationTrack.js +3 -3
  154. package/src/engine/animation/playTrackRealTime.js +3 -3
  155. package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +2 -2
  156. package/src/engine/control/ControlContext.js +7 -7
  157. package/src/engine/ecs/{EntityBuilder.d.ts → Entity.d.ts} +5 -5
  158. package/src/engine/ecs/{EntityBuilder.js → Entity.js} +29 -29
  159. package/src/engine/ecs/{EntityBuilder.spec.js → Entity.spec.js} +17 -17
  160. package/src/engine/ecs/EntityBlueprint.d.ts +2 -2
  161. package/src/engine/ecs/EntityBlueprint.js +3 -3
  162. package/src/engine/ecs/EntityBlueprint.spec.js +2 -2
  163. package/src/engine/ecs/{EntityBuilderFlags.js → EntityFlags.js} +1 -1
  164. package/src/engine/ecs/EntityObserver.spec.js +8 -8
  165. package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +5 -5
  166. package/src/engine/ecs/foliage/ecs/InstancedMeshUtils.js +3 -3
  167. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts +2 -2
  168. package/src/engine/ecs/gui/menu/radial/RadialContextMenu.js +5 -5
  169. package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
  170. package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
  171. package/src/engine/ecs/parent/EntityNode.d.ts +3 -3
  172. package/src/engine/ecs/parent/EntityNode.js +5 -5
  173. package/src/engine/ecs/parent/testHuDPerf.js +2 -2
  174. package/src/engine/ecs/speaker/VoiceSystem.js +5 -5
  175. package/src/engine/ecs/systems/SteeringSystem.js +1 -1
  176. package/src/engine/ecs/terrain/ecs/splat/SplatMapOptimizerDebugger.js +1 -1
  177. package/src/engine/ecs/tooltip/testTooltipComponentSystem.js +3 -3
  178. package/src/engine/graphics/camera/makeOrbitalCameraController.js +3 -3
  179. package/src/engine/graphics/camera/testClippingPlaneComputation.js +3 -3
  180. package/src/engine/graphics/debug/createDebugLabel.js +3 -3
  181. package/src/engine/graphics/ecs/camera/Camera.js +1 -1
  182. package/src/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +1 -1
  183. package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js +3 -3
  184. package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +3 -11
  185. package/src/engine/graphics/ecs/decal/v2/prototypeDecalEditor.js +3 -3
  186. package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +14 -14
  187. package/src/engine/graphics/ecs/highlight/Highlight.js +20 -102
  188. package/src/engine/graphics/ecs/mesh/Mesh.js +12 -18
  189. package/src/engine/graphics/ecs/mesh/MeshSystem.js +41 -26
  190. package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +1 -1
  191. package/src/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +3 -3
  192. package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +5 -5
  193. package/src/engine/graphics/ecs/mesh-v2/sample/prototype_sg_raycast.js +6 -6
  194. package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +3 -3
  195. package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +3 -3
  196. package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.js +4 -4
  197. package/src/engine/graphics/ecs/path/tube/build/makeTubeGeometry.js +1 -1
  198. package/src/engine/graphics/ecs/path/tube/build/make_cap.js +3 -3
  199. package/src/engine/graphics/ecs/path/tube/build/make_ring_vertices.js +1 -1
  200. package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +3 -3
  201. package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +2 -2
  202. package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +2 -2
  203. package/src/engine/graphics/geometry/MikkT/InitTriInfo.js +5 -6
  204. package/src/engine/graphics/geometry/MikkT/MikkTSpace.js +3 -3
  205. package/src/engine/graphics/geometry/MikkT/NormalizeSafe.js +1 -2
  206. package/src/engine/graphics/geometry/MikkT/STSpace.js +3 -3
  207. package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.js +2 -2
  208. package/src/engine/graphics/geometry/bvh/buffered/BVHGeometryRaycaster.js +1 -1
  209. package/src/engine/graphics/geometry/clipping/ClippedGeometry.js +1 -1
  210. package/src/engine/graphics/geometry/optimization/merge/prototypeGeometryMerge.js +4 -4
  211. package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +7 -7
  212. package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +1 -1
  213. package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +102 -95
  214. package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.spec.js +25 -0
  215. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -35
  216. package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +39 -2
  217. package/src/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +2 -2
  218. package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +22 -6
  219. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts +2 -2
  220. package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +3 -3
  221. package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +10 -10
  222. package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
  223. package/src/engine/graphics/render/buffer/simple-fx/taa/prototypeTAA.js +2 -2
  224. package/src/engine/graphics/render/forward_plus/LightManager.js +1 -1
  225. package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +13 -13
  226. package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +3 -3
  227. package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +1 -1
  228. package/src/engine/graphics/render/layers/RenderLayerUtils.js +1 -1
  229. package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +8 -7
  230. package/src/engine/graphics/sh3/LightProbeVolume.js +3 -3
  231. package/src/engine/graphics/sh3/path_tracer/PathTracer.js +2 -2
  232. package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +2 -2
  233. package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +1 -1
  234. package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +1 -1
  235. package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +1 -1
  236. package/src/engine/graphics/sh3/prototypeSH3Probe.js +3 -3
  237. package/src/engine/graphics/sh3/sky/hosek/data.js +3744 -0
  238. package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +10 -3786
  239. package/src/engine/graphics/sh3/visualise_probe.js +3 -3
  240. package/src/engine/graphics/shadows/testShadowMapRendering.js +3 -3
  241. package/src/engine/graphics/texture/atlas/AbstractTextureAtlas.js +1 -1
  242. package/src/engine/graphics/texture/atlas/AtlasPatch.js +0 -1
  243. package/src/engine/graphics/texture/atlas/AtlasPatchFlag.js +8 -1
  244. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +25 -0
  245. package/src/engine/graphics/texture/atlas/CachingTextureAtlas.spec.js +54 -0
  246. package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +101 -160
  247. package/src/engine/graphics/texture/atlas/TextureAtlas.js +18 -1
  248. package/src/engine/graphics/texture/sampler/downloadSamplerAsPNG.js +1 -1
  249. package/src/engine/graphics/texture/sampler/sampler2d_ensure_uint8_RGBA.js +22 -0
  250. package/src/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +2 -2
  251. package/src/engine/graphics/util/projectSphere.js +1 -1
  252. package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
  253. package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +2 -2
  254. package/src/engine/intelligence/behavior/composite/ParallelBehavior.spec.js +13 -12
  255. package/src/engine/navigation/ecs/components/Path.js +1 -1
  256. package/src/engine/physics/fluid/prototype.js +3 -3
  257. package/src/engine/physics/mls-mpm/MLS_MPM.js +11 -106
  258. package/src/engine/reference/v2/Reference.js +6 -2
  259. package/src/engine/save/storage/JsonStringCodec.js +1 -1
  260. package/src/engine/save/storage/LocalStorage.js +2 -1
  261. package/src/engine/sound/ecs/emitter/SoundEmitter.js +7 -7
  262. package/src/engine/sound/ecs/emitter/SoundTrack.js +6 -6
  263. package/src/engine/ui/GUIEngine.js +4 -4
  264. package/src/engine/ui/notification/NotificationManager.js +3 -3
  265. package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +1 -1
  266. package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +2 -4
  267. package/src/generation/markers/debug/visualizeMarkers.js +2 -2
  268. package/src/generation/markers/prototypeGridCellActionPlaceMarker.js +2 -2
  269. package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -2
  270. package/src/generation/theme/ThemeEngine.js +2 -2
  271. package/src/generation/theme/ThemeEngine.spec.js +7 -0
  272. package/src/view/View.js +21 -13
  273. package/src/view/elements/ColorPickerView.js +2 -2
  274. package/src/view/minimap/gl/MarkerGL.js +20 -18
  275. package/src/view/minimap/gl/MinimapMarkersGL.js +2 -1
  276. package/editor/tools/FoliagePaintTool.js +0 -168
  277. package/editor/tools/engine/ToolStateMachine.js +0 -53
  278. package/src/core/NumberFormat.js +0 -4
  279. package/src/core/binary/ByteArrayTools.js +0 -137
  280. package/src/core/binary/NaiveBitSet.js +0 -69
  281. package/src/core/binary/objects/StandardTypeBuilder.js +0 -126
  282. package/src/core/binary/serde/JsonSerializer.js +0 -113
  283. package/src/core/color/rgb2hsv.js +0 -47
  284. package/src/core/color/rgb_to_YCbCr_uint24.js +0 -16
  285. package/src/core/fsm/StateMachine.js +0 -440
  286. package/src/core/fsm/Transition.js +0 -65
  287. package/src/core/geom/Bezier.js +0 -24
  288. package/src/core/geom/Bezier.spec.js +0 -16
  289. package/src/core/math/spline/quadraticCurve.js +0 -11
  290. package/src/core/math/spline/quadraticCurve.spec.js +0 -13
  291. package/src/core/primitives/numbers/compareNumbers.js +0 -9
  292. package/src/engine/graphics/ecs/decal/Decal.js +0 -10
  293. package/src/engine/graphics/ecs/decal/DecalSystem.js +0 -99
  294. package/src/engine/graphics/ecs/decal/threejs/DecalGeometry.js +0 -298
  295. package/src/engine/graphics/ecs/trail/Trail.js +0 -83
  296. package/src/engine/graphics/ecs/trail/TrailMaterial.js +0 -67
  297. package/src/engine/graphics/ecs/trail/TrailMaterial2.js +0 -73
  298. package/src/engine/graphics/ecs/trail/TrailSystem.js +0 -162
  299. package/src/engine/graphics/ecs/water2/NodeWaterShader1.js +0 -213
  300. package/src/engine/graphics/ecs/water2/shader/JBWaterShader.js +0 -315
  301. package/src/engine/graphics/geometry/MikkT/Length.js +0 -10
  302. package/src/engine/graphics/texture/ImageLoader.js +0 -33
  303. package/src/engine/graphics/three/DDSLoader.js +0 -286
  304. package/src/engine/graphics/three/Water2.js +0 -343
  305. package/src/engine/physics/spring/computeHookeForce.js +0 -9
  306. package/src/engine/reference/v1/ReferenceManager.js +0 -124
  307. /package/src/core/color/{hex2rgb.spec.js → hex/hex2rgb.spec.js} +0 -0
  308. /package/src/core/color/{rgb2hex.spec.js → hex/rgb2hex.spec.js} +0 -0
  309. /package/src/core/color/{hsv2rgb.spec.js → hsv/hsv2rgb.spec.js} +0 -0
  310. /package/src/core/color/{rgb_to_kelvin.js → kelvin/rgb_to_kelvin.js} +0 -0
  311. /package/src/core/color/{linear_to_sRGB.js → sRGB/linear_to_sRGB.js} +0 -0
  312. /package/src/core/color/{sRGB_to_linear.js → sRGB/sRGB_to_linear.js} +0 -0
  313. /package/src/core/geom/{m3_determinant.js → mat3/m3_determinant.js} +0 -0
  314. /package/src/core/geom/{v3_distance.js → vec3/v3_distance.js} +0 -0
  315. /package/src/core/geom/{v3_distance_above_plane.js → vec3/v3_distance_above_plane.js} +0 -0
  316. /package/src/core/geom/{v3_distance_above_plane.spec.js → vec3/v3_distance_above_plane.spec.js} +0 -0
  317. /package/src/core/geom/{v3_distance_sqr.d.ts → vec3/v3_distance_sqr.d.ts} +0 -0
  318. /package/src/core/geom/{v3_distance_sqr.js → vec3/v3_distance_sqr.js} +0 -0
  319. /package/src/core/geom/{v3_dot.js → vec3/v3_dot.js} +0 -0
  320. /package/src/core/geom/{v3_length.js → vec3/v3_length.js} +0 -0
  321. /package/src/core/geom/{v3_length_sqr.js → vec3/v3_length_sqr.js} +0 -0
  322. /package/src/core/geom/{v3_slerp.js → vec3/v3_slerp.js} +0 -0
package/editor/Editor.js CHANGED
@@ -17,7 +17,7 @@ import { SelectionVisualizer } from "./SelectionVisualizer.js";
17
17
  import { ProcessEngine } from "./process/ProcessEngine.js";
18
18
  import { MeshLibrary } from "./library/MeshLibrary.js";
19
19
  import { TransformerMode } from "./tools/TransformTool.js";
20
- import EntityBuilder from "../src/engine/ecs/EntityBuilder.js";
20
+ import Entity from "../src/engine/ecs/Entity.js";
21
21
  import { Camera } from "../src/engine/graphics/ecs/camera/Camera.js";
22
22
  import EditorEntitySystem from "./ecs/EditorEntitySystem.js";
23
23
  import EditorEntity from "./ecs/EditorEntity.js";
@@ -26,7 +26,6 @@ import { Transform } from "../src/engine/ecs/transform/Transform.js";
26
26
  import TopDownCameraControllerSystem, {
27
27
  setCameraControllerFromTransform
28
28
  } from "../src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js";
29
- import { downloadAsFile } from "../src/core/binary/ByteArrayTools.js";
30
29
  import BinaryBufferSerializer from "../src/engine/ecs/storage/BinaryBufferSerializer.js";
31
30
  import { EncodingBinaryBuffer } from "../src/core/binary/EncodingBinaryBuffer.js";
32
31
  import { EntityComponentDataset } from "../src/engine/ecs/EntityComponentDataset.js";
@@ -73,6 +72,7 @@ import '../../../../css/editor/EntityEditorView.scss';
73
72
  import '../../../../css/editor/EditorView.scss';
74
73
  import { ParameterTrackSet } from "../src/engine/graphics/particles/particular/engine/parameter/ParameterTrackSet.js";
75
74
  import { ParameterTrackSetEditor } from "./ecs/component/editors/ecs/ParameterTrackSetEditor.js";
75
+ import {downloadAsFile} from "../src/core/binary/downloadAsFile.js";
76
76
 
77
77
  /**
78
78
  * @template T
@@ -250,7 +250,7 @@ function pasteEntities(editor) {
250
250
  }
251
251
 
252
252
  function buildEditorCamera() {
253
- const cameraEntity = new EntityBuilder();
253
+ const cameraEntity = new Entity();
254
254
  const camera = new Camera();
255
255
 
256
256
  camera.projectionType.set(Camera.ProjectionType.Perspective);
@@ -274,7 +274,7 @@ function buildEditorCamera() {
274
274
 
275
275
  /**
276
276
  *
277
- * @param {EntityBuilder} cameraEntity
277
+ * @param {Entity} cameraEntity
278
278
  * @param {EntityComponentDataset} dataset
279
279
  * @param {Editor} editor
280
280
  */
@@ -1,6 +1,6 @@
1
1
  import { TypeEditor } from "../TypeEditor.js";
2
2
  import EmptyView from "../../../../src/view/elements/EmptyView.js";
3
- import { rgb2hex } from "../../../../src/core/color/rgb2hex.js";
3
+ import { rgb2hex } from "../../../../src/core/color/hex/rgb2hex.js";
4
4
 
5
5
  export class ColorEditor extends TypeEditor {
6
6
  build(parent, field) {
@@ -4,13 +4,13 @@ import ImageView from "../../../../src/view/elements/image/ImageView.js";
4
4
  import ButtonView from "../../../../src/view/elements/button/ButtonView.js";
5
5
  import { url_to_data_url } from "../../../../src/core/binary/url_to_data_url.js";
6
6
  import { is_data_url } from "../../../../src/core/binary/is_data_url.js";
7
- import { LargeStrongEditor } from "./LargeStrongEditor.js";
7
+ import { LargeStringEditor } from "./LargeStringEditor.js";
8
8
 
9
9
  export class ImagePathEditor extends TypeEditor {
10
10
  inline = true;
11
11
 
12
12
  build(parent, field, registry) {
13
- const url_editor = new LargeStrongEditor();
13
+ const url_editor = new LargeStringEditor();
14
14
 
15
15
  const editor = url_editor.build(parent, field, registry);
16
16
 
@@ -20,7 +20,7 @@ const MAX_PATH_LENGTH_EDITABLE = 256;
20
20
  */
21
21
  const MAX_CROP_LENGTH = 32;
22
22
 
23
- export class LargeStrongEditor extends TypeEditor {
23
+ export class LargeStringEditor extends TypeEditor {
24
24
  inline = true;
25
25
 
26
26
  build(parent, field, registry) {
@@ -1,4 +1,4 @@
1
- import EntityBuilder from "../../../src/engine/ecs/EntityBuilder.js";
1
+ import Entity from "../../../src/engine/ecs/Entity.js";
2
2
  import Renderable from "../../../src/engine/ecs/renderable/Renderable.js";
3
3
  import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
4
4
  import EditorEntity from "../../ecs/EditorEntity.js";
@@ -9,12 +9,12 @@ import Script from "../../../src/engine/ecs/components/Script.js";
9
9
  *
10
10
  * @param {Object3D} helper
11
11
  * @param {number} sourceEntity
12
- * @return {EntityBuilder}
12
+ * @return {Entity}
13
13
  */
14
14
  export function buildThreeJSHelperEntity(helper, sourceEntity = -1) {
15
15
  helper.frustumCulled = false;
16
16
 
17
- const entityBuilder = new EntityBuilder();
17
+ const entityBuilder = new Entity();
18
18
 
19
19
  const renderable = new Renderable(helper);
20
20
  // renderable.matrixAutoUpdate = false;
@@ -2,7 +2,7 @@ import { max2 } from "../../../src/core/math/max2.js";
2
2
  import { min2 } from "../../../src/core/math/min2.js";
3
3
  import Task from "../../../src/core/process/task/Task.js";
4
4
  import { TaskSignal } from "../../../src/core/process/task/TaskSignal.js";
5
- import EntityBuilder from "../../../src/engine/ecs/EntityBuilder.js";
5
+ import Entity from "../../../src/engine/ecs/Entity.js";
6
6
  import { BufferGeometry, Float32BufferAttribute, Line, LineBasicMaterial } from "three";
7
7
  import Renderable from "../../../src/engine/ecs/renderable/Renderable.js";
8
8
  import { SurfacePoint3 } from "../../../src/core/geom/3d/SurfacePoint3.js";
@@ -48,10 +48,10 @@ export function makeGridPositionSymbolDisplay(engine) {
48
48
  *
49
49
  * @param {GridPosition} gridPosition
50
50
  * @param {Transform} transform
51
- * @returns {EntityBuilder}
51
+ * @returns {Entity}
52
52
  */
53
53
  function makeHelper(gridPosition, transform) {
54
- const builder = new EntityBuilder();
54
+ const builder = new Entity();
55
55
 
56
56
  // TODO replace with {@link VisualSymbolLine}
57
57
 
@@ -1,7 +1,7 @@
1
1
  import { assert } from "../../../src/core/assert.js";
2
2
  import { Sprite, SpriteMaterial } from "three";
3
3
  import { make3DSymbolicDisplay } from "./make3DSymbolicDisplay.js";
4
- import EntityBuilder from "../../../src/engine/ecs/EntityBuilder.js";
4
+ import Entity from "../../../src/engine/ecs/Entity.js";
5
5
  import Renderable from "../../../src/engine/ecs/renderable/Renderable.js";
6
6
  import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
7
7
  import { synchronizeTransform } from "./synchronizeTransform.js";
@@ -42,11 +42,11 @@ export function makePositionedIconDisplaySymbol(engine, iconURL, ComponentClass)
42
42
  * @param transform
43
43
  * @param entity
44
44
  * @param {SymbolicDisplayInternalAPI} api
45
- * @return {EntityBuilder}
45
+ * @return {Entity}
46
46
  */
47
47
  factory([component, transform, entity], api) {
48
48
 
49
- const b = new EntityBuilder();
49
+ const b = new Entity();
50
50
 
51
51
  const sprite = new Sprite(spriteMaterial);
52
52
  sprite.frustumCulled = false;
@@ -10,7 +10,7 @@ import { decodeMouseEventButtons, PointerDevice } from "../../src/engine/input/d
10
10
  import Vector2 from "../../src/core/geom/Vector2.js";
11
11
  import TopDownCameraControllerSystem
12
12
  from "../../src/engine/graphics/ecs/camera/topdown/TopDownCameraControllerSystem.js";
13
- import { hex2rgb } from "../../src/core/color/hex2rgb.js";
13
+ import { hex2rgb } from "../../src/core/color/hex/hex2rgb.js";
14
14
  import { obtainTerrain } from "../../src/engine/ecs/terrain/util/obtainTerrain.js";
15
15
  import { pick } from "../../src/engine/ecs/grid/pick.js";
16
16
 
@@ -116,7 +116,7 @@ class GridPaintTool extends Tool {
116
116
  });
117
117
  }
118
118
 
119
- shutdown() {
119
+ finalize() {
120
120
  this.terrain.overlay.pop();
121
121
 
122
122
  this.editor.selection.on.added.remove(this.paint, this);
@@ -128,7 +128,7 @@ class GridPaintTool extends Tool {
128
128
 
129
129
  this.cameraController.stop();
130
130
 
131
- super.shutdown();
131
+ super.finalize();
132
132
  }
133
133
 
134
134
  affectTile(_x, _y) {
@@ -48,7 +48,7 @@ class TopDownCameraControlTool extends Tool {
48
48
  this.__controller.build(ecd);
49
49
  }
50
50
 
51
- shutdown() {
51
+ finalize() {
52
52
  this.system.enabled.set(false);
53
53
 
54
54
  this.__controller.destroy();
@@ -301,7 +301,7 @@ export class TransformTool extends Tool {
301
301
  this.editor.engine.graphics.scene.add(this.editObject);
302
302
  }
303
303
 
304
- shutdown() {
304
+ finalize() {
305
305
  this.editor.selection.forEach(this.handlers.handleSelectionRemoved);
306
306
  this.bindings.forEach(function (b) {
307
307
  b.unlink();
@@ -4,11 +4,12 @@
4
4
 
5
5
 
6
6
  import ObservedValue from '../../../src/core/model/ObservedValue.js';
7
- import { buildToolStateMachine } from "./ToolStateMachine.js";
8
7
  import { ToolState } from "./ToolState.js";
9
8
  import ObservedString from "../../../src/core/model/ObservedString.js";
10
9
 
11
10
  class Tool {
11
+ #state = ToolState.Initial;
12
+
12
13
  /**
13
14
  *
14
15
  * @constructor
@@ -38,12 +39,6 @@ class Tool {
38
39
  * @type {ObservedString}
39
40
  */
40
41
  this.icon = new ObservedString("");
41
-
42
- /**
43
- *
44
- * @type {StateMachine}
45
- */
46
- this.stateMachine = buildToolStateMachine(this);
47
42
  }
48
43
 
49
44
  /**
@@ -59,35 +54,25 @@ class Tool {
59
54
  * @returns {ToolState|number}
60
55
  */
61
56
  getState() {
62
- return this.stateMachine.getState();
57
+ return this.#state;
63
58
  }
64
59
 
65
60
  isRunning() {
66
- return this.getState() === ToolState.Running;
67
- }
68
-
69
- /**
70
- *
71
- * @param {ToolState} s
72
- * @returns {Promise}
73
- */
74
- moveToState(s) {
75
- const sm = this.stateMachine;
76
-
77
- return sm.navigateTo(s);
61
+ return this.#state === ToolState.Running;
78
62
  }
79
63
 
80
64
  /**
81
65
  * Activate the tool and prepare it for usage
82
66
  */
83
67
  initialize() {
68
+ this.#state = ToolState.Ready;
84
69
  }
85
70
 
86
71
  /**
87
72
  * Deactivate the tool and remove and influence it may have
88
73
  */
89
- shutdown() {
90
-
74
+ finalize() {
75
+ this.#state = ToolState.Ready;
91
76
  }
92
77
 
93
78
  /**
@@ -102,6 +87,7 @@ class Tool {
102
87
  * @example Start painting with a brush
103
88
  */
104
89
  start() {
90
+ this.#state = ToolState.Running;
105
91
  }
106
92
 
107
93
  /**
@@ -109,7 +95,7 @@ class Tool {
109
95
  * @example Finish brush stroke
110
96
  */
111
97
  stop() {
112
-
98
+ this.#state = ToolState.Ready;
113
99
  }
114
100
 
115
101
  handleKeyboardEvent(e) {
@@ -10,9 +10,7 @@ import { decodeMouseEventButtons, PointerDevice } from '../../../src/engine/inpu
10
10
  import SelectionTool from '../SelectionTool.js';
11
11
  import TopDownCameraControlTool from '../TopDownCameraControlTool.js';
12
12
  import GridPaintTool from "../GridPaintTool.js";
13
- import FoliagePaintTool from "../FoliagePaintTool.js";
14
13
  import { TransformTool } from "../TransformTool.js";
15
- import { ToolState } from "./ToolState.js";
16
14
  import Clock from "../../../src/engine/Clock.js";
17
15
  import { TerrainHeightPaintTool } from "../paint/TerrainHeightPaintTool.js";
18
16
  import { TerrainTexturePaintTool } from "../paint/TerrainTexturePaintTool.js";
@@ -47,14 +45,14 @@ ToolEngine.prototype.initialize = function () {
47
45
  console.log("active tool changed. Old: ", oldTool, ", New :", newTool);
48
46
 
49
47
  if (oldTool !== null && typeof oldTool === "object") {
50
- oldTool.moveToState(ToolState.Initial);
48
+ oldTool.finalize();
51
49
  }
52
50
 
53
51
  if (newTool !== null && typeof newTool === "object") {
54
52
  newTool.editor = this.editor;
55
53
  newTool.engine = this.engine;
56
54
 
57
- newTool.moveToState(ToolState.Ready);
55
+ newTool.initialize();
58
56
  }
59
57
  });
60
58
 
@@ -88,7 +86,7 @@ ToolEngine.prototype.initialize = function () {
88
86
  .add(terrainTexturePaintTool1)
89
87
  .add(terrainTexturePaintTool2)
90
88
  .add(terrainTexturePaintTool3)
91
- .add(new FoliagePaintTool());
89
+ ;
92
90
  };
93
91
 
94
92
  /**
@@ -144,7 +142,7 @@ ToolEngine.prototype.startup = function (engine, editor) {
144
142
 
145
143
  }
146
144
 
147
- tool.moveToState(ToolState.Running);
145
+ tool.start();
148
146
  }
149
147
  }
150
148
 
@@ -152,7 +150,7 @@ ToolEngine.prototype.startup = function (engine, editor) {
152
150
  const tool = self.active.get();
153
151
  if (tool !== null) {
154
152
 
155
- tool.moveToState(ToolState.Ready);
153
+ tool.stop();
156
154
  }
157
155
  }
158
156
 
@@ -158,8 +158,8 @@ export class TerrainHeightPaintTool extends TerrainPaintTool {
158
158
 
159
159
  }
160
160
 
161
- shutdown() {
162
- super.shutdown();
161
+ finalize() {
162
+ super.finalize();
163
163
  }
164
164
 
165
165
  /**
@@ -198,8 +198,8 @@ export class TerrainPaintTool extends Tool {
198
198
  engine.devices.pointer.on.wheel.add(this.__handleMouseWheel, this);
199
199
  }
200
200
 
201
- shutdown() {
202
- super.shutdown();
201
+ finalize() {
202
+ super.finalize();
203
203
 
204
204
 
205
205
  this.terrain.overlay.pop();
@@ -86,8 +86,8 @@ export class TerrainTexturePaintTool extends TerrainPaintTool {
86
86
  super.initialize();
87
87
  }
88
88
 
89
- shutdown() {
90
- super.shutdown();
89
+ finalize() {
90
+ super.finalize();
91
91
  }
92
92
 
93
93
  async paint(timeDelta) {
@@ -1,5 +1,5 @@
1
1
  import { EngineHarness } from "../../../src/engine/EngineHarness.js";
2
- import EntityBuilder from "../../../src/engine/ecs/EntityBuilder.js";
2
+ import Entity from "../../../src/engine/ecs/Entity.js";
3
3
  import { ShadedGeometry } from "../../../src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js";
4
4
  import { BoxBufferGeometry, MeshStandardMaterial } from "three";
5
5
  import { Transform } from "../../../src/engine/ecs/transform/Transform.js";
@@ -32,7 +32,7 @@ async function main(engine) {
32
32
  const ecd = engine.entityManager.dataset;
33
33
 
34
34
  // create something to drag
35
- const cube_entity = new EntityBuilder()
35
+ const cube_entity = new Entity()
36
36
  .add(ShadedGeometry.from(
37
37
  new BoxBufferGeometry(1, 1, 1),
38
38
  new MeshStandardMaterial({
@@ -60,7 +60,7 @@ async function main(engine) {
60
60
  // controls.attach(cube_entity); // make controls target the cube
61
61
  controls.attach(entityNode.entity.entity); // make controls target the cube
62
62
 
63
- new EntityBuilder()
63
+ new Entity()
64
64
  .add(new InputController([{
65
65
  path: 'keyboard/keys/w/down',
66
66
  listener() {
@@ -5,7 +5,8 @@ import ObservedBoolean from "../../../src/core/model/ObservedBoolean.js";
5
5
  import LabelView from "../../../src/view/common/LabelView.js";
6
6
  import ButtonView from "../../../src/view/elements/button/ButtonView.js";
7
7
  import EmptyView from "../../../src/view/elements/EmptyView.js";
8
- import { downloadAsFile } from "../../../src/core/binary/ByteArrayTools.js";
8
+
9
+ import {downloadAsFile} from "../../../src/core/binary/downloadAsFile.js";
9
10
 
10
11
  export async function obtainClipBoard() {
11
12
  const navigator = globalThis.navigator;
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.56.1",
8
+ "version": "2.58.0",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -8,7 +8,7 @@ import Terrain from "../../src/engine/ecs/terrain/ecs/Terrain.js";
8
8
  import { TerrainFlags } from "../../src/engine/ecs/terrain/ecs/TerrainFlags.js";
9
9
  import Water from "../../src/engine/graphics/ecs/water/Water.js";
10
10
  import GridObstacle from "../../src/engine/grid/obstacle/GridObstacle.js";
11
- import EntityBuilder from "../../src/engine/ecs/EntityBuilder.js";
11
+ import Entity from "../../src/engine/ecs/Entity.js";
12
12
  import GridPosition from "../../src/engine/grid/position/GridPosition.js";
13
13
  import { Transform } from "../../src/engine/ecs/transform/Transform.js";
14
14
  import { GridData } from "../../src/generation/grid/GridData.js";
@@ -115,7 +115,7 @@ function prepare_gen_task({
115
115
  const obstacle = new GridObstacle();
116
116
  obstacle.resize(terrain.size.x, terrain.size.y);
117
117
 
118
- const terrainBuilder = new EntityBuilder();
118
+ const terrainBuilder = new Entity();
119
119
 
120
120
  terrainBuilder
121
121
  .add(terrain)
@@ -3,7 +3,7 @@ import { EngineHarness } from "../../src/engine/EngineHarness.js";
3
3
  import { GameAssetType } from "../../src/engine/asset/GameAssetType.js";
4
4
  import { TextureAssetLoader } from "../../src/engine/asset/loaders/texture/TextureAssetLoader.js";
5
5
  import Vector3 from "../../src/core/geom/Vector3.js";
6
- import EntityBuilder from "../../src/engine/ecs/EntityBuilder.js";
6
+ import Entity from "../../src/engine/ecs/Entity.js";
7
7
  import Terrain from "../../src/engine/ecs/terrain/ecs/Terrain.js";
8
8
  import { ImageRGBADataLoader } from "../../src/engine/asset/loaders/image/ImageRGBADataLoader.js";
9
9
  import TerrainSystem from "../../src/engine/ecs/terrain/ecs/TerrainSystem.js";
@@ -261,7 +261,7 @@ async function main(engine) {
261
261
  water.shoreDepthTransition.set(0.1, 0.3);
262
262
  water.scattering.set(3);
263
263
 
264
- new EntityBuilder()
264
+ new Entity()
265
265
  .add(terrain)
266
266
  // .add(water)
267
267
  .build(ecd);
@@ -3,7 +3,7 @@ import { EngineHarness } from "../../src/engine/EngineHarness.js";
3
3
  import { GameAssetType } from "../../src/engine/asset/GameAssetType.js";
4
4
  import { TextureAssetLoader } from "../../src/engine/asset/loaders/texture/TextureAssetLoader.js";
5
5
  import Vector3 from "../../src/core/geom/Vector3.js";
6
- import EntityBuilder from "../../src/engine/ecs/EntityBuilder.js";
6
+ import Entity from "../../src/engine/ecs/Entity.js";
7
7
  import Terrain from "../../src/engine/ecs/terrain/ecs/Terrain.js";
8
8
  import { ImageRGBADataLoader } from "../../src/engine/asset/loaders/image/ImageRGBADataLoader.js";
9
9
  import TerrainSystem from "../../src/engine/ecs/terrain/ecs/TerrainSystem.js";
@@ -15,9 +15,9 @@ import { TerrainLayer } from "../../src/engine/ecs/terrain/ecs/layers/TerrainLay
15
15
  import Mesh from "../../src/engine/graphics/ecs/mesh/Mesh.js";
16
16
  import { Transform } from "../../src/engine/ecs/transform/Transform.js";
17
17
  import { MeshSystem } from "../../src/engine/graphics/ecs/mesh/MeshSystem.js";
18
- import { downloadAsFile } from "../../src/core/binary/ByteArrayTools.js";
19
18
  import { url_to_data_url } from "../../src/core/binary/url_to_data_url.js";
20
19
  import ButtonView from "../../src/view/elements/button/ButtonView.js";
20
+ import {downloadAsFile} from "../../src/core/binary/downloadAsFile.js";
21
21
 
22
22
  const HEIGHT_RANGE = 64;
23
23
 
@@ -136,7 +136,7 @@ async function main(engine) {
136
136
  water.shoreDepthTransition.set(0.1, 0.3);
137
137
  water.scattering.set(3);
138
138
 
139
- new EntityBuilder()
139
+ new Entity()
140
140
  .add(terrain)
141
141
  // .add(water)
142
142
  .build(ecd);
@@ -250,7 +250,7 @@ async function load_gltf(path, engine, transform) {
250
250
 
251
251
  const ecd = em.dataset;
252
252
 
253
- new EntityBuilder()
253
+ new Entity()
254
254
  .add(Mesh.fromJSON({
255
255
  url: path
256
256
  }))
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Turns an array of numbers into the string given by the concatenation of the
3
+ * characters to which the numbers correspond.
4
+ * @param {!Uint8Array|!Array<number>} bytes Array of numbers representing
5
+ * characters.
6
+ * @return {string} Stringification of the array.
7
+ */
8
+ export function byteArrayToString(bytes) {
9
+ const numBytes = bytes.length;
10
+
11
+ const CHUNK_SIZE = 8192;
12
+
13
+ // Special-case the simple case for speed's sake.
14
+ if (numBytes <= CHUNK_SIZE) {
15
+ return String.fromCharCode.apply(null, bytes);
16
+ }
17
+
18
+ // The remaining logic splits conversion by chunks since
19
+ // Function#apply() has a maximum parameter count.
20
+ // See discussion: http://goo.gl/LrWmZ9
21
+
22
+ let str = '';
23
+ for (let i = 0; i < numBytes; i += CHUNK_SIZE) {
24
+ const chunk = Array.prototype.slice.call(bytes, i, i + CHUNK_SIZE);
25
+ str += String.fromCharCode.apply(null, chunk);
26
+ }
27
+ return str;
28
+ }
@@ -0,0 +1,28 @@
1
+ import {downloadUrlAsFile} from "./downloadUrlAsFile.js";
2
+
3
+ export function downloadAsFile(data, filename, type = 'text/json') {
4
+
5
+ let blobContent;
6
+
7
+ if (data instanceof ArrayBuffer || data instanceof Uint8Array) {
8
+ //raw binary data
9
+ blobContent = [data];
10
+ } else if (data instanceof Array) {
11
+ //already an array
12
+ blobContent = data;
13
+ } else if (data instanceof Blob) {
14
+ //already a blob
15
+ blobContent = [data];
16
+ } else if (typeof data === "string") {
17
+ blobContent = [data];
18
+ } else {
19
+ blobContent = [data]
20
+ }
21
+
22
+ const blob = new Blob(blobContent, {type});
23
+ if (window.navigator.msSaveOrOpenBlob) {
24
+ window.navigator.msSaveBlob(blob, filename);
25
+ } else {
26
+ downloadUrlAsFile(window.URL.createObjectURL(blob), filename);
27
+ }
28
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ *
3
+ * @param {string} url
4
+ * @param {string} filename
5
+ */
6
+ export function downloadUrlAsFile(url, filename) {
7
+ const elem = window.document.createElement('a');
8
+ elem.href = url;
9
+ elem.download = filename;
10
+ document.body.appendChild(elem);
11
+ elem.click();
12
+ document.body.removeChild(elem);
13
+ }
14
+
@@ -0,0 +1,27 @@
1
+ import {stringifyStream} from "../json/JsonUtils.js";
2
+
3
+ /**
4
+ *
5
+ * @param {Object} json
6
+ * @returns {number[]}
7
+ */
8
+ function jsonToStringToByteArray(json) {
9
+ const output = [];
10
+ let p = 0;
11
+
12
+ function addToOutput(str) {
13
+ for (let i = 0; i < str.length; i++) {
14
+ let c = str.charCodeAt(i);
15
+ while (c > 0xff) {
16
+ output[p++] = c & 0xff;
17
+ c >>= 8;
18
+ }
19
+ output[p++] = c;
20
+ }
21
+ }
22
+
23
+ stringifyStream(json, addToOutput);
24
+ return output;
25
+ }
26
+
27
+ export {jsonToStringToByteArray};
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Turns a string into an array of bytes; a "byte" being a JS number in the
3
+ * range 0-255.
4
+ * @param {string} str String value to arrify.
5
+ * @return {Uint8Array} Array of numbers corresponding to the
6
+ * UCS character codes of each character in str.
7
+ */
8
+ export function stringToByteArray(str) {
9
+ const length = str.length;
10
+
11
+ const output = [];
12
+ let p = 0;
13
+
14
+ for (let i = 0; i < length; i++) {
15
+ let c = str.charCodeAt(i);
16
+ while (c > 0xff) {
17
+ output[p++] = c & 0xff;
18
+ c >>= 8;
19
+ }
20
+ output[p++] = c;
21
+ }
22
+
23
+ return new Uint8Array(output);
24
+ }
@@ -1,5 +1,4 @@
1
1
  import { BinaryBuffer } from "../binary/BinaryBuffer.js";
2
- import { byteArrayToString, jsonToStringToByteArray } from "../binary/ByteArrayTools.js";
3
2
  import { BinaryNode } from "./BinaryNode.js";
4
3
  import { isLeaf, LeafNode } from "./LeafNode.js";
5
4
  import { validateNode, validateTree } from "./NodeValidator.js";
@@ -7,6 +6,8 @@ import { deserializeBinaryNode } from "./serialization/deserializeBinaryNode.js"
7
6
  import { deserializeBinaryNodeFromBinaryBuffer } from "./serialization/deserializeBinaryNodeFromBinaryBuffer.js";
8
7
  import { serializeBinaryNode } from "./serialization/serializeBinaryNode.js";
9
8
  import { serializeBinaryNodeToBinaryBuffer } from "./serialization/serializeBinaryNodeToBinaryBuffer.js";
9
+ import {byteArrayToString} from "../binary/byteArrayToString.js";
10
+ import {jsonToStringToByteArray} from "../binary/jsonToStringToByteArray.js";
10
11
 
11
12
  /**
12
13
  *
@@ -5,7 +5,7 @@ import { array_copy } from "../../../collection/array/array_copy.js";
5
5
  import { NULL_NODE } from "../ExplicitBinaryBoundingVolumeHierarchy.js";
6
6
  import { aabb3_array_intersects_frustum_degree } from "../../../geom/3d/aabb/aabb3_array_intersects_frustum_degree.js";
7
7
  import { bvh_collect_user_data } from "./bvh_collect_user_data.js";
8
- import { v3_distance_above_plane } from "../../../geom/v3_distance_above_plane.js";
8
+ import { v3_distance_above_plane } from "../../../geom/vec3/v3_distance_above_plane.js";
9
9
  import { SCRATCH_UINT32_TRAVERSAL_STACK } from "../../../collection/SCRATCH_UINT32_TRAVERSAL_STACK.js";
10
10
 
11
11
  const stack = SCRATCH_UINT32_TRAVERSAL_STACK;
@@ -3,7 +3,7 @@ import { read_frustum_planes_to_array } from "../../geom/3d/frustum/read_frustum
3
3
  import {
4
4
  aabb3_detailed_volume_intersection_callback_based
5
5
  } from "./aabb3_detailed_volume_intersection_callback_based.js";
6
- import { v3_distance_above_plane } from "../../geom/v3_distance_above_plane.js";
6
+ import { v3_distance_above_plane } from "../../geom/vec3/v3_distance_above_plane.js";
7
7
 
8
8
  export class ThreeClippingPlaneComputingBVHVisitor extends BVHVisitor {
9
9
  constructor() {