@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.
- package/editor/Editor.js +4 -4
- package/editor/ecs/component/editors/ColorEditor.js +1 -1
- package/editor/ecs/component/editors/ImagePathEditor.js +2 -2
- package/editor/ecs/component/editors/{LargeStrongEditor.js → LargeStringEditor.js} +1 -1
- package/editor/process/symbolic/buildThreeJSHelperEntity.js +3 -3
- package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +3 -3
- package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +3 -3
- package/editor/tools/GridPaintTool.js +3 -3
- package/editor/tools/TopDownCameraControlTool.js +1 -1
- package/editor/tools/TransformTool.js +1 -1
- package/editor/tools/engine/Tool.js +9 -23
- package/editor/tools/engine/ToolEngine.js +5 -7
- package/editor/tools/paint/TerrainHeightPaintTool.js +2 -2
- package/editor/tools/paint/TerrainPaintTool.js +2 -2
- package/editor/tools/paint/TerrainTexturePaintTool.js +2 -2
- package/editor/tools/v2/prototypeTransformControls.js +3 -3
- package/editor/view/ecs/ComponentControlView.js +2 -1
- package/package.json +1 -1
- package/samples/generation/main.js +2 -2
- package/samples/terrain/from_image.js +2 -2
- package/samples/terrain/from_image_2.js +4 -4
- package/src/core/binary/byteArrayToString.js +28 -0
- package/src/core/binary/downloadAsFile.js +28 -0
- package/src/core/binary/downloadUrlAsFile.js +14 -0
- package/src/core/binary/jsonToStringToByteArray.js +27 -0
- package/src/core/binary/stringToByteArray.js +24 -0
- package/src/core/bvh2/BinaryNode.spec.js +2 -1
- package/src/core/bvh2/bvh3/query/compute_tight_near_far_clipping_planes.js +1 -1
- package/src/core/bvh2/traversal/ThreeClippingPlaneComputingBVHVisitor.js +1 -1
- package/src/core/bvh2/traversal/__process_point_if_within_planes.js +1 -1
- package/src/core/cache/LoadingCache.js +3 -2
- package/src/core/collection/array/arraySetSortingDiff.spec.js +12 -12
- package/src/core/collection/array/weightedRandomFromArray.js +2 -2
- package/src/core/color/Color.js +6 -6
- package/src/core/color/Color.spec.js +27 -1
- package/src/core/color/YCbCr/YCbCr.spec.js +16 -0
- package/src/core/color/{YCbCr_to_rgb_uint24.js → YCbCr/YCbCr_to_rgb_uint24.js} +6 -6
- package/src/core/color/YCbCr/rgb_to_YCbCr_uint24.js +16 -0
- package/src/core/color/{hex2rgb.js → hex/hex2rgb.js} +1 -1
- package/src/core/color/{rgb2hex.js → hex/rgb2hex.js} +1 -1
- package/src/core/color/{hsv2rgb.js → hsv/hsv2rgb.js} +3 -3
- package/src/core/color/hsv/rgb2hsv.js +49 -0
- package/src/core/color/{kelvin_to_rgb.js → kelvin/kelvin_to_rgb.js} +1 -1
- package/src/core/color/{kelvin_to_rgb.spec.js → kelvin/kelvin_to_rgb.spec.js} +2 -2
- package/src/core/color/{prototype_kelvin_to_rgb.js → kelvin/prototype_kelvin_to_rgb.js} +5 -5
- package/src/core/color/{rgb_to_kelvin.spec.js → kelvin/rgb_to_kelvin.spec.js} +1 -1
- package/src/core/color/{parseColor.js → parse_color.js} +5 -5
- package/src/core/color/parse_color.spec.js +18 -0
- package/src/core/color/rgb2uint24.js +3 -3
- package/src/core/color/sRGB/sRGB.spec.js +16 -0
- package/src/core/color/xyz/XYZ.spec.js +16 -0
- package/src/core/color/xyz/rgb_to_xyz.js +15 -0
- package/src/core/color/xyz/xyz_to_rgb.js +14 -0
- package/src/core/events/signal/Signal.js +5 -0
- package/src/core/events/signal/{signalAggregateByTimeWindow.js → signal_aggregate_by_time_window.js} +1 -1
- package/src/core/events/signal/{SignalUtils.js → signal_filter.js} +1 -2
- package/src/core/fsm/simple/SimpleStateMachine.spec.js +34 -2
- package/src/core/geom/2d/spline_bezier2_2d.js +26 -0
- package/src/core/geom/2d/spline_bezier2_2d.spec.js +16 -0
- package/src/core/geom/3d/SurfacePoint3.js +1 -1
- package/src/core/geom/3d/aabb/aabb3_compute_plane_side.js +1 -1
- package/src/core/geom/3d/aabb/aabb3_detailed_volume_intersection.js +1 -1
- package/src/core/geom/3d/aabb/aabb3_transformed_compute_plane_side.js +1 -1
- package/src/core/geom/3d/compute_circle_bounding_box.js +1 -1
- package/src/core/geom/3d/cone/computeConeBoundingBox.js +1 -1
- package/src/core/geom/3d/frustum/frustum3_computeNearestPointToPoint.js +1 -1
- package/src/core/geom/3d/line/line3_computeSegmentPointDistance_sqr.js +1 -1
- package/src/core/geom/3d/line/line3_compute_nearest_point_to_point.js +1 -1
- package/src/core/geom/3d/matrix/m4_multiply.js +2 -2
- package/src/core/geom/3d/matrix/m4_multiply.spec.js +11 -0
- package/src/core/geom/3d/matrix/m4_multiply_alphatensor.spec.js +11 -0
- package/src/core/geom/3d/morton/split_by_2.js +1 -1
- package/src/core/geom/3d/normal/hemioct/unit_hemioct.spec.js +1 -1
- package/src/core/geom/3d/normal/spherical/sphere_map_transform.js +1 -1
- package/src/core/geom/3d/plane/is_point_within_planes.js +1 -1
- package/src/core/geom/3d/plane/lerp_planes_to_array.js +1 -1
- package/src/core/geom/3d/plane/plane3_compute_convex_3_plane_intersection.js +1 -1
- package/src/core/geom/3d/plane/plane3_compute_line_segment_intersection.js +1 -1
- package/src/core/geom/3d/plane/plane3_compute_ray_intersection.js +1 -1
- package/src/core/geom/3d/plane/plane3_lerp.js +2 -2
- package/src/core/geom/3d/plane/plane3_projectPoint.js +1 -1
- package/src/core/geom/3d/plane/plane3_slerp.js +3 -3
- package/src/core/geom/3d/ray/ray_computeNearestPointToPoint.js +1 -1
- package/src/core/geom/3d/ray/ray_distance_to_point.js +1 -1
- package/src/core/geom/3d/shape/UnionShape3D.js +3 -3
- package/src/core/geom/3d/shape/UnitCubeShape3D.js +1 -1
- package/src/core/geom/3d/shape/UnitSphereShape3D.js +1 -1
- package/src/core/geom/3d/shape/util/shape_to_visual_entity.js +10 -10
- package/src/core/geom/3d/sphere/sphere_intersects_ray.js +1 -1
- package/src/core/geom/3d/tetrahedra/TetrahedralMesh.js +6 -0
- package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.js +1 -1
- package/src/core/geom/3d/tetrahedra/compute_bounding_simplex_3d.spec.js +1 -1
- package/src/core/geom/3d/tetrahedra/compute_circumsphere.js +1 -1
- package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.js +1 -0
- package/src/core/geom/3d/tetrahedra/delaunay/compute_delaunay_tetrahedral_mesh.spec.js +10 -2
- package/src/core/geom/3d/tetrahedra/prototypeTetrahedraBuilder.js +2 -2
- package/src/core/geom/3d/topology/bounds/computeTriangleClusterNormalBoundingCone.js +1 -1
- package/src/core/geom/3d/topology/samples/sampleFloodFill.js +4 -4
- package/src/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +1 -1
- package/src/core/geom/3d/topology/simplify/quadratic/Quadratic3.js +1 -1
- package/src/core/geom/3d/topology/simplify/tm_edge_collapse_is_degenerate_flip.js +2 -2
- package/src/core/geom/3d/topology/struct/TopoVertex.js +1 -1
- package/src/core/geom/3d/topology/util/compute_face_connection_weight.js +2 -2
- package/src/core/geom/3d/triangle/computeTrianglePlaneSide.js +1 -1
- package/src/core/geom/3d/triangle/computeTriangleRayIntersection.js +1 -1
- package/src/core/geom/3d/triangle/computeTriangleRayIntersectionBarycentricEdge.js +1 -1
- package/src/core/geom/3d/v3_compute_triangle_normal.js +1 -1
- package/src/core/geom/Quaternion.js +1 -1
- package/src/core/geom/Vector3.js +7 -7
- package/src/core/geom/Vector3.spec.js +68 -1
- package/src/core/geom/mat2/m2_add.js +17 -0
- package/src/core/geom/mat2/m2_determinant.js +8 -0
- package/src/core/geom/mat2/m2_multiply.js +17 -0
- package/src/core/geom/mat2/m2_multiply_scalar.js +18 -0
- package/src/core/geom/mat2/m2_multiply_transposed.js +18 -0
- package/src/core/geom/mat2/m2_sub_transposed.js +17 -0
- package/src/{view → core/geom/mat3}/m3_cm_compose_transform.js +0 -29
- package/src/core/geom/mat3/m3_cm_extract_rotation.js +8 -0
- package/src/core/geom/mat3/m3_cm_from_translation.js +19 -0
- package/src/{view/multiplyMatrices3.js → core/geom/mat3/m3_multiply.js} +2 -2
- package/src/{view → core/geom/mat3}/m3_rm_compose_transform.js +0 -9
- package/src/core/geom/mat3/m3_rm_extract_scale.js +7 -0
- package/src/core/geom/{3d/vector/allocate_v3.js → vec3/v3_allocate.js} +1 -1
- package/src/core/geom/{v3_angle_between.js → vec3/v3_angle_between.js} +1 -1
- package/src/core/geom/vec3/v3_dot_array_array.js +20 -0
- package/src/core/geom/{v3_lerp.js → vec3/v3_lerp.js} +1 -1
- package/src/core/graph/SquareMatrix.js +26 -3
- package/src/core/graph/SquareMatrix.spec.js +52 -2
- package/src/core/math/clamp01.js +1 -0
- package/src/core/math/fract.js +3 -1
- package/src/core/math/inverseLerp.js +7 -5
- package/src/core/math/lerp.js +5 -5
- package/src/core/math/physics/spring/computeHookeForce.js +9 -0
- package/src/core/math/remap.js +19 -0
- package/src/core/math/remap.spec.js +15 -0
- package/src/core/math/smoothStep.spec.js +16 -0
- package/src/core/math/spline/spline_bezier2.js +13 -0
- package/src/core/math/spline/spline_bezier2.spec.js +13 -0
- package/src/core/model/object/compareValues.js +2 -2
- package/src/core/model/object/read_property.js +10 -2
- package/src/core/model/object/write_property.js +3 -23
- package/src/core/model/object/write_property.spec.js +26 -0
- package/src/core/primitives/numbers/number_pretty_print.spec.js +19 -0
- package/src/core/process/action/AsynchronousDelayAction.js +2 -2
- package/src/core/process/executor/profile/ConcurrentExecutorProfiler.js +1 -1
- package/src/engine/EngineHarness.js +7 -7
- package/src/engine/EntityCreator.js +5 -5
- package/src/engine/__module.js +1 -1
- package/src/engine/achievements/AchievementManager.js +2 -2
- package/src/engine/animation/AnimationUtils.js +4 -4
- package/src/engine/animation/behavior/animateProperty.js +2 -2
- package/src/engine/animation/curve/draw/build_plot_entity_from_array.js +3 -3
- package/src/engine/animation/playAnimationTrack.js +3 -3
- package/src/engine/animation/playTrackRealTime.js +3 -3
- package/src/engine/animation/removeEntityWithMeshParticlesEffect.js +2 -2
- package/src/engine/control/ControlContext.js +7 -7
- package/src/engine/ecs/{EntityBuilder.d.ts → Entity.d.ts} +5 -5
- package/src/engine/ecs/{EntityBuilder.js → Entity.js} +29 -29
- package/src/engine/ecs/{EntityBuilder.spec.js → Entity.spec.js} +17 -17
- package/src/engine/ecs/EntityBlueprint.d.ts +2 -2
- package/src/engine/ecs/EntityBlueprint.js +3 -3
- package/src/engine/ecs/EntityBlueprint.spec.js +2 -2
- package/src/engine/ecs/{EntityBuilderFlags.js → EntityFlags.js} +1 -1
- package/src/engine/ecs/EntityObserver.spec.js +8 -8
- package/src/engine/ecs/dynamic_actions/DynamicActorSystem.js +5 -5
- package/src/engine/ecs/foliage/ecs/InstancedMeshUtils.js +3 -3
- package/src/engine/ecs/gui/menu/radial/RadialContextMenu.d.ts +2 -2
- package/src/engine/ecs/gui/menu/radial/RadialContextMenu.js +5 -5
- package/src/engine/ecs/ik/OneBoneSurfaceAlignmentSolver.js +2 -2
- package/src/engine/ecs/ik/TwoBoneInverseKinematicsSolver.js +2 -2
- package/src/engine/ecs/parent/EntityNode.d.ts +3 -3
- package/src/engine/ecs/parent/EntityNode.js +5 -5
- package/src/engine/ecs/parent/testHuDPerf.js +2 -2
- package/src/engine/ecs/speaker/VoiceSystem.js +5 -5
- package/src/engine/ecs/systems/SteeringSystem.js +1 -1
- package/src/engine/ecs/terrain/ecs/splat/SplatMapOptimizerDebugger.js +1 -1
- package/src/engine/ecs/tooltip/testTooltipComponentSystem.js +3 -3
- package/src/engine/graphics/camera/makeOrbitalCameraController.js +3 -3
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +3 -3
- package/src/engine/graphics/debug/createDebugLabel.js +3 -3
- package/src/engine/graphics/ecs/camera/Camera.js +1 -1
- package/src/engine/graphics/ecs/camera/CameraClippingPlaneComputer.js +1 -1
- package/src/engine/graphics/ecs/camera/filter/setup_filtered_camera_controller.js +3 -3
- package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +3 -11
- package/src/engine/graphics/ecs/decal/v2/prototypeDecalEditor.js +3 -3
- package/src/engine/graphics/ecs/decal/v2/prototypeDecalSystem.js +14 -14
- package/src/engine/graphics/ecs/highlight/Highlight.js +20 -102
- package/src/engine/graphics/ecs/mesh/Mesh.js +12 -18
- package/src/engine/graphics/ecs/mesh/MeshSystem.js +41 -26
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +1 -1
- package/src/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +3 -3
- package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +5 -5
- package/src/engine/graphics/ecs/mesh-v2/sample/prototype_sg_raycast.js +6 -6
- package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +3 -3
- package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +3 -3
- package/src/engine/graphics/ecs/path/tube/build/TubePathBuilder.js +4 -4
- package/src/engine/graphics/ecs/path/tube/build/makeTubeGeometry.js +1 -1
- package/src/engine/graphics/ecs/path/tube/build/make_cap.js +3 -3
- package/src/engine/graphics/ecs/path/tube/build/make_ring_vertices.js +1 -1
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +3 -3
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +2 -2
- package/src/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +2 -2
- package/src/engine/graphics/geometry/MikkT/InitTriInfo.js +5 -6
- package/src/engine/graphics/geometry/MikkT/MikkTSpace.js +3 -3
- package/src/engine/graphics/geometry/MikkT/NormalizeSafe.js +1 -2
- package/src/engine/graphics/geometry/MikkT/STSpace.js +3 -3
- package/src/engine/graphics/geometry/MikkT/v3_scale_dot_sub_normalize.js +2 -2
- package/src/engine/graphics/geometry/bvh/buffered/BVHGeometryRaycaster.js +1 -1
- package/src/engine/graphics/geometry/clipping/ClippedGeometry.js +1 -1
- package/src/engine/graphics/geometry/optimization/merge/prototypeGeometryMerge.js +4 -4
- package/src/engine/graphics/impostors/octahedral/prototypeBaker.js +7 -7
- package/src/engine/graphics/particles/node-based/editor/ParticleSpecificationEditorView.js +1 -1
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleEmitter.js +102 -95
- package/src/engine/graphics/particles/particular/engine/emitter/ParticleLayer.spec.js +25 -0
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.js +0 -35
- package/src/engine/graphics/particles/particular/engine/emitter/ParticlePool.spec.js +39 -2
- package/src/engine/graphics/particles/particular/engine/renderers/billboard/prototypeBillboardRenderer.js +2 -2
- package/src/engine/graphics/particles/particular/engine/shader/ShaderManager.js +22 -6
- package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.d.ts +2 -2
- package/src/engine/graphics/particles/particular/engine/utils/volume/ParticleVolume.js +3 -3
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +10 -10
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +2 -2
- package/src/engine/graphics/render/buffer/simple-fx/taa/prototypeTAA.js +2 -2
- package/src/engine/graphics/render/forward_plus/LightManager.js +1 -1
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +13 -13
- package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +3 -3
- package/src/engine/graphics/render/forward_plus/query/detailed_sphere_frustum_intersection_test.js +1 -1
- package/src/engine/graphics/render/layers/RenderLayerUtils.js +1 -1
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +8 -7
- package/src/engine/graphics/sh3/LightProbeVolume.js +3 -3
- package/src/engine/graphics/sh3/path_tracer/PathTracer.js +2 -2
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +2 -2
- package/src/engine/graphics/sh3/path_tracer/random_in_hemisphere.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/ray_hit_apply_transform.js +1 -1
- package/src/engine/graphics/sh3/path_tracer/ray_reflect.js +1 -1
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +3 -3
- package/src/engine/graphics/sh3/sky/hosek/data.js +3744 -0
- package/src/engine/graphics/sh3/sky/hosek/sky_hosek_compute_irradiance_by_direction.js +10 -3786
- package/src/engine/graphics/sh3/visualise_probe.js +3 -3
- package/src/engine/graphics/shadows/testShadowMapRendering.js +3 -3
- package/src/engine/graphics/texture/atlas/AbstractTextureAtlas.js +1 -1
- package/src/engine/graphics/texture/atlas/AtlasPatch.js +0 -1
- package/src/engine/graphics/texture/atlas/AtlasPatchFlag.js +8 -1
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.js +25 -0
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.spec.js +54 -0
- package/src/engine/graphics/texture/atlas/ManagedTextureAtlas.js +101 -160
- package/src/engine/graphics/texture/atlas/TextureAtlas.js +18 -1
- package/src/engine/graphics/texture/sampler/downloadSamplerAsPNG.js +1 -1
- package/src/engine/graphics/texture/sampler/sampler2d_ensure_uint8_RGBA.js +22 -0
- package/src/engine/graphics/texture/sprite/prototypeSpriteCutoutGeometry.js +2 -2
- package/src/engine/graphics/util/projectSphere.js +1 -1
- package/src/engine/input/ecs/controllers/KeyboardCameraController.js +2 -2
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +2 -2
- package/src/engine/intelligence/behavior/composite/ParallelBehavior.spec.js +13 -12
- package/src/engine/navigation/ecs/components/Path.js +1 -1
- package/src/engine/physics/fluid/prototype.js +3 -3
- package/src/engine/physics/mls-mpm/MLS_MPM.js +11 -106
- package/src/engine/reference/v2/Reference.js +6 -2
- package/src/engine/save/storage/JsonStringCodec.js +1 -1
- package/src/engine/save/storage/LocalStorage.js +2 -1
- package/src/engine/sound/ecs/emitter/SoundEmitter.js +7 -7
- package/src/engine/sound/ecs/emitter/SoundTrack.js +6 -6
- package/src/engine/ui/GUIEngine.js +4 -4
- package/src/engine/ui/notification/NotificationManager.js +3 -3
- package/src/generation/filtering/numeric/complex/CellFilterAngleToNormal.js +1 -1
- package/src/generation/grid/generation/road/GridTaskGenerateRoads.js +2 -4
- package/src/generation/markers/debug/visualizeMarkers.js +2 -2
- package/src/generation/markers/prototypeGridCellActionPlaceMarker.js +2 -2
- package/src/generation/placement/action/random/weighted/CellActionSelectWeightedRandom.js +2 -2
- package/src/generation/theme/ThemeEngine.js +2 -2
- package/src/generation/theme/ThemeEngine.spec.js +7 -0
- package/src/view/View.js +21 -13
- package/src/view/elements/ColorPickerView.js +2 -2
- package/src/view/minimap/gl/MarkerGL.js +20 -18
- package/src/view/minimap/gl/MinimapMarkersGL.js +2 -1
- package/editor/tools/FoliagePaintTool.js +0 -168
- package/editor/tools/engine/ToolStateMachine.js +0 -53
- package/src/core/NumberFormat.js +0 -4
- package/src/core/binary/ByteArrayTools.js +0 -137
- package/src/core/binary/NaiveBitSet.js +0 -69
- package/src/core/binary/objects/StandardTypeBuilder.js +0 -126
- package/src/core/binary/serde/JsonSerializer.js +0 -113
- package/src/core/color/rgb2hsv.js +0 -47
- package/src/core/color/rgb_to_YCbCr_uint24.js +0 -16
- package/src/core/fsm/StateMachine.js +0 -440
- package/src/core/fsm/Transition.js +0 -65
- package/src/core/geom/Bezier.js +0 -24
- package/src/core/geom/Bezier.spec.js +0 -16
- package/src/core/math/spline/quadraticCurve.js +0 -11
- package/src/core/math/spline/quadraticCurve.spec.js +0 -13
- package/src/core/primitives/numbers/compareNumbers.js +0 -9
- package/src/engine/graphics/ecs/decal/Decal.js +0 -10
- package/src/engine/graphics/ecs/decal/DecalSystem.js +0 -99
- package/src/engine/graphics/ecs/decal/threejs/DecalGeometry.js +0 -298
- package/src/engine/graphics/ecs/trail/Trail.js +0 -83
- package/src/engine/graphics/ecs/trail/TrailMaterial.js +0 -67
- package/src/engine/graphics/ecs/trail/TrailMaterial2.js +0 -73
- package/src/engine/graphics/ecs/trail/TrailSystem.js +0 -162
- package/src/engine/graphics/ecs/water2/NodeWaterShader1.js +0 -213
- package/src/engine/graphics/ecs/water2/shader/JBWaterShader.js +0 -315
- package/src/engine/graphics/geometry/MikkT/Length.js +0 -10
- package/src/engine/graphics/texture/ImageLoader.js +0 -33
- package/src/engine/graphics/three/DDSLoader.js +0 -286
- package/src/engine/graphics/three/Water2.js +0 -343
- package/src/engine/physics/spring/computeHookeForce.js +0 -9
- package/src/engine/reference/v1/ReferenceManager.js +0 -124
- /package/src/core/color/{hex2rgb.spec.js → hex/hex2rgb.spec.js} +0 -0
- /package/src/core/color/{rgb2hex.spec.js → hex/rgb2hex.spec.js} +0 -0
- /package/src/core/color/{hsv2rgb.spec.js → hsv/hsv2rgb.spec.js} +0 -0
- /package/src/core/color/{rgb_to_kelvin.js → kelvin/rgb_to_kelvin.js} +0 -0
- /package/src/core/color/{linear_to_sRGB.js → sRGB/linear_to_sRGB.js} +0 -0
- /package/src/core/color/{sRGB_to_linear.js → sRGB/sRGB_to_linear.js} +0 -0
- /package/src/core/geom/{m3_determinant.js → mat3/m3_determinant.js} +0 -0
- /package/src/core/geom/{v3_distance.js → vec3/v3_distance.js} +0 -0
- /package/src/core/geom/{v3_distance_above_plane.js → vec3/v3_distance_above_plane.js} +0 -0
- /package/src/core/geom/{v3_distance_above_plane.spec.js → vec3/v3_distance_above_plane.spec.js} +0 -0
- /package/src/core/geom/{v3_distance_sqr.d.ts → vec3/v3_distance_sqr.d.ts} +0 -0
- /package/src/core/geom/{v3_distance_sqr.js → vec3/v3_distance_sqr.js} +0 -0
- /package/src/core/geom/{v3_dot.js → vec3/v3_dot.js} +0 -0
- /package/src/core/geom/{v3_length.js → vec3/v3_length.js} +0 -0
- /package/src/core/geom/{v3_length_sqr.js → vec3/v3_length_sqr.js} +0 -0
- /package/src/core/geom/{v3_slerp.js → vec3/v3_slerp.js} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { string_capitalize } from "../../primitives/strings/string_capitalize.js";
|
|
2
|
+
import { read_property } from "./read_property.js";
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* @template T
|
|
@@ -9,32 +10,11 @@ import { string_capitalize } from "../../primitives/strings/string_capitalize.js
|
|
|
9
10
|
* @param {T} value
|
|
10
11
|
*/
|
|
11
12
|
export function write_property(root, parts, part_offset, part_count, value) {
|
|
12
|
-
let thing = root;
|
|
13
13
|
|
|
14
14
|
const last_index = part_offset + part_count - 1;
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const part = parts[i + part_offset];
|
|
19
|
-
|
|
20
|
-
const thing_part = thing[part];
|
|
21
|
-
|
|
22
|
-
if (typeof thing_part !== 'undefined') {
|
|
23
|
-
thing = thing_part;
|
|
24
|
-
} else {
|
|
25
|
-
|
|
26
|
-
const getter_name = `get${string_capitalize(part)}`;
|
|
27
|
-
const getter = thing[getter_name];
|
|
28
|
-
|
|
29
|
-
if (typeof getter === "function") {
|
|
30
|
-
// resolve via getter
|
|
31
|
-
thing = getter.call(thing);
|
|
32
|
-
} else {
|
|
33
|
-
// no getter
|
|
34
|
-
throw new Error(`No no property or getter found for '${part}' on [${i}]'${parts.slice(part_offset, part_offset + part_count).join('/')}'`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
16
|
+
// resolve parent of the property
|
|
17
|
+
const thing = read_property(root, parts, 0, last_index, true);
|
|
38
18
|
|
|
39
19
|
const last_part = parts[last_index];
|
|
40
20
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { write_property } from "./write_property.js";
|
|
2
|
+
|
|
3
|
+
test("write via setter method", () => {
|
|
4
|
+
|
|
5
|
+
let value = 1;
|
|
6
|
+
|
|
7
|
+
const thing = {
|
|
8
|
+
setValue(v) {
|
|
9
|
+
value = v
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
write_property(thing, ['value'], 0, 1, 31);
|
|
14
|
+
|
|
15
|
+
expect(value).toEqual(31);
|
|
16
|
+
});
|
|
17
|
+
test("write via property accessor", () => {
|
|
18
|
+
|
|
19
|
+
const thing = {
|
|
20
|
+
value: 1
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
write_property(thing, ['value'], 0, 1, 31);
|
|
24
|
+
|
|
25
|
+
expect(thing.value).toEqual(31);
|
|
26
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { number_pretty_print } from "./number_pretty_print.js";
|
|
2
|
+
|
|
3
|
+
test("sanity", () => {
|
|
4
|
+
|
|
5
|
+
const zero = number_pretty_print(0);
|
|
6
|
+
|
|
7
|
+
expect(typeof zero).toBe('string');
|
|
8
|
+
expect(zero.trim().length).toBeGreaterThan(0);
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
const fraction = number_pretty_print(-1.123456790);
|
|
12
|
+
|
|
13
|
+
expect(typeof fraction).toBe('string');
|
|
14
|
+
expect(fraction.trim().length).toBeGreaterThan(0);
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
// different strings for different inputs
|
|
18
|
+
expect(zero).not.toEqual(fraction);
|
|
19
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Entity from "../../../engine/ecs/Entity.js";
|
|
2
2
|
import { SequenceBehavior } from "../../../engine/intelligence/behavior/composite/SequenceBehavior.js";
|
|
3
3
|
import { BehaviorComponent } from "../../../engine/intelligence/behavior/ecs/BehaviorComponent.js";
|
|
4
4
|
import { DieBehavior } from "../../../engine/intelligence/behavior/ecs/DieBehavior.js";
|
|
@@ -23,7 +23,7 @@ export class AsynchronousDelayAction extends AsynchronousAction {
|
|
|
23
23
|
this.__ecd = ecd;
|
|
24
24
|
this.__time = time;
|
|
25
25
|
|
|
26
|
-
this.__entity = new
|
|
26
|
+
this.__entity = new Entity();
|
|
27
27
|
|
|
28
28
|
this.__entity.add(BehaviorComponent.fromOne(
|
|
29
29
|
SequenceBehavior.from([
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { downloadAsFile } from "../../../binary/ByteArrayTools.js";
|
|
2
1
|
import { Profile } from "./Profile.js";
|
|
3
2
|
import { TraceEvent } from "./TraceEvent.js";
|
|
3
|
+
import {downloadAsFile} from "../../../binary/downloadAsFile.js";
|
|
4
4
|
|
|
5
5
|
export class ConcurrentExecutorProfiler {
|
|
6
6
|
constructor() {
|
|
@@ -3,7 +3,7 @@ import { MouseEvents } from "./input/devices/events/MouseEvents.js";
|
|
|
3
3
|
import { Transform } from "./ecs/transform/Transform.js";
|
|
4
4
|
import TopDownCameraController from "./graphics/ecs/camera/topdown/TopDownCameraController.js";
|
|
5
5
|
import { Camera } from "./graphics/ecs/camera/Camera.js";
|
|
6
|
-
import
|
|
6
|
+
import Entity from "./ecs/Entity.js";
|
|
7
7
|
import { Light } from "./graphics/ecs/light/Light.js";
|
|
8
8
|
import Vector3 from "../core/geom/Vector3.js";
|
|
9
9
|
import Terrain from "./ecs/terrain/ecs/Terrain.js";
|
|
@@ -162,7 +162,7 @@ export class EngineHarness {
|
|
|
162
162
|
* @param {number} [distanceMin]
|
|
163
163
|
* @param {number} [distanceMax]
|
|
164
164
|
* @param {number} [fieldOfView] in degrees
|
|
165
|
-
* @returns {
|
|
165
|
+
* @returns {Entity}
|
|
166
166
|
*/
|
|
167
167
|
static buildCamera(
|
|
168
168
|
{
|
|
@@ -212,7 +212,7 @@ export class EngineHarness {
|
|
|
212
212
|
camera.clip_far = distanceMax;
|
|
213
213
|
camera.fov.set(fieldOfView);
|
|
214
214
|
|
|
215
|
-
const entityBuilder = new
|
|
215
|
+
const entityBuilder = new Entity();
|
|
216
216
|
|
|
217
217
|
entityBuilder
|
|
218
218
|
.add(transform)
|
|
@@ -349,7 +349,7 @@ export class EngineHarness {
|
|
|
349
349
|
-0.3334313787830773
|
|
350
350
|
);
|
|
351
351
|
|
|
352
|
-
new
|
|
352
|
+
new Entity()
|
|
353
353
|
.add(key)
|
|
354
354
|
.add(transform)
|
|
355
355
|
.add(Tag.fromJSON(["Light", "Key"]))
|
|
@@ -362,7 +362,7 @@ export class EngineHarness {
|
|
|
362
362
|
fill.intensity.set(0.1);
|
|
363
363
|
|
|
364
364
|
|
|
365
|
-
new
|
|
365
|
+
new Entity()
|
|
366
366
|
.add(fill)
|
|
367
367
|
.add(new Transform())
|
|
368
368
|
.add(Tag.fromJSON(["Light", "Ambient"]))
|
|
@@ -375,7 +375,7 @@ export class EngineHarness {
|
|
|
375
375
|
* @param {Engine} engine
|
|
376
376
|
* @param {number} [sensitivity]
|
|
377
377
|
* @param {EntityComponentDataset} [ecd]
|
|
378
|
-
* @returns {
|
|
378
|
+
* @returns {Entity}
|
|
379
379
|
*/
|
|
380
380
|
static async buildOrbitalCameraController({
|
|
381
381
|
cameraEntity,
|
|
@@ -469,7 +469,7 @@ export class EngineHarness {
|
|
|
469
469
|
terrain.build(engine.assetManager);
|
|
470
470
|
|
|
471
471
|
|
|
472
|
-
const eb = new
|
|
472
|
+
const eb = new Entity();
|
|
473
473
|
|
|
474
474
|
eb.add(new Transform())
|
|
475
475
|
eb.add(terrain);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { Transform } from './ecs/transform/Transform.js';
|
|
5
5
|
import { SoundEmitter } from './sound/ecs/emitter/SoundEmitter.js';
|
|
6
6
|
import Timer from './ecs/components/Timer.js';
|
|
7
|
-
import
|
|
7
|
+
import Entity from './ecs/Entity.js';
|
|
8
8
|
import Vector3 from "../core/geom/Vector3.js";
|
|
9
9
|
import { SoundEmitterChannels } from "./sound/ecs/emitter/SoundEmitterSystem.js";
|
|
10
10
|
import { BehaviorComponent } from "./intelligence/behavior/ecs/BehaviorComponent.js";
|
|
@@ -22,7 +22,7 @@ import { SerializationMetadata } from "./ecs/components/SerializationMetadata.js
|
|
|
22
22
|
* @param {boolean} [positioned]
|
|
23
23
|
* @param {String|SoundEmitterChannels} [channel]
|
|
24
24
|
* @param {number} [volume]
|
|
25
|
-
* @returns {
|
|
25
|
+
* @returns {Entity}
|
|
26
26
|
*/
|
|
27
27
|
function createSound(
|
|
28
28
|
{
|
|
@@ -37,7 +37,7 @@ function createSound(
|
|
|
37
37
|
}
|
|
38
38
|
) {
|
|
39
39
|
|
|
40
|
-
const builder = new
|
|
40
|
+
const builder = new Entity();
|
|
41
41
|
|
|
42
42
|
let trackJSON;
|
|
43
43
|
|
|
@@ -77,10 +77,10 @@ function createSound(
|
|
|
77
77
|
*
|
|
78
78
|
* @param timeout
|
|
79
79
|
* @param action
|
|
80
|
-
* @returns {
|
|
80
|
+
* @returns {Entity}
|
|
81
81
|
*/
|
|
82
82
|
export function createTimer({ timeout, action }) {
|
|
83
|
-
const builder = new
|
|
83
|
+
const builder = new Entity();
|
|
84
84
|
|
|
85
85
|
function suicide() {
|
|
86
86
|
builder.destroy();
|
package/src/engine/__module.js
CHANGED
|
@@ -14,6 +14,6 @@ export { EngineConfiguration } from "./EngineConfiguration.js";
|
|
|
14
14
|
export { Light } from "./graphics/ecs/light/Light.js";
|
|
15
15
|
export * from "./graphics/ecs/light/LightSystem.js";
|
|
16
16
|
export { ForwardPlusRenderingPlugin } from "./graphics/render/forward_plus/plugin/ForwardPlusRenderingPlugin.js";
|
|
17
|
-
export * from "./ecs/
|
|
17
|
+
export * from "./ecs/Entity.js";
|
|
18
18
|
|
|
19
19
|
export * from './intelligence/__module.js';
|
|
@@ -6,7 +6,7 @@ import ObservedBoolean from "../../core/model/ObservedBoolean.js";
|
|
|
6
6
|
import { AchievementNotificationView } from "../../view/game/achievements/AchievementNotificationView.js";
|
|
7
7
|
import ViewportPosition from "../ecs/gui/position/ViewportPosition.js";
|
|
8
8
|
import Vector2 from "../../core/geom/Vector2.js";
|
|
9
|
-
import
|
|
9
|
+
import Entity from "../ecs/Entity.js";
|
|
10
10
|
import GUIElement from "../ecs/gui/GUIElement.js";
|
|
11
11
|
import AnimationTrack from "../animation/keyed2/AnimationTrack.js";
|
|
12
12
|
import TransitionFunctions from "../animation/TransitionFunctions.js";
|
|
@@ -313,7 +313,7 @@ export class AchievementManager extends EnginePlugin {
|
|
|
313
313
|
aExit.addKey(1, [1, 0, 1]);
|
|
314
314
|
aExit.addTransition(0, SLOW_CUBIC);
|
|
315
315
|
|
|
316
|
-
const builder = new
|
|
316
|
+
const builder = new Entity();
|
|
317
317
|
|
|
318
318
|
const sequenceBehavior = SequenceBehavior.from([
|
|
319
319
|
new AnimationBehavior(new AnimationTrackPlayback(aEntry, (scale, alpha, v) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SerializationMetadata } from "../ecs/components/SerializationMetadata.js";
|
|
2
2
|
import Timer from "../ecs/components/Timer.js";
|
|
3
|
-
import
|
|
3
|
+
import Entity from "../ecs/Entity.js";
|
|
4
4
|
import { whenAllEntitiesDestroyed, whenEntityDestroyed } from "../ecs/EntityBuilderUtils.js";
|
|
5
5
|
import { Transform } from "../ecs/transform/Transform.js";
|
|
6
6
|
import { removeComponentsExcept } from "../ecs/util/removeComponentsExcept.js";
|
|
@@ -41,7 +41,7 @@ export function stopTrailAndNotifyOnceFinished(entity, ecd) {
|
|
|
41
41
|
|
|
42
42
|
trail.clearFlag(Trail2DFlags.Spawning);
|
|
43
43
|
|
|
44
|
-
new
|
|
44
|
+
new Entity()
|
|
45
45
|
.add(BehaviorComponent.fromOne(SequenceBehavior.from([
|
|
46
46
|
DelayBehavior.fromJSON({ value: trail.maxAge }),
|
|
47
47
|
new ActionBehavior(resolve)
|
|
@@ -85,7 +85,7 @@ export function stopEmitterAndNotifyOnceFinished(entity, ecd) {
|
|
|
85
85
|
//figure out how long the emitter should stay alive
|
|
86
86
|
const maxLife = emitter.computeMaxEmittingParticleLife();
|
|
87
87
|
|
|
88
|
-
const entityBuilder = new
|
|
88
|
+
const entityBuilder = new Entity();
|
|
89
89
|
//create a timer to remove emitter
|
|
90
90
|
const timer = new Timer();
|
|
91
91
|
timer.timeout = maxLife;
|
|
@@ -219,7 +219,7 @@ export function removeEntityWithEffect({ entity, ecd, emitter, soundEffect, time
|
|
|
219
219
|
const t = new Transform();
|
|
220
220
|
t.copy(transform);
|
|
221
221
|
|
|
222
|
-
const emitterBuilder = new
|
|
222
|
+
const emitterBuilder = new Entity();
|
|
223
223
|
emitterBuilder.add(t).add(emitter);
|
|
224
224
|
emitterBuilder.build(ecd);
|
|
225
225
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TransitionPropertyVectorXBehavior
|
|
3
3
|
} from "../../../../../model/game/story/behaviors/generic/TransitionPropertyVectorXBehavior.js";
|
|
4
|
-
import
|
|
4
|
+
import Entity from "../../ecs/Entity.js";
|
|
5
5
|
import { BehaviorComponent } from "../../intelligence/behavior/ecs/BehaviorComponent.js";
|
|
6
6
|
import { SequenceBehavior } from "../../intelligence/behavior/composite/SequenceBehavior.js";
|
|
7
7
|
import { DieBehavior } from "../../intelligence/behavior/ecs/DieBehavior.js";
|
|
@@ -23,7 +23,7 @@ export async function animateProperty(ecd, entity, component, property, target,
|
|
|
23
23
|
|
|
24
24
|
assert.ok(ecd.entityExists(entity), `entity ${entity} doesn't exist`);
|
|
25
25
|
|
|
26
|
-
const builder = new
|
|
26
|
+
const builder = new Entity()
|
|
27
27
|
.add(SerializationMetadata.Transient)
|
|
28
28
|
.add(BehaviorComponent.fromOne(SequenceBehavior.from([
|
|
29
29
|
TransitionPropertyVectorXBehavior.from({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CanvasView } from "../../../../view/elements/CanvasView.js";
|
|
2
2
|
import { plot_data } from "./plot_data.js";
|
|
3
3
|
import { draw_label } from "./draw_label.js";
|
|
4
|
-
import
|
|
4
|
+
import Entity from "../../../ecs/Entity.js";
|
|
5
5
|
import ViewportPosition from "../../../ecs/gui/position/ViewportPosition.js";
|
|
6
6
|
import GUIElement from "../../../ecs/gui/GUIElement.js";
|
|
7
7
|
import Vector2 from "../../../../core/geom/Vector2.js";
|
|
@@ -15,7 +15,7 @@ import Vector2 from "../../../../core/geom/Vector2.js";
|
|
|
15
15
|
* @param {number} [height]
|
|
16
16
|
* @param {Vector2} [margin]
|
|
17
17
|
* @param {string} [label]
|
|
18
|
-
* @return {
|
|
18
|
+
* @return {Entity}
|
|
19
19
|
*/
|
|
20
20
|
export function build_plot_entity_from_array({
|
|
21
21
|
data,
|
|
@@ -39,7 +39,7 @@ export function build_plot_entity_from_array({
|
|
|
39
39
|
draw_label(ctx, label, 0, 0)
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
return new
|
|
42
|
+
return new Entity()
|
|
43
43
|
.add(ViewportPosition.fromJSON({
|
|
44
44
|
offset: { x, y }
|
|
45
45
|
}))
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import Script from "../ecs/components/Script.js";
|
|
2
2
|
import { SerializationMetadata } from "../ecs/components/SerializationMetadata.js";
|
|
3
|
-
import
|
|
3
|
+
import Entity from "../ecs/Entity.js";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
7
7
|
* @param {AnimationTrackPlayback} track
|
|
8
8
|
* @param {EntityComponentDataset} ecd
|
|
9
|
-
* @returns {
|
|
9
|
+
* @returns {Entity}
|
|
10
10
|
*/
|
|
11
11
|
export function playAnimationTrack(track, ecd) {
|
|
12
12
|
const script = new Script();
|
|
@@ -15,7 +15,7 @@ export function playAnimationTrack(track, ecd) {
|
|
|
15
15
|
track.advance(timeDelta);
|
|
16
16
|
});
|
|
17
17
|
|
|
18
|
-
const entity = new
|
|
18
|
+
const entity = new Entity();
|
|
19
19
|
entity.add(script);
|
|
20
20
|
entity.add(SerializationMetadata.Transient);
|
|
21
21
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SerializationMetadata } from "../ecs/components/SerializationMetadata.js";
|
|
2
|
-
import
|
|
2
|
+
import Entity from "../ecs/Entity.js";
|
|
3
3
|
import { BehaviorComponent } from "../intelligence/behavior/ecs/BehaviorComponent.js";
|
|
4
4
|
import { ClockChannelType } from "../intelligence/behavior/ecs/ClockChannelType.js";
|
|
5
5
|
import { AnimationBehavior } from "./keyed2/behavior/AnimationBehavior.js";
|
|
@@ -9,11 +9,11 @@ import { AnimationBehavior } from "./keyed2/behavior/AnimationBehavior.js";
|
|
|
9
9
|
* @param {AnimationTrackPlayback} track
|
|
10
10
|
* @param {EntityComponentDataset} ecd
|
|
11
11
|
*
|
|
12
|
-
* @returns {
|
|
12
|
+
* @returns {Entity}
|
|
13
13
|
*/
|
|
14
14
|
export function playTrackRealTime(track, ecd) {
|
|
15
15
|
|
|
16
|
-
const entity = new
|
|
16
|
+
const entity = new Entity();
|
|
17
17
|
|
|
18
18
|
const behaviorComponent = BehaviorComponent.fromOne(new AnimationBehavior(track));
|
|
19
19
|
|
|
@@ -6,7 +6,7 @@ import { removeComponentsExcept } from "../ecs/util/removeComponentsExcept.js";
|
|
|
6
6
|
import { ParticleEmitter } from "../graphics/particles/particular/engine/emitter/ParticleEmitter.js";
|
|
7
7
|
import Trail2D from "../graphics/ecs/trail2d/Trail2D.js";
|
|
8
8
|
import { Transform } from "../ecs/transform/Transform.js";
|
|
9
|
-
import
|
|
9
|
+
import Entity from "../ecs/Entity.js";
|
|
10
10
|
import { stopEntityAndNotifyWhenStopped } from "./AnimatedActions.js";
|
|
11
11
|
|
|
12
12
|
const lib = {
|
|
@@ -184,7 +184,7 @@ export function removeEntityWithMeshParticlesEffect(
|
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
//create particle emitter
|
|
187
|
-
const effectBuilder = new
|
|
187
|
+
const effectBuilder = new Entity();
|
|
188
188
|
const effectEntity = effectBuilder
|
|
189
189
|
.add(emitter)
|
|
190
190
|
.add(originalTransform.clone())
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Entity from "../ecs/Entity.js";
|
|
2
2
|
import { ControlContextState } from "./ControlContextState.js";
|
|
3
3
|
import { IllegalStateException } from "../../core/fsm/exceptions/IllegalStateException.js";
|
|
4
4
|
import { SerializationMetadata } from "../ecs/components/SerializationMetadata.js";
|
|
5
|
-
import {
|
|
5
|
+
import { EntityFlags } from "../ecs/EntityFlags.js";
|
|
6
6
|
|
|
7
7
|
export class ControlContext {
|
|
8
8
|
constructor() {
|
|
@@ -14,7 +14,7 @@ export class ControlContext {
|
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* @private
|
|
17
|
-
* @type {
|
|
17
|
+
* @type {Entity[]}
|
|
18
18
|
*/
|
|
19
19
|
this.entities = [];
|
|
20
20
|
|
|
@@ -42,10 +42,10 @@ export class ControlContext {
|
|
|
42
42
|
|
|
43
43
|
/**
|
|
44
44
|
* Do not invoke "build" manually
|
|
45
|
-
* @returns {
|
|
45
|
+
* @returns {Entity}
|
|
46
46
|
*/
|
|
47
47
|
makeEntity() {
|
|
48
|
-
const eb = new
|
|
48
|
+
const eb = new Entity();
|
|
49
49
|
|
|
50
50
|
if (this.transientEntities) {
|
|
51
51
|
eb.add(SerializationMetadata.Transient);
|
|
@@ -124,7 +124,7 @@ export class ControlContext {
|
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
for (const e of this.entities) {
|
|
127
|
-
if (e.getFlag(
|
|
127
|
+
if (e.getFlag(EntityFlags.Built)) {
|
|
128
128
|
throw new IllegalStateException(`Entity ${e.entity} is already built, this violates pre-condition of control context`);
|
|
129
129
|
}
|
|
130
130
|
|
|
@@ -149,7 +149,7 @@ export class ControlContext {
|
|
|
149
149
|
}
|
|
150
150
|
|
|
151
151
|
for (const e of this.entities) {
|
|
152
|
-
if (!e.getFlag(
|
|
152
|
+
if (!e.getFlag(EntityFlags.Built)) {
|
|
153
153
|
//entity is not built, skip
|
|
154
154
|
continue;
|
|
155
155
|
}
|
|
@@ -4,10 +4,10 @@ interface Type<T> extends Function {
|
|
|
4
4
|
new(...args: any[]): T;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
export default class
|
|
7
|
+
export default class Entity {
|
|
8
8
|
public entity: number;
|
|
9
9
|
|
|
10
|
-
add<T>(component: T):
|
|
10
|
+
add<T>(component: T): Entity
|
|
11
11
|
|
|
12
12
|
removeComponent<T>(componentType: Type<T>): T | null
|
|
13
13
|
|
|
@@ -27,11 +27,11 @@ export default class EntityBuilder {
|
|
|
27
27
|
|
|
28
28
|
sendEvent(eventName: string, event?: any): void
|
|
29
29
|
|
|
30
|
-
addEventListener(eventName: string, listener: (data?: any) => void, context?: any):
|
|
30
|
+
addEventListener(eventName: string, listener: (data?: any) => void, context?: any): Entity
|
|
31
31
|
|
|
32
|
-
removeEventListener(eventName: string, listener: (data?: any) => void, context?: any):
|
|
32
|
+
removeEventListener(eventName: string, listener: (data?: any) => void, context?: any): Entity
|
|
33
33
|
|
|
34
|
-
static readFromDataset(entity: number, dataset: EntityComponentDataset):
|
|
34
|
+
static readFromDataset(entity: number, dataset: EntityComponentDataset): Entity
|
|
35
35
|
|
|
36
36
|
getFlag(flag: number): boolean
|
|
37
37
|
|