@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
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity event announcing that an entity's {@link Transform64} was mutated in place.
|
|
3
|
+
*
|
|
4
|
+
* A {@link Transform64} carries no signals - that is the point of it - so a write is invisible
|
|
5
|
+
* until someone says so, and saying so is the writer's job. Everything that used to wake on
|
|
6
|
+
* `position.onChanged` waits on this instead: the render placement, the parent/child sync,
|
|
7
|
+
* fog-of-war, the grid mirror, the spatial audio refit.
|
|
8
|
+
*
|
|
9
|
+
* The name is the whole message, and there is no payload. A listener is registered against one
|
|
10
|
+
* entity and one event name, so by the time it runs it already knows which entity moved, that what
|
|
11
|
+
* moved was the transform, and which instance that is - it was handed the instance when it linked.
|
|
12
|
+
* Anything sent alongside would only be handing back what the listener already holds, at the price
|
|
13
|
+
* of an `if` at the top of every listener to discard the dispatches meant for somebody else.
|
|
14
|
+
*
|
|
15
|
+
* Announce with {@link t64_announce_change}, once per group of writes:
|
|
16
|
+
*
|
|
17
|
+
* ```
|
|
18
|
+
* transform.setRotation(x, y, z, w);
|
|
19
|
+
* transform.updateMatrix();
|
|
20
|
+
*
|
|
21
|
+
* t64_announce_change(ecd, entity);
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Deliberately coarse - it says *that* the transform changed, not *what* changed inside it. A
|
|
25
|
+
* transform rewritten wholesale, as {@link Transform64#multiplyTransforms} rewrites one, has no
|
|
26
|
+
* finer answer to give, and a per-channel axis running beside this one would be a second mechanism
|
|
27
|
+
* describing one write. Waking on a superset of what you care about is expected: a consumer woken
|
|
28
|
+
* by a scale write when it only tracks translation does redundant work, not wrong work. Where that
|
|
29
|
+
* is too expensive, that one consumer keeps a copy and compares against it.
|
|
30
|
+
*
|
|
31
|
+
* @type {string}
|
|
32
|
+
*
|
|
33
|
+
* @see t64_announce_change
|
|
34
|
+
* @see TRANSFORM_ATTACHMENT_EVENT_CHANGE
|
|
35
|
+
* @see EntityComponentDataset#addEntityEventListener
|
|
36
|
+
*
|
|
37
|
+
* @author Alex Goldring
|
|
38
|
+
* @copyright Company Named Limited (c) 2026
|
|
39
|
+
*/
|
|
40
|
+
export const TRANSFORM64_EVENT_CHANGE: string;
|
|
41
|
+
//# sourceMappingURL=TRANSFORM64_EVENT_CHANGE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TRANSFORM64_EVENT_CHANGE.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/TRANSFORM64_EVENT_CHANGE.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,uCATU,MAAM,CAS8C"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity event announcing that an entity's {@link Transform64} was mutated in place.
|
|
3
|
+
*
|
|
4
|
+
* A {@link Transform64} carries no signals - that is the point of it - so a write is invisible
|
|
5
|
+
* until someone says so, and saying so is the writer's job. Everything that used to wake on
|
|
6
|
+
* `position.onChanged` waits on this instead: the render placement, the parent/child sync,
|
|
7
|
+
* fog-of-war, the grid mirror, the spatial audio refit.
|
|
8
|
+
*
|
|
9
|
+
* The name is the whole message, and there is no payload. A listener is registered against one
|
|
10
|
+
* entity and one event name, so by the time it runs it already knows which entity moved, that what
|
|
11
|
+
* moved was the transform, and which instance that is - it was handed the instance when it linked.
|
|
12
|
+
* Anything sent alongside would only be handing back what the listener already holds, at the price
|
|
13
|
+
* of an `if` at the top of every listener to discard the dispatches meant for somebody else.
|
|
14
|
+
*
|
|
15
|
+
* Announce with {@link t64_announce_change}, once per group of writes:
|
|
16
|
+
*
|
|
17
|
+
* ```
|
|
18
|
+
* transform.setRotation(x, y, z, w);
|
|
19
|
+
* transform.updateMatrix();
|
|
20
|
+
*
|
|
21
|
+
* t64_announce_change(ecd, entity);
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Deliberately coarse - it says *that* the transform changed, not *what* changed inside it. A
|
|
25
|
+
* transform rewritten wholesale, as {@link Transform64#multiplyTransforms} rewrites one, has no
|
|
26
|
+
* finer answer to give, and a per-channel axis running beside this one would be a second mechanism
|
|
27
|
+
* describing one write. Waking on a superset of what you care about is expected: a consumer woken
|
|
28
|
+
* by a scale write when it only tracks translation does redundant work, not wrong work. Where that
|
|
29
|
+
* is too expensive, that one consumer keeps a copy and compares against it.
|
|
30
|
+
*
|
|
31
|
+
* @type {string}
|
|
32
|
+
*
|
|
33
|
+
* @see t64_announce_change
|
|
34
|
+
* @see TRANSFORM_ATTACHMENT_EVENT_CHANGE
|
|
35
|
+
* @see EntityComponentDataset#addEntityEventListener
|
|
36
|
+
*
|
|
37
|
+
* @author Alex Goldring
|
|
38
|
+
* @copyright Company Named Limited (c) 2026
|
|
39
|
+
*/
|
|
40
|
+
export const TRANSFORM64_EVENT_CHANGE = "@transform64/change";
|
|
@@ -5,6 +5,14 @@ change-detection mechanism next to one the ECS already has, it proposed deleting
|
|
|
5
5
|
"no importers" evidence, and its facade would have left the abstraction layers Transform64 exists to
|
|
6
6
|
remove. This revision replaces the architecture; the survey work underneath it stands.*
|
|
7
7
|
|
|
8
|
+
*Update, 2026-09-05: the change-detection mechanism specified below - `EventType.ComponentChanged`
|
|
9
|
+
carrying `{klass, instance}` - has been replaced by one event name per component that announces
|
|
10
|
+
itself: `TRANSFORM64_EVENT_CHANGE` (`@transform64/change`) and `TRANSFORM_ATTACHMENT_EVENT_CHANGE`
|
|
11
|
+
(`@transform_attachment/change`), each sent with no payload, so a listener is woken only by the
|
|
12
|
+
thing it asked about and has nothing to filter. `EventType.ComponentChanged` is gone, and with it
|
|
13
|
+
the residual unknown about broadening it. Everything else here stands; read `ComponentChanged`
|
|
14
|
+
throughout as "the changed component's own event".*
|
|
15
|
+
|
|
8
16
|
---
|
|
9
17
|
|
|
10
18
|
## Where things stand
|
|
@@ -3,13 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* A {@link Transform64} carries no signals - that is the point of it - so a write is invisible until
|
|
5
5
|
* someone says so, and saying so is the writer's job. Every consumer that used to wake on
|
|
6
|
-
* `position.onChanged` wakes on {@link
|
|
6
|
+
* `position.onChanged` wakes on {@link TRANSFORM64_EVENT_CHANGE} instead: the render placement,
|
|
7
7
|
* the parent/child sync, fog-of-war, the grid mirror, the spatial audio refit.
|
|
8
8
|
*
|
|
9
|
-
* The announcement is deliberately coarse - it names the
|
|
9
|
+
* The announcement is deliberately coarse - it names the transform, not what changed inside it - so
|
|
10
10
|
* a consumer that only tracks translation still wakes on a scale write. That is redundant work, not
|
|
11
11
|
* wrong work, and it is what lets one call stand in for the three signals it replaces.
|
|
12
12
|
*
|
|
13
|
+
* Nothing is sent with it. The event names the transform and reaches only this entity's listeners,
|
|
14
|
+
* which is everything a listener needs to know; the instance it wants is the one it linked with.
|
|
15
|
+
*
|
|
13
16
|
* Call it once per group of writes, after the last of them and after any
|
|
14
17
|
* {@link Transform64#updateMatrix} the group owes:
|
|
15
18
|
*
|
|
@@ -17,17 +20,17 @@
|
|
|
17
20
|
* transform.setRotation(x, y, z, w);
|
|
18
21
|
* transform.updateMatrix();
|
|
19
22
|
*
|
|
20
|
-
* t64_announce_change(ecd, entity
|
|
23
|
+
* t64_announce_change(ecd, entity);
|
|
21
24
|
* ```
|
|
22
25
|
*
|
|
23
26
|
* @param {EntityComponentDataset} ecd
|
|
24
|
-
* @param {number} entity
|
|
25
|
-
* @param {Transform64} transform the instance that was written, handed to listeners as `instance`
|
|
27
|
+
* @param {number} entity the entity whose transform was written
|
|
26
28
|
* @returns {void}
|
|
27
29
|
*
|
|
30
|
+
* @see TRANSFORM64_EVENT_CHANGE
|
|
31
|
+
*
|
|
28
32
|
* @author Alex Goldring
|
|
29
33
|
* @copyright Company Named Limited (c) 2026
|
|
30
34
|
*/
|
|
31
|
-
export function t64_announce_change(ecd: EntityComponentDataset, entity: number
|
|
32
|
-
import { Transform64 } from "./Transform64.js";
|
|
35
|
+
export function t64_announce_change(ecd: EntityComponentDataset, entity: number): void;
|
|
33
36
|
//# sourceMappingURL=t64_announce_change.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"t64_announce_change.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/t64_announce_change.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"t64_announce_change.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform/t64_announce_change.js"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,yEARW,MAAM,GACJ,IAAI,CAShB"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Transform64 } from "./Transform64.js";
|
|
1
|
+
import { TRANSFORM64_EVENT_CHANGE } from "./TRANSFORM64_EVENT_CHANGE.js";
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Tell the dataset that an entity's {@link Transform64} was mutated in place.
|
|
6
5
|
*
|
|
7
6
|
* A {@link Transform64} carries no signals - that is the point of it - so a write is invisible until
|
|
8
7
|
* someone says so, and saying so is the writer's job. Every consumer that used to wake on
|
|
9
|
-
* `position.onChanged` wakes on {@link
|
|
8
|
+
* `position.onChanged` wakes on {@link TRANSFORM64_EVENT_CHANGE} instead: the render placement,
|
|
10
9
|
* the parent/child sync, fog-of-war, the grid mirror, the spatial audio refit.
|
|
11
10
|
*
|
|
12
|
-
* The announcement is deliberately coarse - it names the
|
|
11
|
+
* The announcement is deliberately coarse - it names the transform, not what changed inside it - so
|
|
13
12
|
* a consumer that only tracks translation still wakes on a scale write. That is redundant work, not
|
|
14
13
|
* wrong work, and it is what lets one call stand in for the three signals it replaces.
|
|
15
14
|
*
|
|
15
|
+
* Nothing is sent with it. The event names the transform and reaches only this entity's listeners,
|
|
16
|
+
* which is everything a listener needs to know; the instance it wants is the one it linked with.
|
|
17
|
+
*
|
|
16
18
|
* Call it once per group of writes, after the last of them and after any
|
|
17
19
|
* {@link Transform64#updateMatrix} the group owes:
|
|
18
20
|
*
|
|
@@ -20,20 +22,18 @@ import { Transform64 } from "./Transform64.js";
|
|
|
20
22
|
* transform.setRotation(x, y, z, w);
|
|
21
23
|
* transform.updateMatrix();
|
|
22
24
|
*
|
|
23
|
-
* t64_announce_change(ecd, entity
|
|
25
|
+
* t64_announce_change(ecd, entity);
|
|
24
26
|
* ```
|
|
25
27
|
*
|
|
26
28
|
* @param {EntityComponentDataset} ecd
|
|
27
|
-
* @param {number} entity
|
|
28
|
-
* @param {Transform64} transform the instance that was written, handed to listeners as `instance`
|
|
29
|
+
* @param {number} entity the entity whose transform was written
|
|
29
30
|
* @returns {void}
|
|
30
31
|
*
|
|
32
|
+
* @see TRANSFORM64_EVENT_CHANGE
|
|
33
|
+
*
|
|
31
34
|
* @author Alex Goldring
|
|
32
35
|
* @copyright Company Named Limited (c) 2026
|
|
33
36
|
*/
|
|
34
|
-
export function t64_announce_change(ecd, entity
|
|
35
|
-
ecd.sendEvent(entity,
|
|
36
|
-
klass: Transform64,
|
|
37
|
-
instance: transform
|
|
38
|
-
});
|
|
37
|
+
export function t64_announce_change(ecd, entity) {
|
|
38
|
+
ecd.sendEvent(entity, TRANSFORM64_EVENT_CHANGE);
|
|
39
39
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity event announcing that an entity's {@link TransformAttachment} was mutated in place.
|
|
3
|
+
*
|
|
4
|
+
* The other half of the spatial hierarchy from {@link TRANSFORM64_EVENT_CHANGE}, and announced for
|
|
5
|
+
* the same reason: the offset a {@link TransformAttachment} holds is plain data, so writing it says
|
|
6
|
+
* nothing, and {@link TransformAttachmentSystem} is waiting to hear that it changed before it
|
|
7
|
+
* recomposes the entity's world {@link Transform64} and everything below it.
|
|
8
|
+
*
|
|
9
|
+
* A solved bone angle comes through here rather than through the transform channel, because a
|
|
10
|
+
* bone's local pose is not a component in its own right - it lives inside the attachment.
|
|
11
|
+
*
|
|
12
|
+
* No payload, for the reason {@link TRANSFORM64_EVENT_CHANGE} carries none: the listener is already
|
|
13
|
+
* holding the attachment it linked with.
|
|
14
|
+
*
|
|
15
|
+
* ```
|
|
16
|
+
* attachment.transform.copy(pose);
|
|
17
|
+
*
|
|
18
|
+
* ecd.sendEvent(entity, TRANSFORM_ATTACHMENT_EVENT_CHANGE);
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @type {string}
|
|
22
|
+
*
|
|
23
|
+
* @see TRANSFORM64_EVENT_CHANGE
|
|
24
|
+
* @see EntityComponentDataset#addEntityEventListener
|
|
25
|
+
*
|
|
26
|
+
* @author Alex Goldring
|
|
27
|
+
* @copyright Company Named Limited (c) 2026
|
|
28
|
+
*/
|
|
29
|
+
export const TRANSFORM_ATTACHMENT_EVENT_CHANGE: string;
|
|
30
|
+
//# sourceMappingURL=TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TRANSFORM_ATTACHMENT_EVENT_CHANGE.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform-attachment/TRANSFORM_ATTACHMENT_EVENT_CHANGE.js"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,gDARU,MAAM,CAQgE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entity event announcing that an entity's {@link TransformAttachment} was mutated in place.
|
|
3
|
+
*
|
|
4
|
+
* The other half of the spatial hierarchy from {@link TRANSFORM64_EVENT_CHANGE}, and announced for
|
|
5
|
+
* the same reason: the offset a {@link TransformAttachment} holds is plain data, so writing it says
|
|
6
|
+
* nothing, and {@link TransformAttachmentSystem} is waiting to hear that it changed before it
|
|
7
|
+
* recomposes the entity's world {@link Transform64} and everything below it.
|
|
8
|
+
*
|
|
9
|
+
* A solved bone angle comes through here rather than through the transform channel, because a
|
|
10
|
+
* bone's local pose is not a component in its own right - it lives inside the attachment.
|
|
11
|
+
*
|
|
12
|
+
* No payload, for the reason {@link TRANSFORM64_EVENT_CHANGE} carries none: the listener is already
|
|
13
|
+
* holding the attachment it linked with.
|
|
14
|
+
*
|
|
15
|
+
* ```
|
|
16
|
+
* attachment.transform.copy(pose);
|
|
17
|
+
*
|
|
18
|
+
* ecd.sendEvent(entity, TRANSFORM_ATTACHMENT_EVENT_CHANGE);
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @type {string}
|
|
22
|
+
*
|
|
23
|
+
* @see TRANSFORM64_EVENT_CHANGE
|
|
24
|
+
* @see EntityComponentDataset#addEntityEventListener
|
|
25
|
+
*
|
|
26
|
+
* @author Alex Goldring
|
|
27
|
+
* @copyright Company Named Limited (c) 2026
|
|
28
|
+
*/
|
|
29
|
+
export const TRANSFORM_ATTACHMENT_EVENT_CHANGE = "@transform_attachment/change";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformAttachmentSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform-attachment/TransformAttachmentSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransformAttachmentSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/transform-attachment/TransformAttachmentSystem.js"],"names":[],"mappings":"AAyLA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH;;IAEI;;;;OAIG;IACH,mBAAgB;IAEhB;;;;;OAKG;IACH,mBAAoC;IAEpC;;;;OAIG;IACH,gBAAa;IACb,qBAAiB;IACjB,uBAAmB;IAEnB,kEAAkD;IAClD,+HAGE;IAEF;;;;OAIG;IACH,wBASC;IAED;;;;OAIG;IACH,kBAEC;IAED;;;;;OAKG;IACH,yBAYC;IAED;;;;;;;;OAQG;IACH,uBALW,MAAM,EAAE,iBACR,MAAM,UACN,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,wBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,iBAJW,mBAAmB,aACnB,WAAW,UACX,MAAM,QAsBhB;IAED;;;;;OAKG;IACH,mBAJW,mBAAmB,aACnB,WAAW,UACX,MAAM,QAkBhB;IAED,6BAoBC;CACJ;uBA9XsB,cAAc;4BAET,6BAA6B;oCAEK,0BAA0B;4CAP5C,oDAAoD"}
|
|
@@ -4,7 +4,9 @@ import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessS
|
|
|
4
4
|
import { EventType } from "../EventType.js";
|
|
5
5
|
import { EntityChildIndex } from "../hierarchy/EntityChildIndex.js";
|
|
6
6
|
import { System } from "../System.js";
|
|
7
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
7
8
|
import { Transform64 } from "../transform/Transform64.js";
|
|
9
|
+
import { TRANSFORM_ATTACHMENT_EVENT_CHANGE } from "./TRANSFORM_ATTACHMENT_EVENT_CHANGE.js";
|
|
8
10
|
import { TransformAttachment, TransformAttachmentFlags } from "./TransformAttachment.js";
|
|
9
11
|
|
|
10
12
|
/**
|
|
@@ -74,10 +76,7 @@ class UpdateContext {
|
|
|
74
76
|
Note that nothing here listens to this: reacting to your own output is a loop, which is
|
|
75
77
|
why the self-listener below is about the attachment only.
|
|
76
78
|
*/
|
|
77
|
-
this.ecd.sendEvent(this.entity,
|
|
78
|
-
klass: Transform64,
|
|
79
|
-
instance: this.transform
|
|
80
|
-
});
|
|
79
|
+
this.ecd.sendEvent(this.entity, TRANSFORM64_EVENT_CHANGE);
|
|
81
80
|
}
|
|
82
81
|
|
|
83
82
|
/**
|
|
@@ -122,30 +121,23 @@ class UpdateContext {
|
|
|
122
121
|
|
|
123
122
|
link() {
|
|
124
123
|
// Neither transform carries signals any more, so both announcements come through the
|
|
125
|
-
// dataset
|
|
126
|
-
// parent is a root somebody moved or a link
|
|
127
|
-
//
|
|
128
|
-
this
|
|
129
|
-
|
|
130
|
-
this.update();
|
|
131
|
-
}
|
|
132
|
-
};
|
|
124
|
+
// dataset, on the channel belonging to the thing that moved. The parent's pose arrives as
|
|
125
|
+
// TRANSFORM64_EVENT_CHANGE on the parent - whether it is a root somebody moved or a link
|
|
126
|
+
// whose own composition just ran; the offset arrives as TRANSFORM_ATTACHMENT_EVENT_CHANGE
|
|
127
|
+
// on this entity, from whoever wrote the attachment.
|
|
128
|
+
this.#on_parent_changed = () => this.update();
|
|
133
129
|
|
|
134
|
-
this.#on_self_changed =
|
|
135
|
-
if (event.klass === TransformAttachment) {
|
|
136
|
-
this.update();
|
|
137
|
-
}
|
|
138
|
-
};
|
|
130
|
+
this.#on_self_changed = () => this.update();
|
|
139
131
|
|
|
140
132
|
this.ecd.addEntityEventListener(
|
|
141
133
|
this.attachment.parent,
|
|
142
|
-
|
|
134
|
+
TRANSFORM64_EVENT_CHANGE,
|
|
143
135
|
this.#on_parent_changed
|
|
144
136
|
);
|
|
145
137
|
|
|
146
138
|
this.ecd.addEntityEventListener(
|
|
147
139
|
this.entity,
|
|
148
|
-
|
|
140
|
+
TRANSFORM_ATTACHMENT_EVENT_CHANGE,
|
|
149
141
|
this.#on_self_changed
|
|
150
142
|
);
|
|
151
143
|
|
|
@@ -165,7 +157,7 @@ class UpdateContext {
|
|
|
165
157
|
if (this.#on_parent_changed !== null) {
|
|
166
158
|
this.ecd.removeEntityEventListener(
|
|
167
159
|
this.attachment.parent,
|
|
168
|
-
|
|
160
|
+
TRANSFORM64_EVENT_CHANGE,
|
|
169
161
|
this.#on_parent_changed
|
|
170
162
|
);
|
|
171
163
|
|
|
@@ -175,7 +167,7 @@ class UpdateContext {
|
|
|
175
167
|
if (this.#on_self_changed !== null) {
|
|
176
168
|
this.ecd.removeEntityEventListener(
|
|
177
169
|
this.entity,
|
|
178
|
-
|
|
170
|
+
TRANSFORM_ATTACHMENT_EVENT_CHANGE,
|
|
179
171
|
this.#on_self_changed
|
|
180
172
|
);
|
|
181
173
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpriteSystemPE.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/sprite/SpriteSystemPE.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SpriteSystemPE.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/ecs/sprite/SpriteSystemPE.js"],"names":[],"mappings":"AAsIA;IAGI,cAEC;IAJD,qDAAqC;CAKxC;sCAzIqC,8CAA8C;4BAGxD,uCAAuC;uBAQ5C,aAAa"}
|
|
@@ -3,7 +3,7 @@ import { SerializationMetadata } from "../../../ecs/components/SerializationMeta
|
|
|
3
3
|
import Entity from "../../../ecs/Entity.js";
|
|
4
4
|
import { AbstractContextSystem } from "../../../ecs/system/AbstractContextSystem.js";
|
|
5
5
|
import { SystemEntityContext } from "../../../ecs/system/SystemEntityContext.js";
|
|
6
|
-
import {
|
|
6
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../../../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
7
7
|
import { Transform64 } from "../../../ecs/transform/Transform64.js";
|
|
8
8
|
import {
|
|
9
9
|
PARTICLE_ATTRIBUTE_COLOR,
|
|
@@ -102,14 +102,10 @@ class Context extends SystemEntityContext {
|
|
|
102
102
|
//
|
|
103
103
|
// One listener where there were two, because a Transform64 announces itself whole rather
|
|
104
104
|
// than through a sub-object per component.
|
|
105
|
-
this.__on_transform_changed =
|
|
106
|
-
if (event.klass === Transform64) {
|
|
107
|
-
this.__copy_transform();
|
|
108
|
-
}
|
|
109
|
-
};
|
|
105
|
+
this.__on_transform_changed = () => this.__copy_transform();
|
|
110
106
|
|
|
111
107
|
this.getDataset().addEntityEventListener(
|
|
112
|
-
this.entity,
|
|
108
|
+
this.entity, TRANSFORM64_EVENT_CHANGE, this.__on_transform_changed
|
|
113
109
|
);
|
|
114
110
|
|
|
115
111
|
emitter.computeBoundingBox();
|
|
@@ -124,7 +120,7 @@ class Context extends SystemEntityContext {
|
|
|
124
120
|
|
|
125
121
|
if (this.__on_transform_changed !== undefined) {
|
|
126
122
|
this.getDataset().removeEntityEventListener(
|
|
127
|
-
this.entity,
|
|
123
|
+
this.entity, TRANSFORM64_EVENT_CHANGE, this.__on_transform_changed
|
|
128
124
|
);
|
|
129
125
|
|
|
130
126
|
this.__on_transform_changed = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LightSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/LightSystem.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;GAYG;AACH;IAgBI;;;OAGG;IACH,oDAUC;IADG,oDAAwC;IAG5C,2CAIC;IAED,4CAIC;IAED;;;;OAIG;IACH,gBAJW,KAAK,aACL,WAAW,UACX,MAAM,
|
|
1
|
+
{"version":3,"file":"LightSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/LightSystem.js"],"names":[],"mappings":"AAWA;;;;;;;;;;;;GAYG;AACH;IAgBI;;;OAGG;IACH,oDAUC;IADG,oDAAwC;IAG5C,2CAIC;IAED,4CAIC;IAED;;;;OAIG;IACH,gBAJW,KAAK,aACL,WAAW,UACX,MAAM,QAuEhB;IAED;;;;OAIG;IACH,kBAJW,KAAK,aACL,WAAW,UACX,MAAM,QAIhB;;CA4BJ;uBA9KsB,kBAAkB;4BACb,iCAAiC;sBACvC,gCAAgC"}
|
|
@@ -7,7 +7,7 @@ import { System } from "../ecs/System.js";
|
|
|
7
7
|
import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
8
8
|
import { Light } from "../graphics/ecs/light/Light.js";
|
|
9
9
|
import { LightType } from "../graphics/ecs/light/LightType.js";
|
|
10
|
-
import {
|
|
10
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Mirrors light entities into Shade's scene.
|
|
@@ -115,14 +115,10 @@ export class LightSystem extends System {
|
|
|
115
115
|
// One dataset listener replaces the three sub-object signals a Transform used to carry.
|
|
116
116
|
// Coarser - it wakes on any change to the transform rather than on a named channel - and
|
|
117
117
|
// that is the trade: the placement reads the whole transform anyway.
|
|
118
|
-
entry.on_transform_changed =
|
|
119
|
-
if (event.klass === Transform64) {
|
|
120
|
-
place();
|
|
121
|
-
}
|
|
122
|
-
};
|
|
118
|
+
entry.on_transform_changed = place;
|
|
123
119
|
|
|
124
120
|
this.entityManager.dataset.addEntityEventListener(
|
|
125
|
-
entity,
|
|
121
|
+
entity, TRANSFORM64_EVENT_CHANGE, entry.on_transform_changed
|
|
126
122
|
);
|
|
127
123
|
|
|
128
124
|
// A light's properties are gameplay-driven — a torch guttering, a spell charging, a
|
|
@@ -171,7 +167,7 @@ export class LightSystem extends System {
|
|
|
171
167
|
|
|
172
168
|
if (entry.on_transform_changed !== undefined && entry.on_transform_changed !== null) {
|
|
173
169
|
this.entityManager.dataset.removeEntityEventListener(
|
|
174
|
-
entity,
|
|
170
|
+
entity, TRANSFORM64_EVENT_CHANGE, entry.on_transform_changed
|
|
175
171
|
);
|
|
176
172
|
|
|
177
173
|
entry.on_transform_changed = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeshSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/MeshSystem.js"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAmFI;;;;OAIG;IACH,6CAHW,KAAK,eACI,MAAM,KAAG,oBAAoB,EAchD;IADG,qDAAyC;IAG7C;;OAEG;IACH,mBAEC;IAED;;;;;;;;;;;;OAYG;IACH,wBALW,MAAM,kBACG,MAAM,KAAG,IAAI,GACpB,OAAO,CAqBnB;IAoCD;;;;;;;;;;;OAWG;IACH,oBAJW,MAAM,GACJ,sBAAoB,IAAI,CAWpC;IAED;;;;;;;;;;;OAWG;IACH,qBAJW,MAAM,GACJ,gCAA8B,IAAI,CAW9C;IAED;;;;;;;;;;;OAWG;IACH,6BALW,UAAU,MAAM,CAAC,GAAC,MAAM,EAAE,GAAC,YAAY,UACvC,MAAM,GACJ,OAAO,CAuCnB;IAED,2CAIC;IAED,4CASC;IA6GD;;;;OAIG;IACH,YAJW,MAAM,aACN,WAAW,UACX,MAAM,
|
|
1
|
+
{"version":3,"file":"MeshSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/MeshSystem.js"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAmFI;;;;OAIG;IACH,6CAHW,KAAK,eACI,MAAM,KAAG,oBAAoB,EAchD;IADG,qDAAyC;IAG7C;;OAEG;IACH,mBAEC;IAED;;;;;;;;;;;;OAYG;IACH,wBALW,MAAM,kBACG,MAAM,KAAG,IAAI,GACpB,OAAO,CAqBnB;IAoCD;;;;;;;;;;;OAWG;IACH,oBAJW,MAAM,GACJ,sBAAoB,IAAI,CAWpC;IAED;;;;;;;;;;;OAWG;IACH,qBAJW,MAAM,GACJ,gCAA8B,IAAI,CAW9C;IAED;;;;;;;;;;;OAWG;IACH,6BALW,UAAU,MAAM,CAAC,GAAC,MAAM,EAAE,GAAC,YAAY,UACvC,MAAM,GACJ,OAAO,CAuCnB;IAED,2CAIC;IAED,4CASC;IA6GD;;;;OAIG;IACH,YAJW,MAAM,aACN,WAAW,UACX,MAAM,QA2BhB;IAED;;;;OAIG;IACH,cAJW,MAAM,aACN,WAAW,UACX,MAAM,QAIhB;;CAoMJ;uBAlpBsB,kBAAkB;4BACb,iCAAiC;uBAGtC,6CAA6C;sBAV9C,qCAAqC"}
|
|
@@ -13,7 +13,7 @@ import { ParentEntity } from "../ecs/parent/ParentEntity.js";
|
|
|
13
13
|
import { ShadedGeometry } from "../graphics/ecs/mesh-v2/ShadedGeometry.js";
|
|
14
14
|
import { SGMesh } from "../graphics/ecs/mesh-v2/aggregate/SGMesh.js";
|
|
15
15
|
import { shade_bundle_to_entity_composition } from "./shade_node_to_entity_composition.js";
|
|
16
|
-
import {
|
|
16
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
17
17
|
import { t64_announce_change } from "../ecs/transform/t64_announce_change.js";
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -443,18 +443,14 @@ export class MeshSystem extends System {
|
|
|
443
443
|
// The entity is placed the moment its transform moves, not on a poll: a transform that has
|
|
444
444
|
// not changed costs nothing, which is the same bargain the scene database makes downstream.
|
|
445
445
|
// A Transform64 has no signals of its own, so the announcement comes from the dataset: the
|
|
446
|
-
// writer sends
|
|
447
|
-
// signals it replaces - a scale write wakes a placement that only reads the whole
|
|
448
|
-
// anyway - and #place already skips when nothing moved.
|
|
449
|
-
const on_changed =
|
|
450
|
-
if (event.klass === Transform64) {
|
|
451
|
-
this.#place(entity, transform);
|
|
452
|
-
}
|
|
453
|
-
};
|
|
446
|
+
// writer sends TRANSFORM64_EVENT_CHANGE and this wakes on it. Coarser than the three
|
|
447
|
+
// sub-object signals it replaces - a scale write wakes a placement that only reads the whole
|
|
448
|
+
// transform anyway - and #place already skips when nothing moved.
|
|
449
|
+
const on_changed = () => this.#place(entity, transform);
|
|
454
450
|
|
|
455
451
|
entry.on_changed = on_changed;
|
|
456
452
|
|
|
457
|
-
this.entityManager.dataset.addEntityEventListener(entity,
|
|
453
|
+
this.entityManager.dataset.addEntityEventListener(entity, TRANSFORM64_EVENT_CHANGE, on_changed);
|
|
458
454
|
|
|
459
455
|
if (model.url === null) {
|
|
460
456
|
// nothing to show yet; {@link update} watches for the url arriving
|
|
@@ -581,18 +577,12 @@ export class MeshSystem extends System {
|
|
|
581
577
|
|
|
582
578
|
// the composed entity follows the source transform, and a Transform64 has no signals of
|
|
583
579
|
// its own, so the follow rides the dataset announcement like every other consumer
|
|
584
|
-
const on_source_changed = event => {
|
|
585
|
-
if (event.klass === Transform64) {
|
|
586
|
-
follow();
|
|
587
|
-
}
|
|
588
|
-
};
|
|
589
|
-
|
|
590
580
|
const ecd = this.entityManager.dataset;
|
|
591
581
|
|
|
592
|
-
ecd.addEntityEventListener(entity,
|
|
582
|
+
ecd.addEntityEventListener(entity, TRANSFORM64_EVENT_CHANGE, follow);
|
|
593
583
|
|
|
594
584
|
composition.on.destroyed.addOne(
|
|
595
|
-
() => ecd.removeEntityEventListener(entity,
|
|
585
|
+
() => ecd.removeEntityEventListener(entity, TRANSFORM64_EVENT_CHANGE, follow)
|
|
596
586
|
);
|
|
597
587
|
|
|
598
588
|
entry.composition = composition;
|
|
@@ -633,7 +623,7 @@ export class MeshSystem extends System {
|
|
|
633
623
|
}
|
|
634
624
|
|
|
635
625
|
if (entry.on_changed !== null) {
|
|
636
|
-
this.entityManager.dataset.removeEntityEventListener(entity,
|
|
626
|
+
this.entityManager.dataset.removeEntityEventListener(entity, TRANSFORM64_EVENT_CHANGE, entry.on_changed);
|
|
637
627
|
|
|
638
628
|
entry.on_changed = null;
|
|
639
629
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticleEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/ParticleEmitterSystem.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;GAaG;AACH;IAiDI;;;OAGG;IACH,4DAUC;IA9DD,8DAA8C;IAuC9C;;;;OAIG;IACH,kCAEC;IAkBD,2CAUC;IAED,4CAeC;IAED;;;;OAIG;IACH,cAJW,eAAe,aACf,WAAW,UACX,MAAM,
|
|
1
|
+
{"version":3,"file":"ParticleEmitterSystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/ParticleEmitterSystem.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;GAaG;AACH;IAiDI;;;OAGG;IACH,4DAUC;IA9DD,8DAA8C;IAuC9C;;;;OAIG;IACH,kCAEC;IAkBD,2CAUC;IAED,4CAeC;IAED;;;;OAIG;IACH,cAJW,eAAe,aACf,WAAW,UACX,MAAM,QAsChB;IAED;;;;;;;;;OASG;IACH,iBAFW,eAAe,QAqBzB;IAED;;;;OAIG;IACH,gBAJW,eAAe,aACf,WAAW,UACX,MAAM,QA0BhB;IAED,6BAaC;IAED;;OAEG;IACH,kCA+BC;;CACJ;AAED;;;GAGG;AACH;IAUI;;OAEG;IACH,oBAFW,qBAAqB,EAM/B;IAED,yBAEC;;CACJ;uBA3SsB,kBAAkB;4BACb,iCAAiC;gCAC7B,oEAAoE;gCANpE,mDAAmD"}
|
|
@@ -10,7 +10,7 @@ import { ParticleEmitter } from "../graphics/particles/particular/engine/emitter
|
|
|
10
10
|
import { ParticleEmitterFlag } from "../graphics/particles/particular/engine/emitter/ParticleEmitterFlag.js";
|
|
11
11
|
import { ParticularEngine } from "../graphics/particles/particular/engine/ParticularEngine.js";
|
|
12
12
|
import { GPUParticularRenderer } from "./particles/GPUParticularRenderer.js";
|
|
13
|
-
import {
|
|
13
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Draws the game's particle effects under Shade.
|
|
@@ -138,18 +138,14 @@ export class ParticleEmitterSystem extends System {
|
|
|
138
138
|
|
|
139
139
|
// Vector3.process called the callback AND subscribed. The transform has no signals, so
|
|
140
140
|
// the subscription half becomes one dataset listener that re-pushes the whole pose.
|
|
141
|
-
const on_transform_changed =
|
|
142
|
-
if (event.klass !== Transform64) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
|
|
141
|
+
const on_transform_changed = () => {
|
|
146
142
|
position(transform.translation_x, transform.translation_y, transform.translation_z);
|
|
147
143
|
rotation(transform.rotation_x, transform.rotation_y, transform.rotation_z, transform.rotation_w);
|
|
148
144
|
scale(transform.scale_x, transform.scale_y, transform.scale_z);
|
|
149
145
|
};
|
|
150
146
|
|
|
151
147
|
this.entityManager.dataset.addEntityEventListener(
|
|
152
|
-
entity,
|
|
148
|
+
entity, TRANSFORM64_EVENT_CHANGE, on_transform_changed
|
|
153
149
|
);
|
|
154
150
|
|
|
155
151
|
this.#entries.set(entity, { emitter, position, rotation, scale, on_transform_changed });
|
|
@@ -212,7 +208,7 @@ export class ParticleEmitterSystem extends System {
|
|
|
212
208
|
|
|
213
209
|
if (entry.on_transform_changed !== undefined) {
|
|
214
210
|
this.entityManager.dataset.removeEntityEventListener(
|
|
215
|
-
entity,
|
|
211
|
+
entity, TRANSFORM64_EVENT_CHANGE, entry.on_transform_changed
|
|
216
212
|
);
|
|
217
213
|
}
|
|
218
214
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShadedGeometrySystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/ShadedGeometrySystem.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAkBI;;;OAGG;IACH,oDAUC;IADG,6DAAiD;IAGrD,2CAEC;IAED,4CAIC;IAED;;;;OAIG;IACH,eAJW,cAAc,aACd,WAAW,UACX,MAAM,
|
|
1
|
+
{"version":3,"file":"ShadedGeometrySystem.d.ts","sourceRoot":"","sources":["../../../../src/engine/graphics3/ShadedGeometrySystem.js"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;;;;;GAmBG;AACH;IAkBI;;;OAGG;IACH,oDAUC;IADG,6DAAiD;IAGrD,2CAEC;IAED,4CAIC;IAED;;;;OAIG;IACH,eAJW,cAAc,aACd,WAAW,UACX,MAAM,QA0ChB;IAED;;;;OAIG;IACH,iBAJW,cAAc,aACd,WAAW,UACX,MAAM,QAMhB;;CA4CJ;uBAzKsB,kBAAkB;4BACb,iCAAiC;+BAC9B,2CAA2C"}
|
|
@@ -5,7 +5,7 @@ import Name from "../ecs/name/Name.js";
|
|
|
5
5
|
import { System } from "../ecs/System.js";
|
|
6
6
|
import { Transform64 } from "../ecs/transform/Transform64.js";
|
|
7
7
|
import { ShadedGeometry } from "../graphics/ecs/mesh-v2/ShadedGeometry.js";
|
|
8
|
-
import {
|
|
8
|
+
import { TRANSFORM64_EVENT_CHANGE } from "../ecs/transform/TRANSFORM64_EVENT_CHANGE.js";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Puts one primitive into Shade's scene, and keeps it where the entity says.
|
|
@@ -103,17 +103,11 @@ export class ShadedGeometrySystem extends System {
|
|
|
103
103
|
// One dataset listener replaces the three sub-object signals a Transform used to carry.
|
|
104
104
|
// Coarser - it wakes on any change to the transform rather than on a named channel - and
|
|
105
105
|
// that is the trade: the placement reads the whole transform anyway.
|
|
106
|
-
const on_transform_changed = event => {
|
|
107
|
-
if (event.klass === Transform64) {
|
|
108
|
-
place();
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
|
|
112
106
|
this.entityManager.dataset.addEntityEventListener(
|
|
113
|
-
entity,
|
|
107
|
+
entity, TRANSFORM64_EVENT_CHANGE, place
|
|
114
108
|
);
|
|
115
109
|
|
|
116
|
-
this.#entries.set(entity, { node, bindings, on_transform_changed });
|
|
110
|
+
this.#entries.set(entity, { node, bindings, on_transform_changed: place });
|
|
117
111
|
|
|
118
112
|
// the component carries its own row, so anything holding the component can ask where the
|
|
119
113
|
// primitive ended up without going through this system
|
|
@@ -169,7 +163,7 @@ export class ShadedGeometrySystem extends System {
|
|
|
169
163
|
|
|
170
164
|
if (entry.on_transform_changed !== undefined) {
|
|
171
165
|
this.entityManager.dataset.removeEntityEventListener(
|
|
172
|
-
entity,
|
|
166
|
+
entity, TRANSFORM64_EVENT_CHANGE, entry.on_transform_changed
|
|
173
167
|
);
|
|
174
168
|
}
|
|
175
169
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transform2GridPositionSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/grid/transform2grid/Transform2GridPositionSystem.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Transform2GridPositionSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/grid/transform2grid/Transform2GridPositionSystem.js"],"names":[],"mappings":"AA+FA;;IACI,2FAAmE;IACnE,oEAEE;IAEF;;;OAGG;IACH,MAFU,YAAY,EAAE,CAEd;IAEV;;;;;;OAMG;IACH,gBALW,sBAAsB,aACtB,WAAW,MACX,YAAY,UACZ,MAAM,QAehB;IAED;;;;;;OAMG;IACH,kBALW,sBAAsB,aACtB,WAAW,MACX,YAAY,UACZ,MAAM,QAYhB;CACJ;uBAnJsB,qBAAqB;4BAGhB,oCAAoC;yBADvC,6BAA6B;uCADf,6BAA6B;4CAMxB,oDAAoD;AAMhG;IACI;;;OAGG;IACH,WAFU,WAAW,CAEJ;IAEjB;;;OAGG;IACH,UAFU,YAAY,CAEN;IAEhB;;;OAGG;IACH,WAFU,sBAAsB,CAEf;IAEjB;;;OAGG;IACH,4BAAW;IAEX,cAgCC;IAGD,aAOC;IALG,iCAA8C;IAOlD,eAUC;CACJ"}
|