@woosh/meep-engine 3.16.0 → 3.17.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/particles/effect/ParticleEffectDocument.d.ts +21 -6
- package/editor/particles/effect/ParticleEffectDocument.d.ts.map +1 -1
- package/editor/particles/effect/ParticleEffectDocument.js +38 -17
- package/editor/view/node-graph/NodeGraphClipboard.d.ts +186 -0
- package/editor/view/node-graph/NodeGraphClipboard.d.ts.map +1 -0
- package/editor/view/node-graph/NodeGraphClipboard.js +231 -0
- package/editor/view/node-graph/NodeGraphEditorView.d.ts +59 -1
- package/editor/view/node-graph/NodeGraphEditorView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphEditorView.js +248 -5
- package/editor/view/node-graph/NodeGraphView.d.ts.map +1 -1
- package/editor/view/node-graph/NodeGraphView.js +84 -8
- package/editor/view/node-graph/actions/connection_bind_actions.d.ts +23 -0
- package/editor/view/node-graph/actions/connection_bind_actions.d.ts.map +1 -0
- package/editor/view/node-graph/actions/connection_bind_actions.js +39 -0
- package/editor/view/particles/effect/ParticleCodeEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleCodeEditorView.js +4 -3
- package/editor/view/particles/effect/ParticleCurveEditorView.d.ts +20 -0
- package/editor/view/particles/effect/ParticleCurveEditorView.d.ts.map +1 -0
- package/editor/view/particles/effect/ParticleCurveEditorView.js +574 -0
- package/editor/view/particles/effect/ParticleEmitterInspectorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleEmitterInspectorView.js +27 -1
- package/editor/view/particles/effect/ParticleGradientEditorView.d.ts +24 -0
- package/editor/view/particles/effect/ParticleGradientEditorView.d.ts.map +1 -0
- package/editor/view/particles/effect/ParticleGradientEditorView.js +472 -0
- package/editor/view/particles/effect/ParticleGraphEditorView.d.ts +5 -0
- package/editor/view/particles/effect/ParticleGraphEditorView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleGraphEditorView.js +61 -31
- package/editor/view/particles/effect/ParticleNodeParametersView.d.ts.map +1 -1
- package/editor/view/particles/effect/ParticleNodeParametersView.js +33 -0
- package/editor/view/particles/effect/particle-editor.css +123 -35
- package/package.json +1 -1
- package/src/core/binary/allocator/OffsetAllocator.d.ts +25 -16
- package/src/core/binary/allocator/OffsetAllocator.d.ts.map +1 -1
- package/src/core/binary/allocator/OffsetAllocator.js +10 -1
- package/src/core/collection/array/typed/float32_array_hash.d.ts +21 -0
- package/src/core/collection/array/typed/float32_array_hash.d.ts.map +1 -0
- package/src/core/collection/array/typed/float32_array_hash.js +38 -0
- package/src/core/graph/csr/CSRGraph.d.ts +8 -1
- package/src/core/graph/csr/CSRGraph.d.ts.map +1 -1
- package/src/core/graph/csr/CSRGraph.js +14 -6
- package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts +24 -0
- package/src/core/model/node-graph/visual/layout/LayoutProblem.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/LayoutProblem.js +27 -0
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts +26 -0
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js +28 -0
- package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts +92 -3
- package/src/core/model/node-graph/visual/layout/RouteGrid.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteGrid.js +405 -242
- package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts +50 -5
- package/src/core/model/node-graph/visual/layout/RouteSearch.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteSearch.js +160 -24
- package/src/core/model/node-graph/visual/layout/RouteSet.d.ts +7 -0
- package/src/core/model/node-graph/visual/layout/RouteSet.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/RouteSet.js +8 -0
- package/src/core/model/node-graph/visual/layout/layout_assign_coordinates.js +9 -3
- package/src/core/model/node-graph/visual/layout/layout_build_problem.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_build_problem.js +7 -0
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts +9 -3
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_insert_lanes.js +17 -3
- package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts +9 -6
- package/src/core/model/node-graph/visual/layout/layout_node_graph.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_node_graph.js +49 -7
- package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts +11 -1
- package/src/core/model/node-graph/visual/layout/layout_order_layers.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/layout_order_layers.js +135 -16
- package/src/core/model/node-graph/visual/layout/route_connections.d.ts +29 -0
- package/src/core/model/node-graph/visual/layout/route_connections.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_connections.js +716 -309
- package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts +3 -2
- package/src/core/model/node-graph/visual/layout/route_grid_build.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_grid_build.js +7 -15
- package/src/core/model/node-graph/visual/layout/route_nudge.d.ts +6 -0
- package/src/core/model/node-graph/visual/layout/route_nudge.d.ts.map +1 -1
- package/src/core/model/node-graph/visual/layout/route_nudge.js +42 -13
- package/src/engine/animation/AnimationUtils.js +246 -246
- package/src/engine/animation/Animations.js +74 -74
- package/src/engine/control/first-person/FirstPersonPlayerControllerSystem.js +2078 -2078
- package/src/engine/ecs/EventType.d.ts +0 -1
- package/src/engine/ecs/EventType.js +1 -26
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.d.ts.map +1 -1
- package/src/engine/ecs/ik/ik_write_local_rotation.js +3 -7
- package/src/engine/ecs/parent/EntityNode.d.ts.map +1 -1
- package/src/engine/ecs/parent/EntityNode.js +4 -9
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.d.ts.map +1 -1
- package/src/engine/ecs/terrain/ecs/cling/ClingToTerrainSystem.js +360 -364
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts +41 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.js +40 -0
- package/src/engine/ecs/transform/TRANSFORM64_MIGRATION_PLAN_2026_09_04.md +8 -0
- package/src/engine/ecs/transform/t64_announce_change.d.ts +10 -7
- package/src/engine/ecs/transform/t64_announce_change.d.ts.map +1 -1
- package/src/engine/ecs/transform/t64_announce_change.js +12 -12
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts +30 -0
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts.map +1 -0
- package/src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.js +29 -0
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.d.ts.map +1 -1
- package/src/engine/ecs/transform-attachment/TransformAttachmentSystem.js +13 -21
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.d.ts.map +1 -1
- package/src/engine/graphics/ecs/sprite/SpriteSystemPE.js +4 -8
- package/src/engine/graphics3/LightSystem.d.ts.map +1 -1
- package/src/engine/graphics3/LightSystem.js +4 -8
- package/src/engine/graphics3/MeshSystem.d.ts.map +1 -1
- package/src/engine/graphics3/MeshSystem.js +9 -19
- package/src/engine/graphics3/ParticleEmitterSystem.d.ts.map +1 -1
- package/src/engine/graphics3/ParticleEmitterSystem.js +4 -8
- package/src/engine/graphics3/ShadedGeometrySystem.d.ts.map +1 -1
- package/src/engine/graphics3/ShadedGeometrySystem.js +4 -10
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts +1 -1
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.d.ts.map +1 -1
- package/src/engine/grid/transform2grid/Transform2GridPositionSystem.js +4 -8
- package/src/engine/intelligence/behavior/ecs/OrbitingBehavior.js +218 -218
- package/src/engine/physics/ecs/PhysicsSystem.d.ts.map +1 -1
- package/src/engine/physics/ecs/PhysicsSystem.js +2 -5
- package/src/engine/sound/ecs/SoundListenerSystem.d.ts.map +1 -1
- package/src/engine/sound/ecs/SoundListenerSystem.js +6 -8
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts +0 -4
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.d.ts.map +1 -1
- package/src/engine/sound/simulation/ecs/AcousticSimulationSystem.js +5 -11
- package/src/shade/playground/particle_editor/README.md +43 -2
- package/src/shade/playground/particle_system/particle_prototype.d.ts.map +1 -1
- package/src/shade/playground/particle_system/particle_prototype.js +4 -5
- package/src/shade/playground/particle_system/particle_scene.js +4 -4
- package/src/shade/renderer/Renderer.d.ts.map +1 -1
- package/src/shade/renderer/Renderer.js +13 -1
- package/src/shade/renderer/particles/DESIGN.md +104 -19
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts +64 -50
- package/src/shade/renderer/particles/GPUParticleSystem.d.ts.map +1 -1
- package/src/shade/renderer/particles/GPUParticleSystem.js +176 -78
- package/src/shade/renderer/particles/ParticleConstants.d.ts +59 -23
- package/src/shade/renderer/particles/ParticleConstants.d.ts.map +1 -1
- package/src/shade/renderer/particles/ParticleConstants.js +66 -23
- package/src/shade/renderer/particles/ParticleRenderMode.d.ts +19 -0
- package/src/shade/renderer/particles/ParticleRenderMode.d.ts.map +1 -0
- package/src/shade/renderer/particles/ParticleRenderMode.js +33 -0
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_STRUCT.js +167 -166
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts +37 -0
- package/src/shade/renderer/particles/data/particle_emitter_record.d.ts.map +1 -0
- package/src/shade/renderer/particles/data/particle_emitter_record.js +109 -0
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.d.ts +3 -3
- package/src/shade/renderer/particles/graph/ParticleGroupBuilder.js +303 -303
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts +18 -0
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeDescription.js +152 -133
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts +0 -11
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/ParticleNodeRegistry.js +720 -621
- package/src/shade/renderer/particles/graph/compile_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/compile_particle_graph.js +8 -3
- package/src/shade/renderer/particles/graph/flatten_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/flatten_particle_graph.js +244 -213
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_builtin_groups.js +6 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_geometry.js +294 -319
- package/src/shade/renderer/particles/graph/groups/particle_groups_noise.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/particle_groups_noise.js +524 -517
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts +22 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/groups/particle_groups_psrdnoise.js +517 -0
- package/src/shade/renderer/particles/graph/groups/simplex_reference.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/groups/simplex_reference.js +185 -159
- package/src/shade/renderer/particles/graph/make_particle_group.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/make_particle_group.js +2 -20
- package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts +17 -0
- package/src/shade/renderer/particles/graph/particle_compare_ops.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/particle_compare_ops.js +22 -0
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts +28 -8
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_graph_diagnostic.js +49 -25
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts +40 -0
- package/src/shade/renderer/particles/graph/particle_node_parameters.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_parameters.js +312 -234
- package/src/shade/renderer/particles/graph/particle_node_presentation.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/particle_node_presentation.js +59 -3
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts +230 -0
- package/src/shade/renderer/particles/graph/particle_ramp.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph/particle_ramp.js +403 -0
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts +7 -1
- package/src/shade/renderer/particles/graph/validate_particle_graph.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph/validate_particle_graph.js +66 -10
- package/src/shade/renderer/particles/graph_particles.d.ts +23 -69
- package/src/shade/renderer/particles/graph_particles.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles.js +105 -262
- package/src/shade/renderer/particles/graph_particles_avboit.d.ts.map +1 -1
- package/src/shade/renderer/particles/graph_particles_avboit.js +3 -2
- package/src/shade/renderer/particles/graph_particles_billboard.d.ts +37 -0
- package/src/shade/renderer/particles/graph_particles_billboard.d.ts.map +1 -0
- package/src/shade/renderer/particles/graph_particles_billboard.js +93 -0
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts +51 -22
- package/src/shade/renderer/particles/isa/InstructionStream.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/InstructionStream.js +98 -38
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts +49 -8
- package/src/shade/renderer/particles/isa/ParticleProgram.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleProgram.js +95 -150
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts +306 -64
- package/src/shade/renderer/particles/isa/ParticleVMISA.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/ParticleVMISA.js +505 -136
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts +36 -12
- package/src/shade/renderer/particles/isa/particle_assembly.d.ts.map +1 -1
- package/src/shade/renderer/particles/isa/particle_assembly.js +354 -139
- package/src/shade/renderer/particles/isa/validate_particle_program.d.ts +9 -0
- package/src/shade/renderer/particles/isa/validate_particle_program.d.ts.map +1 -0
- package/src/shade/renderer/particles/isa/validate_particle_program.js +128 -0
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts +23 -0
- package/src/shade/renderer/particles/layout/ParticleLayout.d.ts.map +1 -1
- package/src/shade/renderer/particles/layout/ParticleLayout.js +68 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts +77 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/optimize_particle_program_vector.js +219 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts +83 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_extract.js +283 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts +133 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_graph.js +334 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts +117 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_groups.js +70 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts +97 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lift.js +462 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts +116 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_lower.js +687 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts +57 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_pack.js +860 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts +115 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/dag/particle_vector_rules.js +264 -0
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts +81 -42
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/optimize_particle_program.js +477 -478
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts +100 -0
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/particle_integer_bounds.js +236 -0
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts +139 -59
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_analysis.js +764 -647
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts +40 -7
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_equivalence.js +376 -213
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts +30 -3
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_program_fuzz.js +337 -223
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts +24 -38
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/particle_vm_semantics.js +166 -206
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts +99 -0
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_allocate_registers.js +313 -0
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts +3 -2
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_dedup_constants.js +198 -197
- package/src/shade/renderer/particles/optimizer/pass_eliminate_dead_code.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts +19 -0
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_fold_constants.js +678 -561
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts +22 -0
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_inline_constants.js +221 -0
- package/src/shade/renderer/particles/optimizer/pass_narrow_widths.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_narrow_widths.js +63 -72
- package/src/shade/renderer/particles/optimizer/pass_pack_registers.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_pack_registers.js +87 -86
- package/src/shade/renderer/particles/optimizer/pass_peephole.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_peephole.js +392 -271
- package/src/shade/renderer/particles/optimizer/pass_propagate_copies.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_propagate_copies.js +361 -268
- package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts +4 -0
- package/src/shade/renderer/particles/optimizer/pass_schedule.d.ts.map +1 -0
- package/src/shade/renderer/particles/optimizer/pass_schedule.js +244 -0
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.d.ts.map +1 -1
- package/src/shade/renderer/particles/optimizer/pass_share_subexpressions.js +154 -151
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts +20 -0
- package/src/shade/renderer/particles/particle_test_fixtures.d.ts.map +1 -1
- package/src/shade/renderer/particles/particle_test_fixtures.js +229 -203
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts +99 -25
- package/src/shade/renderer/particles/runtime/EmitterRegistry.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/EmitterRegistry.js +438 -286
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts +109 -0
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/GPUParticleEmitterContext.js +127 -0
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts +87 -102
- package/src/shade/renderer/particles/runtime/ParticleEmitter.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ParticleEmitter.js +184 -163
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts +26 -0
- package/src/shade/renderer/particles/runtime/ProgramArena.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts +130 -0
- package/src/shade/renderer/particles/runtime/ProgramHeap.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/ProgramHeap.js +595 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts +91 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.d.ts.map +1 -0
- package/src/shade/renderer/particles/runtime/ProgramPlacement.js +106 -0
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts +5 -2
- package/src/shade/renderer/particles/runtime/create_particle_effect.d.ts.map +1 -1
- package/src/shade/renderer/particles/runtime/create_particle_effect.js +22 -19
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts +28 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_emit_step.js +136 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts +35 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/chunk_particle_simulate_step.js +133 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts +18 -9
- package/src/shade/renderer/particles/shaders/shader_particle_emit.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_emit.js +20 -80
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts +33 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_emit_wide.js +114 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts +8 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.d.ts.map +1 -1
- package/src/shade/renderer/particles/shaders/shader_particle_simulate.js +33 -101
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts +45 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/shaders/shader_particle_simulate_wide.js +123 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts +51 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.d.ts.map +1 -0
- package/src/shade/renderer/particles/sort/graph_particle_sort.js +120 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts +6 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/PARTICLE_VM_CONTEXT_STRUCT.js +16 -0
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts +4 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/ParticleVMReference.js +261 -140
- package/src/shade/renderer/particles/vm/chunk_particle_vm.d.ts.map +1 -1
- package/src/shade/renderer/particles/vm/chunk_particle_vm.js +217 -255
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts +43 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_fast.js +55 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts +62 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.d.ts.map +1 -0
- package/src/shade/renderer/particles/vm/chunk_particle_vm_registers_wide.js +86 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v3f.js +32 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts +9 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/math/chunk_mod_v4f.js +19 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/README.md +65 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts +24 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2.js +83 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts +25 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_hash.js +42 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts +31 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise2_kernel.js +80 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts +26 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3.js +109 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts +38 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_kernel.js +129 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts +21 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_permute.js +35 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts +19 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_skew.js +28 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts +13 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_psrdnoise3_unskew.js +22 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts +22 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise2.js +59 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts +23 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.d.ts.map +1 -0
- package/src/shade/renderer/shader/chunk/noise/psrdnoise/chunk_srdnoise3.js +74 -0
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts +34 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/ComputeShaderEmulator.js +41 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts +3 -2
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.d.ts.map +1 -1
- package/src/shade/wgsl/emulator/WGSLJavaScriptCompiler.js +49 -10
- package/src/view/minimap/dom/MinimapCameraView.d.ts.map +1 -1
- package/src/view/minimap/dom/MinimapCameraView.js +4 -9
- package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts +0 -15
- package/src/core/model/node-graph/visual/layout/BoxLayoutSpec.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts +0 -45
- package/src/core/model/node-graph/visual/layout/ConnectedBoxLayouter.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts +0 -24
- package/src/core/model/node-graph/visual/layout/ConnectionEndpointLayoutSpec.d.ts.map +0 -1
- package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts +0 -19
- package/src/core/model/node-graph/visual/layout/ConnectionLayoutSpec.d.ts.map +0 -1
- package/src/engine/ecs/transform/__probe.d.ts +0 -4
- package/src/engine/ecs/transform/__probe.d.ts.map +0 -1
- package/src/engine/ecs/util/hideEntityGracefully.d.ts +0 -9
- package/src/engine/ecs/util/hideEntityGracefully.d.ts.map +0 -1
- package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts +0 -27
- package/src/shade/renderer/buffer/table/gpu_database_emulator_image.d.ts.map +0 -1
- package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts +0 -14
- package/src/shade/renderer/particles/cull/chunk_particle_cull.d.ts.map +0 -1
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts +0 -156
- package/src/shade/renderer/particles/data/PARTICLE_EMITTER_LAYOUT.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/Emitter.d.ts +0 -219
- package/src/shade/renderer/particles/runtime/Emitter.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts +0 -77
- package/src/shade/renderer/particles/runtime/ParticleSpawnScheduler.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/ProgramArena.js +0 -155
- package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts +0 -15
- package/src/shade/renderer/particles/runtime/emitter_database_image.d.ts.map +0 -1
- package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts +0 -34
- package/src/shade/renderer/particles/runtime/spawn_request_encoding.d.ts.map +0 -1
- package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts +0 -32
- package/src/shade/renderer/particles/shaders/chunk_particle_context.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleNodeParametersView.d.ts","sourceRoot":"","sources":["../../../../../editor/view/particles/effect/ParticleNodeParametersView.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ParticleNodeParametersView.d.ts","sourceRoot":"","sources":["../../../../../editor/view/particles/effect/ParticleNodeParametersView.js"],"names":[],"mappings":"AAqCA;IAOI;;;;;;OAMG;IACH;QALyG,MAAM,EAApG,OAAO,qDAAqD,EAAE,sBAAsB;QAE9D,IAAI;QACG,MAAM,SAA1B,MAAM;OA6BzB;IAxBG,mBAAuC;IAIvC;;OAEG;IACH,mBAAgB;;CA0cvB;iBAlgBgB,8BAA8B"}
|
|
@@ -9,6 +9,8 @@ import {
|
|
|
9
9
|
PARTICLE_WIDTH_OPTIONS,
|
|
10
10
|
particle_node_parameters,
|
|
11
11
|
} from "../../../../src/shade/renderer/particles/graph/particle_node_parameters.js";
|
|
12
|
+
import { ParticleCurveEditorView } from "./ParticleCurveEditorView.js";
|
|
13
|
+
import { ParticleGradientEditorView } from "./ParticleGradientEditorView.js";
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
16
|
* The controls for one particle node's static parameters, drawn inside the node.
|
|
@@ -138,6 +140,16 @@ export class ParticleNodeParametersView extends View {
|
|
|
138
140
|
control = this.#buildIntegerControl(parameter, value, write);
|
|
139
141
|
break;
|
|
140
142
|
|
|
143
|
+
case PARTICLE_PARAMETER_KIND.CURVE:
|
|
144
|
+
control = editor_control(new ParticleCurveEditorView({ read: value, write }));
|
|
145
|
+
break;
|
|
146
|
+
|
|
147
|
+
case PARTICLE_PARAMETER_KIND.GRADIENT:
|
|
148
|
+
control = editor_control(
|
|
149
|
+
new ParticleGradientEditorView({ read: value, write, alpha: parameter.alpha !== false })
|
|
150
|
+
);
|
|
151
|
+
break;
|
|
152
|
+
|
|
141
153
|
default:
|
|
142
154
|
throw new Error(
|
|
143
155
|
`Particle parameter '${parameter.name}' has kind '${parameter.kind}', which has no control.`
|
|
@@ -507,6 +519,27 @@ export class ParticleNodeParametersView extends View {
|
|
|
507
519
|
}
|
|
508
520
|
}
|
|
509
521
|
|
|
522
|
+
/**
|
|
523
|
+
* A control that is a view of its own, in the shape the rest of this file uses.
|
|
524
|
+
*
|
|
525
|
+
* The two ramp editors are not built out of `<input>`s the way the rest are — a gradient is a canvas
|
|
526
|
+
* with a lane of stops under it — so they arrive already made, and all that is left is to say how a
|
|
527
|
+
* value written from outside reaches them. That is by re-reading rather than by being handed the
|
|
528
|
+
* value: both hold a working copy that a drag is written into, and re-reading is what throws that
|
|
529
|
+
* copy away in favour of what the node now says. The node's parameter is already set by the time its
|
|
530
|
+
* signal arrives, so there is nothing stale to read.
|
|
531
|
+
*
|
|
532
|
+
* @param {{refresh: function():void}} editor
|
|
533
|
+
* @returns {{view: View, write: function(*):void, refresh: function():void}}
|
|
534
|
+
*/
|
|
535
|
+
function editor_control(editor) {
|
|
536
|
+
return {
|
|
537
|
+
view: editor,
|
|
538
|
+
write: () => editor.refresh(),
|
|
539
|
+
refresh: () => editor.refresh(),
|
|
540
|
+
};
|
|
541
|
+
}
|
|
542
|
+
|
|
510
543
|
/**
|
|
511
544
|
* @param {string} type
|
|
512
545
|
* @returns {HTMLInputElement}
|
|
@@ -139,6 +139,11 @@
|
|
|
139
139
|
color: var(--meep-warning, #e2b341);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
+
/* a note is not a problem: it reads as quietly as the graph it is about is running */
|
|
143
|
+
.problem.info {
|
|
144
|
+
opacity: 0.7;
|
|
145
|
+
}
|
|
146
|
+
|
|
142
147
|
.problems > .none {
|
|
143
148
|
padding: 4px 10px;
|
|
144
149
|
color: var(--meep-fg-muted, #9da0a3);
|
|
@@ -153,6 +158,12 @@
|
|
|
153
158
|
border-color: var(--meep-warning, #e2b341);
|
|
154
159
|
}
|
|
155
160
|
|
|
161
|
+
/* nothing reads this node, so it is not compiled — drawn as the aside it is, not as a fault */
|
|
162
|
+
.ui-node-view.has-info {
|
|
163
|
+
opacity: 0.6;
|
|
164
|
+
border-style: dashed;
|
|
165
|
+
}
|
|
166
|
+
|
|
156
167
|
/* --- particle node parameters --------------------------------------------------------------- */
|
|
157
168
|
|
|
158
169
|
.ui-particle-node-parameters {
|
|
@@ -199,6 +210,83 @@
|
|
|
199
210
|
color: var(--meep-error, #ff7a7a);
|
|
200
211
|
}
|
|
201
212
|
|
|
213
|
+
/*
|
|
214
|
+
The ramp controls — a gradient's strip and a curve's plot.
|
|
215
|
+
|
|
216
|
+
Both are wider than a label and a field side by side, so their rows put the label on its own line
|
|
217
|
+
and give the control the width of the node. The canvases scale with the row rather than holding
|
|
218
|
+
their drawn size: the graph is zoomable, and a control that stayed 208 pixels while everything
|
|
219
|
+
around it grew would be the one thing on the node that could not be read.
|
|
220
|
+
*/
|
|
221
|
+
|
|
222
|
+
.ui-particle-node-parameters .parameter-row.kind-gradient,
|
|
223
|
+
.ui-particle-node-parameters .parameter-row.kind-curve {
|
|
224
|
+
flex-direction: column;
|
|
225
|
+
align-items: stretch;
|
|
226
|
+
gap: 3px;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.ui-particle-gradient,
|
|
230
|
+
.ui-particle-curve {
|
|
231
|
+
display: flex;
|
|
232
|
+
flex-direction: column;
|
|
233
|
+
gap: 3px;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
.ui-particle-gradient > .strip,
|
|
237
|
+
.ui-particle-curve > .plot {
|
|
238
|
+
display: block;
|
|
239
|
+
width: 100%;
|
|
240
|
+
height: auto;
|
|
241
|
+
border: 1px solid var(--meep-graph-node-border, #363c46);
|
|
242
|
+
border-radius: 3px;
|
|
243
|
+
background: var(--meep-graph-input-bg, #171b21);
|
|
244
|
+
/* the strip and the plot are both dragged in, and a drag that selects text is a drag that fights */
|
|
245
|
+
touch-action: none;
|
|
246
|
+
user-select: none;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.ui-particle-gradient > .stop-fields,
|
|
250
|
+
.ui-particle-curve > .key-fields {
|
|
251
|
+
display: flex;
|
|
252
|
+
gap: 2px;
|
|
253
|
+
align-items: center;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.ui-particle-gradient .swatch {
|
|
257
|
+
flex: 1 1 auto;
|
|
258
|
+
min-width: 3em;
|
|
259
|
+
padding: 0;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.ui-particle-gradient .alpha,
|
|
263
|
+
.ui-particle-gradient .position {
|
|
264
|
+
flex: 0 0 auto;
|
|
265
|
+
width: 4em;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.ui-particle-curve .tangents {
|
|
269
|
+
flex: 1 1 auto;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.ui-particle-gradient .remove,
|
|
273
|
+
.ui-particle-curve .remove {
|
|
274
|
+
flex: 0 0 auto;
|
|
275
|
+
width: 1.8em;
|
|
276
|
+
padding: 2px 0;
|
|
277
|
+
border: 1px solid var(--meep-graph-node-border, #363c46);
|
|
278
|
+
border-radius: 3px;
|
|
279
|
+
background: var(--meep-graph-input-bg, #171b21);
|
|
280
|
+
color: var(--meep-fg, #d6d8da);
|
|
281
|
+
cursor: pointer;
|
|
282
|
+
line-height: 1;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.ui-particle-gradient .remove:hover,
|
|
286
|
+
.ui-particle-curve .remove:hover {
|
|
287
|
+
background: rgba(255, 255, 255, 0.08);
|
|
288
|
+
}
|
|
289
|
+
|
|
202
290
|
/* --- code layer ----------------------------------------------------------------------------- */
|
|
203
291
|
|
|
204
292
|
.ui-particle-code-editor > .header > .authority {
|
|
@@ -519,38 +607,38 @@
|
|
|
519
607
|
border-style: dashed;
|
|
520
608
|
opacity: 0.92;
|
|
521
609
|
}
|
|
522
|
-
|
|
523
|
-
/*
|
|
524
|
-
A group's name, while an author is inside it. Sized to the text rather than to a form field: it
|
|
525
|
-
lives in a breadcrumb and has to read as part of one until it is being typed in.
|
|
526
|
-
*/
|
|
527
|
-
.ui-particle-graph-editor .group-trail input.rename {
|
|
528
|
-
width: 11ch;
|
|
529
|
-
padding: 1px 4px;
|
|
530
|
-
border: 1px solid transparent;
|
|
531
|
-
border-radius: 3px;
|
|
532
|
-
background: transparent;
|
|
533
|
-
color: inherit;
|
|
534
|
-
font: inherit;
|
|
535
|
-
}
|
|
536
|
-
|
|
537
|
-
.ui-particle-graph-editor .group-trail input.rename:hover {
|
|
538
|
-
border-color: var(--meep-graph-node-border, #363c46);
|
|
539
|
-
}
|
|
540
|
-
|
|
541
|
-
.ui-particle-graph-editor .group-trail input.rename:focus {
|
|
542
|
-
outline: none;
|
|
543
|
-
border-color: var(--meep-accent, #2d7dd2);
|
|
544
|
-
background: var(--meep-graph-input-bg, #171b21);
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
/* a command that does not apply to what is selected; the title says why */
|
|
548
|
-
.toolbar-button.disabled {
|
|
549
|
-
opacity: 0.45;
|
|
550
|
-
cursor: default;
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
.toolbar-button.disabled:hover {
|
|
554
|
-
border-color: transparent;
|
|
555
|
-
color: var(--meep-fg-muted, #9da0a3);
|
|
556
|
-
}
|
|
610
|
+
|
|
611
|
+
/*
|
|
612
|
+
A group's name, while an author is inside it. Sized to the text rather than to a form field: it
|
|
613
|
+
lives in a breadcrumb and has to read as part of one until it is being typed in.
|
|
614
|
+
*/
|
|
615
|
+
.ui-particle-graph-editor .group-trail input.rename {
|
|
616
|
+
width: 11ch;
|
|
617
|
+
padding: 1px 4px;
|
|
618
|
+
border: 1px solid transparent;
|
|
619
|
+
border-radius: 3px;
|
|
620
|
+
background: transparent;
|
|
621
|
+
color: inherit;
|
|
622
|
+
font: inherit;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
.ui-particle-graph-editor .group-trail input.rename:hover {
|
|
626
|
+
border-color: var(--meep-graph-node-border, #363c46);
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
.ui-particle-graph-editor .group-trail input.rename:focus {
|
|
630
|
+
outline: none;
|
|
631
|
+
border-color: var(--meep-accent, #2d7dd2);
|
|
632
|
+
background: var(--meep-graph-input-bg, #171b21);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
/* a command that does not apply to what is selected; the title says why */
|
|
636
|
+
.toolbar-button.disabled {
|
|
637
|
+
opacity: 0.45;
|
|
638
|
+
cursor: default;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
.toolbar-button.disabled:hover {
|
|
642
|
+
border-color: transparent;
|
|
643
|
+
color: var(--meep-fg-muted, #9da0a3);
|
|
644
|
+
}
|
package/package.json
CHANGED
|
@@ -1,4 +1,29 @@
|
|
|
1
1
|
export const ALLOCATOR_NO_SPACE: 4294967295;
|
|
2
|
+
/**
|
|
3
|
+
* One range handed out by {@link OffsetAllocator#allocate}: where it starts, plus the allocator's
|
|
4
|
+
* own handle on it. A caller keeps the whole object to give back to {@link OffsetAllocator#free},
|
|
5
|
+
* or keeps {@link Allocation#metadata} alone and releases it through
|
|
6
|
+
* {@link OffsetAllocator#free_node}.
|
|
7
|
+
*
|
|
8
|
+
* An {@link Allocation} whose `offset` is {@link ALLOCATOR_NO_SPACE} is a failed allocation, not a
|
|
9
|
+
* range at offset zero — the allocator is out of space, or out of nodes to describe one with.
|
|
10
|
+
*/
|
|
11
|
+
export class Allocation {
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param {number} offset
|
|
15
|
+
* @param {number} metadata
|
|
16
|
+
* @return {Allocation}
|
|
17
|
+
*/
|
|
18
|
+
static from(offset: number, metadata: number): Allocation;
|
|
19
|
+
/**
|
|
20
|
+
* @readonly
|
|
21
|
+
* @type {Allocation}
|
|
22
|
+
*/
|
|
23
|
+
static readonly INVALID: Allocation;
|
|
24
|
+
offset: number;
|
|
25
|
+
metadata: number;
|
|
26
|
+
}
|
|
2
27
|
/**
|
|
3
28
|
* Fast hard realtime O(1) offset allocator with minimal fragmentation.
|
|
4
29
|
*
|
|
@@ -106,22 +131,6 @@ export class OffsetAllocator {
|
|
|
106
131
|
#private;
|
|
107
132
|
}
|
|
108
133
|
import { RowFirstTable } from "../../collection/table/RowFirstTable.js";
|
|
109
|
-
declare class Allocation {
|
|
110
|
-
/**
|
|
111
|
-
*
|
|
112
|
-
* @param {number} offset
|
|
113
|
-
* @param {number} metadata
|
|
114
|
-
* @return {Allocation}
|
|
115
|
-
*/
|
|
116
|
-
static from(offset: number, metadata: number): Allocation;
|
|
117
|
-
/**
|
|
118
|
-
* @readonly
|
|
119
|
-
* @type {Allocation}
|
|
120
|
-
*/
|
|
121
|
-
static readonly INVALID: Allocation;
|
|
122
|
-
offset: number;
|
|
123
|
-
metadata: number;
|
|
124
|
-
}
|
|
125
134
|
declare class StorageReport {
|
|
126
135
|
totalFreeSpace: number;
|
|
127
136
|
largestFreeRegion: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OffsetAllocator.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/allocator/OffsetAllocator.js"],"names":[],"mappings":"AAaA,4CAA6C;
|
|
1
|
+
{"version":3,"file":"OffsetAllocator.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/allocator/OffsetAllocator.js"],"names":[],"mappings":"AAaA,4CAA6C;AAoC7C;;;;;;;;GAQG;AACH;IAII;;;;;OAKG;IACH,oBAJW,MAAM,YACN,MAAM,GACL,UAAU,CASrB;IAED;;;OAGG;IACH,yBAFU,UAAU,CAEoE;IAtBxF,eAA4B;IAC5B,iBAA8B;CAsBjC;AA6BD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;IAwDI;;;;OAIG;IACH,kBAHW,MAAM,cACN,MAAM,EAYhB;IAtED;;;;OAIG;IACH,MAFU,MAAM,CAEP;IAET;;;;OAIG;IACH,WAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,aAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,aAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,UAFU,UAAU,CAEoB;IAExC;;;OAGG;IACH,YAFU,WAAW,CAEuB;IAE5C;;;OAGG;IACH,OAFU,aAAa,CAEmB;IAE1C;;OAEG;IACH,WAFU,WAAW,CAEX;IAEV;;;OAGG;IACH,YAFU,MAAM,CAED;IAmBf;;;;OAIG;IACH,eAHW,MAAM,GACJ,UAAU,CAkGtB;IAED;;;;;;;OAOG;IACH,sBAHW,MAAM,QAqFhB;IAED;;;OAGG;IACH,iBAHW,UAAU,QAUpB;IAqID;;OAEG;IACH,cA4BC;IAED;;;OAGG;IACH,iBAFY,aAAa,CA2BxB;;CACJ;8BA/lB6B,yCAAyC;AAqGvE;IACI,uBAAkB;IAClB,0BAAqB;CACxB"}
|
|
@@ -47,7 +47,16 @@ const NODE_FIELD_NEIGHBOR_PREV = 4;
|
|
|
47
47
|
const NODE_FIELD_NEIGHBOR_NEXT = 5;
|
|
48
48
|
const NODE_FIELD_FLAGS = 6;
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
/**
|
|
51
|
+
* One range handed out by {@link OffsetAllocator#allocate}: where it starts, plus the allocator's
|
|
52
|
+
* own handle on it. A caller keeps the whole object to give back to {@link OffsetAllocator#free},
|
|
53
|
+
* or keeps {@link Allocation#metadata} alone and releases it through
|
|
54
|
+
* {@link OffsetAllocator#free_node}.
|
|
55
|
+
*
|
|
56
|
+
* An {@link Allocation} whose `offset` is {@link ALLOCATOR_NO_SPACE} is a failed allocation, not a
|
|
57
|
+
* range at offset zero — the allocator is out of space, or out of nodes to describe one with.
|
|
58
|
+
*/
|
|
59
|
+
export class Allocation {
|
|
51
60
|
offset = ALLOCATOR_NO_SPACE;
|
|
52
61
|
metadata = ALLOCATOR_NO_SPACE;
|
|
53
62
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hash of a float32 range, in the terms `===` compares floats in — the counterpart to
|
|
3
|
+
* {@link uint32_array_hash} for arrays that hold values rather than words.
|
|
4
|
+
*
|
|
5
|
+
* The hash reads each element's raw IEEE-754 word, because a float carries distinctions no
|
|
6
|
+
* integer conversion keeps: `0.5` and `0.25` are different weights and truncate to the same
|
|
7
|
+
* integer. The one place where the bits say more than the value does is the sign of a zero, and
|
|
8
|
+
* there the bits are wrong for this purpose: `-0 === +0`, so anything hashing them apart would
|
|
9
|
+
* disagree with the equality it is meant to accompany. The zero is folded onto `+0`, and every
|
|
10
|
+
* other value keeps its exact bit pattern.
|
|
11
|
+
*
|
|
12
|
+
* A NaN hashes by its bits and so hashes equal to itself, which `===` does not — that direction
|
|
13
|
+
* is free, as unequal values are always allowed to collide.
|
|
14
|
+
*
|
|
15
|
+
* @param {Float32Array} array
|
|
16
|
+
* @param {number} offset first index to hash
|
|
17
|
+
* @param {number} length index to stop before, matching {@link uint32_array_hash}
|
|
18
|
+
* @return {number}
|
|
19
|
+
*/
|
|
20
|
+
export function float32_array_hash(array: Float32Array, offset: number, length: number): number;
|
|
21
|
+
//# sourceMappingURL=float32_array_hash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"float32_array_hash.d.ts","sourceRoot":"","sources":["../../../../../../src/core/collection/array/typed/float32_array_hash.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,0CALW,YAAY,UACZ,MAAM,UACN,MAAM,GACL,MAAM,CAoBjB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hash of a float32 range, in the terms `===` compares floats in — the counterpart to
|
|
3
|
+
* {@link uint32_array_hash} for arrays that hold values rather than words.
|
|
4
|
+
*
|
|
5
|
+
* The hash reads each element's raw IEEE-754 word, because a float carries distinctions no
|
|
6
|
+
* integer conversion keeps: `0.5` and `0.25` are different weights and truncate to the same
|
|
7
|
+
* integer. The one place where the bits say more than the value does is the sign of a zero, and
|
|
8
|
+
* there the bits are wrong for this purpose: `-0 === +0`, so anything hashing them apart would
|
|
9
|
+
* disagree with the equality it is meant to accompany. The zero is folded onto `+0`, and every
|
|
10
|
+
* other value keeps its exact bit pattern.
|
|
11
|
+
*
|
|
12
|
+
* A NaN hashes by its bits and so hashes equal to itself, which `===` does not — that direction
|
|
13
|
+
* is free, as unequal values are always allowed to collide.
|
|
14
|
+
*
|
|
15
|
+
* @param {Float32Array} array
|
|
16
|
+
* @param {number} offset first index to hash
|
|
17
|
+
* @param {number} length index to stop before, matching {@link uint32_array_hash}
|
|
18
|
+
* @return {number}
|
|
19
|
+
*/
|
|
20
|
+
export function float32_array_hash(array, offset, length) {
|
|
21
|
+
// a Float32Array is 4-byte aligned by construction, so this view always exists
|
|
22
|
+
const bits = new Uint32Array(array.buffer, array.byteOffset, array.length);
|
|
23
|
+
|
|
24
|
+
let hash = length;
|
|
25
|
+
|
|
26
|
+
for (let i = offset; i < length; ++i) {
|
|
27
|
+
|
|
28
|
+
const value = array[i];
|
|
29
|
+
|
|
30
|
+
// `value === 0` is true for both zeroes and for nothing else
|
|
31
|
+
const word = value === 0 ? 0 : bits[i];
|
|
32
|
+
|
|
33
|
+
hash = ((hash << 5) - hash) + word;
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return hash;
|
|
38
|
+
}
|
|
@@ -149,7 +149,14 @@ export class CSRGraph {
|
|
|
149
149
|
*/
|
|
150
150
|
clone(): CSRGraph;
|
|
151
151
|
/**
|
|
152
|
-
* Structural equality — same shape and same
|
|
152
|
+
* Structural equality — same shape and same contents.
|
|
153
|
+
*
|
|
154
|
+
* The three integer arrays compare as words. `edge_weights` compares as floats, by value: a
|
|
155
|
+
* weight is a measurement, and every consumer of it — `sum_of_edge_weights`, the distance-field
|
|
156
|
+
* and shortest-path relaxations, metis partitioning — only ever adds or compares it, so `-0` and
|
|
157
|
+
* `+0` are one weight and no graph behaves differently for holding one rather than the other.
|
|
158
|
+
* {@link CSRGraph#hash} folds them together to match.
|
|
159
|
+
*
|
|
153
160
|
* @param {CSRGraph} other
|
|
154
161
|
* @returns {boolean}
|
|
155
162
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CSRGraph.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/csr/CSRGraph.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CSRGraph.d.ts","sourceRoot":"","sources":["../../../../../src/core/graph/csr/CSRGraph.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH;IAyQI;;;;;;;;;;;;;OAaG;IACH,gCAPW,MAAM,kBACN,UAAU,MAAM,CAAC,aACjB,UAAU,MAAM,CAAC,gBACjB,UAAU,MAAM,CAAC,mBACjB,UAAU,MAAM,CAAC,GACf,QAAQ,CAgBpB;IApSD;;;;OAIG;IACH,0BAJW,MAAM,oBACN,MAAM,EAgEhB;IAzDG,qBAAqB;IACrB,cADW,MAAM,CACe;IAChC,qBAAqB;IACrB,kBADW,MAAM,CACuB;IAOxC;;;;OAIG;IACH,sBAA4D;IAI5D;;;;OAIG;IACH,gBAFU,WAAW,CAEmE;IAGxF;;;OAGG;IACH,WAFU,WAAW,CAE8D;IAGnF;;;;;OAKG;IACH,cAFU,YAAY,CAEiE;IAGvF;;;;;OAKG;IACH,gBAFU,WAAW,CAE+D;IAGpF;;;OAGG;IACH,qBAFU,MAAM,CAEuB;IAG3C;;;;OAIG;IACH,+BAEC;IAED;;;;OAIG;IACH,kBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,uBAFa,MAAM,CAUlB;IAED;;OAEG;IACH,oCAQC;IAED;;;;;;;;;;;;;;;OAeG;IACH,yCAFW,MAAM,QA6ChB;IAED;;;;;;;;;OASG;IACH,YAFW,QAAQ,QASlB;IAED;;;OAGG;IACH,SAFa,QAAQ,CAMpB;IAED;;;;;;;;;;;OAWG;IACH,cAHW,QAAQ,GACN,OAAO,CAyBnB;IAED;;;;;OAKG;IACH,QAFa,MAAM,CAiBlB;IAiCL;;;;;OAKG;IACH,qBAFU,OAAO,CAEY;CAR5B"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assert } from "../../assert.js";
|
|
2
|
+
import { float32_array_hash } from "../../collection/array/typed/float32_array_hash.js";
|
|
2
3
|
import { is_typed_array_equals } from "../../collection/array/typed/is_typed_array_equals.js";
|
|
3
4
|
import { uint32_array_hash } from "../../collection/array/typed/uint32_array_hash.js";
|
|
4
5
|
|
|
@@ -241,7 +242,14 @@ export class CSRGraph {
|
|
|
241
242
|
}
|
|
242
243
|
|
|
243
244
|
/**
|
|
244
|
-
* Structural equality — same shape and same
|
|
245
|
+
* Structural equality — same shape and same contents.
|
|
246
|
+
*
|
|
247
|
+
* The three integer arrays compare as words. `edge_weights` compares as floats, by value: a
|
|
248
|
+
* weight is a measurement, and every consumer of it — `sum_of_edge_weights`, the distance-field
|
|
249
|
+
* and shortest-path relaxations, metis partitioning — only ever adds or compares it, so `-0` and
|
|
250
|
+
* `+0` are one weight and no graph behaves differently for holding one rather than the other.
|
|
251
|
+
* {@link CSRGraph#hash} folds them together to match.
|
|
252
|
+
*
|
|
245
253
|
* @param {CSRGraph} other
|
|
246
254
|
* @returns {boolean}
|
|
247
255
|
*/
|
|
@@ -284,11 +292,11 @@ export class CSRGraph {
|
|
|
284
292
|
// adjacency_length); otherwise two logically-equal graphs with differently-sized buffers hash unequally.
|
|
285
293
|
h = ((h << 5) - h) + uint32_array_hash(this.edge_addresses, 0, this.edge_addresses.length);
|
|
286
294
|
h = ((h << 5) - h) + uint32_array_hash(this.adjacency, 0, this.adjacency.length);
|
|
287
|
-
// edge_weights is float32
|
|
288
|
-
//
|
|
289
|
-
//
|
|
290
|
-
|
|
291
|
-
h = ((h << 5) - h) +
|
|
295
|
+
// edge_weights is float32, and `equals` compares it as float32 — by value, because a weight
|
|
296
|
+
// is a measurement. Hashing it must speak the same language: `float32_array_hash` keeps the
|
|
297
|
+
// bits that carry a value (so fractional weights stay distinct) and folds the one bit that
|
|
298
|
+
// does not, the sign of a zero, which `-0 === +0` makes invisible to `equals`.
|
|
299
|
+
h = ((h << 5) - h) + float32_array_hash(this.edge_weights, 0, this.edge_weights.length);
|
|
292
300
|
h = ((h << 5) - h) + uint32_array_hash(this.vertex_weights, 0, this.vertex_weights.length);
|
|
293
301
|
return h | 0;
|
|
294
302
|
}
|
|
@@ -105,5 +105,29 @@ export class LayoutProblem {
|
|
|
105
105
|
* @type {Uint8Array}
|
|
106
106
|
*/
|
|
107
107
|
to_side: Uint8Array;
|
|
108
|
+
/**
|
|
109
|
+
* Link of {@link boxes} each connection became, or -1 for a connection from a node to itself.
|
|
110
|
+
*
|
|
111
|
+
* Only meaningful until the lanes go in: {@link layout_insert_lanes} rewrites the links, and
|
|
112
|
+
* what this indexes afterwards is the links as they were before it.
|
|
113
|
+
*
|
|
114
|
+
* @type {Int32Array}
|
|
115
|
+
*/
|
|
116
|
+
link_of_connection: Int32Array;
|
|
117
|
+
/**
|
|
118
|
+
* Where each connection's lanes begin in {@link lane_box}. Length `connection_count + 1`, and
|
|
119
|
+
* all zero — no lanes at all — until placement has run: a graph being re-routed where it stands
|
|
120
|
+
* has no lanes, and its wires find their own way.
|
|
121
|
+
* @type {Int32Array}
|
|
122
|
+
*/
|
|
123
|
+
lane_start: Int32Array;
|
|
124
|
+
/**
|
|
125
|
+
* Lane boxes, grouped by connection and in the order the wire passes through them: the lane in
|
|
126
|
+
* the column after the source first, the one before the target last. A wire is routed through
|
|
127
|
+
* its lanes, column by column, so this is what turns the placement's crossing-minimised order
|
|
128
|
+
* into the drawing rather than leaving the router to rediscover it.
|
|
129
|
+
* @type {Int32Array}
|
|
130
|
+
*/
|
|
131
|
+
lane_box: Int32Array;
|
|
108
132
|
}
|
|
109
133
|
//# sourceMappingURL=LayoutProblem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LayoutProblem.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/LayoutProblem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LayoutProblem.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/LayoutProblem.js"],"names":[],"mappings":"AA2IA;;;;;;;;;;;;GAYG;AACH,mCANW,MAAM,MACN,MAAM,SACN,MAAM,UACN,MAAM,GACJ,MAAM,CAiBlB;AAvKD;;;GAGG;AACH,+BAFU,MAAM,CAEkB;AAElC;;GAEG;AACH,gCAFU,MAAM,CAEmB;AAEnC;;GAEG;AACH,8BAFU,MAAM,CAEiB;AAEjC;;GAEG;AACH,iCAFU,MAAM,CAEoB;AAEpC;;;;;;;;;;;;;;;GAeG;AACH;IAEI;;OAEG;IACH,sBAAa;IAEb;;;;OAIG;IACH,YAFU,MAAM,CAED;IAEf;;;OAGG;IACH,aAFU,UAAU,CAED;IAEnB;;OAEG;IACH,kBAFU,MAAM,CAEK;IAErB;;OAEG;IACH,eAFU,UAAU,CAEC;IAErB;;;OAGG;IACH,UAFU,UAAU,CAEJ;IAEhB;;OAEG;IACH,QAFU,UAAU,CAEN;IAEd;;;;OAIG;IACH,SAFU,YAAY,CAEP;IAEf;;OAEG;IACH,SAFU,YAAY,CAEP;IAEf;;OAEG;IACH,OAFU,YAAY,CAET;IAEb;;OAEG;IACH,OAFU,YAAY,CAET;IAEb;;;OAGG;IACH,WAFU,UAAU,CAEH;IAEjB;;OAEG;IACH,SAFU,UAAU,CAEL;IAEf;;;;;;;OAOG;IACH,oBAFU,UAAU,CAEM;IAE1B;;;;;OAKG;IACH,YAFU,UAAU,CAEF;IAElB;;;;;;OAMG;IACH,UAFU,UAAU,CAEJ;CACnB"}
|
|
@@ -108,6 +108,33 @@ export class LayoutProblem {
|
|
|
108
108
|
* @type {Uint8Array}
|
|
109
109
|
*/
|
|
110
110
|
to_side = null;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Link of {@link boxes} each connection became, or -1 for a connection from a node to itself.
|
|
114
|
+
*
|
|
115
|
+
* Only meaningful until the lanes go in: {@link layout_insert_lanes} rewrites the links, and
|
|
116
|
+
* what this indexes afterwards is the links as they were before it.
|
|
117
|
+
*
|
|
118
|
+
* @type {Int32Array}
|
|
119
|
+
*/
|
|
120
|
+
link_of_connection = null;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Where each connection's lanes begin in {@link lane_box}. Length `connection_count + 1`, and
|
|
124
|
+
* all zero — no lanes at all — until placement has run: a graph being re-routed where it stands
|
|
125
|
+
* has no lanes, and its wires find their own way.
|
|
126
|
+
* @type {Int32Array}
|
|
127
|
+
*/
|
|
128
|
+
lane_start = null;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Lane boxes, grouped by connection and in the order the wire passes through them: the lane in
|
|
132
|
+
* the column after the source first, the one before the target last. A wire is routed through
|
|
133
|
+
* its lanes, column by column, so this is what turns the placement's crossing-minimised order
|
|
134
|
+
* into the drawing rather than leaving the router to rediscover it.
|
|
135
|
+
* @type {Int32Array}
|
|
136
|
+
*/
|
|
137
|
+
lane_box = null;
|
|
111
138
|
}
|
|
112
139
|
|
|
113
140
|
/**
|
|
@@ -71,6 +71,32 @@ export class NodeGraphLayoutOptions {
|
|
|
71
71
|
* @type {number}
|
|
72
72
|
*/
|
|
73
73
|
bend_penalty: number;
|
|
74
|
+
/**
|
|
75
|
+
* What crossing another wire costs the router, in the same units as length.
|
|
76
|
+
*
|
|
77
|
+
* A crossing is the one thing in a drawing that costs the reader more than a bend: following a
|
|
78
|
+
* wire through a corner is easy, following it through another wire means deciding which of the
|
|
79
|
+
* two lines leaving the crossing is the one being followed. So this is above the bend penalty,
|
|
80
|
+
* and a wire will go about half a channel out of its way to avoid one crossing — and any
|
|
81
|
+
* distance at all to avoid six, which is what the reader would otherwise get from a wire that
|
|
82
|
+
* had a route of the same length round the outside and no reason to take it.
|
|
83
|
+
*
|
|
84
|
+
* @type {number}
|
|
85
|
+
*/
|
|
86
|
+
crossing_penalty: number;
|
|
87
|
+
/**
|
|
88
|
+
* Rounds of improvement after the negotiation has settled.
|
|
89
|
+
*
|
|
90
|
+
* Negotiation asks a wire to look again only when it is sharing a line, so a wire that was
|
|
91
|
+
* routed early — before most of what it now crosses existed — and shares nothing is never asked
|
|
92
|
+
* again. Each round here re-routes every wire in turn with all the others present, keeping the
|
|
93
|
+
* new route only where it is cheaper, and stops as soon as a round changes nothing. Cost can
|
|
94
|
+
* only fall, so this always settles; the number here is what bounds it on a graph where it is
|
|
95
|
+
* slow to.
|
|
96
|
+
*
|
|
97
|
+
* @type {number}
|
|
98
|
+
*/
|
|
99
|
+
improvement_rounds: number;
|
|
74
100
|
/**
|
|
75
101
|
* Rounds of rip-up and reroute.
|
|
76
102
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeGraphLayoutOptions.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH;
|
|
1
|
+
{"version":3,"file":"NodeGraphLayoutOptions.d.ts","sourceRoot":"","sources":["../../../../../../../src/core/model/node-graph/visual/layout/NodeGraphLayoutOptions.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH;IA8KI;;;OAGG;IACH,wBAHW,QAAQ,sBAAsB,CAAC,GAC7B,sBAAsB,CAclC;IA5LD;;;;;;;OAOG;IACH,WAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;;;OAOG;IACH,UAFU,MAAM,CAEF;IAEd;;;;;;;;;;OAUG;IACH,WAFU,MAAM,CAED;IAEf;;;;;;;;OAQG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;;;;;;;OASG;IACH,cAFU,MAAM,CAEE;IAElB;;;;;;;;;;;OAWG;IACH,kBAFU,MAAM,CAEM;IAEtB;;;;;;;;;;;OAWG;IACH,oBAFU,MAAM,CAEO;IAEvB;;;;;;;;;;;;;OAaG;IACH,uBAFU,MAAM,CAEU;IAE1B;;;;;;;;;OASG;IACH,cAFU,MAAM,CAEC;IAEjB;;;OAGG;IACH,gBAFU,MAAM,CAEG;IAEnB;;;;;;;;OAQG;IACH,cAFU,MAAM,CAEC;IAEjB;;;;;;;OAOG;IACH,eAFU,MAAM,CAEG;IAEnB;;;OAGG;IACH,cAFU,MAAM,CAEC;IAEjB;;;;;;;;OAQG;IACH,mBAFU,MAAM,CAEY;IAE5B;;;;;;;OAOG;IACH,sBAFU,MAAM,CAEc;CAmBjC"}
|
|
@@ -73,6 +73,34 @@ export class NodeGraphLayoutOptions {
|
|
|
73
73
|
*/
|
|
74
74
|
bend_penalty = 40;
|
|
75
75
|
|
|
76
|
+
/**
|
|
77
|
+
* What crossing another wire costs the router, in the same units as length.
|
|
78
|
+
*
|
|
79
|
+
* A crossing is the one thing in a drawing that costs the reader more than a bend: following a
|
|
80
|
+
* wire through a corner is easy, following it through another wire means deciding which of the
|
|
81
|
+
* two lines leaving the crossing is the one being followed. So this is above the bend penalty,
|
|
82
|
+
* and a wire will go about half a channel out of its way to avoid one crossing — and any
|
|
83
|
+
* distance at all to avoid six, which is what the reader would otherwise get from a wire that
|
|
84
|
+
* had a route of the same length round the outside and no reason to take it.
|
|
85
|
+
*
|
|
86
|
+
* @type {number}
|
|
87
|
+
*/
|
|
88
|
+
crossing_penalty = 60;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Rounds of improvement after the negotiation has settled.
|
|
92
|
+
*
|
|
93
|
+
* Negotiation asks a wire to look again only when it is sharing a line, so a wire that was
|
|
94
|
+
* routed early — before most of what it now crosses existed — and shares nothing is never asked
|
|
95
|
+
* again. Each round here re-routes every wire in turn with all the others present, keeping the
|
|
96
|
+
* new route only where it is cheaper, and stops as soon as a round changes nothing. Cost can
|
|
97
|
+
* only fall, so this always settles; the number here is what bounds it on a graph where it is
|
|
98
|
+
* slow to.
|
|
99
|
+
*
|
|
100
|
+
* @type {number}
|
|
101
|
+
*/
|
|
102
|
+
improvement_rounds = 4;
|
|
103
|
+
|
|
76
104
|
/**
|
|
77
105
|
* Rounds of rip-up and reroute.
|
|
78
106
|
*
|