@oasys/oecs 0.5.3 → 0.6.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/CHANGELOG.md +1399 -276
- package/README.md +327 -169
- package/dist/core/ecs/access_check.d.cts +31 -31
- package/dist/core/ecs/access_check.d.ts +31 -31
- package/dist/core/ecs/access_check.d.ts.map +1 -1
- package/dist/core/ecs/archetype.d.cts +273 -205
- package/dist/core/ecs/archetype.d.ts +273 -205
- package/dist/core/ecs/archetype.d.ts.map +1 -1
- package/dist/core/ecs/archetype_closure.d.cts +23 -0
- package/dist/core/ecs/archetype_closure.d.ts +23 -0
- package/dist/core/ecs/archetype_closure.d.ts.map +1 -0
- package/dist/core/ecs/archetype_graph.d.cts +34 -34
- package/dist/core/ecs/archetype_graph.d.ts +34 -34
- package/dist/core/ecs/archetype_graph.d.ts.map +1 -1
- package/dist/core/ecs/archetype_types.d.cts +55 -0
- package/dist/core/ecs/archetype_types.d.ts +55 -0
- package/dist/core/ecs/archetype_types.d.ts.map +1 -0
- package/dist/core/ecs/change_feed.d.cts +53 -0
- package/dist/core/ecs/change_feed.d.ts +53 -0
- package/dist/core/ecs/change_feed.d.ts.map +1 -0
- package/dist/core/ecs/changed_query.d.cts +36 -0
- package/dist/core/ecs/changed_query.d.ts +36 -0
- package/dist/core/ecs/changed_query.d.ts.map +1 -0
- package/dist/core/ecs/chunk_columns.d.cts +49 -0
- package/dist/core/ecs/chunk_columns.d.ts +49 -0
- package/dist/core/ecs/chunk_columns.d.ts.map +1 -0
- package/dist/core/ecs/command_log.d.cts +30 -30
- package/dist/core/ecs/command_log.d.ts +30 -30
- package/dist/core/ecs/command_log.d.ts.map +1 -1
- package/dist/core/ecs/component.d.cts +45 -44
- package/dist/core/ecs/component.d.ts +45 -44
- package/dist/core/ecs/component.d.ts.map +1 -1
- package/dist/core/ecs/component_registry.d.cts +53 -0
- package/dist/core/ecs/component_registry.d.ts +53 -0
- package/dist/core/ecs/component_registry.d.ts.map +1 -0
- package/dist/core/ecs/compute_backend.d.cts +18 -7
- package/dist/core/ecs/compute_backend.d.ts +18 -7
- package/dist/core/ecs/compute_backend.d.ts.map +1 -1
- package/dist/core/ecs/deferred_commands.d.cts +15 -14
- package/dist/core/ecs/deferred_commands.d.ts +15 -14
- package/dist/core/ecs/deferred_commands.d.ts.map +1 -1
- package/dist/core/ecs/dispatch_trace.d.cts +32 -31
- package/dist/core/ecs/dispatch_trace.d.ts +32 -31
- package/dist/core/ecs/dispatch_trace.d.ts.map +1 -1
- package/dist/core/ecs/ecs.d.cts +337 -276
- package/dist/core/ecs/ecs.d.ts +337 -276
- package/dist/core/ecs/ecs.d.ts.map +1 -1
- package/dist/core/ecs/ecs_memory.d.cts +134 -136
- package/dist/core/ecs/ecs_memory.d.ts +134 -136
- package/dist/core/ecs/ecs_memory.d.ts.map +1 -1
- package/dist/core/ecs/ecs_options.d.cts +89 -0
- package/dist/core/ecs/ecs_options.d.ts +89 -0
- package/dist/core/ecs/ecs_options.d.ts.map +1 -0
- package/dist/core/ecs/entity.d.cts +4 -4
- package/dist/core/ecs/entity.d.ts +4 -4
- package/dist/core/ecs/entity_allocator.d.cts +24 -22
- package/dist/core/ecs/entity_allocator.d.ts +24 -22
- package/dist/core/ecs/entity_allocator.d.ts.map +1 -1
- package/dist/core/ecs/event.d.cts +37 -23
- package/dist/core/ecs/event.d.ts +37 -23
- package/dist/core/ecs/event.d.ts.map +1 -1
- package/dist/core/ecs/facades.d.cts +12 -126
- package/dist/core/ecs/facades.d.ts +12 -126
- package/dist/core/ecs/facades.d.ts.map +1 -1
- package/dist/core/ecs/frame_stepper.d.cts +12 -12
- package/dist/core/ecs/frame_stepper.d.ts +12 -12
- package/dist/core/ecs/frame_stepper.d.ts.map +1 -1
- package/dist/core/ecs/frame_trace.d.cts +34 -34
- package/dist/core/ecs/frame_trace.d.ts +34 -34
- package/dist/core/ecs/frame_trace.d.ts.map +1 -1
- package/dist/core/ecs/host_commands.d.cts +107 -89
- package/dist/core/ecs/host_commands.d.ts +107 -89
- package/dist/core/ecs/host_commands.d.ts.map +1 -1
- package/dist/core/ecs/index.d.cts +22 -12
- package/dist/core/ecs/index.d.ts +22 -12
- package/dist/core/ecs/index.d.ts.map +1 -1
- package/dist/core/ecs/observer.d.cts +41 -122
- package/dist/core/ecs/observer.d.ts +41 -122
- package/dist/core/ecs/observer.d.ts.map +1 -1
- package/dist/core/ecs/phase.d.cts +79 -0
- package/dist/core/ecs/phase.d.ts +79 -0
- package/dist/core/ecs/phase.d.ts.map +1 -0
- package/dist/core/ecs/plugin.d.cts +125 -0
- package/dist/core/ecs/plugin.d.ts +125 -0
- package/dist/core/ecs/plugin.d.ts.map +1 -0
- package/dist/core/ecs/plugin_slots.d.cts +26 -0
- package/dist/core/ecs/plugin_slots.d.ts +26 -0
- package/dist/core/ecs/plugin_slots.d.ts.map +1 -0
- package/dist/core/ecs/query.d.cts +219 -568
- package/dist/core/ecs/query.d.ts +219 -568
- package/dist/core/ecs/query.d.ts.map +1 -1
- package/dist/core/ecs/query_cache.d.cts +130 -0
- package/dist/core/ecs/query_cache.d.ts +130 -0
- package/dist/core/ecs/query_cache.d.ts.map +1 -0
- package/dist/core/ecs/query_registry.d.cts +47 -0
- package/dist/core/ecs/query_registry.d.ts +47 -0
- package/dist/core/ecs/query_registry.d.ts.map +1 -0
- package/dist/core/ecs/query_terms.d.cts +126 -0
- package/dist/core/ecs/query_terms.d.ts +126 -0
- package/dist/core/ecs/query_terms.d.ts.map +1 -0
- package/dist/core/ecs/ref.d.cts +129 -16
- package/dist/core/ecs/ref.d.ts +129 -16
- package/dist/core/ecs/ref.d.ts.map +1 -1
- package/dist/core/ecs/relation.d.cts +105 -186
- package/dist/core/ecs/relation.d.ts +105 -186
- package/dist/core/ecs/relation.d.ts.map +1 -1
- package/dist/core/ecs/resource.d.cts +14 -14
- package/dist/core/ecs/resource.d.ts +14 -14
- package/dist/core/ecs/resource_registry.d.cts +6 -6
- package/dist/core/ecs/resource_registry.d.ts +6 -6
- package/dist/core/ecs/resource_registry.d.ts.map +1 -1
- package/dist/core/ecs/row_kinds.d.cts +24 -0
- package/dist/core/ecs/row_kinds.d.ts +24 -0
- package/dist/core/ecs/row_kinds.d.ts.map +1 -0
- package/dist/core/ecs/run_condition.d.cts +23 -23
- package/dist/core/ecs/run_condition.d.ts +23 -23
- package/dist/core/ecs/run_condition.d.ts.map +1 -1
- package/dist/core/ecs/schedule.d.cts +98 -114
- package/dist/core/ecs/schedule.d.ts +98 -114
- package/dist/core/ecs/schedule.d.ts.map +1 -1
- package/dist/core/ecs/schedule_plan.d.cts +33 -0
- package/dist/core/ecs/schedule_plan.d.ts +33 -0
- package/dist/core/ecs/schedule_plan.d.ts.map +1 -0
- package/dist/core/ecs/snapshot.d.cts +77 -0
- package/dist/core/ecs/snapshot.d.ts +77 -0
- package/dist/core/ecs/snapshot.d.ts.map +1 -0
- package/dist/core/ecs/snapshot_mount.d.cts +42 -0
- package/dist/core/ecs/snapshot_mount.d.ts +42 -0
- package/dist/core/ecs/snapshot_mount.d.ts.map +1 -0
- package/dist/core/ecs/sparse_store.d.cts +110 -53
- package/dist/core/ecs/sparse_store.d.ts +110 -53
- package/dist/core/ecs/sparse_store.d.ts.map +1 -1
- package/dist/core/ecs/store.d.cts +644 -511
- package/dist/core/ecs/store.d.ts +644 -511
- package/dist/core/ecs/store.d.ts.map +1 -1
- package/dist/core/ecs/store_layout_listener.d.cts +8 -8
- package/dist/core/ecs/store_layout_listener.d.ts +8 -8
- package/dist/core/ecs/store_types.d.cts +122 -0
- package/dist/core/ecs/store_types.d.ts +122 -0
- package/dist/core/ecs/store_types.d.ts.map +1 -0
- package/dist/core/ecs/system.d.cts +151 -66
- package/dist/core/ecs/system.d.ts +151 -66
- package/dist/core/ecs/system.d.ts.map +1 -1
- package/dist/core/ecs/system_context.d.cts +296 -0
- package/dist/core/ecs/system_context.d.ts +296 -0
- package/dist/core/ecs/system_context.d.ts.map +1 -0
- package/dist/core/ecs/system_set.d.cts +48 -0
- package/dist/core/ecs/system_set.d.ts +48 -0
- package/dist/core/ecs/system_set.d.ts.map +1 -0
- package/dist/core/ecs/utils/arrays.d.cts +15 -1
- package/dist/core/ecs/utils/arrays.d.ts +15 -1
- package/dist/core/ecs/utils/arrays.d.ts.map +1 -1
- package/dist/core/ecs/utils/error.d.cts +87 -4
- package/dist/core/ecs/utils/error.d.ts +87 -4
- package/dist/core/ecs/utils/error.d.ts.map +1 -1
- package/dist/core/ecs/utils/plugin_error.d.cts +10 -0
- package/dist/core/ecs/utils/plugin_error.d.ts +10 -0
- package/dist/core/ecs/utils/plugin_error.d.ts.map +1 -0
- package/dist/core/restore_errors.d.cts +30 -0
- package/dist/core/restore_errors.d.ts +30 -0
- package/dist/core/restore_errors.d.ts.map +1 -0
- package/dist/core/store/action_ring.d.cts +48 -49
- package/dist/core/store/action_ring.d.ts +48 -49
- package/dist/core/store/action_ring.d.ts.map +1 -1
- package/dist/core/store/allocator.d.cts +166 -114
- package/dist/core/store/allocator.d.ts +166 -114
- package/dist/core/store/allocator.d.ts.map +1 -1
- package/dist/core/store/buffer_backed_column.d.cts +21 -22
- package/dist/core/store/buffer_backed_column.d.ts +21 -22
- package/dist/core/store/buffer_backed_column.d.ts.map +1 -1
- package/dist/core/store/column_store.d.cts +138 -100
- package/dist/core/store/column_store.d.ts +138 -100
- package/dist/core/store/column_store.d.ts.map +1 -1
- package/dist/core/store/command_dispatch.d.cts +14 -15
- package/dist/core/store/command_dispatch.d.ts +14 -15
- package/dist/core/store/command_dispatch.d.ts.map +1 -1
- package/dist/core/store/command_ring.d.cts +41 -45
- package/dist/core/store/command_ring.d.ts +41 -45
- package/dist/core/store/command_ring.d.ts.map +1 -1
- package/dist/core/store/descriptor.d.cts +35 -18
- package/dist/core/store/descriptor.d.ts +35 -18
- package/dist/core/store/descriptor.d.ts.map +1 -1
- package/dist/core/store/entity_index.d.cts +34 -35
- package/dist/core/store/entity_index.d.ts +34 -35
- package/dist/core/store/entity_index.d.ts.map +1 -1
- package/dist/core/store/event_ring.d.cts +40 -42
- package/dist/core/store/event_ring.d.ts +40 -42
- package/dist/core/store/event_ring.d.ts.map +1 -1
- package/dist/core/store/extend.d.cts +15 -9
- package/dist/core/store/extend.d.ts +15 -9
- package/dist/core/store/extend.d.ts.map +1 -1
- package/dist/core/store/grow.d.cts +3 -3
- package/dist/core/store/grow.d.ts +3 -3
- package/dist/core/store/grow.d.ts.map +1 -1
- package/dist/core/store/header.d.cts +37 -33
- package/dist/core/store/header.d.ts +37 -33
- package/dist/core/store/header.d.ts.map +1 -1
- package/dist/core/store/index.d.cts +10 -10
- package/dist/core/store/index.d.ts +10 -10
- package/dist/core/store/index.d.ts.map +1 -1
- package/dist/core/store/layout_ops.d.cts +72 -63
- package/dist/core/store/layout_ops.d.ts +72 -63
- package/dist/core/store/layout_ops.d.ts.map +1 -1
- package/dist/core/store/region_table.d.cts +28 -21
- package/dist/core/store/region_table.d.ts +28 -21
- package/dist/core/store/region_table.d.ts.map +1 -1
- package/dist/core/store/snapshot.d.cts +31 -16
- package/dist/core/store/snapshot.d.ts +31 -16
- package/dist/core/store/snapshot.d.ts.map +1 -1
- package/dist/core/store/state_hash.d.cts +14 -14
- package/dist/core/store/state_hash.d.ts +14 -14
- package/dist/core/store/state_hash.d.ts.map +1 -1
- package/dist/core/store/store_regions.d.cts +10 -10
- package/dist/core/store/store_regions.d.ts +10 -10
- package/dist/core/store/store_regions.d.ts.map +1 -1
- package/dist/core/store/vendored_abi/abi.d.cts +27 -2
- package/dist/core/store/vendored_abi/abi.d.ts +27 -2
- package/dist/core/store/vendored_abi/abi.d.ts.map +1 -1
- package/dist/host_commands-B2KMx8O2.cjs +1 -0
- package/dist/host_commands-ClVPvhSa.cjs +2 -0
- package/dist/host_commands-CwxVQS1z.js +1524 -0
- package/dist/host_commands-nJvTy88E.js +1667 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +16 -11
- package/dist/index.d.ts +16 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.development.cjs +1 -1
- package/dist/index.development.js +6709 -5729
- package/dist/index.js +5664 -4743
- package/dist/internal.cjs +2 -2
- package/dist/internal.d.cts +5 -2
- package/dist/internal.d.ts +5 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.development.cjs +1 -1
- package/dist/internal.development.js +70 -20
- package/dist/internal.js +138 -83
- package/dist/plugins/abi-D3V-QUSf.cjs +1 -0
- package/dist/plugins/abi-NP8pNxpd.js +42 -0
- package/dist/plugins/arrays-Dr_1hCjL.js +28 -0
- package/dist/plugins/arrays-Dt-Joc4i.cjs +1 -0
- package/dist/plugins/assertions-gtDVfbnQ.js +6 -0
- package/dist/plugins/assertions-z5GQd_bB.cjs +1 -0
- package/dist/{extensions → plugins}/editor/editor.d.cts +56 -56
- package/dist/{extensions → plugins}/editor/editor.d.ts +56 -56
- package/dist/plugins/editor/editor.d.ts.map +1 -0
- package/dist/{extensions → plugins}/editor/field_handle.d.cts +13 -13
- package/dist/{extensions → plugins}/editor/field_handle.d.ts +13 -13
- package/dist/plugins/editor/field_handle.d.ts.map +1 -0
- package/dist/plugins/editor/index.d.cts +22 -0
- package/dist/plugins/editor/index.d.ts +22 -0
- package/dist/plugins/editor/index.d.ts.map +1 -0
- package/dist/plugins/editor.cjs +1 -0
- package/dist/plugins/editor.d.cts +1 -0
- package/dist/plugins/editor.d.ts +1 -0
- package/dist/plugins/editor.development.cjs +1 -0
- package/dist/{extensions/editor/index.development.js → plugins/editor.development.js} +83 -66
- package/dist/{extensions/editor/index.js → plugins/editor.js} +83 -66
- package/dist/plugins/events/event_channel.d.cts +13 -0
- package/dist/plugins/events/event_channel.d.ts +13 -0
- package/dist/plugins/events/event_channel.d.ts.map +1 -0
- package/dist/plugins/events/event_registry.d.cts +22 -0
- package/dist/plugins/events/event_registry.d.ts +22 -0
- package/dist/plugins/events/event_registry.d.ts.map +1 -0
- package/dist/plugins/events/facade.d.cts +26 -0
- package/dist/plugins/events/facade.d.ts +26 -0
- package/dist/plugins/events/facade.d.ts.map +1 -0
- package/dist/plugins/events/index.d.cts +10 -0
- package/dist/plugins/events/index.d.ts +10 -0
- package/dist/plugins/events/index.d.ts.map +1 -0
- package/dist/plugins/events.cjs +1 -0
- package/dist/plugins/events.d.cts +1 -0
- package/dist/plugins/events.d.ts +1 -0
- package/dist/plugins/events.development.cjs +1 -0
- package/dist/plugins/events.development.js +174 -0
- package/dist/plugins/events.js +159 -0
- package/dist/plugins/observers/index.d.cts +23 -0
- package/dist/plugins/observers/index.d.ts +23 -0
- package/dist/plugins/observers/index.d.ts.map +1 -0
- package/dist/plugins/observers/observer_registry.d.cts +101 -0
- package/dist/plugins/observers/observer_registry.d.ts +101 -0
- package/dist/plugins/observers/observer_registry.d.ts.map +1 -0
- package/dist/plugins/observers.cjs +1 -0
- package/dist/plugins/observers.d.cts +1 -0
- package/dist/plugins/observers.d.ts +1 -0
- package/dist/plugins/observers.development.cjs +1 -0
- package/dist/plugins/observers.development.js +431 -0
- package/dist/plugins/observers.js +403 -0
- package/dist/plugins/relation_store-BsoegrZh.js +313 -0
- package/dist/plugins/relation_store-DQKSnxsm.cjs +1 -0
- package/dist/plugins/relation_store-RBhpcE28.cjs +1 -0
- package/dist/plugins/relation_store-RqW5Snx6.js +328 -0
- package/dist/plugins/relations/builtin_relations.d.cts +48 -0
- package/dist/plugins/relations/builtin_relations.d.ts +48 -0
- package/dist/plugins/relations/builtin_relations.d.ts.map +1 -0
- package/dist/plugins/relations/facade.d.cts +73 -0
- package/dist/plugins/relations/facade.d.ts +73 -0
- package/dist/plugins/relations/facade.d.ts.map +1 -0
- package/dist/plugins/relations/index.d.cts +11 -0
- package/dist/plugins/relations/index.d.ts +11 -0
- package/dist/plugins/relations/index.d.ts.map +1 -0
- package/dist/{core/ecs → plugins/relations}/relation_service.d.cts +93 -105
- package/dist/{core/ecs → plugins/relations}/relation_service.d.ts +93 -105
- package/dist/plugins/relations/relation_service.d.ts.map +1 -0
- package/dist/plugins/relations/relation_store.d.cts +177 -0
- package/dist/plugins/relations/relation_store.d.ts +177 -0
- package/dist/plugins/relations/relation_store.d.ts.map +1 -0
- package/dist/plugins/relations.cjs +1 -0
- package/dist/plugins/relations.d.cts +1 -0
- package/dist/plugins/relations.d.ts +1 -0
- package/dist/plugins/relations.development.cjs +1 -0
- package/dist/plugins/relations.development.js +603 -0
- package/dist/plugins/relations.js +553 -0
- package/dist/plugins/snapshots/index.d.cts +33 -0
- package/dist/plugins/snapshots/index.d.ts +33 -0
- package/dist/plugins/snapshots/index.d.ts.map +1 -0
- package/dist/plugins/snapshots/resume.d.cts +57 -0
- package/dist/plugins/snapshots/resume.d.ts +57 -0
- package/dist/plugins/snapshots/resume.d.ts.map +1 -0
- package/dist/plugins/snapshots/snapshot_service.d.cts +59 -0
- package/dist/plugins/snapshots/snapshot_service.d.ts +59 -0
- package/dist/plugins/snapshots/snapshot_service.d.ts.map +1 -0
- package/dist/plugins/snapshots.cjs +1 -0
- package/dist/plugins/snapshots.d.cts +1 -0
- package/dist/plugins/snapshots.d.ts +1 -0
- package/dist/plugins/snapshots.development.cjs +1 -0
- package/dist/plugins/snapshots.development.js +737 -0
- package/dist/plugins/snapshots.js +737 -0
- package/dist/plugins/solid/index.d.cts +8 -0
- package/dist/plugins/solid/index.d.ts +8 -0
- package/dist/plugins/solid/index.d.ts.map +1 -0
- package/dist/plugins/solid/solid.d.cts +97 -0
- package/dist/plugins/solid/solid.d.ts +97 -0
- package/dist/plugins/solid/solid.d.ts.map +1 -0
- package/dist/plugins/solid.cjs +1 -0
- package/dist/plugins/solid.d.cts +1 -0
- package/dist/plugins/solid.d.ts +1 -0
- package/dist/plugins/solid.development.cjs +1 -0
- package/dist/plugins/solid.development.js +319 -0
- package/dist/plugins/solid.js +319 -0
- package/dist/plugins/workers/index.d.cts +75 -0
- package/dist/plugins/workers/index.d.ts +75 -0
- package/dist/plugins/workers/index.d.ts.map +1 -0
- package/dist/plugins/workers/node_threads.d.cts +25 -0
- package/dist/plugins/workers/node_threads.d.ts +25 -0
- package/dist/plugins/workers/node_threads.d.ts.map +1 -0
- package/dist/plugins/workers/plan.d.cts +61 -0
- package/dist/plugins/workers/plan.d.ts +61 -0
- package/dist/plugins/workers/plan.d.ts.map +1 -0
- package/dist/plugins/workers/pool.d.cts +144 -0
- package/dist/plugins/workers/pool.d.ts +144 -0
- package/dist/plugins/workers/pool.d.ts.map +1 -0
- package/dist/plugins/workers/protocol.d.cts +112 -0
- package/dist/plugins/workers/protocol.d.ts +112 -0
- package/dist/plugins/workers/protocol.d.ts.map +1 -0
- package/dist/plugins/workers/worker_bind.d.cts +64 -0
- package/dist/plugins/workers/worker_bind.d.ts +64 -0
- package/dist/plugins/workers/worker_bind.d.ts.map +1 -0
- package/dist/plugins/workers/worker_loop.d.cts +14 -0
- package/dist/plugins/workers/worker_loop.d.ts +14 -0
- package/dist/plugins/workers/worker_loop.d.ts.map +1 -0
- package/dist/plugins/workers.cjs +1 -0
- package/dist/plugins/workers.d.cts +1 -0
- package/dist/plugins/workers.d.ts +1 -0
- package/dist/plugins/workers.development.cjs +1 -0
- package/dist/plugins/workers.development.js +596 -0
- package/dist/plugins/workers.js +474 -0
- package/dist/primitives.cjs +1 -1
- package/dist/primitives.d.cts +4 -4
- package/dist/primitives.d.ts +4 -4
- package/dist/primitives.development.cjs +1 -1
- package/dist/primitives.development.js +66 -22
- package/dist/primitives.js +66 -22
- package/dist/shared-BKl12xF1.js +132 -0
- package/dist/shared-Dk-pACZT.cjs +1 -0
- package/dist/shared.cjs +1 -1
- package/dist/shared.d.cts +7 -7
- package/dist/shared.d.ts +7 -7
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.development.cjs +1 -1
- package/dist/shared.development.js +4 -3
- package/dist/shared.js +4 -3
- package/dist/topological_sort-Cc_yXqPT.js +346 -0
- package/dist/topological_sort-vp1imU6D.cjs +1 -0
- package/dist/type_primitives/assertions.d.cts +12 -16
- package/dist/type_primitives/assertions.d.ts +12 -16
- package/dist/type_primitives/assertions.d.ts.map +1 -1
- package/dist/type_primitives/binary_heap/binary_heap.d.cts +2 -6
- package/dist/type_primitives/binary_heap/binary_heap.d.ts +2 -6
- package/dist/type_primitives/binary_heap/binary_heap.d.ts.map +1 -1
- package/dist/type_primitives/bitset/bitset.d.cts +7 -11
- package/dist/type_primitives/bitset/bitset.d.ts +7 -11
- package/dist/type_primitives/bitset/bitset.d.ts.map +1 -1
- package/dist/type_primitives/brand.d.cts +2 -7
- package/dist/type_primitives/brand.d.ts +2 -7
- package/dist/type_primitives/brand.d.ts.map +1 -1
- package/dist/type_primitives/error.d.cts +1 -2
- package/dist/type_primitives/error.d.ts +1 -2
- package/dist/type_primitives/error.d.ts.map +1 -1
- package/dist/type_primitives/index.d.cts +1 -1
- package/dist/type_primitives/index.d.ts +1 -1
- package/dist/type_primitives/sparse_map/sparse_map.d.cts +3 -7
- package/dist/type_primitives/sparse_map/sparse_map.d.ts +3 -7
- package/dist/type_primitives/sparse_map/sparse_map.d.ts.map +1 -1
- package/dist/type_primitives/sparse_set/sparse_set.d.cts +2 -6
- package/dist/type_primitives/sparse_set/sparse_set.d.ts +2 -6
- package/dist/type_primitives/sparse_set/sparse_set.d.ts.map +1 -1
- package/dist/type_primitives/topological_sort/topological_sort.d.cts +1 -5
- package/dist/type_primitives/topological_sort/topological_sort.d.ts +1 -5
- package/dist/type_primitives/topological_sort/topological_sort.d.ts.map +1 -1
- package/dist/type_primitives/typed_arrays/typed_arrays.d.cts +18 -17
- package/dist/type_primitives/typed_arrays/typed_arrays.d.ts +18 -17
- package/dist/type_primitives/typed_arrays/typed_arrays.d.ts.map +1 -1
- package/dist/utils/error.d.ts.map +1 -1
- package/dist/version.d.cts +4 -4
- package/dist/version.d.ts +4 -4
- package/dist/worker.cjs +1 -0
- package/dist/worker.d.cts +17 -0
- package/dist/worker.d.ts +17 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.development.cjs +1 -0
- package/dist/worker.development.js +253 -0
- package/dist/worker.js +253 -0
- package/package.json +363 -191
- package/dist/core/ecs/builtin_relations.d.cts +0 -43
- package/dist/core/ecs/builtin_relations.d.ts +0 -43
- package/dist/core/ecs/builtin_relations.d.ts.map +0 -1
- package/dist/core/ecs/event_registry.d.cts +0 -22
- package/dist/core/ecs/event_registry.d.ts +0 -22
- package/dist/core/ecs/event_registry.d.ts.map +0 -1
- package/dist/core/ecs/relation_service.d.ts.map +0 -1
- package/dist/core/ecs/resume.d.cts +0 -85
- package/dist/core/ecs/resume.d.ts +0 -85
- package/dist/core/ecs/resume.d.ts.map +0 -1
- package/dist/core/ecs/snapshot_service.d.cts +0 -94
- package/dist/core/ecs/snapshot_service.d.ts +0 -94
- package/dist/core/ecs/snapshot_service.d.ts.map +0 -1
- package/dist/extensions/editor/editor.d.ts.map +0 -1
- package/dist/extensions/editor/field_handle.d.ts.map +0 -1
- package/dist/extensions/editor/index.cjs +0 -1
- package/dist/extensions/editor/index.d.cts +0 -21
- package/dist/extensions/editor/index.d.ts +0 -21
- package/dist/extensions/editor/index.d.ts.map +0 -1
- package/dist/extensions/editor/index.development.cjs +0 -1
- package/dist/extensions/reactive/ecs_sync.d.cts +0 -214
- package/dist/extensions/reactive/ecs_sync.d.ts +0 -214
- package/dist/extensions/reactive/ecs_sync.d.ts.map +0 -1
- package/dist/extensions/reactive/index.cjs +0 -1
- package/dist/extensions/reactive/index.d.cts +0 -23
- package/dist/extensions/reactive/index.d.ts +0 -23
- package/dist/extensions/reactive/index.d.ts.map +0 -1
- package/dist/extensions/reactive/index.development.cjs +0 -1
- package/dist/extensions/reactive/index.development.js +0 -215
- package/dist/extensions/reactive/index.js +0 -215
- package/dist/extensions/solid/index.cjs +0 -1
- package/dist/extensions/solid/index.d.cts +0 -6
- package/dist/extensions/solid/index.d.ts +0 -6
- package/dist/extensions/solid/index.d.ts.map +0 -1
- package/dist/extensions/solid/index.development.cjs +0 -1
- package/dist/extensions/solid/index.development.js +0 -40
- package/dist/extensions/solid/index.js +0 -36
- package/dist/extensions/solid/kernel_solid.d.cts +0 -45
- package/dist/extensions/solid/kernel_solid.d.ts +0 -45
- package/dist/extensions/solid/kernel_solid.d.ts.map +0 -1
- package/dist/host_commands-3jyFfWNg.js +0 -2326
- package/dist/host_commands-DNf0f6ko.cjs +0 -1
- package/dist/internal-C9jjL90H.js +0 -2485
- package/dist/internal-RZN14uMw.cjs +0 -2
- package/dist/interop-CT-REx0W.cjs +0 -1
- package/dist/interop-CcY6ASQc.js +0 -18
- package/dist/interop-DqxleBo7.js +0 -18
- package/dist/interop-T1HZ-Dpa.cjs +0 -1
- package/dist/kernel-Cz2Kxlwl.js +0 -240
- package/dist/kernel-DgyrLFjW.js +0 -227
- package/dist/kernel-sw7ScKWu.cjs +0 -1
- package/dist/kernel-yWV3XnAb.cjs +0 -1
- package/dist/reactive/array.d.cts +0 -24
- package/dist/reactive/array.d.ts +0 -24
- package/dist/reactive/array.d.ts.map +0 -1
- package/dist/reactive/index.cjs +0 -1
- package/dist/reactive/index.d.cts +0 -11
- package/dist/reactive/index.d.ts +0 -11
- package/dist/reactive/index.d.ts.map +0 -1
- package/dist/reactive/index.development.cjs +0 -1
- package/dist/reactive/index.development.js +0 -18
- package/dist/reactive/index.js +0 -18
- package/dist/reactive/interop.d.cts +0 -19
- package/dist/reactive/interop.d.ts +0 -19
- package/dist/reactive/interop.d.ts.map +0 -1
- package/dist/reactive/kernel.d.cts +0 -73
- package/dist/reactive/kernel.d.ts +0 -73
- package/dist/reactive/kernel.d.ts.map +0 -1
- package/dist/reactive/map.d.cts +0 -16
- package/dist/reactive/map.d.ts +0 -16
- package/dist/reactive/map.d.ts.map +0 -1
- package/dist/reactive/shallow.d.cts +0 -11
- package/dist/reactive/shallow.d.ts +0 -11
- package/dist/reactive/shallow.d.ts.map +0 -1
- package/dist/reactive/struct.d.cts +0 -10
- package/dist/reactive/struct.d.ts +0 -10
- package/dist/reactive/struct.d.ts.map +0 -1
- package/dist/shallow-9S1pY_Iw.js +0 -159
- package/dist/shallow-C5YmTbtb.cjs +0 -1
- package/dist/shallow-DQ8aG51_.cjs +0 -1
- package/dist/shallow-DfnAm9vG.js +0 -150
- package/dist/shared-BMXh9hxm.cjs +0 -1
- package/dist/shared-DQKK0i-E.js +0 -109
- package/dist/topological_sort-BDvEyb9W.cjs +0 -1
- package/dist/topological_sort-DK6EjpWa.js +0 -135
- package/dist/typed_arrays-BcXcnzB4.js +0 -258
- package/dist/typed_arrays-D3NmwtCG.cjs +0 -1
|
@@ -1,142 +1,126 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SystemEntry, SystemSet, SystemSetConfig } from './system_set.js';
|
|
2
|
+
import { Phase, PhaseConfig, SchedulePhase } from './phase.js';
|
|
3
|
+
import { SystemContext } from './system_context.js';
|
|
2
4
|
import { SystemDescriptor } from './system.js';
|
|
3
5
|
import { ComputeBackend } from './compute_backend.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* run condition and shared ordering that every member inherits. Sets are
|
|
17
|
-
* identified by **object identity**, not by name — create one with
|
|
18
|
-
* `systemSet(name)`, hold the handle, and reuse it across `addSystems`
|
|
19
|
-
* (`SystemEntry.set`) and `Schedule.configureSet`. The `name` is for
|
|
20
|
-
* diagnostics only.
|
|
21
|
-
*/
|
|
22
|
-
export interface SystemSet {
|
|
23
|
-
readonly name: string;
|
|
24
|
-
}
|
|
25
|
-
/** Create a `SystemSet` handle (#576). Two calls with the same name are two
|
|
26
|
-
* distinct sets — keep the returned handle and pass it around. */
|
|
27
|
-
export declare function systemSet(name: string): SystemSet;
|
|
28
|
-
/** A `before`/`after` ordering target: either a concrete system or a whole set
|
|
29
|
-
* (expanded to its members within the same phase at sort time). */
|
|
30
|
-
export type SystemOrderingTarget = SystemDescriptor | SystemSet;
|
|
31
|
-
/** Shared configuration applied to a `SystemSet` via `configureSet` (#576).
|
|
32
|
-
* Accumulates across calls — conditions AND together, ordering targets union. */
|
|
33
|
-
export interface SystemSetConfig {
|
|
34
|
-
/** Condition(s) every member is gated by (ANDed with each member's own). */
|
|
35
|
-
runIf?: RunCondition | readonly RunCondition[];
|
|
36
|
-
/** Every member runs before each of these targets. */
|
|
37
|
-
before?: readonly SystemOrderingTarget[];
|
|
38
|
-
/** Every member runs after each of these targets. */
|
|
39
|
-
after?: readonly SystemOrderingTarget[];
|
|
40
|
-
}
|
|
41
|
-
export interface SystemOrdering {
|
|
42
|
-
before?: readonly SystemOrderingTarget[];
|
|
43
|
-
after?: readonly SystemOrderingTarget[];
|
|
44
|
-
}
|
|
45
|
-
export interface SystemEntry {
|
|
46
|
-
system: SystemDescriptor;
|
|
47
|
-
ordering?: SystemOrdering;
|
|
48
|
-
/** Run condition(s) gating just this system — ANDed with any set conditions
|
|
49
|
-
* it inherits (#576). A `false` verdict skips the body that tick. */
|
|
50
|
-
runIf?: RunCondition | readonly RunCondition[];
|
|
51
|
-
/** Set membership — the system inherits each set's shared condition and
|
|
52
|
-
* ordering (#576). */
|
|
53
|
-
set?: SystemSet | readonly SystemSet[];
|
|
6
|
+
/** What the schedule needs of a worker pool, and nothing more.
|
|
7
|
+
*
|
|
8
|
+
* The pool ships in the workers plugin, so a class reference here would pull
|
|
9
|
+
* the pool, the plan builder and the node threads shim into every program.
|
|
10
|
+
* This interface is structural, and it erases, so the core graph reaches none
|
|
11
|
+
* of them. `run` answers false below the row threshold, before the kernel is
|
|
12
|
+
* loaded, and after a failed join. Then the sequential body runs. */
|
|
13
|
+
export interface RouteDispatch {
|
|
14
|
+
/** `plan` is the opaque value the descriptor carries. The schedule loads
|
|
15
|
+
* it and passes it on, and only the route reads inside it. Answering false
|
|
16
|
+
* puts this dispatch back on the system's own `fn`. */
|
|
17
|
+
run(plan: object, ctx: SystemContext, deltaTime: number, runTick: number): boolean;
|
|
54
18
|
}
|
|
55
19
|
export declare class Schedule {
|
|
56
|
-
private readonly
|
|
57
|
-
private readonly
|
|
58
|
-
private
|
|
59
|
-
private
|
|
60
|
-
private
|
|
61
|
-
private readonly
|
|
62
|
-
private readonly
|
|
63
|
-
private
|
|
20
|
+
private readonly _phases;
|
|
21
|
+
private readonly _builtins;
|
|
22
|
+
private _startupOrder;
|
|
23
|
+
private _fixedOrder;
|
|
24
|
+
private _updateOrder;
|
|
25
|
+
private readonly _phaseBySystem;
|
|
26
|
+
private readonly _lastRunTicks;
|
|
27
|
+
private readonly _slotBySystem;
|
|
28
|
+
private readonly _freeSlots;
|
|
29
|
+
private _driveDepth;
|
|
30
|
+
private readonly _gatedSystems;
|
|
31
|
+
private readonly _conditionsBySet;
|
|
32
|
+
private readonly _orderingBySet;
|
|
33
|
+
private _nextInsertionOrder;
|
|
64
34
|
private _backend;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
35
|
+
private _route;
|
|
36
|
+
/** Dev-diagnostic sink (`ECSOptions.onWarn`). Defaults to `console.warn`.
|
|
37
|
+
* The only schedule diagnostic today is the dropped ordering edge
|
|
38
|
+
* `schedule_plan.ts` reports. */
|
|
39
|
+
private readonly _onWarn;
|
|
40
|
+
private _fixedSystemCount;
|
|
41
|
+
private _nextPhaseOrder;
|
|
68
42
|
constructor(onWarn?: (message: string) => void);
|
|
69
|
-
addSystems(label: SCHEDULE, ...entries: (SystemDescriptor | SystemEntry)[]): void;
|
|
70
43
|
/**
|
|
71
|
-
*
|
|
44
|
+
* Add one phase to a loop and hand back its handle. Cold path, setup only.
|
|
45
|
+
*
|
|
46
|
+
* `before` and `after` order it against the other phases of the same loop.
|
|
47
|
+
* A target in another loop is dropped, the way a system ordered against a
|
|
48
|
+
* system in another phase is dropped. With neither, the phase runs after
|
|
49
|
+
* every phase declared before it, so it lands at the tail of its loop.
|
|
50
|
+
*
|
|
51
|
+
* The handle is this world's. Two calls with one name make two phases, the
|
|
52
|
+
* rule `systemSet` already follows, so hold the handle rather than the name.
|
|
53
|
+
*/
|
|
54
|
+
addPhase(name: string, config: PhaseConfig): Phase;
|
|
55
|
+
private _declarePhase;
|
|
56
|
+
/** Check that a phase belongs to this schedule, and hand it back unchanged.
|
|
57
|
+
* Not a dev guard: a handle from another world would push systems into that
|
|
58
|
+
* world's list, and a production build that scheduled them into nothing is
|
|
59
|
+
* worse than a named fault on a setup call. */
|
|
60
|
+
private _checkPhase;
|
|
61
|
+
/** The node behind either spelling of a phase. Cold path. */
|
|
62
|
+
private _resolvePhase;
|
|
63
|
+
/** Sort one loop's phases and cache the result. Kahn's algorithm with
|
|
64
|
+
* declaration order as the tiebreaker, the same rule the systems inside a
|
|
65
|
+
* phase follow. Cold path, once per `addPhase`. */
|
|
66
|
+
private _resolveOrder;
|
|
67
|
+
addSystems(phase: SchedulePhase, ...entries: (SystemDescriptor | SystemEntry)[]): void;
|
|
68
|
+
/**
|
|
69
|
+
* Configure a `SystemSet`, its shared run conditions, or its
|
|
72
70
|
* ordering, inherited by every member. Additive and order-independent w.r.t.
|
|
73
71
|
* `addSystems`: conditions accumulate (ANDed), ordering targets union, and
|
|
74
72
|
* a member added before or after this call picks the configuration up.
|
|
75
73
|
*/
|
|
76
74
|
configureSet(set: SystemSet, config: SystemSetConfig): void;
|
|
77
75
|
removeSystem(system: SystemDescriptor): void;
|
|
78
|
-
/**
|
|
79
|
-
*
|
|
76
|
+
/** Drop every cached plan. Cold path, and the reason each caller needs it
|
|
77
|
+
* sits at that call site. */
|
|
78
|
+
private _invalidatePlans;
|
|
79
|
+
/** Attach (or, with `null`, detach) the opt-in compute backend. Driven
|
|
80
|
+
* by `ECS.attachBackend`. Routes any scheduled system carrying a
|
|
80
81
|
* `backendHandle` to `backend.run(handle)` in place of its `fn`. */
|
|
81
82
|
setBackend(backend: ComputeBackend | null): void;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
/** Attach (or, with `null`, detach) the system dispatch route. Driven by
|
|
84
|
+
* the plugin that installed it. Runs any scheduled system carrying a
|
|
85
|
+
* `routePlan` through the route in place of its `fn`. */
|
|
86
|
+
setRoute(dispatch: RouteDispatch | null): void;
|
|
87
|
+
runStartup(ctx: SystemContext): void;
|
|
88
|
+
runUpdate(ctx: SystemContext, deltaTime: number): void;
|
|
89
|
+
runFixedUpdate(ctx: SystemContext, fixedDt: number): void;
|
|
85
90
|
hasFixedSystems(): boolean;
|
|
86
91
|
getAllSystems(): SystemDescriptor[];
|
|
87
92
|
hasSystem(system: SystemDescriptor): boolean;
|
|
93
|
+
/** Hand `descriptor` its `_lastRunTicks` slot, keeping the array packed (no
|
|
94
|
+
* holes ⇒ no undefined-check on the read in `_runPhase`, which is the whole
|
|
95
|
+
* point of it not being a `Map`). Idempotent for a descriptor already in this
|
|
96
|
+
* schedule, `_getPlan` re-asks for every system it sorts. A descriptor that
|
|
97
|
+
* was removed and re-added gets a *fresh* slot starting at tick 0, which is
|
|
98
|
+
* what the previous `Map`-based bookkeeping did (`delete` on remove, `set(…, 0)`
|
|
99
|
+
* on re-add). */
|
|
100
|
+
private _assignLastRunSlot;
|
|
88
101
|
clear(): void;
|
|
89
|
-
private
|
|
102
|
+
private _runPhase;
|
|
90
103
|
/**
|
|
91
|
-
* Whether a gated system runs this tick
|
|
104
|
+
* Whether a gated system runs this tick, the and of its own conditions and
|
|
92
105
|
* every set it belongs to. A set's conditions are evaluated at most once per
|
|
93
106
|
* phase (memoized in `setVerdicts`) and the verdict gates every member of the
|
|
94
|
-
* set uniformly
|
|
95
|
-
* memo lives only for a single `
|
|
107
|
+
* set uniformly. A `configureSet` between phases is still honored because the
|
|
108
|
+
* memo lives only for a single `_runPhase` pass. Short-circuits on the first
|
|
96
109
|
* `false`. The system's own conditions evaluate per system, in canonical order.
|
|
97
110
|
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* phase (
|
|
102
|
-
* unit, so
|
|
111
|
+
* This evaluates a set's conditions once for each set in each phase, and not
|
|
112
|
+
* once for each member. The two agree for a pure `RunCondition`. They differ
|
|
113
|
+
* only when a set condition reads state a system mutated earlier in the same
|
|
114
|
+
* phase (a resource writes immediately). That is intentional. The set gates
|
|
115
|
+
* as a unit, so every member shares one verdict for the phase.
|
|
103
116
|
*/
|
|
104
|
-
private
|
|
105
|
-
/** Evaluate a condition list with
|
|
117
|
+
private _shouldRun;
|
|
118
|
+
/** Evaluate a condition list with and semantics. Each predicate runs inside a
|
|
106
119
|
* reads-only `accessCheck` span (dev), so a condition that reads an
|
|
107
|
-
* undeclared resource
|
|
108
|
-
private
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
* Builds the dependency edge map from before/after constraints, then
|
|
113
|
-
* catches any cycle TypeError and re-throws as ECSError.
|
|
114
|
-
*/
|
|
115
|
-
private sortSystems;
|
|
116
|
-
/**
|
|
117
|
-
* Add the topo edges for one ordering list (#576). For `"before"` the source
|
|
118
|
-
* runs before each target (edge source→target); for `"after"` it runs after
|
|
119
|
-
* each target (edge target→source). A `SystemSet` target expands to every
|
|
120
|
-
* member within this phase (self-edges skipped, so a member ordered against
|
|
121
|
-
* its own set is a no-op); a descriptor target absent from this phase is
|
|
122
|
-
* dropped — with a dev warning only for a concrete system, since a set
|
|
123
|
-
* legitimately expands to nothing when its members live in another phase.
|
|
124
|
-
*/
|
|
125
|
-
private resolveEdges;
|
|
126
|
-
/** Push one directed edge into the adjacency map. Both endpoints are known to
|
|
127
|
-
* be in this phase (callers guard), so `edges.get(...)` is non-null. */
|
|
128
|
-
private addDirectedEdge;
|
|
129
|
-
/**
|
|
130
|
-
* Dev-only diagnostic for an ordering edge that was dropped during sort.
|
|
131
|
-
*
|
|
132
|
-
* Cross-label ordering is impossible by design (`nodeSet` is per-label), so
|
|
133
|
-
* a target registered in *another* phase is skipped silently — that's the
|
|
134
|
-
* intended isolation. But a target unknown to *every* phase is almost
|
|
135
|
-
* certainly a typo or a system that was never scheduled; without this warning
|
|
136
|
-
* the constraint vanishes and the system runs in insertion-order tiebreak as
|
|
137
|
-
* if unconstrained, with nothing to distinguish mistake from intent. Compiled
|
|
138
|
-
* out of production builds by the `DEV` guards at the call sites.
|
|
139
|
-
*/
|
|
140
|
-
private warnDroppedEdge;
|
|
120
|
+
* undeclared resource, or attempts any mutation, throws. */
|
|
121
|
+
private _evalConditions;
|
|
122
|
+
/** Sort one phase and cache its plan on the phase. Cold: the drive reads
|
|
123
|
+
* `phase.plan` and only lands here when an add or a remove nulled it. */
|
|
124
|
+
private _buildPlan;
|
|
141
125
|
}
|
|
142
126
|
//# sourceMappingURL=schedule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/schedule.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/schedule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqDK;AAML,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAa,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAY,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAOxD;;;;;;qEAMqE;AACrE,MAAM,WAAW,aAAa;IAC7B;;2DAEuD;IACvD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACnF;AA+FD,qBAAa,QAAQ;IAGpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAG3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqC;IAK/D,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+C;IAa9E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAW9C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4C;IAI1E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAK3C,OAAO,CAAC,WAAW,CAAK;IAIxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAG9E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAC9E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0C;IACzE,OAAO,CAAC,mBAAmB,CAAK;IAMhC,OAAO,CAAC,QAAQ,CAA+B;IAK/C,OAAO,CAAC,MAAM,CAA8B;IAE5C;;qCAEiC;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAMpD,OAAO,CAAC,iBAAiB,CAAK;IAG9B,OAAO,CAAC,eAAe,CAAK;gBAEhB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI;IAsB9C;;;;;;;;;;OAUG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,KAAK;IAYzD,OAAO,CAAC,aAAa;IAMrB;;;mDAG+C;IAC/C,OAAO,CAAC,WAAW;IAKnB,6DAA6D;IAC7D,OAAO,CAAC,aAAa;IAmBrB;;uDAEmD;IACnD,OAAO,CAAC,aAAa;IA0Cd,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC,gBAAgB,GAAG,WAAW,CAAC,EAAE,GAAG,IAAI;IAyC7F;;;;;OAKG;IACI,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IA0B3D,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAqDnD;iCAC6B;IAC7B,OAAO,CAAC,gBAAgB;IAIxB;;wEAEoE;IAC7D,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI;IAIvD;;6DAEyD;IAClD,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAkB9C,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI;IAYpC,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAetD,cAAc,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAYzD,eAAe,IAAI,OAAO;IAO1B,aAAa,IAAI,gBAAgB,EAAE;IAUnC,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO;IAInD;;;;;;qBAMiB;IACjB,OAAO,CAAC,kBAAkB;IAgCnB,KAAK,IAAI,IAAI;IAiCpB,OAAO,CAAC,SAAS;IA2HjB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,UAAU;IAwBlB;;gEAE4D;IAC5D,OAAO,CAAC,eAAe;IAevB;6EACyE;IACzE,OAAO,CAAC,UAAU;CAclB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SystemOrderingTarget, SystemSet } from './system_set.cjs';
|
|
2
|
+
import { SystemDescriptor } from './system.cjs';
|
|
3
|
+
import { RunCondition } from './run_condition.cjs';
|
|
4
|
+
/** A phase's execution plan: its topologically sorted systems and, index-aligned,
|
|
5
|
+
* each one's `_lastRunTicks` slot. Cached as a unit and invalidated together. */
|
|
6
|
+
export interface PhasePlan {
|
|
7
|
+
readonly sorted: SystemDescriptor[];
|
|
8
|
+
readonly slots: Int32Array;
|
|
9
|
+
}
|
|
10
|
+
export interface SystemNode {
|
|
11
|
+
descriptor: SystemDescriptor;
|
|
12
|
+
insertionOrder: number;
|
|
13
|
+
before: Set<SystemOrderingTarget>;
|
|
14
|
+
after: Set<SystemOrderingTarget>;
|
|
15
|
+
/** This system's own run conditions (set conditions are resolved live from
|
|
16
|
+
* `_conditionsBySet` at run time so a later `configureSet` is honored). */
|
|
17
|
+
conditions: readonly RunCondition[];
|
|
18
|
+
/** Sets this system belongs to. */
|
|
19
|
+
sets: readonly SystemSet[];
|
|
20
|
+
}
|
|
21
|
+
/** One set's accumulated ordering, as `configureSet` builds it. A `Set` and not
|
|
22
|
+
* an array, so a target named twice still adds one edge. */
|
|
23
|
+
export interface SetOrdering {
|
|
24
|
+
before: Set<SystemOrderingTarget>;
|
|
25
|
+
after: Set<SystemOrderingTarget>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Delegates to the shared topologicalSort utility.
|
|
29
|
+
* Builds the dependency edge map from before and after constraints, then
|
|
30
|
+
* catches any cycle TypeError and re-throws as ECSError.
|
|
31
|
+
*/
|
|
32
|
+
export declare function sortSystems(nodes: SystemNode[], phase: string, orderingBySet: ReadonlyMap<SystemSet, SetOrdering>, scheduledSystems: ReadonlyMap<SystemDescriptor, unknown>, onWarn: (message: string) => void): SystemDescriptor[];
|
|
33
|
+
//# sourceMappingURL=schedule_plan.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { SystemOrderingTarget, SystemSet } from './system_set.js';
|
|
2
|
+
import { SystemDescriptor } from './system.js';
|
|
3
|
+
import { RunCondition } from './run_condition.js';
|
|
4
|
+
/** A phase's execution plan: its topologically sorted systems and, index-aligned,
|
|
5
|
+
* each one's `_lastRunTicks` slot. Cached as a unit and invalidated together. */
|
|
6
|
+
export interface PhasePlan {
|
|
7
|
+
readonly sorted: SystemDescriptor[];
|
|
8
|
+
readonly slots: Int32Array;
|
|
9
|
+
}
|
|
10
|
+
export interface SystemNode {
|
|
11
|
+
descriptor: SystemDescriptor;
|
|
12
|
+
insertionOrder: number;
|
|
13
|
+
before: Set<SystemOrderingTarget>;
|
|
14
|
+
after: Set<SystemOrderingTarget>;
|
|
15
|
+
/** This system's own run conditions (set conditions are resolved live from
|
|
16
|
+
* `_conditionsBySet` at run time so a later `configureSet` is honored). */
|
|
17
|
+
conditions: readonly RunCondition[];
|
|
18
|
+
/** Sets this system belongs to. */
|
|
19
|
+
sets: readonly SystemSet[];
|
|
20
|
+
}
|
|
21
|
+
/** One set's accumulated ordering, as `configureSet` builds it. A `Set` and not
|
|
22
|
+
* an array, so a target named twice still adds one edge. */
|
|
23
|
+
export interface SetOrdering {
|
|
24
|
+
before: Set<SystemOrderingTarget>;
|
|
25
|
+
after: Set<SystemOrderingTarget>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Delegates to the shared topologicalSort utility.
|
|
29
|
+
* Builds the dependency edge map from before and after constraints, then
|
|
30
|
+
* catches any cycle TypeError and re-throws as ECSError.
|
|
31
|
+
*/
|
|
32
|
+
export declare function sortSystems(nodes: SystemNode[], phase: string, orderingBySet: ReadonlyMap<SystemSet, SetOrdering>, scheduledSystems: ReadonlyMap<SystemDescriptor, unknown>, onWarn: (message: string) => void): SystemDescriptor[];
|
|
33
|
+
//# sourceMappingURL=schedule_plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule_plan.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/schedule_plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;KAkBK;AAIL,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD;iFACiF;AACjF,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IAC1B,UAAU,EAAE,gBAAgB,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACjC;+EAC2E;IAC3E,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC,mCAAmC;IACnC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;CAC3B;AAED;4DAC4D;AAC5D,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,KAAK,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,UAAU,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,EAClD,gBAAgB,EAAE,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,EACxD,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAC/B,gBAAgB,EAAE,CAyGpB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Archetype } from './archetype.cjs';
|
|
2
|
+
import { RelationStoreView } from './relation.cjs';
|
|
3
|
+
import { SparseComponentStore } from './sparse_store.cjs';
|
|
4
|
+
import { ColumnStore, InPlaceBufferAllocator } from '../store/index.cjs';
|
|
5
|
+
/** Combined-frame format version. Bumped if the section framing or host-state
|
|
6
|
+
* layout changes. Independent of `SIM_ABI_VERSION` (which gates the dense
|
|
7
|
+
* bytes). */
|
|
8
|
+
export declare const ECS_SNAPSHOT_VERSION = 1;
|
|
9
|
+
/** Per-archetype host-side row bookkeeping the SAB doesn't carry authoritatively. */
|
|
10
|
+
export interface ArchetypeRowState {
|
|
11
|
+
readonly archetypeId: number;
|
|
12
|
+
/** Total live rows (enabled + disabled). */
|
|
13
|
+
readonly length: number;
|
|
14
|
+
/** Enabled-row partition boundary: rows `[0, enabledCount)` enabled. */
|
|
15
|
+
readonly enabledCount: number;
|
|
16
|
+
}
|
|
17
|
+
/** The host-side state a snapshot captures alongside the dense + sparse bytes. */
|
|
18
|
+
export interface HostState {
|
|
19
|
+
/** World tick at snapshot time (`Store.tick`). */
|
|
20
|
+
readonly tick: number;
|
|
21
|
+
/** Entity-index high-water (count of slots ever issued). Also mirrored in the
|
|
22
|
+
* SAB region's `length` header. Carried here for a cross-check on restore. */
|
|
23
|
+
readonly entityHighWater: number;
|
|
24
|
+
/** Live entity count. */
|
|
25
|
+
readonly entityAliveCount: number;
|
|
26
|
+
/** Recycle free-list in live order (LIFO: the last element is the next slot
|
|
27
|
+
* `createEntity` hands out). */
|
|
28
|
+
readonly freeIndices: readonly number[];
|
|
29
|
+
/** Per-archetype row state, one entry per SAB-backed archetype. */
|
|
30
|
+
readonly archetypeRows: readonly ArchetypeRowState[];
|
|
31
|
+
}
|
|
32
|
+
/** What the snapshot and resume orchestration needs from `Store`, closure-
|
|
33
|
+
* injected (the `RelationServiceHost` style). Accessors re-read live fields
|
|
34
|
+
* per call (the column store and the entity-index views are replaced on
|
|
35
|
+
* restore). The three mutation members keep Store-owned state transitions on
|
|
36
|
+
* the Store side. All cold-path. */
|
|
37
|
+
export interface SnapshotHost {
|
|
38
|
+
readonly sparseStores: () => readonly SparseComponentStore[];
|
|
39
|
+
/** The relation stores, narrowed to what the codec folds and rebuilds. A
|
|
40
|
+
* world without the relations plugin answers with an empty list. */
|
|
41
|
+
readonly relationStores: () => readonly RelationStoreView[];
|
|
42
|
+
/** Live SAB generations view (replanted on restore), for rebuilding
|
|
43
|
+
* relation ids from entity indices. */
|
|
44
|
+
readonly generations: () => Int32Array;
|
|
45
|
+
readonly archetypes: () => readonly Archetype[];
|
|
46
|
+
readonly columnStore: () => ColumnStore;
|
|
47
|
+
readonly bufferAllocator: () => InPlaceBufferAllocator;
|
|
48
|
+
readonly entityIndexCapacity: () => number;
|
|
49
|
+
readonly tick: () => number;
|
|
50
|
+
readonly setTick: (tick: number) => void;
|
|
51
|
+
/** Stamp live row counts into the dense descriptors so a bare dense
|
|
52
|
+
* reader of the snapshot sees self-consistent counts. */
|
|
53
|
+
readonly publishRowCounts: () => void;
|
|
54
|
+
/** Adopt a restored dense store: swap the live backing, refresh archetype
|
|
55
|
+
* views, recover the allocator high-water from the restored region, and
|
|
56
|
+
* republish (the grow tail). Owned by Store, see `_mountRestoredDense`. */
|
|
57
|
+
readonly mountRestoredDense: (restored: ColumnStore) => void;
|
|
58
|
+
/** Rebuild each archetype's host-side `length` and `enabledCount`/entity-id
|
|
59
|
+
* back-references from the restored entity-index region + captured host
|
|
60
|
+
* state. Owned by Store, see `_reconstructHostRows`. */
|
|
61
|
+
readonly reconstructHostRows: (host: HostState) => void;
|
|
62
|
+
/** Every archetype's membership only changed, bump the query epoch and
|
|
63
|
+
* force the next descriptor publish. */
|
|
64
|
+
readonly invalidateCaches: () => void;
|
|
65
|
+
}
|
|
66
|
+
/** What the world calls into a snapshot service it did not build.
|
|
67
|
+
*
|
|
68
|
+
* `Store` keeps the `DETERMINISM_DISABLED` gate and delegates the four
|
|
69
|
+
* captures and mounts through this. A world without the plugin holds `null`
|
|
70
|
+
* here and answers a reach with the fault that names the import. */
|
|
71
|
+
export interface SnapshotHooks {
|
|
72
|
+
snapshot(): Uint8Array;
|
|
73
|
+
restore(bytes: Uint8Array): void;
|
|
74
|
+
snapshotSparse(): Uint8Array;
|
|
75
|
+
restoreSparse(bytes: Uint8Array): void;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { Archetype } from './archetype.js';
|
|
2
|
+
import { RelationStoreView } from './relation.js';
|
|
3
|
+
import { SparseComponentStore } from './sparse_store.js';
|
|
4
|
+
import { ColumnStore, InPlaceBufferAllocator } from '../store/index.js';
|
|
5
|
+
/** Combined-frame format version. Bumped if the section framing or host-state
|
|
6
|
+
* layout changes. Independent of `SIM_ABI_VERSION` (which gates the dense
|
|
7
|
+
* bytes). */
|
|
8
|
+
export declare const ECS_SNAPSHOT_VERSION = 1;
|
|
9
|
+
/** Per-archetype host-side row bookkeeping the SAB doesn't carry authoritatively. */
|
|
10
|
+
export interface ArchetypeRowState {
|
|
11
|
+
readonly archetypeId: number;
|
|
12
|
+
/** Total live rows (enabled + disabled). */
|
|
13
|
+
readonly length: number;
|
|
14
|
+
/** Enabled-row partition boundary: rows `[0, enabledCount)` enabled. */
|
|
15
|
+
readonly enabledCount: number;
|
|
16
|
+
}
|
|
17
|
+
/** The host-side state a snapshot captures alongside the dense + sparse bytes. */
|
|
18
|
+
export interface HostState {
|
|
19
|
+
/** World tick at snapshot time (`Store.tick`). */
|
|
20
|
+
readonly tick: number;
|
|
21
|
+
/** Entity-index high-water (count of slots ever issued). Also mirrored in the
|
|
22
|
+
* SAB region's `length` header. Carried here for a cross-check on restore. */
|
|
23
|
+
readonly entityHighWater: number;
|
|
24
|
+
/** Live entity count. */
|
|
25
|
+
readonly entityAliveCount: number;
|
|
26
|
+
/** Recycle free-list in live order (LIFO: the last element is the next slot
|
|
27
|
+
* `createEntity` hands out). */
|
|
28
|
+
readonly freeIndices: readonly number[];
|
|
29
|
+
/** Per-archetype row state, one entry per SAB-backed archetype. */
|
|
30
|
+
readonly archetypeRows: readonly ArchetypeRowState[];
|
|
31
|
+
}
|
|
32
|
+
/** What the snapshot and resume orchestration needs from `Store`, closure-
|
|
33
|
+
* injected (the `RelationServiceHost` style). Accessors re-read live fields
|
|
34
|
+
* per call (the column store and the entity-index views are replaced on
|
|
35
|
+
* restore). The three mutation members keep Store-owned state transitions on
|
|
36
|
+
* the Store side. All cold-path. */
|
|
37
|
+
export interface SnapshotHost {
|
|
38
|
+
readonly sparseStores: () => readonly SparseComponentStore[];
|
|
39
|
+
/** The relation stores, narrowed to what the codec folds and rebuilds. A
|
|
40
|
+
* world without the relations plugin answers with an empty list. */
|
|
41
|
+
readonly relationStores: () => readonly RelationStoreView[];
|
|
42
|
+
/** Live SAB generations view (replanted on restore), for rebuilding
|
|
43
|
+
* relation ids from entity indices. */
|
|
44
|
+
readonly generations: () => Int32Array;
|
|
45
|
+
readonly archetypes: () => readonly Archetype[];
|
|
46
|
+
readonly columnStore: () => ColumnStore;
|
|
47
|
+
readonly bufferAllocator: () => InPlaceBufferAllocator;
|
|
48
|
+
readonly entityIndexCapacity: () => number;
|
|
49
|
+
readonly tick: () => number;
|
|
50
|
+
readonly setTick: (tick: number) => void;
|
|
51
|
+
/** Stamp live row counts into the dense descriptors so a bare dense
|
|
52
|
+
* reader of the snapshot sees self-consistent counts. */
|
|
53
|
+
readonly publishRowCounts: () => void;
|
|
54
|
+
/** Adopt a restored dense store: swap the live backing, refresh archetype
|
|
55
|
+
* views, recover the allocator high-water from the restored region, and
|
|
56
|
+
* republish (the grow tail). Owned by Store, see `_mountRestoredDense`. */
|
|
57
|
+
readonly mountRestoredDense: (restored: ColumnStore) => void;
|
|
58
|
+
/** Rebuild each archetype's host-side `length` and `enabledCount`/entity-id
|
|
59
|
+
* back-references from the restored entity-index region + captured host
|
|
60
|
+
* state. Owned by Store, see `_reconstructHostRows`. */
|
|
61
|
+
readonly reconstructHostRows: (host: HostState) => void;
|
|
62
|
+
/** Every archetype's membership only changed, bump the query epoch and
|
|
63
|
+
* force the next descriptor publish. */
|
|
64
|
+
readonly invalidateCaches: () => void;
|
|
65
|
+
}
|
|
66
|
+
/** What the world calls into a snapshot service it did not build.
|
|
67
|
+
*
|
|
68
|
+
* `Store` keeps the `DETERMINISM_DISABLED` gate and delegates the four
|
|
69
|
+
* captures and mounts through this. A world without the plugin holds `null`
|
|
70
|
+
* here and answers a reach with the fault that names the import. */
|
|
71
|
+
export interface SnapshotHooks {
|
|
72
|
+
snapshot(): Uint8Array;
|
|
73
|
+
restore(bytes: Uint8Array): void;
|
|
74
|
+
snapshotSparse(): Uint8Array;
|
|
75
|
+
restoreSparse(bytes: Uint8Array): void;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;KAUK;AAEL,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEpE;;aAEa;AACb,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,qFAAqF;AACrF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC9B;AAED,kFAAkF;AAClF,MAAM,WAAW,SAAS;IACzB,kDAAkD;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;kFAC8E;IAC9E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,yBAAyB;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;oCACgC;IAChC,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,mEAAmE;IACnE,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACrD;AAED;;;;oCAIoC;AACpC,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,SAAS,oBAAoB,EAAE,CAAC;IAC7D;wEACoE;IACpE,QAAQ,CAAC,cAAc,EAAE,MAAM,SAAS,iBAAiB,EAAE,CAAC;IAC5D;2CACuC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,UAAU,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,SAAS,SAAS,EAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,WAAW,CAAC;IACxC,QAAQ,CAAC,eAAe,EAAE,MAAM,sBAAsB,CAAC;IACvD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,MAAM,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;6DACyD;IACzD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IACtC;;+EAE2E;IAC3E,QAAQ,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7D;;4DAEwD;IACxD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACxD;4CACwC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,IAAI,CAAC;CACtC;AAED;;;;oEAIoE;AACpE,MAAM,WAAW,aAAa;IAC7B,QAAQ,IAAI,UAAU,CAAC;IACvB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,cAAc,IAAI,UAAU,CAAC;IAC7B,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CACvC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ColumnStore } from '../store/column_store.cjs';
|
|
2
|
+
import { ArchetypeID } from './archetype_types.cjs';
|
|
3
|
+
import { EntityAllocator } from './entity_allocator.cjs';
|
|
4
|
+
import { HostState } from './snapshot.cjs';
|
|
5
|
+
/** What a restore asks of an archetype. Every live `Archetype` satisfies it. */
|
|
6
|
+
export interface RestorableArchetype {
|
|
7
|
+
readonly isBufferBacked: boolean;
|
|
8
|
+
refreshViews(store: ColumnStore): void;
|
|
9
|
+
resetTicks(): void;
|
|
10
|
+
restoreHostRows(rows: number[], enabledCount: number): void;
|
|
11
|
+
}
|
|
12
|
+
/** One archetype, by id, for the row reconstruction below. */
|
|
13
|
+
export type ArchetypeLookup = (id: ArchetypeID) => RestorableArchetype;
|
|
14
|
+
/**
|
|
15
|
+
* Republish every buffer-backed archetype's views over the restored backing,
|
|
16
|
+
* drop the row ticks, and recover the allocator high-water from the restored
|
|
17
|
+
* entity-index region.
|
|
18
|
+
*
|
|
19
|
+
* The caller assigns the restored store to its own field first, and calls its
|
|
20
|
+
* buffer-resized handler after. The high-water read has to happen before that
|
|
21
|
+
* handler, because the handler mirrors the host high-water back into the
|
|
22
|
+
* header and a stale host value would clobber the restored one.
|
|
23
|
+
*
|
|
24
|
+
* The rows under the tick plane belong to the snapshot now, so no record made
|
|
25
|
+
* before the restore names a write of theirs. That is why every archetype's
|
|
26
|
+
* ticks reset, buffer-backed or not.
|
|
27
|
+
*/
|
|
28
|
+
export declare function adoptRestoredBacking(restored: ColumnStore, archetypes: readonly RestorableArchetype[], allocator: EntityAllocator): void;
|
|
29
|
+
/**
|
|
30
|
+
* Rebuild each buffer-backed archetype's host-side `length`, `enabledCount`
|
|
31
|
+
* and per-row entity ids after a restore swapped the dense backing.
|
|
32
|
+
*
|
|
33
|
+
* `length` and the row-to-entity back reference come from a scan of the
|
|
34
|
+
* restored entity-index region, which says what entity occupies what row.
|
|
35
|
+
* `enabledCount` comes from the captured host state, because the enabled
|
|
36
|
+
* partition boundary is positional and has no per-entity byte source.
|
|
37
|
+
*
|
|
38
|
+
* The caller guarantees that `entityArchetypes` and `entityRows` are the views
|
|
39
|
+
* over the restored region, not the views from before the swap.
|
|
40
|
+
*/
|
|
41
|
+
export declare function reconstructHostRows(host: HostState, archetypeAt: ArchetypeLookup, entityArchetypes: Int32Array, entityRows: Int32Array, allocator: EntityAllocator): void;
|
|
42
|
+
//# sourceMappingURL=snapshot_mount.d.ts.map
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ColumnStore } from '../store/column_store.js';
|
|
2
|
+
import { ArchetypeID } from './archetype_types.js';
|
|
3
|
+
import { EntityAllocator } from './entity_allocator.js';
|
|
4
|
+
import { HostState } from './snapshot.js';
|
|
5
|
+
/** What a restore asks of an archetype. Every live `Archetype` satisfies it. */
|
|
6
|
+
export interface RestorableArchetype {
|
|
7
|
+
readonly isBufferBacked: boolean;
|
|
8
|
+
refreshViews(store: ColumnStore): void;
|
|
9
|
+
resetTicks(): void;
|
|
10
|
+
restoreHostRows(rows: number[], enabledCount: number): void;
|
|
11
|
+
}
|
|
12
|
+
/** One archetype, by id, for the row reconstruction below. */
|
|
13
|
+
export type ArchetypeLookup = (id: ArchetypeID) => RestorableArchetype;
|
|
14
|
+
/**
|
|
15
|
+
* Republish every buffer-backed archetype's views over the restored backing,
|
|
16
|
+
* drop the row ticks, and recover the allocator high-water from the restored
|
|
17
|
+
* entity-index region.
|
|
18
|
+
*
|
|
19
|
+
* The caller assigns the restored store to its own field first, and calls its
|
|
20
|
+
* buffer-resized handler after. The high-water read has to happen before that
|
|
21
|
+
* handler, because the handler mirrors the host high-water back into the
|
|
22
|
+
* header and a stale host value would clobber the restored one.
|
|
23
|
+
*
|
|
24
|
+
* The rows under the tick plane belong to the snapshot now, so no record made
|
|
25
|
+
* before the restore names a write of theirs. That is why every archetype's
|
|
26
|
+
* ticks reset, buffer-backed or not.
|
|
27
|
+
*/
|
|
28
|
+
export declare function adoptRestoredBacking(restored: ColumnStore, archetypes: readonly RestorableArchetype[], allocator: EntityAllocator): void;
|
|
29
|
+
/**
|
|
30
|
+
* Rebuild each buffer-backed archetype's host-side `length`, `enabledCount`
|
|
31
|
+
* and per-row entity ids after a restore swapped the dense backing.
|
|
32
|
+
*
|
|
33
|
+
* `length` and the row-to-entity back reference come from a scan of the
|
|
34
|
+
* restored entity-index region, which says what entity occupies what row.
|
|
35
|
+
* `enabledCount` comes from the captured host state, because the enabled
|
|
36
|
+
* partition boundary is positional and has no per-entity byte source.
|
|
37
|
+
*
|
|
38
|
+
* The caller guarantees that `entityArchetypes` and `entityRows` are the views
|
|
39
|
+
* over the restored region, not the views from before the swap.
|
|
40
|
+
*/
|
|
41
|
+
export declare function reconstructHostRows(host: HostState, archetypeAt: ArchetypeLookup, entityArchetypes: Int32Array, entityRows: Int32Array, allocator: EntityAllocator): void;
|
|
42
|
+
//# sourceMappingURL=snapshot_mount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot_mount.d.ts","sourceRoot":"","sources":["../../../src/core/ecs/snapshot_mount.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;KAoBK;AAGL,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,gFAAgF;AAChF,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACvC,UAAU,IAAI,IAAI,CAAC;IACnB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D;AAED,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,mBAAmB,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,SAAS,mBAAmB,EAAE,EAC1C,SAAS,EAAE,eAAe,GACxB,IAAI,CAWN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAClC,IAAI,EAAE,SAAS,EACf,WAAW,EAAE,eAAe,EAC5B,gBAAgB,EAAE,UAAU,EAC5B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,eAAe,GACxB,IAAI,CAuCN"}
|