@woosh/meep-engine 2.37.18 → 2.38.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/core/assert.js +1 -1
- package/core/binary/float2uint8.js +8 -0
- package/core/binary/uint82float.js +8 -0
- package/core/bvh2/bvh3/ExplicitBinaryBoundingVolumeHierarchy.js +6 -4
- package/core/collection/array/array_get_index_in_range.js +16 -0
- package/core/collection/array/typed/isTypedArray.js +20 -0
- package/core/collection/array/typedArrayToDataType.js +1 -0
- package/{engine/navigation/grid → core/collection/heap}/BinaryHeap.js +6 -1
- package/{engine/navigation/grid → core/collection/heap}/FastBinaryHeap.js +3 -2
- package/{engine/navigation/grid → core/collection/heap}/FastBinaryHeap.spec.js +3 -3
- package/core/collection/heap/Uin32Heap.spec.js +59 -0
- package/core/collection/heap/Uint32Heap.js +385 -0
- package/core/collection/list/List.d.ts +1 -1
- package/core/collection/table/RowFirstTable.js +34 -0
- package/core/collection/table/RowFirstTable.spec.js +59 -1
- package/core/color/Color.js +83 -1
- package/core/color/YCbCr_to_rgb_uint24.js +3 -4
- package/core/color/hsv2rgb.js +4 -3
- package/core/color/linear_to_sRGB.js +4 -5
- package/core/color/rgb2hex.js +1 -1
- package/core/color/rgb2uint24.js +6 -4
- package/core/color/rgb_to_YCbCr_uint24.js +11 -13
- package/core/events/signal/Signal.d.ts +11 -9
- package/core/events/signal/Signal.spec.js +16 -0
- package/core/geom/2d/quad-tree/qt_collect_by_circle.js +67 -0
- package/core/geom/3d/topology/computeTopoMeshVertexDuplicates.js +9 -6
- package/core/geom/3d/topology/expandConnectivityByLocality.js +5 -5
- package/core/geom/3d/topology/query/query_edge_is_boundary.js +7 -0
- package/core/geom/3d/topology/query/query_edge_is_manifold.js +13 -0
- package/core/geom/3d/topology/query/query_edge_is_manifold_or_boundary.js +11 -0
- package/core/geom/3d/topology/query/query_edge_is_wire.js +13 -0
- package/core/geom/3d/topology/query/query_edge_other_vertex.js +20 -0
- package/core/geom/3d/topology/query/query_edge_share_vert.js +9 -0
- package/core/geom/3d/topology/query/query_face_get_other_edges.js +39 -0
- package/core/geom/3d/topology/query/query_face_next_vertex.js +19 -0
- package/core/geom/3d/topology/query/query_face_prev_vertex.js +18 -0
- package/core/geom/3d/topology/query/query_vertex_in_edge.js +14 -0
- package/core/geom/3d/topology/query/query_vertex_pair_share_face.js +24 -0
- package/core/geom/3d/topology/query/query_vertices_in_edge.js +19 -0
- package/core/geom/3d/topology/simplify/collapseEdge.spec.js +3 -5
- package/core/geom/3d/topology/simplify/collapse_all_degenerate_edges.js +8 -10
- package/core/geom/3d/topology/simplify/compute_face_normal_change_dot_product.js +12 -2
- package/core/geom/3d/topology/simplify/decimate_edge_collapse_snap.js +277 -0
- package/core/geom/3d/topology/simplify/edge_collapse_quadratic.js +126 -0
- package/core/geom/3d/topology/simplify/prototypeMeshSimplification.js +502 -0
- package/core/geom/3d/topology/simplify/quadratic/Quadratic3.js +37 -5
- package/core/geom/3d/topology/simplify/quadratic/build_vertex_quadratics.js +86 -1
- package/core/geom/3d/topology/simplify/simplifyTopoMesh.js +4 -4
- package/core/geom/3d/topology/simplify/simplifyTopoMesh2.js +119 -0
- package/core/geom/3d/topology/simplify/tm_edge_collapse_is_degenerate_flip.js +81 -0
- package/core/geom/3d/topology/{TopoEdge.js → struct/TopoEdge.js} +47 -20
- package/core/geom/3d/topology/{TopoEdge.spec.js → struct/TopoEdge.spec.js} +0 -0
- package/core/geom/3d/topology/{TopoMesh.js → struct/TopoMesh.js} +20 -41
- package/core/geom/3d/topology/{TopoTriangle.js → struct/TopoTriangle.js} +15 -25
- package/core/geom/3d/topology/{TopoVertex.js → struct/TopoVertex.js} +21 -4
- package/core/geom/3d/topology/{TopoVertex.spec.js → struct/TopoVertex.spec.js} +0 -0
- package/core/geom/3d/topology/tm_edge_kill.js +24 -0
- package/core/geom/3d/topology/tm_edge_splice.js +42 -0
- package/core/geom/3d/topology/tm_face_area.js +18 -0
- package/core/geom/3d/topology/tm_face_kill.js +12 -0
- package/core/geom/3d/topology/tm_face_normal.js +14 -0
- package/core/geom/3d/topology/tm_kill_only_edge.js +35 -0
- package/core/geom/3d/topology/tm_kill_only_face.js +12 -0
- package/core/geom/3d/topology/tm_kill_only_vert.js +14 -0
- package/core/geom/3d/topology/tm_vert_kill.js +19 -0
- package/core/geom/3d/topology/tm_vert_splice.js +64 -0
- package/core/geom/3d/topology/tm_vertex_compute_normal.js +42 -0
- package/core/geom/3d/topology/topoMeshToBufferGeometry.js +18 -4
- package/core/geom/3d/topology/weld_duplicate_vertices.js +63 -0
- package/core/geom/Quaternion.d.ts +21 -1
- package/core/geom/Quaternion.js +279 -200
- package/core/geom/Quaternion.spec.js +71 -2
- package/core/geom/Vector2.js +3 -3
- package/core/geom/Vector3.d.ts +2 -0
- package/core/geom/Vector3.js +31 -7
- package/core/geom/Vector3.schema.json +16 -0
- package/core/geom/Vector4.js +16 -0
- package/core/geom/packing/MaxRectangles.js +1 -1
- package/core/graph/cluster_mesh_metis.js +16 -0
- package/core/graph/coarsen_graph.js +1 -1
- package/core/graph/graph_k_means_cluster.js +1 -1
- package/core/json/JsonUtils.js +2 -20
- package/core/math/bell_membership_function.js +19 -0
- package/core/math/exp2.js +8 -0
- package/core/math/interval/NumericInterval.js +17 -0
- package/core/math/physics/brdf/brdf_burley.js +25 -0
- package/core/math/physics/bsdf/bsdf_schlick.js +22 -0
- package/core/math/physics/irradiance/interpolate_irradiance_linear.js +18 -0
- package/{engine/sound/ecs/emitter/attenuate/attenuateSoundLogarithmic.js → core/math/physics/irradiance/interpolate_irradiance_lograrithmic.js} +2 -2
- package/{engine/sound/ecs/emitter/attenuate/attenuateSoundSmith.js → core/math/physics/irradiance/interpolate_irradiance_smith.js} +1 -1
- package/core/math/random/seededRandom.js +2 -31
- package/core/math/random/seededRandom_Mulberry32.js +31 -0
- package/core/math/random/seededRandom_sine.js +33 -0
- package/core/model/ObservedEnum.js +8 -0
- package/editor/Editor.js +97 -1
- package/editor/actions/concrete/ModifyPatchSampler2DAction.js +118 -0
- package/editor/actions/concrete/ModifyPatchSampler2DAction.spec.js +30 -0
- package/editor/actions/concrete/PatchTerrainHeightAction.js +13 -105
- package/editor/ecs/component/FieldDescriptor.js +34 -0
- package/editor/ecs/component/FieldValueAdapter.js +20 -0
- package/editor/ecs/component/TypeEditor.js +33 -0
- package/editor/ecs/component/TypeSchema.d.ts +38 -0
- package/editor/ecs/component/createFieldEditor.js +90 -0
- package/editor/ecs/component/createObjectEditor.js +266 -60
- package/editor/ecs/component/editors/ColorEditor.js +39 -0
- package/editor/ecs/component/editors/HTMLElementEditor.js +17 -0
- package/editor/ecs/component/editors/ImagePathEditor.js +50 -0
- package/editor/ecs/component/editors/NumericIntervalEditor.js +86 -0
- package/editor/ecs/component/editors/ObservedBooleanEditor.js +13 -0
- package/editor/ecs/component/editors/ObservedEnumEditor.js +32 -0
- package/editor/ecs/component/editors/ObservedIntegerEditor.js +43 -0
- package/editor/ecs/component/editors/ObservedStringEditor.js +51 -0
- package/editor/ecs/component/editors/Sampler2DEditor.js +107 -0
- package/editor/ecs/component/editors/collection/ListEditor.js +83 -0
- package/editor/ecs/component/editors/common/BitFlagsEditor.js +80 -0
- package/editor/ecs/component/editors/common/EnumEditor.js +41 -0
- package/editor/ecs/component/editors/common/makeV3_editor.js +85 -0
- package/editor/ecs/component/editors/common/noEditor.js +9 -0
- package/editor/ecs/component/editors/ecs/GridObstacleEditor.js +17 -0
- package/editor/ecs/component/editors/ecs/MinimapMarkerEditor.js +16 -0
- package/editor/ecs/component/editors/ecs/ParameterLookupTableEditor.js +44 -0
- package/editor/ecs/component/editors/ecs/ParameterTrackEditor.js +17 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterEditor.js +58 -0
- package/editor/ecs/component/editors/ecs/ParticleEmitterLayerEditor.js +54 -0
- package/editor/ecs/component/editors/ecs/SimulationStepDefinitionEditor.js +21 -0
- package/editor/ecs/component/editors/ecs/Trail2DEditor.js +33 -0
- package/editor/ecs/component/editors/ecs/TransformEditor.js +23 -0
- package/editor/ecs/component/editors/ecs/terrain/SplatMappingEditor.js +21 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainEditor.js +89 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayerEditor.js +18 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainLayersEditor.js +22 -0
- package/editor/ecs/component/editors/ecs/terrain/TerrainOverlayEditor.js +20 -0
- package/editor/ecs/component/editors/geom/QuaternionEditor.js +56 -0
- package/editor/ecs/component/editors/geom/Vector1Editor.js +57 -0
- package/editor/ecs/component/editors/geom/Vector2Editor.js +11 -0
- package/editor/ecs/component/editors/geom/Vector3Editor.js +13 -0
- package/editor/ecs/component/editors/geom/Vector4Editor.js +12 -0
- package/editor/ecs/component/editors/primitive/ArrayEditor.js +46 -0
- package/editor/ecs/component/editors/primitive/BooleanEditor.js +27 -0
- package/editor/ecs/component/editors/primitive/FunctionEditor.js +29 -0
- package/editor/ecs/component/editors/primitive/NumberEditor.js +60 -0
- package/editor/ecs/component/editors/primitive/ObjectEditor.js +12 -0
- package/editor/ecs/component/editors/primitive/StringEditor.js +31 -0
- package/editor/ecs/component/editors/three/BufferGeometryEditor.js +28 -0
- package/editor/ecs/component/editors/three/MaterialEditor.js +27 -0
- package/editor/ecs/component/editors/three/MeshEditor.js +35 -0
- package/editor/ecs/component/editors/three/TextureEditor.js +32 -0
- package/editor/ecs/component/findNearestRegisteredType.js +59 -0
- package/editor/ecs/component/prototypeObjectEditor.js +379 -0
- package/editor/tools/SelectionTool.js +1 -1
- package/editor/tools/paint/TerrainHeightPaintTool.js +88 -68
- package/editor/tools/paint/TerrainPaintTool.js +2 -1
- package/editor/tools/paint/TerrainTexturePaintTool.js +8 -73
- package/editor/view/EditorView.js +1 -1
- package/editor/view/ecs/ComponentControlView.js +2 -30
- package/editor/view/ecs/EntityEditor.js +61 -139
- package/editor/view/ecs/components/GridObstacleController.js +4 -4
- package/editor/view/ecs/components/TerrainController.js +1 -1
- package/editor/view/ecs/components/common/NumberController.js +19 -7
- package/editor/view/node-graph/NodeGraphView.js +2 -2
- package/editor/view/node-graph/NodeView.js +7 -9
- package/engine/animation/keyed2/AnimationTrack.js +1 -1
- package/engine/asset/AssetManager.d.ts +1 -1
- package/engine/asset/AssetManager.js +390 -388
- package/engine/asset/loaders/gltf/extensions/MSFT_texture_dds.js +14 -2
- package/engine/ecs/components/TagEditor.js +15 -0
- package/engine/ecs/fow/FogOfWarEditor.js +13 -0
- package/engine/ecs/parent/ParentEntitySystem.js +57 -0
- package/engine/ecs/terrain/ecs/OffsetScaleTransform2D.d.ts +6 -0
- package/engine/ecs/terrain/ecs/Terrain.js +44 -43
- package/engine/ecs/terrain/ecs/TerrainSystem.js +2 -2
- package/engine/ecs/terrain/ecs/layers/TerrainLayer.js +1 -1
- package/engine/ecs/terrain/ecs/splat/SplatMapping.js +26 -28
- package/engine/ecs/terrain/overlay/TerrainOverlay.js +71 -66
- package/engine/ecs/terrain/tiles/TerrainTileManager.js +23 -0
- package/engine/ecs/terrain/util/loadVisibleTerrainTiles.js +1 -1
- package/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +13 -7
- package/engine/ecs/terrain/util/tensionOptimizeUV.js +1 -1
- package/engine/ecs/transform/Transform.d.ts +2 -0
- package/engine/ecs/transform/Transform.editor.schema.json +16 -0
- package/engine/ecs/transform/Transform.js +3 -0
- package/engine/graphics/ecs/highlight/HighlightEditor.js +17 -0
- package/engine/graphics/ecs/light/Light.js +0 -47
- package/engine/graphics/ecs/light/LightSerializationAdapter.js +50 -0
- package/engine/graphics/ecs/mesh/MeshEditor.js +28 -0
- package/engine/graphics/ecs/mesh-v2/DrawMode.js +2 -1
- package/engine/graphics/ecs/mesh-v2/aggregate/prototypeSGMesh.js +3 -3
- package/engine/graphics/ecs/mesh-v2/build_three_object.js +3 -1
- package/engine/graphics/ecs/mesh-v2/sg_compute_hierarchy_bounding_box_by_parent_entity.js +31 -0
- package/engine/graphics/ecs/mesh-v2/sg_hierarchy_compute_bounding_box_via_parent_entity.d.ts +4 -0
- package/engine/graphics/ecs/sprite/Sprite.js +11 -0
- package/engine/graphics/ecs/sprite/SpriteSystemPE.js +133 -0
- package/engine/graphics/ecs/sprite/prototypeSpriteSystem.js +1570 -0
- package/engine/graphics/micron/build/PatchRepresentation.js +7 -3
- package/engine/graphics/micron/build/buildMicronGeometryFromBufferGeometry.js +18 -8
- package/engine/graphics/micron/build/clustering/build_clustering_2.js +1 -1
- package/engine/graphics/micron/build/clustering/build_leaf_patches.js +2 -2
- package/engine/graphics/micron/build/clustering/build_leaf_patches_metis.js +1 -1
- package/engine/graphics/micron/build/hierarchy/buildAbstractPatchHierarchy.js +21 -3
- package/engine/graphics/micron/build/hierarchy/merge_patches.js +96 -43
- package/engine/graphics/micron/build/hierarchy/qvdr_build_simplified_clusters.js +11 -5
- package/engine/graphics/micron/format/VirtualGeometry.js +46 -3
- package/engine/graphics/micron/format/micron_build_proxy_geometry.js +4 -2
- package/engine/graphics/micron/prototypeVirtualGeometry.js +47 -10
- package/engine/graphics/micron/render/instanced/shader/shader_rewrite_standard.js +17 -17
- package/engine/graphics/micron/render/refinement/get_geometry_patch_cut.js +15 -3
- package/engine/graphics/micron/simplifyGeometry.js +1 -1
- package/engine/graphics/particles/particular/engine/ParticularEngine.js +5 -0
- package/engine/graphics/particles/particular/engine/emitter/ParticleLayer.js +17 -9
- package/engine/graphics/particles/particular/engine/renderers/ParticleRenderer.js +12 -10
- package/engine/graphics/particles/particular/engine/renderers/billboard/ParticleBillboardMaterial.js +7 -2
- package/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticlePool.js +27 -0
- package/engine/graphics/particles/particular/engine/renderers/billboard/SoftBillboardParticleRenderer.js +80 -0
- package/engine/graphics/particles/particular/engine/shader/ShaderManager.js +16 -4
- package/engine/graphics/shaders/TerrainShader.js +8 -8
- package/engine/graphics/texture/atlas/TextureAtlasDebugger.js +2 -1
- package/engine/graphics/texture/sampler/Sampler2D.js +206 -201
- package/engine/graphics/texture/sampler/Sampler2D.spec.js +34 -35
- package/engine/graphics/texture/sampler/bicubic.js +59 -0
- package/engine/graphics/texture/sampler/downsampleSample2D.spec.js +2 -2
- package/engine/graphics/texture/sampler/genericResampleSampler2D.js +0 -2
- package/engine/graphics/texture/sampler/prototypeSamplerFiltering.js +146 -0
- package/engine/graphics/texture/sampler/{downsampleSampler2D.js → sampler2D_scale_down_linear.js} +8 -4
- package/engine/graphics/texture/sampler/sampler2_d_scale_down_lanczos.js +140 -0
- package/engine/graphics/texture/sampler/scaleSampler2D.js +3 -3
- package/engine/graphics/texture/sampler/writeSampler2DDataToDataTexture.js +1 -1
- package/engine/graphics/util/ScaleObject3ToBox.js +14 -1
- package/engine/graphics/util/makeMeshPreviewScene.js +2 -1
- package/engine/grid/components/GridObstacle.js +0 -44
- package/engine/grid/components/GridObstacleSerializationAdapter.js +46 -0
- package/engine/input/devices/PointerDevice.d.ts +1 -1
- package/engine/input/devices/PointerDevice.js +17 -2
- package/engine/input/ecs/util/TerrainCameraTargetSampler.js +2 -2
- package/engine/navigation/ecs/components/Path.d.ts +2 -0
- package/engine/navigation/ecs/components/Path.js +6 -1
- package/engine/navigation/ecs/components/computeNonuniformCatmullRomSplineSample.js +117 -0
- package/engine/navigation/grid/AStar.js +1 -1
- package/engine/navigation/grid/GridField.js +3 -2
- package/engine/platform/GetURLHash.js +27 -0
- package/engine/platform/WebEnginePlatform.js +1 -22
- package/engine/sound/ecs/emitter/SoundEmitter.js +10 -6
- package/engine/ui/DraggableAspect.js +2 -2
- package/generation/GridGenerator.js +7 -6
- package/generation/example/SampleGenerator0.js +39 -35
- package/generation/example/filters/SampleGroundMoistureFilter.js +58 -17
- package/generation/example/generators/interactive/mir_generator_place_buff_objects.js +7 -6
- package/generation/example/generators/mir_generator_place_bases.js +7 -3
- package/generation/example/generators/mir_generator_place_road_decorators.js +3 -3
- package/generation/example/generators/mir_generator_place_starting_point.js +3 -2
- package/generation/example/themes/SampleTheme0.js +11 -7
- package/generation/filtering/numeric/CellFilterLiteralFloat.js +5 -0
- package/generation/filtering/numeric/complex/CellFilterDilate.js +36 -0
- package/generation/filtering/numeric/complex/CellFilterGaussianBlur.js +15 -5
- package/generation/filtering/numeric/complex/CellFilterSimplexNoise.js +53 -1
- package/generation/filtering/numeric/math/CellFilterMax2.js +3 -0
- package/generation/filtering/numeric/math/CellFilterMembershipGeneralizedBell.js +55 -0
- package/generation/filtering/numeric/sampling/AbstractCellFilterSampleGridLayer.js +42 -0
- package/generation/filtering/numeric/sampling/CellFilterSampleLayerCubic.js +36 -0
- package/generation/filtering/numeric/sampling/CellFilterSampleLayerLinear.js +41 -0
- package/generation/grid/GridData.d.ts +5 -1
- package/generation/grid/GridData.js +35 -36
- package/generation/grid/MarkerMatchCounter.js +5 -3
- package/generation/grid/generation/discrete/GridTaskConnectRooms.js +1 -1
- package/generation/grid/generation/discrete/layer/GridTaskBuildSourceDistanceMap.js +1 -1
- package/generation/grid/generation/discrete/layer/GridTaskDistanceToMarkers.js +1 -1
- package/generation/grid/generation/road/GridTaskGenerateRoads.js +1 -1
- package/generation/markers/GridActionRuleSet.js +15 -32
- package/generation/markers/GridCellActionPlaceMarker.js +12 -8
- package/generation/markers/debug/visualizeMarkers.js +56 -36
- package/generation/markers/emitter/MarkerNodeEmitterFromAction.js +8 -8
- package/generation/markers/prototypeGridCellActionPlaceMarker.js +209 -0
- package/generation/markers/transform/MarkerNodeTransformerOffsetPosition.js +1 -5
- package/generation/markers/transform/MarkerNodeTransformerYRotateByFilterGradient.spec.js +2 -2
- package/generation/placement/GridCellPlacementRule.js +31 -25
- package/generation/theme/ThemeEngine.js +1 -1
- package/package.json +1 -1
- package/samples/terrain/from_image.js +7 -3
- package/samples/terrain/main.js +1 -1
- package/view/View.js +23 -1
- package/view/common/LabelView.js +1 -1
- package/view/compose3x3transform.js +32 -8
- package/view/controller/dat/DatGuiUtils.js +1 -1
- package/view/elements/DropDownSelectionView.js +11 -3
- package/view/elements/image/ImageView.js +3 -1
- package/core/model/ObservedReal.js +0 -55
- package/editor/ecs/component/ObjectEditor.js +0 -0
- package/engine/graphics/particles/particular/engine/renderers/SoftBillboardParticleRenderer.js +0 -7
- package/engine/sound/ecs/emitter/attenuate/attenuateSoundLinear.js +0 -11
- package/generation/filtering/numeric/CellFilterReadGridLayer.js +0 -73
|
@@ -9,89 +9,14 @@ import ObservedValue from '../../../core/model/ObservedValue.js';
|
|
|
9
9
|
import LabelView from '../../../view/common/LabelView.js';
|
|
10
10
|
import ButtonView from '../../../view/elements/button/ButtonView.js';
|
|
11
11
|
import DropDownSelectionView from '../../../view/elements/DropDownSelectionView.js';
|
|
12
|
-
|
|
13
|
-
import TransformController from './components/TransformController.js';
|
|
14
|
-
import MeshController from './components/MeshController.js';
|
|
15
|
-
import { datify } from "../../../view/controller/dat/DatGuiUtils.js";
|
|
16
12
|
import EmptyView from "../../../view/elements/EmptyView.js";
|
|
17
13
|
import { EntityManager, EventType } from "../../../engine/ecs/EntityManager.js";
|
|
18
|
-
import HighlightController from "./components/HighlightController.js";
|
|
19
|
-
import { GridPositionController } from "./components/GridPositionController.js";
|
|
20
|
-
import { ParticleEmitterController } from "./components/particles/ParticleEmitterController.js";
|
|
21
|
-
import { TerrainController } from "./components/TerrainController.js";
|
|
22
|
-
import { TagController } from "./components/TagController.js";
|
|
23
|
-
import { ItemContainerController } from "./components/items/ItemContainerController.js";
|
|
24
|
-
import { FogOfWarRevealerController } from "./components/FogOfWarRevealerController.js";
|
|
25
|
-
import { FogOfWarController } from "./components/FogOfWarController.js";
|
|
26
|
-
import { GeneratedArmyController } from "./components/GeneratedArmyController.js";
|
|
27
|
-
import { ArmyController } from "./components/army/ArmyController.js";
|
|
28
|
-
import { PathFollowerController } from "./components/PathFollowerController.js";
|
|
29
14
|
import ComponentRemoveAction from "../../actions/concrete/ComponentRemoveAction.js";
|
|
30
15
|
import ComponentAddAction from "../../actions/concrete/ComponentAddAction.js";
|
|
31
|
-
import { StoryTriggerSetController } from "./components/story/StoryTriggerSetController.js";
|
|
32
|
-
import { UnitShopController } from "./components/UnitShopController.js";
|
|
33
|
-
import { SoundEmitterController } from "./components/sound/SoundEmitterController.js";
|
|
34
|
-
import { GUIElementController } from "./components/gui/GUIElementController.js";
|
|
35
16
|
import { LineView } from "./components/common/LineView.js";
|
|
36
17
|
import { ComponentControlView } from "./ComponentControlView.js";
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import { GridObstacleController } from "./components/GridObstacleController.js";
|
|
40
|
-
import { AttachmentSocketsController } from "./components/sockets/AttachmentSocketsController.js";
|
|
41
|
-
import { ParticleEmitterSystem } from "../../../engine/graphics/particles/ecs/ParticleEmitterSystem.js";
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
* @param {ComponentControlFactory} factory
|
|
46
|
-
* @param {Editor} editor
|
|
47
|
-
*/
|
|
48
|
-
function prepareComponentFactory(factory, editor) {
|
|
49
|
-
factory
|
|
50
|
-
.register('Transform', () => new TransformController())
|
|
51
|
-
.register('Mesh', () => new MeshController(editor.engine.assetManager))
|
|
52
|
-
.register('GridPosition', () => new GridPositionController())
|
|
53
|
-
.register('Name', datify)
|
|
54
|
-
.register('Tag', () => new TagController())
|
|
55
|
-
.register('Team', datify)
|
|
56
|
-
.register('HeadsUpDisplay', () => new HeadsUpDisplayController())
|
|
57
|
-
.register('GeneratedArmy', () => new GeneratedArmyController())
|
|
58
|
-
.register('Army', () => new ArmyController({
|
|
59
|
-
localization: editor.engine.localization,
|
|
60
|
-
afflictionDatabase: editor.engine.staticKnowledge.afflictions
|
|
61
|
-
}))
|
|
62
|
-
.register('ClingToTerrain', datify)
|
|
63
|
-
.register('Commander', datify)
|
|
64
|
-
.register('MinimapMarker', datify)
|
|
65
|
-
.register('Camera', datify)
|
|
66
|
-
.register('FacingDirection', datify)
|
|
67
|
-
.register('GridObstacle', () => new GridObstacleController())
|
|
68
|
-
.register('Terrain', () => new TerrainController(editor.engine.assetManager))
|
|
69
|
-
.register('TopDownCameraController', datify)
|
|
70
|
-
.register('Light', datify)
|
|
71
|
-
.register('FogOfWar', () => new FogOfWarController(editor.engine.entityManager))
|
|
72
|
-
.register('FogOfWarRevealer', () => new FogOfWarRevealerController())
|
|
73
|
-
.register('PathFollower', () => new PathFollowerController())
|
|
74
|
-
.register('Highlight', () => new HighlightController())
|
|
75
|
-
.register('Blackboard', () => new BlackboardController())
|
|
76
|
-
.register('StoryTriggerSet', () => new StoryTriggerSetController())
|
|
77
|
-
.register('UnitShop', () => new UnitShopController())
|
|
78
|
-
.register('ItemContainer', () => new ItemContainerController({
|
|
79
|
-
localization: editor.engine.localization,
|
|
80
|
-
itemDatabase: editor.engine.staticKnowledge.items
|
|
81
|
-
}))
|
|
82
|
-
.register('ParticleEmitter', () => {
|
|
83
|
-
const em = editor.engine.entityManager;
|
|
84
|
-
|
|
85
|
-
const particleEmitterSystem = em.getSystem(ParticleEmitterSystem);
|
|
86
|
-
|
|
87
|
-
return new ParticleEmitterController(particleEmitterSystem);
|
|
88
|
-
})
|
|
89
|
-
.register('SoundEmitter', () => new SoundEmitterController(editor.engine))
|
|
90
|
-
.register('GUIElement', () => new GUIElementController())
|
|
91
|
-
.register('ViewportPosition', datify)
|
|
92
|
-
.register('AttachmentSockets', () => new AttachmentSocketsController())
|
|
93
|
-
;
|
|
94
|
-
}
|
|
18
|
+
import { buildObjectEditorFromRegistry } from "../../ecs/component/createObjectEditor.js";
|
|
19
|
+
import { isDefined } from "../../../core/process/matcher/Matchers.js";
|
|
95
20
|
|
|
96
21
|
|
|
97
22
|
class EntityEditor extends View {
|
|
@@ -122,7 +47,11 @@ class EntityEditor extends View {
|
|
|
122
47
|
|
|
123
48
|
const vComponentList = new EmptyView({ classList: ['component-list'] });
|
|
124
49
|
|
|
125
|
-
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
* @type {Map<any, TypeEditor>}
|
|
53
|
+
*/
|
|
54
|
+
const registry = editor.type_editor_registry;
|
|
126
55
|
|
|
127
56
|
/**
|
|
128
57
|
*
|
|
@@ -130,6 +59,14 @@ class EntityEditor extends View {
|
|
|
130
59
|
*/
|
|
131
60
|
this.componentControllers = new Map();
|
|
132
61
|
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
* @returns {EntityComponentDataset}
|
|
65
|
+
*/
|
|
66
|
+
function get_dataset() {
|
|
67
|
+
return self.entityManager.get().dataset;
|
|
68
|
+
}
|
|
69
|
+
|
|
133
70
|
function addComponent(event) {
|
|
134
71
|
if (event.instance === undefined) {
|
|
135
72
|
return;
|
|
@@ -153,13 +90,8 @@ class EntityEditor extends View {
|
|
|
153
90
|
}
|
|
154
91
|
|
|
155
92
|
function watchEntity(entity) {
|
|
156
|
-
/**
|
|
157
|
-
*
|
|
158
|
-
* @type {EntityManager}
|
|
159
|
-
*/
|
|
160
|
-
const entityManager = self.entityManager.get();
|
|
161
93
|
|
|
162
|
-
const dataset =
|
|
94
|
+
const dataset = get_dataset();
|
|
163
95
|
|
|
164
96
|
if (!dataset.entityExists(entity)) {
|
|
165
97
|
//doesn't exist, nothing to do
|
|
@@ -172,13 +104,8 @@ class EntityEditor extends View {
|
|
|
172
104
|
}
|
|
173
105
|
|
|
174
106
|
function unwatchEntity(entity) {
|
|
175
|
-
/**
|
|
176
|
-
*
|
|
177
|
-
* @type {EntityManager}
|
|
178
|
-
*/
|
|
179
|
-
const entityManager = self.entityManager.get();
|
|
180
107
|
|
|
181
|
-
const dataset =
|
|
108
|
+
const dataset = get_dataset();
|
|
182
109
|
|
|
183
110
|
if (!dataset.entityExists(entity)) {
|
|
184
111
|
//doesn't exist, nothing to do
|
|
@@ -198,13 +125,15 @@ class EntityEditor extends View {
|
|
|
198
125
|
|
|
199
126
|
self.components.reset();
|
|
200
127
|
|
|
201
|
-
const entityManager = self.entityManager.get();
|
|
202
128
|
|
|
203
129
|
/**
|
|
204
130
|
*
|
|
205
131
|
* @type {EntityComponentDataset}
|
|
206
132
|
*/
|
|
207
|
-
const dataset =
|
|
133
|
+
const dataset = get_dataset();
|
|
134
|
+
|
|
135
|
+
unattachedTypes.reset();
|
|
136
|
+
unattachedTypes.addAll(dataset.getComponentTypeMap().map(a => a.typeName).filter(isDefined));
|
|
208
137
|
|
|
209
138
|
const components = dataset.getAllComponents(entity);
|
|
210
139
|
components.forEach(function (c) {
|
|
@@ -221,74 +150,67 @@ class EntityEditor extends View {
|
|
|
221
150
|
|
|
222
151
|
const unattachedTypes = new List();
|
|
223
152
|
|
|
224
|
-
|
|
153
|
+
/**
|
|
154
|
+
* @template T
|
|
155
|
+
* @param {T} component
|
|
156
|
+
*/
|
|
157
|
+
function handleComponentAdded(component) {
|
|
158
|
+
let view;
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
view = buildObjectEditorFromRegistry(component, registry);
|
|
162
|
+
} catch (e) {
|
|
163
|
+
view = new LabelView(`ERROR: ${e.message}\n${e.stack}`);
|
|
164
|
+
|
|
165
|
+
console.warn('Failed to build editor', e);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
if (!view) {
|
|
169
|
+
view = new LabelView('EMPTY');
|
|
170
|
+
}
|
|
171
|
+
|
|
225
172
|
/**
|
|
226
173
|
*
|
|
227
174
|
* @type {EntityManager}
|
|
228
175
|
*/
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
//all systems
|
|
232
|
-
const allTypeNames = em.getComponentTypeMap()
|
|
233
|
-
.map(c => c.typeName)
|
|
234
|
-
.filter(typeName => typeof typeName === "string")
|
|
235
|
-
.sort();
|
|
236
|
-
|
|
237
|
-
function has(typeName) {
|
|
238
|
-
let result = false;
|
|
239
|
-
|
|
240
|
-
self.components.visitFirstMatch(c => c.constructor.typeName === typeName, () => result = true);
|
|
176
|
+
const entityManager = self.entityManager.getValue();
|
|
241
177
|
|
|
242
|
-
|
|
243
|
-
}
|
|
178
|
+
const entityId = self.model.getValue();
|
|
244
179
|
|
|
245
|
-
|
|
246
|
-
|
|
180
|
+
const vBody = new EmptyView({
|
|
181
|
+
classList: ['body']
|
|
182
|
+
});
|
|
183
|
+
vBody.addChild(view);
|
|
247
184
|
|
|
248
|
-
|
|
249
|
-
unattachedTypes.addAll(unattachedTypeNames);
|
|
250
|
-
}
|
|
185
|
+
const controlView = new ComponentControlView(entityId, component, entityManager, vBody);
|
|
251
186
|
|
|
252
|
-
/**
|
|
253
|
-
* @template T
|
|
254
|
-
* @param {T} component
|
|
255
|
-
*/
|
|
256
|
-
function handleComponentAdded(component) {
|
|
257
|
-
// console.log("handleComponentAdded",c);
|
|
258
187
|
const Klass = component.constructor;
|
|
259
|
-
if (!self.componentControllers.has(Klass)) {
|
|
260
|
-
/**
|
|
261
|
-
*
|
|
262
|
-
* @type {EntityManager}
|
|
263
|
-
*/
|
|
264
|
-
const entityManager = self.entityManager.getValue();
|
|
265
188
|
|
|
266
|
-
|
|
189
|
+
controlView.signal.remove.add(function () {
|
|
267
190
|
|
|
268
|
-
|
|
191
|
+
editor.actions.mark('Remove Component');
|
|
192
|
+
editor.actions.do(new ComponentRemoveAction(entityId, Klass));
|
|
193
|
+
});
|
|
269
194
|
|
|
270
|
-
controlView.signal.remove.add(function () {
|
|
271
195
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
});
|
|
196
|
+
vComponentList.addChild(controlView);
|
|
197
|
+
self.componentControllers.set(component, controlView);
|
|
275
198
|
|
|
199
|
+
unattachedTypes.removeOneOf(Klass.typeName);
|
|
276
200
|
|
|
277
|
-
self.componentControllers.set(Klass, controlView);
|
|
278
|
-
vComponentList.addChild(controlView);
|
|
279
|
-
}
|
|
280
|
-
updateList();
|
|
281
201
|
}
|
|
282
202
|
|
|
283
203
|
function handleComponentRemoved(c) {
|
|
284
204
|
// console.log("handleComponentRemoved",c);
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
self.componentControllers.delete(key);
|
|
205
|
+
if (self.componentControllers.has(c)) {
|
|
206
|
+
const controlView = self.componentControllers.get(c);
|
|
207
|
+
self.componentControllers.delete(c);
|
|
289
208
|
vComponentList.removeChild(controlView);
|
|
209
|
+
|
|
210
|
+
const Klass = c.constructor;
|
|
211
|
+
|
|
212
|
+
unattachedTypes.add(Klass.typeName);
|
|
290
213
|
}
|
|
291
|
-
updateList();
|
|
292
214
|
}
|
|
293
215
|
|
|
294
216
|
this.components.on.added.add(handleComponentAdded);
|
|
@@ -12,7 +12,7 @@ import Vector2 from "../../../../core/geom/Vector2.js";
|
|
|
12
12
|
* @param {GridObstacle} grid
|
|
13
13
|
* @param {HTMLCanvasElement} canvas
|
|
14
14
|
*/
|
|
15
|
-
function
|
|
15
|
+
export function buildGridObstaclePreview(grid, canvas) {
|
|
16
16
|
const source = new Sampler2D(grid.data, 1, grid.size.x, grid.size.y);
|
|
17
17
|
|
|
18
18
|
const target = Sampler2D.uint8(1, canvas.width, canvas.height);
|
|
@@ -43,7 +43,7 @@ export class GridObstacleController extends View {
|
|
|
43
43
|
|
|
44
44
|
vPreview.size.set(200, 200);
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
buildGridObstaclePreview(model, vPreview.el);
|
|
47
47
|
|
|
48
48
|
self.addChild(vPreview);
|
|
49
49
|
|
|
@@ -57,13 +57,13 @@ export class GridObstacleController extends View {
|
|
|
57
57
|
|
|
58
58
|
controller.add(proxy, 'size');
|
|
59
59
|
controller.addAction(() => {
|
|
60
|
-
|
|
60
|
+
buildGridObstaclePreview(model, vPreview.el);
|
|
61
61
|
}, 'update preview');
|
|
62
62
|
|
|
63
63
|
proxy.size.onChanged.add((x, y) => {
|
|
64
64
|
model.resize(x, y);
|
|
65
65
|
|
|
66
|
-
|
|
66
|
+
buildGridObstaclePreview(model, vPreview.el);
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -5,17 +5,19 @@ export class NumberController extends View {
|
|
|
5
5
|
/**
|
|
6
6
|
*
|
|
7
7
|
* @param {string[]} [classList]
|
|
8
|
+
* @param {number} [value]
|
|
9
|
+
* @param figures
|
|
8
10
|
*/
|
|
9
|
-
constructor({ classList = [] } = {}) {
|
|
11
|
+
constructor({ classList = [], value = 0, figures = 6 } = {}) {
|
|
10
12
|
super();
|
|
11
13
|
|
|
12
|
-
const
|
|
14
|
+
const _value = new Vector1(value);
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
*
|
|
16
18
|
* @type {Vector1}
|
|
17
19
|
*/
|
|
18
|
-
this.value =
|
|
20
|
+
this.value = _value;
|
|
19
21
|
|
|
20
22
|
const el = document.createElement('input');
|
|
21
23
|
this.el = el;
|
|
@@ -23,6 +25,8 @@ export class NumberController extends View {
|
|
|
23
25
|
classList.forEach(c => this.addClass(c));
|
|
24
26
|
|
|
25
27
|
el.setAttribute('type', 'text');
|
|
28
|
+
el.setAttribute('spellcheck', false);
|
|
29
|
+
el.setAttribute('size', 2);
|
|
26
30
|
|
|
27
31
|
el.classList.add('ui-number-controller');
|
|
28
32
|
|
|
@@ -30,23 +34,31 @@ export class NumberController extends View {
|
|
|
30
34
|
|
|
31
35
|
function data2view() {
|
|
32
36
|
|
|
33
|
-
if(lockForward){
|
|
37
|
+
if (lockForward) {
|
|
34
38
|
return;
|
|
35
39
|
}
|
|
36
40
|
|
|
37
|
-
|
|
41
|
+
const num_value = _value.getValue();
|
|
42
|
+
|
|
43
|
+
let str = num_value;
|
|
44
|
+
|
|
45
|
+
if (Math.abs(num_value) > 0 && Math.abs(num_value % 1).toString().length > (figures + 2)) {
|
|
46
|
+
str = num_value.toFixed(figures);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
el.value = str;
|
|
38
50
|
|
|
39
51
|
}
|
|
40
52
|
|
|
41
53
|
function view2data() {
|
|
42
54
|
lockForward = true;
|
|
43
55
|
|
|
44
|
-
|
|
56
|
+
_value.set(parseFloat(el.value));
|
|
45
57
|
|
|
46
58
|
lockForward = false;
|
|
47
59
|
}
|
|
48
60
|
|
|
49
|
-
|
|
61
|
+
_value.process(data2view);
|
|
50
62
|
|
|
51
63
|
el.addEventListener('input', view2data);
|
|
52
64
|
}
|
|
@@ -26,7 +26,7 @@ export class NodeGraphCamera {
|
|
|
26
26
|
|
|
27
27
|
const v2 = new Vector2();
|
|
28
28
|
|
|
29
|
-
const CONNECTION_WIDTH =
|
|
29
|
+
const CONNECTION_WIDTH = 3;
|
|
30
30
|
const PORT_BEND_OFFSET_X = 100;
|
|
31
31
|
|
|
32
32
|
export class NodeGraphView extends View {
|
|
@@ -116,7 +116,7 @@ export class NodeGraphView extends View {
|
|
|
116
116
|
|
|
117
117
|
tempConnection.enabled = true;
|
|
118
118
|
tempConnection.endpoint = endpoint;
|
|
119
|
-
|
|
119
|
+
|
|
120
120
|
},
|
|
121
121
|
dragEnd() {
|
|
122
122
|
tempConnection.enabled = false;
|
|
@@ -45,20 +45,18 @@ export class NodeView extends View {
|
|
|
45
45
|
classList: ['name']
|
|
46
46
|
});
|
|
47
47
|
|
|
48
|
-
const
|
|
48
|
+
const v2_prev_position = new Vector2();
|
|
49
49
|
|
|
50
50
|
const self = this;
|
|
51
51
|
|
|
52
52
|
if (enableDrag) {
|
|
53
53
|
const draggableAspect = new DraggableAspect({
|
|
54
54
|
el: this.el,
|
|
55
|
-
dragStart() {
|
|
56
|
-
|
|
55
|
+
dragStart(p) {
|
|
56
|
+
v2_prev_position.copy(p);
|
|
57
57
|
},
|
|
58
|
-
drag(position, origin) {
|
|
59
|
-
const p =
|
|
60
|
-
|
|
61
|
-
p.sub(origin);
|
|
58
|
+
drag(position, origin, delta) {
|
|
59
|
+
const p = delta.clone();
|
|
62
60
|
|
|
63
61
|
const scale = new Vector2(1, 1);
|
|
64
62
|
|
|
@@ -66,9 +64,9 @@ export class NodeView extends View {
|
|
|
66
64
|
|
|
67
65
|
p.divide(scale);
|
|
68
66
|
|
|
69
|
-
p.add(v2_origin);
|
|
67
|
+
// p.add(v2_origin);
|
|
70
68
|
|
|
71
|
-
visual.dimensions.position.
|
|
69
|
+
visual.dimensions.position.add(p);
|
|
72
70
|
}
|
|
73
71
|
});
|
|
74
72
|
this.on.linked.add(draggableAspect.start, draggableAspect);
|
|
@@ -12,7 +12,7 @@ export class AssetManager {
|
|
|
12
12
|
|
|
13
13
|
clear(): void
|
|
14
14
|
|
|
15
|
-
registerLoader<T>(type: string, loader: AssetLoader<T>): Promise<
|
|
15
|
+
registerLoader<T>(type: string, loader: AssetLoader<T>): Promise<AssetLoader<T>>
|
|
16
16
|
|
|
17
17
|
unregisterLoader(type: string): Promise<void>
|
|
18
18
|
|