@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
|
@@ -2,22 +2,22 @@ import Signal from "../../core/events/signal/Signal.js";
|
|
|
2
2
|
import { assert } from "../../core/assert.js";
|
|
3
3
|
import { EventType } from "./EntityManager.js";
|
|
4
4
|
import { isDefined } from "../../core/process/matcher/Matchers.js";
|
|
5
|
-
import {
|
|
5
|
+
import { EntityFlags } from "./EntityFlags.js";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Set of default flags
|
|
9
9
|
* @type {number}
|
|
10
10
|
*/
|
|
11
11
|
const DEFAULT_FLAGS =
|
|
12
|
-
|
|
13
|
-
|
|
|
12
|
+
EntityFlags.RegisterComponents
|
|
13
|
+
| EntityFlags.WatchDestruction
|
|
14
14
|
;
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Representation of an entity, helps build entities and keep track of them without having to access {@link EntityComponentDataset} directly
|
|
18
18
|
* @class
|
|
19
19
|
*/
|
|
20
|
-
class
|
|
20
|
+
class Entity {
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
23
|
* @type {number}
|
|
@@ -51,7 +51,7 @@ class EntityBuilder {
|
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
*
|
|
54
|
-
* @type {
|
|
54
|
+
* @type {EntityFlags|number}
|
|
55
55
|
*/
|
|
56
56
|
flags = DEFAULT_FLAGS;
|
|
57
57
|
|
|
@@ -73,12 +73,12 @@ class EntityBuilder {
|
|
|
73
73
|
* @private
|
|
74
74
|
*/
|
|
75
75
|
__handleEntityDestroyed() {
|
|
76
|
-
this.clearFlag(
|
|
76
|
+
this.clearFlag(EntityFlags.Built);
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
80
|
*
|
|
81
|
-
* @param {number|
|
|
81
|
+
* @param {number|EntityFlags} value
|
|
82
82
|
*/
|
|
83
83
|
setFlag(value) {
|
|
84
84
|
this.flags |= value;
|
|
@@ -86,7 +86,7 @@ class EntityBuilder {
|
|
|
86
86
|
|
|
87
87
|
/**
|
|
88
88
|
*
|
|
89
|
-
* @param {number|
|
|
89
|
+
* @param {number|EntityFlags} flag
|
|
90
90
|
* @returns {boolean}
|
|
91
91
|
*/
|
|
92
92
|
getFlag(flag) {
|
|
@@ -97,7 +97,7 @@ class EntityBuilder {
|
|
|
97
97
|
|
|
98
98
|
/**
|
|
99
99
|
*
|
|
100
|
-
* @param {number|
|
|
100
|
+
* @param {number|EntityFlags} flag
|
|
101
101
|
*/
|
|
102
102
|
clearFlag(flag) {
|
|
103
103
|
this.flags &= ~flag;
|
|
@@ -108,7 +108,7 @@ class EntityBuilder {
|
|
|
108
108
|
* @returns {boolean}
|
|
109
109
|
*/
|
|
110
110
|
get isBuilt() {
|
|
111
|
-
return this.getFlag(
|
|
111
|
+
return this.getFlag(EntityFlags.Built);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
/**
|
|
@@ -135,7 +135,7 @@ class EntityBuilder {
|
|
|
135
135
|
/**
|
|
136
136
|
* @template T
|
|
137
137
|
* @param {T} componentInstance
|
|
138
|
-
* @returns {
|
|
138
|
+
* @returns {Entity}
|
|
139
139
|
*/
|
|
140
140
|
add(componentInstance) {
|
|
141
141
|
if (componentInstance === undefined) {
|
|
@@ -146,7 +146,7 @@ class EntityBuilder {
|
|
|
146
146
|
|
|
147
147
|
this.element.push(componentInstance);
|
|
148
148
|
|
|
149
|
-
if (this.getFlag(
|
|
149
|
+
if (this.getFlag(EntityFlags.Built)) {
|
|
150
150
|
//already built, add component to entity
|
|
151
151
|
this.dataset.addComponentToEntity(this.entity, componentInstance);
|
|
152
152
|
}
|
|
@@ -213,7 +213,7 @@ class EntityBuilder {
|
|
|
213
213
|
elements.splice(i, 1);
|
|
214
214
|
|
|
215
215
|
//see if entity is built
|
|
216
|
-
if (this.getFlag(
|
|
216
|
+
if (this.getFlag(EntityFlags.Built)) {
|
|
217
217
|
|
|
218
218
|
this.dataset.removeComponentFromEntity(this.entity, klass);
|
|
219
219
|
|
|
@@ -232,7 +232,7 @@ class EntityBuilder {
|
|
|
232
232
|
* @param {*} [event]
|
|
233
233
|
*/
|
|
234
234
|
sendEvent(eventName, event) {
|
|
235
|
-
if (this.getFlag(
|
|
235
|
+
if (this.getFlag(EntityFlags.Built)) {
|
|
236
236
|
this.dataset.sendEvent(this.entity, eventName, event);
|
|
237
237
|
} else {
|
|
238
238
|
console.warn("Entity doesn't exist. Event " + eventName + ":" + event + " was not sent.")
|
|
@@ -265,10 +265,10 @@ class EntityBuilder {
|
|
|
265
265
|
* @param {string} eventName
|
|
266
266
|
* @param {function} listener
|
|
267
267
|
* @param {*} [context]
|
|
268
|
-
* @returns {
|
|
268
|
+
* @returns {Entity}
|
|
269
269
|
*/
|
|
270
270
|
addEventListener(eventName, listener, context) {
|
|
271
|
-
if (this.getFlag(
|
|
271
|
+
if (this.getFlag(EntityFlags.Built)) {
|
|
272
272
|
this.dataset.addEntityEventListener(this.entity, eventName, listener, context);
|
|
273
273
|
} else {
|
|
274
274
|
this.deferredListeners.push({
|
|
@@ -285,10 +285,10 @@ class EntityBuilder {
|
|
|
285
285
|
* @param {string} eventName
|
|
286
286
|
* @param {function} listener
|
|
287
287
|
* @param {*} [context]
|
|
288
|
-
* @returns {
|
|
288
|
+
* @returns {Entity}
|
|
289
289
|
*/
|
|
290
290
|
removeEventListener(eventName, listener, context) {
|
|
291
|
-
if (this.getFlag(
|
|
291
|
+
if (this.getFlag(EntityFlags.Built)) {
|
|
292
292
|
this.dataset.removeEntityEventListener(this.entity, eventName, listener, context);
|
|
293
293
|
} else {
|
|
294
294
|
const listeners = this.deferredListeners;
|
|
@@ -317,7 +317,7 @@ class EntityBuilder {
|
|
|
317
317
|
* @returns {boolean}
|
|
318
318
|
*/
|
|
319
319
|
destroy() {
|
|
320
|
-
if (this.getFlag(
|
|
320
|
+
if (this.getFlag(EntityFlags.Built)) {
|
|
321
321
|
|
|
322
322
|
const dataset = this.dataset;
|
|
323
323
|
const entity = this.entity;
|
|
@@ -331,7 +331,7 @@ class EntityBuilder {
|
|
|
331
331
|
|
|
332
332
|
this.entity = void 0;
|
|
333
333
|
|
|
334
|
-
this.clearFlag(
|
|
334
|
+
this.clearFlag(EntityFlags.Built);
|
|
335
335
|
|
|
336
336
|
return true;
|
|
337
337
|
} else {
|
|
@@ -349,7 +349,7 @@ class EntityBuilder {
|
|
|
349
349
|
assert.notNull(dataset, "dataset");
|
|
350
350
|
|
|
351
351
|
if (
|
|
352
|
-
this.getFlag(
|
|
352
|
+
this.getFlag(EntityFlags.Built)
|
|
353
353
|
&& checkExistingComponents(this.entity, this.element, dataset)
|
|
354
354
|
) {
|
|
355
355
|
//already built
|
|
@@ -374,7 +374,7 @@ class EntityBuilder {
|
|
|
374
374
|
const element = this.element;
|
|
375
375
|
const element_count = element.length;
|
|
376
376
|
|
|
377
|
-
if (this.getFlag(
|
|
377
|
+
if (this.getFlag(EntityFlags.RegisterComponents)) {
|
|
378
378
|
for (i = 0; i < element_count; i++) {
|
|
379
379
|
const component = element[i];
|
|
380
380
|
|
|
@@ -388,9 +388,9 @@ class EntityBuilder {
|
|
|
388
388
|
dataset.addComponentToEntity(entity, component);
|
|
389
389
|
}
|
|
390
390
|
|
|
391
|
-
this.setFlag(
|
|
391
|
+
this.setFlag(EntityFlags.Built);
|
|
392
392
|
|
|
393
|
-
if (this.getFlag(
|
|
393
|
+
if (this.getFlag(EntityFlags.WatchDestruction)) {
|
|
394
394
|
dataset.addEntityEventListener(entity, EventType.EntityRemoved, this.__handleEntityDestroyed, this);
|
|
395
395
|
}
|
|
396
396
|
|
|
@@ -402,16 +402,16 @@ class EntityBuilder {
|
|
|
402
402
|
*
|
|
403
403
|
* @param {number} entity
|
|
404
404
|
* @param {EntityComponentDataset} dataset
|
|
405
|
-
* @returns {
|
|
405
|
+
* @returns {Entity}
|
|
406
406
|
*/
|
|
407
407
|
static readFromDataset(entity, dataset) {
|
|
408
|
-
const r = new
|
|
408
|
+
const r = new Entity();
|
|
409
409
|
|
|
410
410
|
dataset.getAllComponents(entity)
|
|
411
411
|
.filter(isDefined)
|
|
412
412
|
.forEach(r.add, r);
|
|
413
413
|
|
|
414
|
-
r.setFlag(
|
|
414
|
+
r.setFlag(EntityFlags.Built);
|
|
415
415
|
r.entity = entity;
|
|
416
416
|
r.dataset = dataset;
|
|
417
417
|
|
|
@@ -423,7 +423,7 @@ class EntityBuilder {
|
|
|
423
423
|
* @readonly
|
|
424
424
|
* @type {boolean}
|
|
425
425
|
*/
|
|
426
|
-
|
|
426
|
+
Entity.prototype.isEntityBuilder = true;
|
|
427
427
|
|
|
428
428
|
|
|
429
429
|
/**
|
|
@@ -452,4 +452,4 @@ function checkExistingComponents(entity, components, dataset) {
|
|
|
452
452
|
return true;
|
|
453
453
|
}
|
|
454
454
|
|
|
455
|
-
export default
|
|
455
|
+
export default Entity;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Entity from "./Entity.js";
|
|
2
2
|
import { EntityComponentDataset } from "./EntityComponentDataset.js";
|
|
3
|
-
import {
|
|
3
|
+
import { EntityFlags } from "./EntityFlags.js";
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class DummyComponent {
|
|
@@ -19,13 +19,13 @@ function sampleDataset() {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
test("constructor doesn't throw", () => {
|
|
22
|
-
new
|
|
22
|
+
new Entity();
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
test("entity exists in dataset after build", () => {
|
|
26
26
|
const dataset = new EntityComponentDataset();
|
|
27
27
|
|
|
28
|
-
const builder = new
|
|
28
|
+
const builder = new Entity();
|
|
29
29
|
|
|
30
30
|
const entity = builder.build(dataset);
|
|
31
31
|
|
|
@@ -37,7 +37,7 @@ test("component exist in dataset after build", () => {
|
|
|
37
37
|
|
|
38
38
|
dataset.setComponentTypeMap([DummyComponent]);
|
|
39
39
|
|
|
40
|
-
const builder = new
|
|
40
|
+
const builder = new Entity();
|
|
41
41
|
|
|
42
42
|
const component = new DummyComponent();
|
|
43
43
|
|
|
@@ -53,30 +53,30 @@ test("component exist in dataset after build", () => {
|
|
|
53
53
|
test("'Built' flag is reset when entity is removed without invoking 'destroy' method", () => {
|
|
54
54
|
const dataset = sampleDataset();
|
|
55
55
|
|
|
56
|
-
const b = new
|
|
56
|
+
const b = new Entity();
|
|
57
57
|
|
|
58
|
-
expect(b.getFlag(
|
|
58
|
+
expect(b.getFlag(EntityFlags.Built)).toBe(false);
|
|
59
59
|
expect(b.isBuilt).toBe(false);
|
|
60
60
|
|
|
61
61
|
b.build(dataset);
|
|
62
62
|
|
|
63
|
-
expect(b.getFlag(
|
|
63
|
+
expect(b.getFlag(EntityFlags.Built)).toBe(true);
|
|
64
64
|
expect(b.isBuilt).toBe(true);
|
|
65
65
|
|
|
66
66
|
dataset.removeEntity(b.entity);
|
|
67
67
|
|
|
68
|
-
expect(b.getFlag(
|
|
68
|
+
expect(b.getFlag(EntityFlags.Built)).toBe(false);
|
|
69
69
|
expect(b.isBuilt).toBe(false);
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
test("removeAllComponents from empty", () => {
|
|
73
|
-
const entity = new
|
|
73
|
+
const entity = new Entity();
|
|
74
74
|
|
|
75
75
|
expect(() => entity.removeAllComponents()).not.toThrow()
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
test("removeAllComponents with 1 entity", () => {
|
|
79
|
-
const entity = new
|
|
79
|
+
const entity = new Entity();
|
|
80
80
|
|
|
81
81
|
entity.add(new DummyComponent());
|
|
82
82
|
|
|
@@ -88,13 +88,13 @@ test("removeAllComponents with 1 entity", () => {
|
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
test("removeComponent when component is not preset", () => {
|
|
91
|
-
const entity = new
|
|
91
|
+
const entity = new Entity();
|
|
92
92
|
|
|
93
93
|
expect(entity.removeComponent(DummyComponent)).toBe(null);
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
test("removeComponent when component is preset", () => {
|
|
97
|
-
const entity = new
|
|
97
|
+
const entity = new Entity();
|
|
98
98
|
|
|
99
99
|
const component = new DummyComponent();
|
|
100
100
|
|
|
@@ -107,14 +107,14 @@ test("removeComponent when component is preset", () => {
|
|
|
107
107
|
|
|
108
108
|
test("getComponentSafe throws when component is missing", () => {
|
|
109
109
|
|
|
110
|
-
const entity = new
|
|
110
|
+
const entity = new Entity();
|
|
111
111
|
|
|
112
112
|
expect(() => entity.getComponentSafe(DummyComponent)).toThrow();
|
|
113
113
|
|
|
114
114
|
});
|
|
115
115
|
test("getComponentSafe throws when component is present", () => {
|
|
116
116
|
|
|
117
|
-
const entity = new
|
|
117
|
+
const entity = new Entity();
|
|
118
118
|
|
|
119
119
|
const component = new DummyComponent();
|
|
120
120
|
entity.add(component);
|
|
@@ -126,7 +126,7 @@ test("getComponentSafe throws when component is present", () => {
|
|
|
126
126
|
|
|
127
127
|
test("adding component to live entity results in component being added to the dataset", () => {
|
|
128
128
|
|
|
129
|
-
const entity = new
|
|
129
|
+
const entity = new Entity();
|
|
130
130
|
|
|
131
131
|
const ecd = sampleDataset();
|
|
132
132
|
|
|
@@ -141,7 +141,7 @@ test("adding component to live entity results in component being added to the da
|
|
|
141
141
|
|
|
142
142
|
test("promiseEvent", async () => {
|
|
143
143
|
|
|
144
|
-
const entity = new
|
|
144
|
+
const entity = new Entity();
|
|
145
145
|
|
|
146
146
|
const ecd = sampleDataset();
|
|
147
147
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Entity from "./Entity";
|
|
2
2
|
|
|
3
3
|
interface Type<T> extends Function {
|
|
4
4
|
new(...args: any[]): T;
|
|
@@ -13,5 +13,5 @@ export class EntityBlueprint {
|
|
|
13
13
|
|
|
14
14
|
clear(): void
|
|
15
15
|
|
|
16
|
-
build(seed?: object):
|
|
16
|
+
build(seed?: object): Entity
|
|
17
17
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Entity from "./Entity.js";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
*
|
|
@@ -141,10 +141,10 @@ export class EntityBlueprint {
|
|
|
141
141
|
|
|
142
142
|
/**
|
|
143
143
|
* @param {object} [templateSeed]
|
|
144
|
-
* @return {
|
|
144
|
+
* @return {Entity}
|
|
145
145
|
*/
|
|
146
146
|
build(templateSeed) {
|
|
147
|
-
const eb = new
|
|
147
|
+
const eb = new Entity();
|
|
148
148
|
|
|
149
149
|
this.#components.forEach((template, ComponentClass) => {
|
|
150
150
|
const component = new ComponentClass();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EntityBlueprint } from "./EntityBlueprint.js";
|
|
2
|
-
import
|
|
2
|
+
import Entity from "./Entity.js";
|
|
3
3
|
|
|
4
4
|
test("constructor does not throw", () => {
|
|
5
5
|
|
|
@@ -13,7 +13,7 @@ test("build empty", () => {
|
|
|
13
13
|
const entity = blueprint.build();
|
|
14
14
|
|
|
15
15
|
expect(entity).toBeDefined();
|
|
16
|
-
expect(entity).toBeInstanceOf(
|
|
16
|
+
expect(entity).toBeInstanceOf(Entity);
|
|
17
17
|
expect(entity.count).toEqual(0);
|
|
18
18
|
});
|
|
19
19
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { EntityObserver } from "./EntityObserver.js";
|
|
2
2
|
import { Transform } from "./transform/Transform.js";
|
|
3
3
|
import GridPosition from "../grid/position/GridPosition.js";
|
|
4
|
-
import
|
|
4
|
+
import Entity from "./Entity.js";
|
|
5
5
|
import { EntityComponentDataset } from "./EntityComponentDataset.js";
|
|
6
6
|
import { noop } from "../../core/function/Functions.js";
|
|
7
7
|
import { jest } from '@jest/globals';
|
|
@@ -42,13 +42,13 @@ test("existing entities that match are supplied via callback when attaching", ()
|
|
|
42
42
|
|
|
43
43
|
const t0 = new Transform();
|
|
44
44
|
const g0 = new GridPosition();
|
|
45
|
-
const entity0 = new
|
|
45
|
+
const entity0 = new Entity().add(t0).add(g0).build(dataset);
|
|
46
46
|
|
|
47
47
|
const t1 = new Transform();
|
|
48
48
|
const g1 = new GridPosition();
|
|
49
|
-
const entity1 = new
|
|
49
|
+
const entity1 = new Entity().add(t1).add(g1).build(dataset);
|
|
50
50
|
|
|
51
|
-
new
|
|
51
|
+
new Entity().add(new Transform()).build(dataset);
|
|
52
52
|
|
|
53
53
|
const observer = new EntityObserver([Transform, GridPosition], completed, broken);
|
|
54
54
|
|
|
@@ -69,7 +69,7 @@ test("completed matches are observed when they happen after attachment", () => {
|
|
|
69
69
|
|
|
70
70
|
const t0 = new Transform();
|
|
71
71
|
const g0 = new GridPosition();
|
|
72
|
-
const entity0 = new
|
|
72
|
+
const entity0 = new Entity().add(t0).build(dataset);
|
|
73
73
|
|
|
74
74
|
const observer = new EntityObserver([Transform, GridPosition], completed, broken);
|
|
75
75
|
|
|
@@ -93,7 +93,7 @@ test("broken matches are observed", () => {
|
|
|
93
93
|
const dataset = makeDataset();
|
|
94
94
|
const t0 = new Transform();
|
|
95
95
|
const g0 = new GridPosition();
|
|
96
|
-
const entityBuilder = new
|
|
96
|
+
const entityBuilder = new Entity().add(t0).add(g0);
|
|
97
97
|
const entity0 = entityBuilder.build(dataset);
|
|
98
98
|
|
|
99
99
|
const observer = new EntityObserver([Transform, GridPosition], completed, broken);
|
|
@@ -115,7 +115,7 @@ test("matching entities added after connect are observed", () => {
|
|
|
115
115
|
const dataset = makeDataset();
|
|
116
116
|
const t0 = new Transform();
|
|
117
117
|
const g0 = new GridPosition();
|
|
118
|
-
const entityBuilder = new
|
|
118
|
+
const entityBuilder = new Entity().add(t0).add(g0);
|
|
119
119
|
|
|
120
120
|
const observer = new EntityObserver([Transform, GridPosition], completed, broken);
|
|
121
121
|
|
|
@@ -135,7 +135,7 @@ test("match after connect and break", () => {
|
|
|
135
135
|
const dataset = makeDataset();
|
|
136
136
|
const t0 = new Transform();
|
|
137
137
|
const g0 = new GridPosition();
|
|
138
|
-
const entityBuilder = new
|
|
138
|
+
const entityBuilder = new Entity().add(t0).add(g0);
|
|
139
139
|
|
|
140
140
|
const observer = new EntityObserver([Transform, GridPosition], completed, broken);
|
|
141
141
|
|
|
@@ -5,7 +5,7 @@ import { DataScope } from "../../../../../model/game/unit/actions/data/DataScope
|
|
|
5
5
|
import { Blackboard } from "../../intelligence/blackboard/Blackboard.js";
|
|
6
6
|
import { returnTrue } from "../../../core/function/Functions.js";
|
|
7
7
|
import { EntityProxyScope } from "../binding/EntityProxyScope.js";
|
|
8
|
-
import
|
|
8
|
+
import Entity from "../Entity.js";
|
|
9
9
|
import { BehaviorComponent } from "../../intelligence/behavior/ecs/BehaviorComponent.js";
|
|
10
10
|
import { SequenceBehavior } from "../../intelligence/behavior/composite/SequenceBehavior.js";
|
|
11
11
|
import { DieBehavior } from "../../intelligence/behavior/ecs/DieBehavior.js";
|
|
@@ -22,7 +22,7 @@ import { randomFloatBetween } from "../../../core/math/random/randomFloatBetween
|
|
|
22
22
|
import { randomMultipleFromArray } from "../../../core/collection/array/randomMultipleFromArray.js";
|
|
23
23
|
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
|
|
24
24
|
import { ResourceAccessKind } from "../../../core/model/ResourceAccessKind.js";
|
|
25
|
-
import {
|
|
25
|
+
import { EntityFlags } from "../EntityFlags.js";
|
|
26
26
|
import { number_compare_descending } from "../../../core/primitives/numbers/number_compare_descending.js";
|
|
27
27
|
|
|
28
28
|
/**
|
|
@@ -196,7 +196,7 @@ export class DynamicActorSystem extends AbstractContextSystem {
|
|
|
196
196
|
|
|
197
197
|
const execution = ctx.execution;
|
|
198
198
|
|
|
199
|
-
if (execution.executor !== null && execution.executor.getFlag(
|
|
199
|
+
if (execution.executor !== null && execution.executor.getFlag(EntityFlags.Built)) {
|
|
200
200
|
// there is an active rule being executed, see if this one has the right to interrupt
|
|
201
201
|
|
|
202
202
|
if (rule.priority <= execution.rule.priority) {
|
|
@@ -223,7 +223,7 @@ export class DynamicActorSystem extends AbstractContextSystem {
|
|
|
223
223
|
|
|
224
224
|
const execution = ctx.execution;
|
|
225
225
|
|
|
226
|
-
if (execution.executor !== null && execution.executor.getFlag(
|
|
226
|
+
if (execution.executor !== null && execution.executor.getFlag(EntityFlags.Built)) {
|
|
227
227
|
execution.executor.destroy();
|
|
228
228
|
}
|
|
229
229
|
}
|
|
@@ -269,7 +269,7 @@ export class DynamicActorSystem extends AbstractContextSystem {
|
|
|
269
269
|
const ecd = this.entityManager.dataset;
|
|
270
270
|
const behavior = rule.action.execute(entity, ecd, context, this);
|
|
271
271
|
|
|
272
|
-
const entity_builder = new
|
|
272
|
+
const entity_builder = new Entity()
|
|
273
273
|
.add(BehaviorComponent.fromOne(SequenceBehavior.from([
|
|
274
274
|
OverrideContextBehavior.from(
|
|
275
275
|
{
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Entity from "../../Entity.js";
|
|
2
2
|
import { loadFoliageLayer } from "./Foliage2System.js";
|
|
3
3
|
import Mesh, { MeshFlags } from "../../../graphics/ecs/mesh/Mesh.js";
|
|
4
4
|
import { Transform } from "../../transform/Transform.js";
|
|
@@ -51,7 +51,7 @@ export function convertInstancedMeshComponents2Entities(dataset, assetManager) {
|
|
|
51
51
|
|
|
52
52
|
//TODO Consider moving BVH info here also, to make this process faster
|
|
53
53
|
|
|
54
|
-
const entityBuilder = new
|
|
54
|
+
const entityBuilder = new Entity();
|
|
55
55
|
|
|
56
56
|
entityBuilder.add(transform).add(mesh).build(dataset);
|
|
57
57
|
}
|
|
@@ -145,7 +145,7 @@ export function optimizeIndividualMeshesEntitiesToInstances(dataset, threshold =
|
|
|
145
145
|
const tBuild = new Task({
|
|
146
146
|
name: "Build Meshes",
|
|
147
147
|
cycleFunction: function () {
|
|
148
|
-
const entityBuilder = new
|
|
148
|
+
const entityBuilder = new Entity();
|
|
149
149
|
|
|
150
150
|
entityBuilder.add(foliage2);
|
|
151
151
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Entity from "../../../Entity";
|
|
2
2
|
import {EntityComponentDataset} from "../../../EntityComponentDataset";
|
|
3
3
|
import Vector2 from "../../../../../core/geom/Vector2";
|
|
4
4
|
import {RadialMenuElementDefinition} from "../../../../../view/elements/radial/RadialMenuElementDefinition";
|
|
@@ -19,4 +19,4 @@ interface RadialMenuOptions {
|
|
|
19
19
|
selectionDistance?: number
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export function makeMenu(options: RadialMenuOptions):
|
|
22
|
+
export function makeMenu(options: RadialMenuOptions): Entity;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { SerializationMetadata } from "../../../components/SerializationMetadata.js";
|
|
5
5
|
|
|
6
|
-
import
|
|
6
|
+
import Entity from "../../../Entity.js";
|
|
7
7
|
import GUIElement from "../../GUIElement.js";
|
|
8
8
|
import { MouseEvents } from "../../../../input/devices/events/MouseEvents.js";
|
|
9
9
|
import { TouchEvents } from "../../../../input/devices/events/TouchEvents.js";
|
|
@@ -12,7 +12,7 @@ import RadialMenuView from "../../../../../view/elements/radial/RadialMenu.js";
|
|
|
12
12
|
import { animateAppearance } from "./AnimateAppearance.js";
|
|
13
13
|
import { animateDisappearance } from "./AnimateDisappearance.js";
|
|
14
14
|
import { RadialMenuSettings } from "./RadialMenuSettings.js";
|
|
15
|
-
import {
|
|
15
|
+
import { EntityFlags } from "../../../EntityFlags.js";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
*
|
|
@@ -32,7 +32,7 @@ import { EntityBuilderFlags } from "../../../EntityBuilderFlags.js";
|
|
|
32
32
|
* @param {string[]} [classList]
|
|
33
33
|
* @param {Vector2} [pointerPosition] Used to set initial selection, same as position is not set
|
|
34
34
|
* @param {number} [selectionDistance] minimum distance in pixels at which selection registers
|
|
35
|
-
* @returns {
|
|
35
|
+
* @returns {Entity}
|
|
36
36
|
*/
|
|
37
37
|
export function makeMenu({
|
|
38
38
|
ecd,
|
|
@@ -99,7 +99,7 @@ export function makeMenu({
|
|
|
99
99
|
//play appearance animation
|
|
100
100
|
const appearanceAnimationFinished = animateAppearance(mainView, ecd);
|
|
101
101
|
|
|
102
|
-
const builder = new
|
|
102
|
+
const builder = new Entity();
|
|
103
103
|
|
|
104
104
|
//prevent menu serialization
|
|
105
105
|
builder.add(SerializationMetadata.Transient);
|
|
@@ -234,7 +234,7 @@ export function makeMenu({
|
|
|
234
234
|
window.addEventListener(TouchEvents.End, performSelection);
|
|
235
235
|
|
|
236
236
|
// to simplify usage of this class, we turn on component registration on the builder
|
|
237
|
-
builder.setFlag(
|
|
237
|
+
builder.setFlag(EntityFlags.RegisterComponents);
|
|
238
238
|
|
|
239
239
|
// actually build the menu
|
|
240
240
|
builder.build(ecd);
|
|
@@ -6,8 +6,8 @@ import Quaternion from "../../../core/geom/Quaternion.js";
|
|
|
6
6
|
import Vector3 from "../../../core/geom/Vector3.js";
|
|
7
7
|
import { SurfacePoint3 } from "../../../core/geom/3d/SurfacePoint3.js";
|
|
8
8
|
import { v3_computeOffsetVector } from "./IKMath.js";
|
|
9
|
-
import { v3_dot } from "../../../core/geom/v3_dot.js";
|
|
10
|
-
import { v3_length } from "../../../core/geom/v3_length.js";
|
|
9
|
+
import { v3_dot } from "../../../core/geom/vec3/v3_dot.js";
|
|
10
|
+
import { v3_length } from "../../../core/geom/vec3/v3_length.js";
|
|
11
11
|
import { clamp01 } from "../../../core/math/clamp01.js";
|
|
12
12
|
|
|
13
13
|
const boneWorldPosition = new Vector3();
|
|
@@ -7,8 +7,8 @@ import { findSkeletonBoneByType } from "../../graphics/ecs/mesh/SkeletonUtils.js
|
|
|
7
7
|
import { SurfacePoint3 } from "../../../core/geom/3d/SurfacePoint3.js";
|
|
8
8
|
import { IKSolver } from "./IKSolver.js";
|
|
9
9
|
import { v3_computeOffsetVector } from "./IKMath.js";
|
|
10
|
-
import { v3_dot } from "../../../core/geom/v3_dot.js";
|
|
11
|
-
import { v3_length } from "../../../core/geom/v3_length.js";
|
|
10
|
+
import { v3_dot } from "../../../core/geom/vec3/v3_dot.js";
|
|
11
|
+
import { v3_length } from "../../../core/geom/vec3/v3_length.js";
|
|
12
12
|
import { clamp01 } from "../../../core/math/clamp01.js";
|
|
13
13
|
|
|
14
14
|
const boneWorldPositionC = new Vector3();
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Entity from "../Entity";
|
|
2
2
|
import {EntityComponentDataset} from "../EntityComponentDataset";
|
|
3
3
|
import {Transform} from "../transform/Transform";
|
|
4
4
|
|
|
5
5
|
export class EntityNode {
|
|
6
|
-
constructor(entity?:
|
|
6
|
+
constructor(entity?: Entity)
|
|
7
7
|
|
|
8
8
|
readonly parent: EntityNode | null
|
|
9
|
-
readonly entity:
|
|
9
|
+
readonly entity: Entity
|
|
10
10
|
|
|
11
11
|
readonly transform: Transform
|
|
12
12
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ParentEntity } from "./ParentEntity.js";
|
|
2
|
-
import
|
|
2
|
+
import Entity from "../Entity.js";
|
|
3
3
|
import { array_remove_first } from "../../../core/collection/array/array_remove_first.js";
|
|
4
4
|
import { assert } from "../../../core/assert.js";
|
|
5
5
|
import { array_push_if_unique } from "../../../core/collection/array/array_push_if_unique.js";
|
|
@@ -13,9 +13,9 @@ const DEFAULT_FLAGS = EntityNodeFlags.LiveManagement;
|
|
|
13
13
|
export class EntityNode {
|
|
14
14
|
/**
|
|
15
15
|
*
|
|
16
|
-
* @param {
|
|
16
|
+
* @param {Entity} [entity] optional entity to be wrapped
|
|
17
17
|
*/
|
|
18
|
-
constructor(entity = new
|
|
18
|
+
constructor(entity = new Entity()) {
|
|
19
19
|
/**
|
|
20
20
|
*
|
|
21
21
|
* @type {EntityNode|null}
|
|
@@ -25,7 +25,7 @@ export class EntityNode {
|
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
*
|
|
28
|
-
* @type {
|
|
28
|
+
* @type {Entity}
|
|
29
29
|
* @private
|
|
30
30
|
*/
|
|
31
31
|
this.__entity = entity;
|
|
@@ -254,7 +254,7 @@ export class EntityNode {
|
|
|
254
254
|
|
|
255
255
|
/**
|
|
256
256
|
*
|
|
257
|
-
* @return {
|
|
257
|
+
* @return {Entity}
|
|
258
258
|
*/
|
|
259
259
|
get entity() {
|
|
260
260
|
return this.__entity;
|