2025-03-28 00:53:19 +00:00
< html > < head >
< link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css" >
< script src = "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js" > < / script >
< style >
2025-03-28 01:29:50 +00:00
body { font-family: monospace; text-align: center; }
#funcTable table { margin: 0 auto; width: auto; max-width: 300px; font-size: 14px; border-collapse: collapse; }
#funcTable th, #funcTable td { padding: 2px 6px; text-align: left; white-space: nowrap; }
#funcTable th { background-color: #ddd; }
#funcTable td:nth-child(2) { text-align: right; min-width: 50px; }
2025-03-28 00:53:19 +00:00
.zero-hits { background-color: #fcc; font-weight: bold; color: red; }
.nonzero-hits { color: green; font-weight: bold; }
.low-hits { background-color: #ffe6b3; }
.high-hits { background-color: #cfc; }
2025-03-28 01:29:50 +00:00
.source-code-table { margin-left: 10px; }th, td { padding: 0px; font-size: 12px; }
2025-03-28 00:53:19 +00:00
table.table { font-size: 14px; border-collapse: collapse; }
table.table th, table.table td { padding: 1px; font-size: 12px; line-height: 1.2; }
table.table tr { height: auto; }
< / style > < / head > < body >
< h1 class = "text-center" > jecs.luau Coverage< / h1 >
2025-03-28 01:29:50 +00:00
< h2 > Total Execution Hits: 1006447< / h2 >
< h2 > Function Coverage Overview: 84.54%< / h2 >
2025-03-28 00:53:19 +00:00
< button class = "btn btn-primary mb-2" type = "button" data-bs-toggle = "collapse" data-bs-target = "#funcTable" > Toggle Function Coverage< / button >
< div class = "collapse show" id = "funcTable" >
< h2 > Function Coverage:< / h2 > < table class = "table table-bordered" > < thead > < tr > < th > Function< / th > < th > Hits< / th > < / tr > < / thead > < tbody >
< tr > < td style = "padding: 1px; min-width: 31ch;" > < main > < / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1< / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_COMBINE:142< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 65683< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_IS_PAIR:147< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1729< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_GENERATION_INC:151< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 65684< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_ENTITY_T_LO:166< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 162390< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_GENERATION:170< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 5< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_ENTITY_T_HI:174< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_PAIR:178< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 133381< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_PAIR_FIRST:185< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 648< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_PAIR_SECOND:189< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 722< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > entity_index_try_get_any:193< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 133207< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > entity_index_try_get:206< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 66607< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > entity_index_try_get_fast:220< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 25535< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > entity_index_is_alive:230< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 922< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > entity_index_get_alive:234< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 842< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ecs_get_alive:242< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 9< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > entity_index_new_id:265< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 86562< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ecs_pair_first:286< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 4< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ecs_pair_second:291< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 5< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > query_match:296< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 10< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > find_observers:319< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1518< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_move:328< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1822< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_append:388< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 22380< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > new_entity:398< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 20558< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > entity_move:409< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1822< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > hash:423< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 569< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > fetch:427< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1809< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_get:438< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 734< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_has_one_inline:469< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 892< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_has:485< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 80< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_target:507< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1440< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > ECS_ID_IS_WILDCARD:539< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > id_record_ensure:545< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1509< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_append_to_records:608< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1507< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_create:633< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 635< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_entity:698< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 66852< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_parent:702< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_ensure:706< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 580< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > find_insert:720< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 551< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > find_archetype_with:732< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 551< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > find_archetype_without:750< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 33< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_init_edge:767< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 582< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_ensure_edge:778< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 22971< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > init_edge_for_add:792< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 549< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > init_edge_for_remove:809< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 33< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > create_edge_for_add:832< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 551< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > create_edge_for_remove:843< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 33< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_traverse_add:854< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 22092< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_traverse_remove:870< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 297< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_add:887< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 19316< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_set:919< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 2775< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_component:971< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 121< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_remove:983< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 298< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_fast_delete_last:1008< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 76< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_fast_delete:1016< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 58< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_delete:1025< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 134< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_clear:1064< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 6< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_disconnect_edge:1164< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 50< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_remove_edge:1175< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 23< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_clear_edges:1180< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 36< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > archetype_destroy:1213< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 37< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_cleanup:1249< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_delete:1270< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 65684< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_contains:1446< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 145< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > NOOP:1450< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > query_iter_init:1461< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 26< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1527< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 556< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1553< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 7< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1580< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1608< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 2< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1637< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1667< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1698< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1730< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:1764< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 2< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > query_iter:1798< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 20< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > query_without:1806< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 6< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > query_with:1836< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > query_archetypes:1870< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 5< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > query_cached:1874< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 6< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > on_create_callback:1924< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 4< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > on_delete_callback:1928< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 1< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > cached_query_iter:1941< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 11< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2001< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 11< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2027< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 8< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2054< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2082< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2111< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2141< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2172< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2204< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query_iter_next:2238< / td > < td style = "padding: 1px; color: red; font-weight: bold;" > 0< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_query:2295< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 33< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_each:2355< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 4< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > < anonymous > :2372< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 12< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_children:2389< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 2< / td > < / tr >
< tr > < td style = "padding: 1px; min-width: 31ch;" > world_new:2439< / td > < td style = "padding: 1px; color: green; font-weight: bold;" > 73< / td > < / tr >
2025-03-28 00:53:19 +00:00
< / tbody > < / table > < / div >
2025-03-28 01:29:50 +00:00
< h2 > Source Code:< / h2 > < table class = "table table-bordered source-code-table " > < thead > < tr > < th > Line< / th > < th > Hits< / th > < th > Code< / th > < / tr > < / thead > < tbody >
2025-03-28 00:53:19 +00:00
< tr > < td > 1< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --!optimize 2< / td > >< / tr >
< tr > < td > 2< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --!native< / td > >< / tr >
< tr > < td > 3< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --!strict< / td > >< / tr >
< tr > < td > 4< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --draft 4< / td > >< / tr >
< tr > < td > 5< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 6< / td > < td > 0< / td > < td > < span class = zero-hits > type i53 = number< / span > < / td > < / tr >
< tr > < td > 7< / td > < td > 0< / td > < td > < span class = zero-hits > type i24 = number< / span > < / td > < / tr >
< tr > < td > 8< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 9< / td > < td > 0< / td > < td > < span class = zero-hits > type Ty = { i53 }< / span > < / td > < / tr >
< tr > < td > 10< / td > < td > 0< / td > < td > < span class = zero-hits > type ArchetypeId = number< / span > < / td > < / tr >
< tr > < td > 11< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 12< / td > < td > 0< / td > < td > < span class = zero-hits > type Column = { any }< / span > < / td > < / tr >
< tr > < td > 13< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 14< / td > < td > 0< / td > < td > < span class = zero-hits > type Map< K , V > = { [K]: V }< / span > < / td > < / tr >
< tr > < td > 15< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 16< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_graph_edge_t = {< / span > < / td > < / tr >
< tr > < td > 17< / td > < td > 0< / td > < td > < span class = zero-hits > from: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 18< / td > < td > 0< / td > < td > < span class = zero-hits > to: ecs_archetype_t?,< / span > < / td > < / tr >
< tr > < td > 19< / td > < td > 0< / td > < td > < span class = zero-hits > id: number,< / span > < / td > < / tr >
< tr > < td > 20< / td > < td > 0< / td > < td > < span class = zero-hits > prev: ecs_graph_edge_t?,< / span > < / td > < / tr >
< tr > < td > 21< / td > < td > 0< / td > < td > < span class = zero-hits > next: ecs_graph_edge_t?,< / span > < / td > < / tr >
< tr > < td > 22< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 23< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 24< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_graph_edges_t = Map< i53 , ecs_graph_edge_t > < / span > < / td > < / tr >
< tr > < td > 25< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 26< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_graph_node_t = {< / span > < / td > < / tr >
< tr > < td > 27< / td > < td > 0< / td > < td > < span class = zero-hits > add: ecs_graph_edges_t,< / span > < / td > < / tr >
< tr > < td > 28< / td > < td > 0< / td > < td > < span class = zero-hits > remove: ecs_graph_edges_t,< / span > < / td > < / tr >
< tr > < td > 29< / td > < td > 0< / td > < td > < span class = zero-hits > refs: ecs_graph_edge_t,< / span > < / td > < / tr >
< tr > < td > 30< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 31< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 32< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_archetype_t = {< / span > < / td > < / tr >
< tr > < td > 33< / td > < td > 0< / td > < td > < span class = zero-hits > id: number,< / span > < / td > < / tr >
< tr > < td > 34< / td > < td > 0< / td > < td > < span class = zero-hits > types: Ty,< / span > < / td > < / tr >
< tr > < td > 35< / td > < td > 0< / td > < td > < span class = zero-hits > type: string,< / span > < / td > < / tr >
< tr > < td > 36< / td > < td > 0< / td > < td > < span class = zero-hits > entities: { number },< / span > < / td > < / tr >
< tr > < td > 37< / td > < td > 0< / td > < td > < span class = zero-hits > columns: { Column },< / span > < / td > < / tr >
< tr > < td > 38< / td > < td > 0< / td > < td > < span class = zero-hits > records: { [i53]: number },< / span > < / td > < / tr >
< tr > < td > 39< / td > < td > 0< / td > < td > < span class = zero-hits > counts: { [i53]: number },< / span > < / td > < / tr >
< tr > < td > 40< / td > < td > 0< / td > < td > < span class = zero-hits > } & ecs_graph_node_t< / span > < / td > < / tr >
< tr > < td > 41< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 42< / td > < td > 0< / td > < td > < span class = zero-hits > export type Archetype = {< / span > < / td > < / tr >
< tr > < td > 43< / td > < td > 0< / td > < td > < span class = zero-hits > id: number,< / span > < / td > < / tr >
< tr > < td > 44< / td > < td > 0< / td > < td > < span class = zero-hits > types: Ty,< / span > < / td > < / tr >
< tr > < td > 45< / td > < td > 0< / td > < td > < span class = zero-hits > type: string,< / span > < / td > < / tr >
< tr > < td > 46< / td > < td > 0< / td > < td > < span class = zero-hits > entities: { number },< / span > < / td > < / tr >
< tr > < td > 47< / td > < td > 0< / td > < td > < span class = zero-hits > columns: { Column },< / span > < / td > < / tr >
< tr > < td > 48< / td > < td > 0< / td > < td > < span class = zero-hits > records: { [Id]: number },< / span > < / td > < / tr >
< tr > < td > 49< / td > < td > 0< / td > < td > < span class = zero-hits > counts: { [Id]: number },< / span > < / td > < / tr >
< tr > < td > 50< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 51< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 52< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_record_t = {< / span > < / td > < / tr >
< tr > < td > 53< / td > < td > 0< / td > < td > < span class = zero-hits > archetype: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 54< / td > < td > 0< / td > < td > < span class = zero-hits > row: number,< / span > < / td > < / tr >
< tr > < td > 55< / td > < td > 0< / td > < td > < span class = zero-hits > dense: i24,< / span > < / td > < / tr >
< tr > < td > 56< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 57< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 58< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_id_record_t = {< / span > < / td > < / tr >
< tr > < td > 59< / td > < td > 0< / td > < td > < span class = zero-hits > cache: { number },< / span > < / td > < / tr >
< tr > < td > 60< / td > < td > 0< / td > < td > < span class = zero-hits > counts: { number },< / span > < / td > < / tr >
< tr > < td > 61< / td > < td > 0< / td > < td > < span class = zero-hits > flags: number,< / span > < / td > < / tr >
< tr > < td > 62< / td > < td > 0< / td > < td > < span class = zero-hits > size: number,< / span > < / td > < / tr >
< tr > < td > 63< / td > < td > 0< / td > < td > < span class = zero-hits > hooks: {< / span > < / td > < / tr >
< tr > < td > 64< / td > < td > 0< / td > < td > < span class = zero-hits > on_add: ((entity: i53) -> ())?,< / span > < / td > < / tr >
< tr > < td > 65< / td > < td > 0< / td > < td > < span class = zero-hits > on_set: ((entity: i53, data: any) -> ())?,< / span > < / td > < / tr >
< tr > < td > 66< / td > < td > 0< / td > < td > < span class = zero-hits > on_remove: ((entity: i53) -> ())?,< / span > < / td > < / tr >
< tr > < td > 67< / td > < td > 0< / td > < td > < span class = zero-hits > },< / span > < / td > < / tr >
< tr > < td > 68< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 69< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 70< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_id_index_t = Map< i53 , ecs_id_record_t > < / span > < / td > < / tr >
< tr > < td > 71< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 72< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_archetypes_map_t = { [string]: ecs_archetype_t }< / span > < / td > < / tr >
< tr > < td > 73< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 74< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_archetypes_t = { ecs_archetype_t }< / span > < / td > < / tr >
< tr > < td > 75< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 76< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_entity_index_t = {< / span > < / td > < / tr >
< tr > < td > 77< / td > < td > 0< / td > < td > < span class = zero-hits > dense_array: Map< number , i53 > ,< / span > < / td > < / tr >
< tr > < td > 78< / td > < td > 0< / td > < td > < span class = zero-hits > sparse_array: Map< i24 , ecs_record_t > ,< / span > < / td > < / tr >
< tr > < td > 79< / td > < td > 0< / td > < td > < span class = zero-hits > alive_count: number,< / span > < / td > < / tr >
< tr > < td > 80< / td > < td > 0< / td > < td > < span class = zero-hits > max_id: number,< / span > < / td > < / tr >
< tr > < td > 81< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 82< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 83< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_query_data_t = {< / span > < / td > < / tr >
< tr > < td > 84< / td > < td > 0< / td > < td > < span class = zero-hits > compatible_archetypes: { ecs_archetype_t },< / span > < / td > < / tr >
< tr > < td > 85< / td > < td > 0< / td > < td > < span class = zero-hits > ids: { i53 },< / span > < / td > < / tr >
< tr > < td > 86< / td > < td > 0< / td > < td > < span class = zero-hits > filter_with: { i53 },< / span > < / td > < / tr >
< tr > < td > 87< / td > < td > 0< / td > < td > < span class = zero-hits > filter_without: { i53 },< / span > < / td > < / tr >
< tr > < td > 88< / td > < td > 0< / td > < td > < span class = zero-hits > next: () -> (number, ...any),< / span > < / td > < / tr >
< tr > < td > 89< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 90< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 91< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 92< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_observer_t = {< / span > < / td > < / tr >
< tr > < td > 93< / td > < td > 0< / td > < td > < span class = zero-hits > callback: (archetype: ecs_archetype_t) -> (),< / span > < / td > < / tr >
< tr > < td > 94< / td > < td > 0< / td > < td > < span class = zero-hits > query: ecs_query_data_t,< / span > < / td > < / tr >
< tr > < td > 95< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 96< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 97< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_observable_t = Map< i53 , Map < i53 , { ecs_observer_t } > >< / span > < / td > < / tr >
< tr > < td > 98< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 99< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_world_t = {< / span > < / td > < / tr >
< tr > < td > 100< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index: ecs_entity_index_t,< / span > < / td > < / tr >
< tr > < td > 101< / td > < td > 0< / td > < td > < span class = zero-hits > component_index: ecs_id_index_t,< / span > < / td > < / tr >
< tr > < td > 102< / td > < td > 0< / td > < td > < span class = zero-hits > archetypes: ecs_archetypes_t,< / span > < / td > < / tr >
< tr > < td > 103< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_index: ecs_archetypes_map_t,< / span > < / td > < / tr >
< tr > < td > 104< / td > < td > 0< / td > < td > < span class = zero-hits > max_archetype_id: number,< / span > < / td > < / tr >
< tr > < td > 105< / td > < td > 0< / td > < td > < span class = zero-hits > max_component_id: number,< / span > < / td > < / tr >
< tr > < td > 106< / td > < td > 0< / td > < td > < span class = zero-hits > ROOT_ARCHETYPE: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 107< / td > < td > 0< / td > < td > < span class = zero-hits > observable: Map< i53 , Map < i53 , { ecs_observer_t } > >,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 108< / td > < td > 1< / td > < td > < span class = low-hits > }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 109< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 110< / td > < td > 1< / td > < td > < span class = low-hits > local HI_COMPONENT_ID = _G.__JECS_HI_COMPONENT_ID or 256< / span > < / td > < / tr >
< tr > < td > 111< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- stylua: ignore start< / td > >< / tr >
< tr > < td > 112< / td > < td > 1< / td > < td > < span class = low-hits > local EcsOnAdd = HI_COMPONENT_ID + 1< / span > < / td > < / tr >
< tr > < td > 113< / td > < td > 1< / td > < td > < span class = low-hits > local EcsOnRemove = HI_COMPONENT_ID + 2< / span > < / td > < / tr >
< tr > < td > 114< / td > < td > 1< / td > < td > < span class = low-hits > local EcsOnSet = HI_COMPONENT_ID + 3< / span > < / td > < / tr >
< tr > < td > 115< / td > < td > 1< / td > < td > < span class = low-hits > local EcsWildcard = HI_COMPONENT_ID + 4< / span > < / td > < / tr >
< tr > < td > 116< / td > < td > 1< / td > < td > < span class = low-hits > local EcsChildOf = HI_COMPONENT_ID + 5< / span > < / td > < / tr >
< tr > < td > 117< / td > < td > 1< / td > < td > < span class = low-hits > local EcsComponent = HI_COMPONENT_ID + 6< / span > < / td > < / tr >
< tr > < td > 118< / td > < td > 1< / td > < td > < span class = low-hits > local EcsOnDelete = HI_COMPONENT_ID + 7< / span > < / td > < / tr >
< tr > < td > 119< / td > < td > 1< / td > < td > < span class = low-hits > local EcsOnDeleteTarget = HI_COMPONENT_ID + 8< / span > < / td > < / tr >
< tr > < td > 120< / td > < td > 1< / td > < td > < span class = low-hits > local EcsDelete = HI_COMPONENT_ID + 9< / span > < / td > < / tr >
< tr > < td > 121< / td > < td > 1< / td > < td > < span class = low-hits > local EcsRemove = HI_COMPONENT_ID + 10< / span > < / td > < / tr >
< tr > < td > 122< / td > < td > 1< / td > < td > < span class = low-hits > local EcsName = HI_COMPONENT_ID + 11< / span > < / td > < / tr >
< tr > < td > 123< / td > < td > 1< / td > < td > < span class = low-hits > local EcsOnArchetypeCreate = HI_COMPONENT_ID + 12< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 124< / td > < td > 0< / td > < td > < span class = zero-hits > local EcsOnArchetypeDelete = HI_COMPONENT_ID + 13< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 125< / td > < td > 1< / td > < td > < span class = low-hits > local EcsRest = HI_COMPONENT_ID + 14< / span > < / td > < / tr >
< tr > < td > 126< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 127< / td > < td > 1< / td > < td > < span class = low-hits > local ECS_ID_DELETE = 0b0000_0001< / span > < / td > < / tr >
< tr > < td > 128< / td > < td > 1< / td > < td > < span class = low-hits > local ECS_ID_IS_TAG = 0b0000_0010< / span > < / td > < / tr >
< tr > < td > 129< / td > < td > 1< / td > < td > < span class = low-hits > local ECS_ID_HAS_ON_ADD = 0b0000_0100< / span > < / td > < / tr >
< tr > < td > 130< / td > < td > 1< / td > < td > < span class = low-hits > local ECS_ID_HAS_ON_SET = 0b0000_1000< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 131< / td > < td > 0< / td > < td > < span class = zero-hits > local ECS_ID_HAS_ON_REMOVE = 0b0001_0000< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 132< / td > < td > 1< / td > < td > < span class = low-hits > local ECS_ID_MASK = 0b0000_0000< / span > < / td > < / tr >
< tr > < td > 133< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 134< / td > < td > 0< / td > < td > < span class = zero-hits > local ECS_ENTITY_MASK = bit32.lshift(1, 24)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 135< / td > < td > 1< / td > < td > < span class = low-hits > local ECS_GENERATION_MASK = bit32.lshift(1, 16)< / span > < / td > < / tr >
< tr > < td > 136< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 137< / td > < td > 0< / td > < td > < span class = zero-hits > local NULL_ARRAY = table.freeze({})< / span > < / td > < / tr >
< tr > < td > 138< / td > < td > 0< / td > < td > < span class = zero-hits > local ECS_INTERNAL_ERROR = [[< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 139< / td > < td > 0< / td > < td > < span class = zero-hits > This is an internal error, please file a bug report via the following link:< / span > < / td > < / tr >
< tr > < td > 140< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 141< / td > < td > 0< / td > < td > < span class = zero-hits > https://github.com/Ukendio/jecs/issues/new?template=BUG-REPORT.md< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 142< / td > < td > 1< / td > < td > < span class = low-hits > ]]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 143< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 144< / td > < td > 0< / td > < td > < span class = zero-hits > local function ECS_COMBINE(id: number, generation: number): i53< / span > < / td > < / tr >
< tr > < td > 145< / td > < td > 1< / td > < td > < span class = low-hits > return id + (generation * ECS_ENTITY_MASK)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 146< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 147< / td > < td > 1< / td > < td > < span class = low-hits > local ECS_PAIR_OFFSET = 2^48< / span > < / td > < / tr >
< tr > < td > 148< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 149< / td > < td > 0< / td > < td > < span class = zero-hits > local function ECS_IS_PAIR(e: number): boolean< / span > < / td > < / tr >
< tr > < td > 150< / td > < td > 0< / td > < td > < span class = zero-hits > return e > ECS_PAIR_OFFSET< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 151< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 152< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 153< / td > < td > 65540< / td > < td > < span class = high-hits > local function ECS_GENERATION_INC(e: i53): i53< / span > < / td > < / tr >
< tr > < td > 154< / td > < td > 65540< / td > < td > < span class = high-hits > if e > ECS_ENTITY_MASK then< / span > < / td > < / tr >
< tr > < td > 155< / td > < td > 0< / td > < td > < span class = zero-hits > local id = e % ECS_ENTITY_MASK< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 156< / td > < td > 65540< / td > < td > < span class = high-hits > local generation = e // ECS_ENTITY_MASK< / span > < / td > < / tr >
< tr > < td > 157< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 158< / td > < td > 1< / td > < td > < span class = low-hits > local next_gen = generation + 1< / span > < / td > < / tr >
< tr > < td > 159< / td > < td > 0< / td > < td > < span class = zero-hits > if next_gen >= ECS_GENERATION_MASK then< / span > < / td > < / tr >
< tr > < td > 160< / td > < td > 0< / td > < td > < span class = zero-hits > return id< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 161< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 162< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 163< / td > < td > 144< / td > < td > < span class = low-hits > return ECS_COMBINE(id, next_gen)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 164< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 165< / td > < td > 0< / td > < td > < span class = zero-hits > return ECS_COMBINE(e, 1)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 166< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 167< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 168< / td > < td > 0< / td > < td > < span class = zero-hits > local function ECS_ENTITY_T_LO(e: i53): i24< / span > < / td > < / tr >
< tr > < td > 169< / td > < td > 0< / td > < td > < span class = zero-hits > return e % ECS_ENTITY_MASK< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 170< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 171< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 172< / td > < td > 0< / td > < td > < span class = zero-hits > local function ECS_GENERATION(e: i53)< / span > < / td > < / tr >
< tr > < td > 173< / td > < td > 0< / td > < td > < span class = zero-hits > return e // ECS_ENTITY_MASK< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 174< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 175< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 176< / td > < td > 0< / td > < td > < span class = zero-hits > local function ECS_ENTITY_T_HI(e: i53): i24< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 177< / td > < td > 0< / td > < td > < span class = zero-hits > return e // ECS_ENTITY_MASK< / span > < / td > < / tr >
< tr > < td > 178< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 179< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 180< / td > < td > 133381< / td > < td > < span class = high-hits > local function ECS_PAIR(pred: i53, obj: i53): i53< / span > < / td > < / tr >
< tr > < td > 181< / td > < td > 0< / td > < td > < span class = zero-hits > pred %= ECS_ENTITY_MASK< / span > < / td > < / tr >
< tr > < td > 182< / td > < td > 133381< / td > < td > < span class = high-hits > obj %= ECS_ENTITY_MASK< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 183< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 184< / td > < td > 0< / td > < td > < span class = zero-hits > return obj + (pred * ECS_ENTITY_MASK) + ECS_PAIR_OFFSET< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 185< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 186< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 187< / td > < td > 0< / td > < td > < span class = zero-hits > local function ECS_PAIR_FIRST(e: i53): i24< / span > < / td > < / tr >
< tr > < td > 188< / td > < td > 0< / td > < td > < span class = zero-hits > return (e - ECS_PAIR_OFFSET) // ECS_ENTITY_MASK< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 189< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 190< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 191< / td > < td > 0< / td > < td > < span class = zero-hits > local function ECS_PAIR_SECOND(e: i53): i24< / span > < / td > < / tr >
< tr > < td > 192< / td > < td > 0< / td > < td > < span class = zero-hits > return (e - ECS_PAIR_OFFSET) % ECS_ENTITY_MASK< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 193< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 194< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 195< / td > < td > 0< / td > < td > < span class = zero-hits > local function entity_index_try_get_any(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 196< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index: ecs_entity_index_t,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 197< / td > < td > 133207< / td > < td > < span class = high-hits > entity: number< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 198< / td > < td > 0< / td > < td > < span class = zero-hits > ): ecs_record_t?< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 199< / td > < td > 133207< / td > < td > < span class = high-hits > local r = entity_index.sparse_array[ECS_ENTITY_T_LO(entity)]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 200< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 201< / td > < td > 0< / td > < td > < span class = zero-hits > if not r or r.dense == 0 then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 202< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 203< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 204< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 205< / td > < td > 0< / td > < td > < span class = zero-hits > return r< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 206< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 207< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 208< / td > < td > 66607< / td > < td > < span class = high-hits > local function entity_index_try_get(entity_index: ecs_entity_index_t, entity: number): ecs_record_t?< / span > < / td > < / tr >
< tr > < td > 209< / td > < td > 66607< / td > < td > < span class = high-hits > local r = entity_index_try_get_any(entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 210< / td > < td > 66607< / td > < td > < span class = high-hits > if r then< / span > < / td > < / tr >
< tr > < td > 211< / td > < td > 130< / td > < td > < span class = low-hits > local r_dense = r.dense< / span > < / td > < / tr >
< tr > < td > 212< / td > < td > 0< / td > < td > < span class = zero-hits > if r_dense > entity_index.alive_count then< / span > < / td > < / tr >
< tr > < td > 213< / td > < td > 66477< / td > < td > < span class = high-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 214< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 215< / td > < td > 0< / td > < td > < span class = zero-hits > if entity_index.dense_array[r_dense] ~= entity then< / span > < / td > < / tr >
< tr > < td > 216< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 217< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 218< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 219< / td > < td > 0< / td > < td > < span class = zero-hits > return r< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 220< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 221< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 222< / td > < td > 25535< / td > < td > < span class = low-hits > local function entity_index_try_get_fast(entity_index: ecs_entity_index_t, entity: number): ecs_record_t?< / span > < / td > < / tr >
< tr > < td > 223< / td > < td > 25243< / td > < td > < span class = low-hits > local r = entity_index.sparse_array[ECS_ENTITY_T_LO(entity)]< / span > < / td > < / tr >
< tr > < td > 224< / td > < td > 24< / td > < td > < span class = low-hits > if r then< / span > < / td > < / tr >
< tr > < td > 225< / td > < td > 0< / td > < td > < span class = zero-hits > if entity_index.dense_array[r.dense] ~= entity then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 226< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 227< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 228< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 229< / td > < td > 0< / td > < td > < span class = zero-hits > return r< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 230< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 231< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 232< / td > < td > 0< / td > < td > < span class = zero-hits > local function entity_index_is_alive(entity_index: ecs_entity_index_t, entity: i53)< / span > < / td > < / tr >
< tr > < td > 233< / td > < td > 0< / td > < td > < span class = zero-hits > return entity_index_try_get(entity_index, entity) ~= nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 234< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 235< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 236< / td > < td > 842< / td > < td > < span class = low-hits > local function entity_index_get_alive(index: ecs_entity_index_t, entity: i53): i53?< / span > < / td > < / tr >
< tr > < td > 237< / td > < td > 842< / td > < td > < span class = low-hits > local r = entity_index_try_get_any(index, entity)< / span > < / td > < / tr >
< tr > < td > 238< / td > < td > 0< / td > < td > < span class = zero-hits > if r then< / span > < / td > < / tr >
< tr > < td > 239< / td > < td > 0< / td > < td > < span class = zero-hits > return index.dense_array[r.dense]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 240< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 241< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 242< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 243< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 244< / td > < td > 0< / td > < td > < span class = zero-hits > local function ecs_get_alive(world, entity)< / span > < / td > < / tr >
< tr > < td > 245< / td > < td > 0< / td > < td > < span class = zero-hits > if entity == 0 then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 246< / td > < td > 0< / td > < td > < span class = zero-hits > return 0< / span > < / td > < / tr >
< tr > < td > 247< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 248< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 249< / td > < td > 9< / td > < td > < span class = low-hits > local eindex = world.entity_index< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 250< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 251< / td > < td > 0< / td > < td > < span class = zero-hits > if entity_index_is_alive(eindex, entity) then< / span > < / td > < / tr >
< tr > < td > 252< / td > < td > 0< / td > < td > < span class = zero-hits > return entity< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 253< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 254< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 255< / td > < td > 0< / td > < td > < span class = zero-hits > if entity > ECS_ENTITY_MASK then< / span > < / td > < / tr >
< tr > < td > 256< / td > < td > 0< / td > < td > < span class = zero-hits > return 0< / span > < / td > < / tr >
< tr > < td > 257< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 258< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 259< / td > < td > 1< / td > < td > < span class = low-hits > local current = entity_index_get_alive(eindex, entity)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 260< / td > < td > 0< / td > < td > < span class = zero-hits > if not current or not entity_index_is_alive(eindex, current) then< / span > < / td > < / tr >
< tr > < td > 261< / td > < td > 0< / td > < td > < span class = zero-hits > return 0< / span > < / td > < / tr >
< tr > < td > 262< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 263< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 264< / td > < td > 0< / td > < td > < span class = zero-hits > return current< / span > < / td > < / tr >
< tr > < td > 265< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 266< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 267< / td > < td > 86562< / td > < td > < span class = high-hits > local function entity_index_new_id(entity_index: ecs_entity_index_t): i53< / span > < / td > < / tr >
< tr > < td > 268< / td > < td > 86562< / td > < td > < span class = high-hits > local dense_array = entity_index.dense_array< / span > < / td > < / tr >
< tr > < td > 269< / td > < td > 86562< / td > < td > < span class = high-hits > local alive_count = entity_index.alive_count< / span > < / td > < / tr >
< tr > < td > 270< / td > < td > 65559< / td > < td > < span class = high-hits > local max_id = entity_index.max_id< / span > < / td > < / tr >
< tr > < td > 271< / td > < td > 65559< / td > < td > < span class = high-hits > if alive_count ~= max_id then< / span > < / td > < / tr >
< tr > < td > 272< / td > < td > 65559< / td > < td > < span class = high-hits > alive_count += 1< / span > < / td > < / tr >
< tr > < td > 273< / td > < td > 65559< / td > < td > < span class = high-hits > entity_index.alive_count = alive_count< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 274< / td > < td > 0< / td > < td > < span class = zero-hits > local id = dense_array[alive_count]< / span > < / td > < / tr >
< tr > < td > 275< / td > < td > 0< / td > < td > < span class = zero-hits > return id< / span > < / td > < / tr >
< tr > < td > 276< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 277< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 278< / td > < td > 21003< / td > < td > < span class = low-hits > local id = max_id + 1< / span > < / td > < / tr >
< tr > < td > 279< / td > < td > 21003< / td > < td > < span class = low-hits > entity_index.max_id = id< / span > < / td > < / tr >
< tr > < td > 280< / td > < td > 21003< / td > < td > < span class = low-hits > alive_count += 1< / span > < / td > < / tr >
< tr > < td > 281< / td > < td > 21003< / td > < td > < span class = low-hits > entity_index.alive_count = alive_count< / span > < / td > < / tr >
< tr > < td > 282< / td > < td > 0< / td > < td > < span class = zero-hits > dense_array[alive_count] = id< / span > < / td > < / tr >
< tr > < td > 283< / td > < td > 21003< / td > < td > < span class = low-hits > entity_index.sparse_array[id] = { dense = alive_count } :: ecs_record_t< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 284< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 285< / td > < td > 0< / td > < td > < span class = zero-hits > return id< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 286< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 287< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 288< / td > < td > 4< / td > < td > < span class = low-hits > local function ecs_pair_first(world: ecs_world_t, e: i53)< / span > < / td > < / tr >
< tr > < td > 289< / td > < td > 0< / td > < td > < span class = zero-hits > local pred = ECS_PAIR_FIRST(e)< / span > < / td > < / tr >
< tr > < td > 290< / td > < td > 0< / td > < td > < span class = zero-hits > return ecs_get_alive(world, pred)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 291< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 292< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 293< / td > < td > 5< / td > < td > < span class = low-hits > local function ecs_pair_second(world: ecs_world_t, e: i53)< / span > < / td > < / tr >
< tr > < td > 294< / td > < td > 0< / td > < td > < span class = zero-hits > local obj = ECS_PAIR_SECOND(e)< / span > < / td > < / tr >
< tr > < td > 295< / td > < td > 0< / td > < td > < span class = zero-hits > return ecs_get_alive(world, obj)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 296< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 297< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 298< / td > < td > 10< / td > < td > < span class = low-hits > local function query_match(query: ecs_query_data_t,< / span > < / td > < / tr >
< tr > < td > 299< / td > < td > 10< / td > < td > < span class = low-hits > archetype: ecs_archetype_t)< / span > < / td > < / tr >
< tr > < td > 300< / td > < td > 0< / td > < td > < span class = zero-hits > local records = archetype.records< / span > < / td > < / tr >
< tr > < td > 301< / td > < td > 10< / td > < td > < span class = low-hits > local with = query.filter_with< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 302< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 303< / td > < td > 3< / td > < td > < span class = low-hits > for _, id in with do< / span > < / td > < / tr >
< tr > < td > 304< / td > < td > 0< / td > < td > < span class = zero-hits > if not records[id] then< / span > < / td > < / tr >
< tr > < td > 305< / td > < td > 0< / td > < td > < span class = zero-hits > return false< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 306< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 307< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 308< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 309< / td > < td > 6< / td > < td > < span class = low-hits > local without = query.filter_without< / span > < / td > < / tr >
< tr > < td > 310< / td > < td > 8< / td > < td > < span class = low-hits > if without then< / span > < / td > < / tr >
< tr > < td > 311< / td > < td > 2< / td > < td > < span class = low-hits > for _, id in without do< / span > < / td > < / tr >
< tr > < td > 312< / td > < td > 0< / td > < td > < span class = zero-hits > if records[id] then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 313< / td > < td > 0< / td > < td > < span class = zero-hits > return false< / span > < / td > < / tr >
< tr > < td > 314< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 315< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 316< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 317< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 318< / td > < td > 0< / td > < td > < span class = zero-hits > return true< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 319< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 320< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 321< / td > < td > 1518< / td > < td > < span class = low-hits > local function find_observers(world: ecs_world_t, event: i53,< / span > < / td > < / tr >
< tr > < td > 322< / td > < td > 1518< / td > < td > < span class = low-hits > component: i53): { ecs_observer_t }?< / span > < / td > < / tr >
< tr > < td > 323< / td > < td > 1499< / td > < td > < span class = low-hits > local cache = world.observable[event]< / span > < / td > < / tr >
< tr > < td > 324< / td > < td > 0< / td > < td > < span class = zero-hits > if not cache then< / span > < / td > < / tr >
< tr > < td > 325< / td > < td > 19< / td > < td > < span class = low-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 326< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 327< / td > < td > 0< / td > < td > < span class = zero-hits > return cache[component] :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 328< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 329< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 330< / td > < td > 0< / td > < td > < span class = zero-hits > local function archetype_move(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 331< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index: ecs_entity_index_t,< / span > < / td > < / tr >
< tr > < td > 332< / td > < td > 0< / td > < td > < span class = zero-hits > to: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 333< / td > < td > 0< / td > < td > < span class = zero-hits > dst_row: i24,< / span > < / td > < / tr >
< tr > < td > 334< / td > < td > 0< / td > < td > < span class = zero-hits > from: ecs_archetype_t,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 335< / td > < td > 1822< / td > < td > < span class = low-hits > src_row: i24< / span > < / td > < / tr >
< tr > < td > 336< / td > < td > 1822< / td > < td > < span class = low-hits > )< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 337< / td > < td > 1822< / td > < td > < span class = low-hits > local src_columns = from.columns< / span > < / td > < / tr >
< tr > < td > 338< / td > < td > 1822< / td > < td > < span class = low-hits > local dst_columns = to.columns< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 339< / td > < td > 0< / td > < td > < span class = zero-hits > local dst_entities = to.entities< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 340< / td > < td > 1822< / td > < td > < span class = low-hits > local src_entities = from.entities< / span > < / td > < / tr >
< tr > < td > 341< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 342< / td > < td > 1822< / td > < td > < span class = low-hits > local last = #src_entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 343< / td > < td > 0< / td > < td > < span class = zero-hits > local id_types = from.types< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 344< / td > < td > 1822< / td > < td > < span class = low-hits > local records = to.records< / span > < / td > < / tr >
< tr > < td > 345< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 346< / td > < td > 0< / td > < td > < span class = zero-hits > for i, column in src_columns do< / span > < / td > < / tr >
< tr > < td > 347< / td > < td > 0< / td > < td > < span class = zero-hits > if column == NULL_ARRAY then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 348< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 349< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 350< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Retrieves the new column index from the source archetype's record from each component< / td > >< / tr >
< tr > < td > 351< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- We have to do this because the columns are tightly packed and indexes may not correspond to each other.< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 352< / td > < td > 0< / td > < td > < span class = zero-hits > local tr = records[id_types[i]]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 353< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 354< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Sometimes target column may not exist, e.g. when you remove a component.< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 355< / td > < td > 0< / td > < td > < span class = zero-hits > if tr then< / span > < / td > < / tr >
< tr > < td > 356< / td > < td > 0< / td > < td > < span class = zero-hits > dst_columns[tr][dst_row] = column[src_row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 357< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 358< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 359< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- If the entity is the last row in the archetype then swapping it would be meaningless.< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 360< / td > < td > 95< / td > < td > < span class = low-hits > if src_row ~= last then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 361< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Swap rempves columns to ensure there are no holes in the archetype.< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 362< / td > < td > 1739< / td > < td > < span class = low-hits > column[src_row] = column[last]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 363< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 364< / td > < td > 0< / td > < td > < span class = zero-hits > column[last] = nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 365< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 366< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 367< / td > < td > 0< / td > < td > < span class = zero-hits > local moved = #src_entities< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 368< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 369< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Move the entity from the source to the destination archetype.< / td > >< / tr >
< tr > < td > 370< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Because we have swapped columns we now have to update the records< / td > >< / tr >
< tr > < td > 371< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- corresponding to the entities' rows that were swapped.< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 372< / td > < td > 0< / td > < td > < span class = zero-hits > local e1 = src_entities[src_row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 373< / td > < td > 1822< / td > < td > < span class = low-hits > local e2 = src_entities[moved]< / span > < / td > < / tr >
< tr > < td > 374< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 375< / td > < td > 0< / td > < td > < span class = zero-hits > if src_row ~= moved then< / span > < / td > < / tr >
< tr > < td > 376< / td > < td > 0< / td > < td > < span class = zero-hits > src_entities[src_row] = e2< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 377< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 378< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 379< / td > < td > 0< / td > < td > < span class = zero-hits > src_entities[moved] = nil :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 380< / td > < td > 1822< / td > < td > < span class = low-hits > dst_entities[dst_row] = e1< / span > < / td > < / tr >
< tr > < td > 381< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 382< / td > < td > 1822< / td > < td > < span class = low-hits > local sparse_array = entity_index.sparse_array< / span > < / td > < / tr >
< tr > < td > 383< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 384< / td > < td > 1822< / td > < td > < span class = low-hits > local record1 = sparse_array[ECS_ENTITY_T_LO(e1)]< / span > < / td > < / tr >
< tr > < td > 385< / td > < td > 1822< / td > < td > < span class = low-hits > local record2 = sparse_array[ECS_ENTITY_T_LO(e2)]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 386< / td > < td > 0< / td > < td > < span class = zero-hits > record1.row = dst_row< / span > < / td > < / tr >
< tr > < td > 387< / td > < td > 0< / td > < td > < span class = zero-hits > record2.row = src_row< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 388< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 389< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 390< / td > < td > 0< / td > < td > < span class = zero-hits > local function archetype_append(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 391< / td > < td > 0< / td > < td > < span class = zero-hits > entity: i53,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 392< / td > < td > 22380< / td > < td > < span class = low-hits > archetype: ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 393< / td > < td > 22380< / td > < td > < span class = low-hits > ): number< / span > < / td > < / tr >
< tr > < td > 394< / td > < td > 22380< / td > < td > < span class = low-hits > local entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 395< / td > < td > 22380< / td > < td > < span class = low-hits > local length = #entities + 1< / span > < / td > < / tr >
< tr > < td > 396< / td > < td > 0< / td > < td > < span class = zero-hits > entities[length] = entity< / span > < / td > < / tr >
< tr > < td > 397< / td > < td > 0< / td > < td > < span class = zero-hits > return length< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 398< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 399< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 400< / td > < td > 0< / td > < td > < span class = zero-hits > local function new_entity(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 401< / td > < td > 0< / td > < td > < span class = zero-hits > entity: i53,< / span > < / td > < / tr >
< tr > < td > 402< / td > < td > 0< / td > < td > < span class = zero-hits > record: ecs_record_t,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 403< / td > < td > 20558< / td > < td > < span class = low-hits > archetype: ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 404< / td > < td > 20558< / td > < td > < span class = low-hits > ): ecs_record_t< / span > < / td > < / tr >
< tr > < td > 405< / td > < td > 20558< / td > < td > < span class = low-hits > local row = archetype_append(entity, archetype)< / span > < / td > < / tr >
< tr > < td > 406< / td > < td > 20558< / td > < td > < span class = low-hits > record.archetype = archetype< / span > < / td > < / tr >
< tr > < td > 407< / td > < td > 0< / td > < td > < span class = zero-hits > record.row = row< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 408< / td > < td > 0< / td > < td > < span class = zero-hits > return record< / span > < / td > < / tr >
< tr > < td > 409< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 410< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 411< / td > < td > 0< / td > < td > < span class = zero-hits > local function entity_move(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 412< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index: ecs_entity_index_t,< / span > < / td > < / tr >
< tr > < td > 413< / td > < td > 0< / td > < td > < span class = zero-hits > entity: i53,< / span > < / td > < / tr >
< tr > < td > 414< / td > < td > 0< / td > < td > < span class = zero-hits > record: ecs_record_t,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 415< / td > < td > 1822< / td > < td > < span class = low-hits > to: ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 416< / td > < td > 1822< / td > < td > < span class = low-hits > )< / span > < / td > < / tr >
< tr > < td > 417< / td > < td > 1822< / td > < td > < span class = low-hits > local sourceRow = record.row< / span > < / td > < / tr >
< tr > < td > 418< / td > < td > 1822< / td > < td > < span class = low-hits > local from = record.archetype< / span > < / td > < / tr >
< tr > < td > 419< / td > < td > 1822< / td > < td > < span class = low-hits > local dst_row = archetype_append(entity, to)< / span > < / td > < / tr >
< tr > < td > 420< / td > < td > 1822< / td > < td > < span class = low-hits > archetype_move(entity_index, to, dst_row, from, sourceRow)< / span > < / td > < / tr >
< tr > < td > 421< / td > < td > 0< / td > < td > < span class = zero-hits > record.archetype = to< / span > < / td > < / tr >
< tr > < td > 422< / td > < td > 0< / td > < td > < span class = zero-hits > record.row = dst_row< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 423< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 424< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 425< / td > < td > 0< / td > < td > < span class = zero-hits > local function hash(arr: { number }): string< / span > < / td > < / tr >
< tr > < td > 426< / td > < td > 0< / td > < td > < span class = zero-hits > return table.concat(arr, "_")< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 427< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 428< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 429< / td > < td > 1809< / td > < td > < span class = low-hits > local function fetch(id: i53, records: { number },< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 430< / td > < td > 0< / td > < td > < span class = zero-hits > columns: { Column }, row: number): any< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 431< / td > < td > 1809< / td > < td > < span class = low-hits > local tr = records[id]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 432< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 433< / td > < td > 0< / td > < td > < span class = zero-hits > if not tr then< / span > < / td > < / tr >
< tr > < td > 434< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 435< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 436< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 437< / td > < td > 0< / td > < td > < span class = zero-hits > return columns[tr][row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 438< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 439< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 440< / td > < td > 734< / td > < td > < span class = low-hits > local function world_get(world: ecs_world_t, entity: i53,< / span > < / td > < / tr >
< tr > < td > 441< / td > < td > 734< / td > < td > < span class = low-hits > a: i53, b: i53?, c: i53?, d: i53?, e: i53?): ...any< / span > < / td > < / tr >
< tr > < td > 442< / td > < td > 75< / td > < td > < span class = low-hits > local record = entity_index_try_get_fast(world.entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 443< / td > < td > 0< / td > < td > < span class = zero-hits > if not record then< / span > < / td > < / tr >
< tr > < td > 444< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 445< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 446< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 447< / td > < td > 36< / td > < td > < span class = low-hits > local archetype = record.archetype< / span > < / td > < / tr >
< tr > < td > 448< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 449< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 450< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 451< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 452< / td > < td > 623< / td > < td > < span class = low-hits > local records = archetype.records< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 453< / td > < td > 0< / td > < td > < span class = zero-hits > local columns = archetype.columns< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 454< / td > < td > 623< / td > < td > < span class = low-hits > local row = record.row< / span > < / td > < / tr >
< tr > < td > 455< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 456< / td > < td > 623< / td > < td > < span class = low-hits > local va = fetch(a, records, columns, row)< / span > < / td > < / tr >
< tr > < td > 457< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 458< / td > < td > 593< / td > < td > < span class = low-hits > if not b then< / span > < / td > < / tr >
< tr > < td > 459< / td > < td > 0< / td > < td > < span class = zero-hits > return va< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 460< / td > < td > 593< / td > < td > < span class = low-hits > elseif not c then< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 461< / td > < td > 593< / td > < td > < span class = low-hits > return va, fetch(b, records, columns, row)< / span > < / td > < / tr >
< tr > < td > 462< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not d then< / span > < / td > < / tr >
< tr > < td > 463< / td > < td > 0< / td > < td > < span class = zero-hits > return va, fetch(b, records, columns, row), fetch(c, records, columns, row)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 464< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not e then< / span > < / td > < / tr >
< tr > < td > 465< / td > < td > 0< / td > < td > < span class = zero-hits > return va, fetch(b, records, columns, row), fetch(c, records, columns, row), fetch(d, records, columns, row)< / span > < / td > < / tr >
< tr > < td > 466< / td > < td > 0< / td > < td > < span class = zero-hits > else< / span > < / td > < / tr >
< tr > < td > 467< / td > < td > 0< / td > < td > < span class = zero-hits > error("args exceeded")< / span > < / td > < / tr >
< tr > < td > 468< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 469< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 470< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 471< / td > < td > 892< / td > < td > < span class = low-hits > local function world_has_one_inline(world: ecs_world_t, entity: i53, id: i53): boolean< / span > < / td > < / tr >
< tr > < td > 472< / td > < td > 73< / td > < td > < span class = low-hits > local record = entity_index_try_get_fast(world.entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 473< / td > < td > 0< / td > < td > < span class = zero-hits > if not record then< / span > < / td > < / tr >
< tr > < td > 474< / td > < td > 0< / td > < td > < span class = zero-hits > return false< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 475< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 476< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 477< / td > < td > 55< / td > < td > < span class = low-hits > local archetype = record.archetype< / span > < / td > < / tr >
< tr > < td > 478< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 479< / td > < td > 0< / td > < td > < span class = zero-hits > return false< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 480< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 481< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 482< / td > < td > 764< / td > < td > < span class = low-hits > local records = archetype.records< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 483< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 484< / td > < td > 0< / td > < td > < span class = zero-hits > return records[id] ~= nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 485< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 486< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 487< / td > < td > 80< / td > < td > < span class = low-hits > local function world_has(world: ecs_world_t, entity: i53, ...: i53): boolean< / span > < / td > < / tr >
< tr > < td > 488< / td > < td > 22< / td > < td > < span class = low-hits > local record = entity_index_try_get_fast(world.entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 489< / td > < td > 0< / td > < td > < span class = zero-hits > if not record then< / span > < / td > < / tr >
< tr > < td > 490< / td > < td > 0< / td > < td > < span class = zero-hits > return false< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 491< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 492< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 493< / td > < td > 1< / td > < td > < span class = low-hits > local archetype = record.archetype< / span > < / td > < / tr >
< tr > < td > 494< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 495< / td > < td > 0< / td > < td > < span class = zero-hits > return false< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 496< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 497< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 498< / td > < td > 57< / td > < td > < span class = low-hits > local records = archetype.records< / span > < / td > < / tr >
< tr > < td > 499< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 500< / td > < td > 25< / td > < td > < span class = low-hits > for i = 1, select("#", ...) do< / span > < / td > < / tr >
< tr > < td > 501< / td > < td > 0< / td > < td > < span class = zero-hits > if not records[select(i, ...)] then< / span > < / td > < / tr >
< tr > < td > 502< / td > < td > 0< / td > < td > < span class = zero-hits > return false< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 503< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 504< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 505< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 506< / td > < td > 0< / td > < td > < span class = zero-hits > return true< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 507< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 508< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 509< / td > < td > 1440< / td > < td > < span class = low-hits > local function world_target(world: ecs_world_t, entity: i53, relation: i24, index: number?): i24?< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 510< / td > < td > 1440< / td > < td > < span class = low-hits > local nth = index or 0< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 511< / td > < td > 146< / td > < td > < span class = low-hits > local record = entity_index_try_get_fast(world.entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 512< / td > < td > 0< / td > < td > < span class = zero-hits > if not record then< / span > < / td > < / tr >
< tr > < td > 513< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 514< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 515< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 516< / td > < td > 72< / td > < td > < span class = low-hits > local archetype = record.archetype< / span > < / td > < / tr >
< tr > < td > 517< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 518< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 519< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 520< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 521< / td > < td > 1222< / td > < td > < span class = low-hits > local r = ECS_PAIR(relation, EcsWildcard)< / span > < / td > < / tr >
< tr > < td > 522< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 523< / td > < td > 1167< / td > < td > < span class = low-hits > local count = archetype.counts[r]< / span > < / td > < / tr >
< tr > < td > 524< / td > < td > 0< / td > < td > < span class = zero-hits > if not count then< / span > < / td > < / tr >
< tr > < td > 525< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 526< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 527< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 528< / td > < td > 0< / td > < td > < span class = zero-hits > if nth >= count then< / span > < / td > < / tr >
< tr > < td > 529< / td > < td > 0< / td > < td > < span class = zero-hits > nth = nth + count + 1< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 530< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 531< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 532< / td > < td > 5< / td > < td > < span class = low-hits > nth = archetype.types[nth + archetype.records[r]]< / span > < / td > < / tr >
< tr > < td > 533< / td > < td > 0< / td > < td > < span class = zero-hits > if not nth then< / span > < / td > < / tr >
< tr > < td > 534< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 535< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 536< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 537< / td > < td > 0< / td > < td > < span class = zero-hits > return entity_index_get_alive(world.entity_index,< / span > < / td > < / tr >
< tr > < td > 538< / td > < td > 0< / td > < td > < span class = zero-hits > ECS_PAIR_SECOND(nth))< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 539< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 540< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 541< / td > < td > 0< / td > < td > < span class = zero-hits > local function ECS_ID_IS_WILDCARD(e: i53): boolean< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 542< / td > < td > 0< / td > < td > < span class = zero-hits > local first = ECS_ENTITY_T_HI(e)< / span > < / td > < / tr >
< tr > < td > 543< / td > < td > 0< / td > < td > < span class = zero-hits > local second = ECS_ENTITY_T_LO(e)< / span > < / td > < / tr >
< tr > < td > 544< / td > < td > 0< / td > < td > < span class = zero-hits > return first == EcsWildcard or second == EcsWildcard< / span > < / td > < / tr >
< tr > < td > 545< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 546< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 547< / td > < td > 1509< / td > < td > < span class = low-hits > local function id_record_ensure(world: ecs_world_t, id: number): ecs_id_record_t< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 548< / td > < td > 1509< / td > < td > < span class = low-hits > local component_index = world.component_index< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 549< / td > < td > 0< / td > < td > < span class = zero-hits > local entity_index = world.entity_index< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 550< / td > < td > 1509< / td > < td > < span class = low-hits > local idr: ecs_id_record_t = component_index[id]< / span > < / td > < / tr >
< tr > < td > 551< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 552< / td > < td > 704< / td > < td > < span class = low-hits > if not idr then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 553< / td > < td > 704< / td > < td > < span class = low-hits > local flags = ECS_ID_MASK< / span > < / td > < / tr >
< tr > < td > 554< / td > < td > 704< / td > < td > < span class = low-hits > local relation = id< / span > < / td > < / tr >
< tr > < td > 555< / td > < td > 704< / td > < td > < span class = low-hits > local target = 0< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 556< / td > < td > 384< / td > < td > < span class = low-hits > local is_pair = ECS_IS_PAIR(id)< / span > < / td > < / tr >
< tr > < td > 557< / td > < td > 384< / td > < td > < span class = low-hits > if is_pair then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 558< / td > < td > 384< / td > < td > < span class = low-hits > relation = entity_index_get_alive(entity_index, ECS_PAIR_FIRST(id)) :: i53< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 559< / td > < td > 383< / td > < td > < span class = low-hits > assert(relation and entity_index_is_alive(< / span > < / td > < / tr >
< tr > < td > 560< / td > < td > 383< / td > < td > < span class = low-hits > entity_index, relation), ECS_INTERNAL_ERROR)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 561< / td > < td > 383< / td > < td > < span class = low-hits > target = entity_index_get_alive(entity_index, ECS_PAIR_SECOND(id)) :: i53< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 562< / td > < td > 0< / td > < td > < span class = zero-hits > assert(target and entity_index_is_alive(< / span > < / td > < / tr >
< tr > < td > 563< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index, target), ECS_INTERNAL_ERROR)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 564< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 565< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 566< / td > < td > 0< / td > < td > < span class = zero-hits > local cleanup_policy = world_target(world, relation, EcsOnDelete, 0)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 567< / td > < td > 702< / td > < td > < span class = low-hits > local cleanup_policy_target = world_target(world, relation, EcsOnDeleteTarget, 0)< / span > < / td > < / tr >
< tr > < td > 568< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 569< / td > < td > 702< / td > < td > < span class = low-hits > local has_delete = false< / span > < / td > < / tr >
< tr > < td > 570< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 571< / td > < td > 0< / td > < td > < span class = zero-hits > if cleanup_policy == EcsDelete or cleanup_policy_target == EcsDelete then< / span > < / td > < / tr >
< tr > < td > 572< / td > < td > 0< / td > < td > < span class = zero-hits > has_delete = true< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 573< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 574< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 575< / td > < td > 702< / td > < td > < span class = low-hits > local on_add, on_set, on_remove = world_get(world, relation, EcsOnAdd, EcsOnSet, EcsOnRemove)< / span > < / td > < / tr >
< tr > < td > 576< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 577< / td > < td > 702< / td > < td > < span class = low-hits > local is_tag = not world_has_one_inline(world, relation, EcsComponent)< / span > < / td > < / tr >
< tr > < td > 578< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 579< / td > < td > 0< / td > < td > < span class = zero-hits > if is_tag and is_pair then< / span > < / td > < / tr >
< tr > < td > 580< / td > < td > 0< / td > < td > < span class = zero-hits > is_tag = not world_has_one_inline(world, target, EcsComponent)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 581< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 582< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 583< / td > < td > 702< / td > < td > < span class = low-hits > flags = bit32.bor(< / span > < / td > < / tr >
< tr > < td > 584< / td > < td > 702< / td > < td > < span class = low-hits > flags,< / span > < / td > < / tr >
< tr > < td > 585< / td > < td > 702< / td > < td > < span class = low-hits > if on_add then ECS_ID_HAS_ON_ADD else 0,< / span > < / td > < / tr >
< tr > < td > 586< / td > < td > 702< / td > < td > < span class = low-hits > if on_remove then ECS_ID_HAS_ON_REMOVE else 0,< / span > < / td > < / tr >
< tr > < td > 587< / td > < td > 702< / td > < td > < span class = low-hits > if on_set then ECS_ID_HAS_ON_SET else 0,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 588< / td > < td > 0< / td > < td > < span class = zero-hits > if has_delete then ECS_ID_DELETE else 0,< / span > < / td > < / tr >
< tr > < td > 589< / td > < td > 0< / td > < td > < span class = zero-hits > if is_tag then ECS_ID_IS_TAG else 0< / span > < / td > < / tr >
< tr > < td > 590< / td > < td > 702< / td > < td > < span class = low-hits > )< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 591< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 592< / td > < td > 702< / td > < td > < span class = low-hits > idr = {< / span > < / td > < / tr >
< tr > < td > 593< / td > < td > 702< / td > < td > < span class = low-hits > size = 0,< / span > < / td > < / tr >
< tr > < td > 594< / td > < td > 702< / td > < td > < span class = low-hits > cache = {},< / span > < / td > < / tr >
< tr > < td > 595< / td > < td > 702< / td > < td > < span class = low-hits > counts = {},< / span > < / td > < / tr >
< tr > < td > 596< / td > < td > 702< / td > < td > < span class = low-hits > flags = flags,< / span > < / td > < / tr >
< tr > < td > 597< / td > < td > 702< / td > < td > < span class = low-hits > hooks = {< / span > < / td > < / tr >
< tr > < td > 598< / td > < td > 702< / td > < td > < span class = low-hits > on_add = on_add,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 599< / td > < td > 0< / td > < td > < span class = zero-hits > on_set = on_set,< / span > < / td > < / tr >
< tr > < td > 600< / td > < td > 0< / td > < td > < span class = zero-hits > on_remove = on_remove,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 601< / td > < td > 0< / td > < td > < span class = zero-hits > },< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 602< / td > < td > 702< / td > < td > < span class = low-hits > }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 603< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 604< / td > < td > 0< / td > < td > < span class = zero-hits > component_index[id] = idr< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 605< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 606< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 607< / td > < td > 0< / td > < td > < span class = zero-hits > return idr< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 608< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 609< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 610< / td > < td > 0< / td > < td > < span class = zero-hits > local function archetype_append_to_records(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 611< / td > < td > 0< / td > < td > < span class = zero-hits > idr: ecs_id_record_t,< / span > < / td > < / tr >
< tr > < td > 612< / td > < td > 0< / td > < td > < span class = zero-hits > archetype: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 613< / td > < td > 0< / td > < td > < span class = zero-hits > id: i53,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 614< / td > < td > 1507< / td > < td > < span class = low-hits > index: number< / span > < / td > < / tr >
< tr > < td > 615< / td > < td > 1507< / td > < td > < span class = low-hits > )< / span > < / td > < / tr >
< tr > < td > 616< / td > < td > 1507< / td > < td > < span class = low-hits > local archetype_id = archetype.id< / span > < / td > < / tr >
< tr > < td > 617< / td > < td > 1507< / td > < td > < span class = low-hits > local archetype_records = archetype.records< / span > < / td > < / tr >
< tr > < td > 618< / td > < td > 1507< / td > < td > < span class = low-hits > local archetype_counts = archetype.counts< / span > < / td > < / tr >
< tr > < td > 619< / td > < td > 1507< / td > < td > < span class = low-hits > local idr_columns = idr.cache< / span > < / td > < / tr >
< tr > < td > 620< / td > < td > 1507< / td > < td > < span class = low-hits > local idr_counts = idr.counts< / span > < / td > < / tr >
< tr > < td > 621< / td > < td > 1405< / td > < td > < span class = low-hits > local tr = idr_columns[archetype_id]< / span > < / td > < / tr >
< tr > < td > 622< / td > < td > 1405< / td > < td > < span class = low-hits > if not tr then< / span > < / td > < / tr >
< tr > < td > 623< / td > < td > 0< / td > < td > < span class = zero-hits > idr_columns[archetype_id] = index< / span > < / td > < / tr >
< tr > < td > 624< / td > < td > 1405< / td > < td > < span class = low-hits > idr_counts[archetype_id] = 1< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 625< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 626< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_records[id] = index< / span > < / td > < / tr >
< tr > < td > 627< / td > < td > 102< / td > < td > < span class = low-hits > archetype_counts[id] = 1< / span > < / td > < / tr >
< tr > < td > 628< / td > < td > 102< / td > < td > < span class = low-hits > else< / span > < / td > < / tr >
< tr > < td > 629< / td > < td > 102< / td > < td > < span class = low-hits > local max_count = idr_counts[archetype_id] + 1< / span > < / td > < / tr >
< tr > < td > 630< / td > < td > 0< / td > < td > < span class = zero-hits > idr_counts[archetype_id] = max_count< / span > < / td > < / tr >
< tr > < td > 631< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_counts[id] = max_count< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 632< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 633< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 634< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 635< / td > < td > 635< / td > < td > < span class = low-hits > local function archetype_create(world: ecs_world_t, id_types: { i24 }, ty, prev: i53?): ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 636< / td > < td > 0< / td > < td > < span class = zero-hits > local archetype_id = (world.max_archetype_id :: number) + 1< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 637< / td > < td > 635< / td > < td > < span class = low-hits > world.max_archetype_id = archetype_id< / span > < / td > < / tr >
< tr > < td > 638< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 639< / td > < td > 0< / td > < td > < span class = zero-hits > local length = #id_types< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 640< / td > < td > 635< / td > < td > < span class = low-hits > local columns = (table.create(length) :: any) :: { Column }< / span > < / td > < / tr >
< tr > < td > 641< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 642< / td > < td > 0< / td > < td > < span class = zero-hits > local records: { number } = {}< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 643< / td > < td > 635< / td > < td > < span class = low-hits > local counts: {number} = {}< / span > < / td > < / tr >
< tr > < td > 644< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 645< / td > < td > 635< / td > < td > < span class = low-hits > local archetype: ecs_archetype_t = {< / span > < / td > < / tr >
< tr > < td > 646< / td > < td > 635< / td > < td > < span class = low-hits > columns = columns,< / span > < / td > < / tr >
< tr > < td > 647< / td > < td > 635< / td > < td > < span class = low-hits > entities = {},< / span > < / td > < / tr >
< tr > < td > 648< / td > < td > 635< / td > < td > < span class = low-hits > id = archetype_id,< / span > < / td > < / tr >
< tr > < td > 649< / td > < td > 635< / td > < td > < span class = low-hits > records = records,< / span > < / td > < / tr >
< tr > < td > 650< / td > < td > 635< / td > < td > < span class = low-hits > counts = counts,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 651< / td > < td > 0< / td > < td > < span class = zero-hits > type = ty,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 652< / td > < td > 635< / td > < td > < span class = low-hits > types = id_types,< / span > < / td > < / tr >
< tr > < td > 653< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 654< / td > < td > 635< / td > < td > < span class = low-hits > add = {},< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 655< / td > < td > 0< / td > < td > < span class = zero-hits > remove = {},< / span > < / td > < / tr >
< tr > < td > 656< / td > < td > 0< / td > < td > < span class = zero-hits > refs = {} :: ecs_graph_edge_t,< / span > < / td > < / tr >
< tr > < td > 657< / td > < td > 635< / td > < td > < span class = low-hits > }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 658< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 659< / td > < td > 987< / td > < td > < span class = low-hits > for i, component_id in id_types do< / span > < / td > < / tr >
< tr > < td > 660< / td > < td > 0< / td > < td > < span class = zero-hits > local idr = id_record_ensure(world, component_id)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 661< / td > < td > 987< / td > < td > < span class = low-hits > archetype_append_to_records(idr, archetype, component_id, i)< / span > < / td > < / tr >
< tr > < td > 662< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 663< / td > < td > 260< / td > < td > < span class = low-hits > if ECS_IS_PAIR(component_id) then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 664< / td > < td > 260< / td > < td > < span class = low-hits > local relation = ECS_PAIR_FIRST(component_id)< / span > < / td > < / tr >
< tr > < td > 665< / td > < td > 260< / td > < td > < span class = low-hits > local object = ECS_PAIR_SECOND(component_id)< / span > < / td > < / tr >
< tr > < td > 666< / td > < td > 260< / td > < td > < span class = low-hits > local r = ECS_PAIR(relation, EcsWildcard)< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 667< / td > < td > 0< / td > < td > < span class = zero-hits > local idr_r = id_record_ensure(world, r)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 668< / td > < td > 260< / td > < td > < span class = low-hits > archetype_append_to_records(idr_r, archetype, r, i)< / span > < / td > < / tr >
< tr > < td > 669< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 670< / td > < td > 260< / td > < td > < span class = low-hits > local t = ECS_PAIR(EcsWildcard, object)< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 671< / td > < td > 0< / td > < td > < span class = zero-hits > local idr_t = id_record_ensure(world, t)< / span > < / td > < / tr >
< tr > < td > 672< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_append_to_records(idr_t, archetype, t, i)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 673< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 674< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 675< / td > < td > 0< / td > < td > < span class = zero-hits > if bit32.band(idr.flags, ECS_ID_IS_TAG) == 0 then< / span > < / td > < / tr >
< tr > < td > 676< / td > < td > 393< / td > < td > < span class = low-hits > columns[i] = {}< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 677< / td > < td > 0< / td > < td > < span class = zero-hits > else< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 678< / td > < td > 0< / td > < td > < span class = zero-hits > columns[i] = NULL_ARRAY< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 679< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 680< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 681< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 682< / td > < td > 1405< / td > < td > < span class = low-hits > for id in records do< / span > < / td > < / tr >
< tr > < td > 683< / td > < td > 0< / td > < td > < span class = zero-hits > local observer_list = find_observers(world, EcsOnArchetypeCreate, id)< / span > < / td > < / tr >
< tr > < td > 684< / td > < td > 0< / td > < td > < span class = zero-hits > if not observer_list then< / span > < / td > < / tr >
< tr > < td > 685< / td > < td > 8< / td > < td > < span class = low-hits > continue< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 686< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 687< / td > < td > 4< / td > < td > < span class = low-hits > for _, observer in observer_list do< / span > < / td > < / tr >
< tr > < td > 688< / td > < td > 0< / td > < td > < span class = zero-hits > if query_match(observer.query, archetype) then< / span > < / td > < / tr >
< tr > < td > 689< / td > < td > 0< / td > < td > < span class = zero-hits > observer.callback(archetype)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 690< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 691< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 692< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 693< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 694< / td > < td > 0< / td > < td > < span class = zero-hits > world.archetype_index[ty] = archetype< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 695< / td > < td > 633< / td > < td > < span class = low-hits > world.archetypes[archetype_id] = archetype< / span > < / td > < / tr >
< tr > < td > 696< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 697< / td > < td > 0< / td > < td > < span class = zero-hits > return archetype< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 698< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 699< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 700< / td > < td > 0< / td > < td > < span class = zero-hits > local function world_entity(world: ecs_world_t): i53< / span > < / td > < / tr >
< tr > < td > 701< / td > < td > 0< / td > < td > < span class = zero-hits > return entity_index_new_id(world.entity_index)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 702< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 703< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 704< / td > < td > 0< / td > < td > < span class = zero-hits > local function world_parent(world: ecs_world_t, entity: i53)< / span > < / td > < / tr >
< tr > < td > 705< / td > < td > 0< / td > < td > < span class = zero-hits > return world_target(world, entity, EcsChildOf, 0)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 706< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 707< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 708< / td > < td > 11< / td > < td > < span class = low-hits > local function archetype_ensure(world: ecs_world_t, id_types): ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 709< / td > < td > 0< / td > < td > < span class = zero-hits > if #id_types < 1 then < / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 710< / td > < td > 0< / td > < td > < span class = zero-hits > return world.ROOT_ARCHETYPE< / span > < / td > < / tr >
< tr > < td > 711< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 712< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 713< / td > < td > 569< / td > < td > < span class = low-hits > local ty = hash(id_types)< / span > < / td > < / tr >
< tr > < td > 714< / td > < td > 7< / td > < td > < span class = low-hits > local archetype = world.archetype_index[ty]< / span > < / td > < / tr >
< tr > < td > 715< / td > < td > 0< / td > < td > < span class = zero-hits > if archetype then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 716< / td > < td > 0< / td > < td > < span class = zero-hits > return archetype< / span > < / td > < / tr >
< tr > < td > 717< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 718< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 719< / td > < td > 0< / td > < td > < span class = zero-hits > return archetype_create(world, id_types, ty)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 720< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 721< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 722< / td > < td > 426< / td > < td > < span class = low-hits > local function find_insert(id_types: { i53 }, toAdd: i53): number< / span > < / td > < / tr >
< tr > < td > 723< / td > < td > 4< / td > < td > < span class = low-hits > for i, id in id_types do< / span > < / td > < / tr >
< tr > < td > 724< / td > < td > 0< / td > < td > < span class = zero-hits > if id == toAdd then< / span > < / td > < / tr >
< tr > < td > 725< / td > < td > 422< / td > < td > < span class = low-hits > return -1< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 726< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 727< / td > < td > 0< / td > < td > < span class = zero-hits > if id > toAdd then< / span > < / td > < / tr >
< tr > < td > 728< / td > < td > 0< / td > < td > < span class = zero-hits > return i< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 729< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 730< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 731< / td > < td > 0< / td > < td > < span class = zero-hits > return #id_types + 1< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 732< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 733< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 734< / td > < td > 0< / td > < td > < span class = zero-hits > local function find_archetype_with(world: ecs_world_t, node: ecs_archetype_t, id: i53): ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 735< / td > < td > 0< / td > < td > < span class = zero-hits > local id_types = node.types< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 736< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Component IDs are added incrementally, so inserting and sorting< / td > >< / tr >
< tr > < td > 737< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- them each time would be expensive. Instead this insertion sort can find the insertion< / td > >< / tr >
< tr > < td > 738< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- point in the types array.< / td > >< / tr >
< tr > < td > 739< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 740< / td > < td > 551< / td > < td > < span class = low-hits > local dst = table.clone(node.types) :: { i53 }< / span > < / td > < / tr >
< tr > < td > 741< / td > < td > 0< / td > < td > < span class = zero-hits > local at = find_insert(id_types, id)< / span > < / td > < / tr >
< tr > < td > 742< / td > < td > 0< / td > < td > < span class = zero-hits > if at == -1 then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 743< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- If it finds a duplicate, it just means it is the same archetype so it can return it< / td > >< / tr >
< tr > < td > 744< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- directly instead of needing to hash types for a lookup to the archetype.< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 745< / td > < td > 547< / td > < td > < span class = low-hits > return node< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 746< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 747< / td > < td > 547< / td > < td > < span class = low-hits > table.insert(dst, at, id)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 748< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 749< / td > < td > 0< / td > < td > < span class = zero-hits > return archetype_ensure(world, dst)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 750< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 751< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 752< / td > < td > 0< / td > < td > < span class = zero-hits > local function find_archetype_without(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 753< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 754< / td > < td > 0< / td > < td > < span class = zero-hits > node: ecs_archetype_t,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 755< / td > < td > 33< / td > < td > < span class = low-hits > id: i53< / span > < / td > < / tr >
< tr > < td > 756< / td > < td > 33< / td > < td > < span class = low-hits > ): ecs_archetype_t< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 757< / td > < td > 33< / td > < td > < span class = low-hits > local id_types = node.types< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 758< / td > < td > 0< / td > < td > < span class = zero-hits > local at = table.find(id_types, id)< / span > < / td > < / tr >
< tr > < td > 759< / td > < td > 0< / td > < td > < span class = zero-hits > if at == nil then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 760< / td > < td > 0< / td > < td > < span class = zero-hits > return node< / span > < / td > < / tr >
< tr > < td > 761< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 762< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 763< / td > < td > 0< / td > < td > < span class = zero-hits > local dst = table.clone(id_types)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 764< / td > < td > 33< / td > < td > < span class = low-hits > table.remove(dst, at)< / span > < / td > < / tr >
< tr > < td > 765< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 766< / td > < td > 0< / td > < td > < span class = zero-hits > return archetype_ensure(world, dst)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 767< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 768< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 769< / td > < td > 0< / td > < td > < span class = zero-hits > local function archetype_init_edge(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 770< / td > < td > 0< / td > < td > < span class = zero-hits > archetype: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 771< / td > < td > 0< / td > < td > < span class = zero-hits > edge: ecs_graph_edge_t,< / span > < / td > < / tr >
< tr > < td > 772< / td > < td > 0< / td > < td > < span class = zero-hits > id: i53,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 773< / td > < td > 582< / td > < td > < span class = low-hits > to: ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 774< / td > < td > 582< / td > < td > < span class = low-hits > )< / span > < / td > < / tr >
< tr > < td > 775< / td > < td > 582< / td > < td > < span class = low-hits > edge.from = archetype< / span > < / td > < / tr >
< tr > < td > 776< / td > < td > 0< / td > < td > < span class = zero-hits > edge.to = to< / span > < / td > < / tr >
< tr > < td > 777< / td > < td > 0< / td > < td > < span class = zero-hits > edge.id = id< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 778< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 779< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 780< / td > < td > 0< / td > < td > < span class = zero-hits > local function archetype_ensure_edge(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 781< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 782< / td > < td > 0< / td > < td > < span class = zero-hits > edges: ecs_graph_edges_t,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 783< / td > < td > 22971< / td > < td > < span class = low-hits > id: i53< / span > < / td > < / tr >
< tr > < td > 784< / td > < td > 22971< / td > < td > < span class = low-hits > ): ecs_graph_edge_t< / span > < / td > < / tr >
< tr > < td > 785< / td > < td > 584< / td > < td > < span class = low-hits > local edge = edges[id]< / span > < / td > < / tr >
< tr > < td > 786< / td > < td > 584< / td > < td > < span class = low-hits > if not edge then< / span > < / td > < / tr >
< tr > < td > 787< / td > < td > 0< / td > < td > < span class = zero-hits > edge = {} :: ecs_graph_edge_t< / span > < / td > < / tr >
< tr > < td > 788< / td > < td > 0< / td > < td > < span class = zero-hits > edges[id] = edge< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 789< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 790< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 791< / td > < td > 0< / td > < td > < span class = zero-hits > return edge< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 792< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 793< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 794< / td > < td > 549< / td > < td > < span class = low-hits > local function init_edge_for_add(world, archetype: ecs_archetype_t, edge: ecs_graph_edge_t, id, to: ecs_archetype_t)< / span > < / td > < / tr >
< tr > < td > 795< / td > < td > 549< / td > < td > < span class = low-hits > archetype_init_edge(archetype, edge, id, to)< / span > < / td > < / tr >
< tr > < td > 796< / td > < td > 545< / td > < td > < span class = low-hits > archetype_ensure_edge(world, archetype.add, id)< / span > < / td > < / tr >
< tr > < td > 797< / td > < td > 545< / td > < td > < span class = low-hits > if archetype ~= to then< / span > < / td > < / tr >
< tr > < td > 798< / td > < td > 0< / td > < td > < span class = zero-hits > local to_refs = to.refs< / span > < / td > < / tr >
< tr > < td > 799< / td > < td > 545< / td > < td > < span class = low-hits > local next_edge = to_refs.next< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 800< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 801< / td > < td > 545< / td > < td > < span class = low-hits > to_refs.next = edge< / span > < / td > < / tr >
< tr > < td > 802< / td > < td > 0< / td > < td > < span class = zero-hits > edge.prev = to_refs< / span > < / td > < / tr >
< tr > < td > 803< / td > < td > 545< / td > < td > < span class = low-hits > edge.next = next_edge< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 804< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 805< / td > < td > 0< / td > < td > < span class = zero-hits > if next_edge then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 806< / td > < td > 0< / td > < td > < span class = zero-hits > next_edge.prev = edge< / span > < / td > < / tr >
< tr > < td > 807< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 808< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 809< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 810< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 811< / td > < td > 0< / td > < td > < span class = zero-hits > local function init_edge_for_remove(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 812< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 813< / td > < td > 0< / td > < td > < span class = zero-hits > archetype: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 814< / td > < td > 0< / td > < td > < span class = zero-hits > edge: ecs_graph_edge_t,< / span > < / td > < / tr >
< tr > < td > 815< / td > < td > 0< / td > < td > < span class = zero-hits > id: number,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 816< / td > < td > 33< / td > < td > < span class = low-hits > to: ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 817< / td > < td > 33< / td > < td > < span class = low-hits > )< / span > < / td > < / tr >
< tr > < td > 818< / td > < td > 33< / td > < td > < span class = low-hits > archetype_init_edge(archetype, edge, id, to)< / span > < / td > < / tr >
< tr > < td > 819< / td > < td > 33< / td > < td > < span class = low-hits > archetype_ensure_edge(world, archetype.remove, id)< / span > < / td > < / tr >
< tr > < td > 820< / td > < td > 33< / td > < td > < span class = low-hits > if archetype ~= to then< / span > < / td > < / tr >
< tr > < td > 821< / td > < td > 0< / td > < td > < span class = zero-hits > local to_refs = to.refs< / span > < / td > < / tr >
< tr > < td > 822< / td > < td > 33< / td > < td > < span class = low-hits > local prev_edge = to_refs.prev< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 823< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 824< / td > < td > 33< / td > < td > < span class = low-hits > to_refs.prev = edge< / span > < / td > < / tr >
< tr > < td > 825< / td > < td > 0< / td > < td > < span class = zero-hits > edge.next = to_refs< / span > < / td > < / tr >
< tr > < td > 826< / td > < td > 33< / td > < td > < span class = low-hits > edge.prev = prev_edge< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 827< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 828< / td > < td > 0< / td > < td > < span class = zero-hits > if prev_edge then< / span > < / td > < / tr >
< tr > < td > 829< / td > < td > 0< / td > < td > < span class = zero-hits > prev_edge.next = edge< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 830< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 831< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 832< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 833< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 834< / td > < td > 0< / td > < td > < span class = zero-hits > local function create_edge_for_add(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 835< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 836< / td > < td > 0< / td > < td > < span class = zero-hits > node: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 837< / td > < td > 0< / td > < td > < span class = zero-hits > edge: ecs_graph_edge_t,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 838< / td > < td > 551< / td > < td > < span class = low-hits > id: i53< / span > < / td > < / tr >
< tr > < td > 839< / td > < td > 549< / td > < td > < span class = low-hits > ): ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 840< / td > < td > 549< / td > < td > < span class = low-hits > local to = find_archetype_with(world, node, id)< / span > < / td > < / tr >
< tr > < td > 841< / td > < td > 0< / td > < td > < span class = zero-hits > init_edge_for_add(world, node, edge, id, to)< / span > < / td > < / tr >
< tr > < td > 842< / td > < td > 0< / td > < td > < span class = zero-hits > return to< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 843< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 844< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 845< / td > < td > 0< / td > < td > < span class = zero-hits > local function create_edge_for_remove(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 846< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 847< / td > < td > 0< / td > < td > < span class = zero-hits > node: ecs_archetype_t,< / span > < / td > < / tr >
< tr > < td > 848< / td > < td > 0< / td > < td > < span class = zero-hits > edge: ecs_graph_edge_t,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 849< / td > < td > 33< / td > < td > < span class = low-hits > id: i53< / span > < / td > < / tr >
< tr > < td > 850< / td > < td > 33< / td > < td > < span class = low-hits > ): ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 851< / td > < td > 33< / td > < td > < span class = low-hits > local to = find_archetype_without(world, node, id)< / span > < / td > < / tr >
< tr > < td > 852< / td > < td > 0< / td > < td > < span class = zero-hits > init_edge_for_remove(world, node, edge, id, to)< / span > < / td > < / tr >
< tr > < td > 853< / td > < td > 0< / td > < td > < span class = zero-hits > return to< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 854< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 855< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 856< / td > < td > 0< / td > < td > < span class = zero-hits > local function archetype_traverse_add(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 857< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 858< / td > < td > 0< / td > < td > < span class = zero-hits > id: i53,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 859< / td > < td > 22092< / td > < td > < span class = low-hits > from: ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 860< / td > < td > 22092< / td > < td > < span class = low-hits > ): ecs_archetype_t< / span > < / td > < / tr >
< tr > < td > 861< / td > < td > 0< / td > < td > < span class = zero-hits > from = from or world.ROOT_ARCHETYPE< / span > < / td > < / tr >
< tr > < td > 862< / td > < td > 22092< / td > < td > < span class = low-hits > local edge = archetype_ensure_edge(world, from.add, id)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 863< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 864< / td > < td > 551< / td > < td > < span class = low-hits > local to = edge.to< / span > < / td > < / tr >
< tr > < td > 865< / td > < td > 0< / td > < td > < span class = zero-hits > if not to then< / span > < / td > < / tr >
< tr > < td > 866< / td > < td > 0< / td > < td > < span class = zero-hits > to = create_edge_for_add(world, from, edge, id)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 867< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 868< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 869< / td > < td > 0< / td > < td > < span class = zero-hits > return to :: ecs_archetype_t< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 870< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 871< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 872< / td > < td > 0< / td > < td > < span class = zero-hits > local function archetype_traverse_remove(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 873< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 874< / td > < td > 0< / td > < td > < span class = zero-hits > id: i53,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 875< / td > < td > 297< / td > < td > < span class = low-hits > from: ecs_archetype_t< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 876< / td > < td > 0< / td > < td > < span class = zero-hits > ): ecs_archetype_t< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 877< / td > < td > 297< / td > < td > < span class = low-hits > from = from or world.ROOT_ARCHETYPE< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 878< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 879< / td > < td > 297< / td > < td > < span class = low-hits > local edge = archetype_ensure_edge(world, from.remove, id)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 880< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 881< / td > < td > 33< / td > < td > < span class = low-hits > local to = edge.to< / span > < / td > < / tr >
< tr > < td > 882< / td > < td > 0< / td > < td > < span class = zero-hits > if not to then< / span > < / td > < / tr >
< tr > < td > 883< / td > < td > 0< / td > < td > < span class = zero-hits > to = create_edge_for_remove(world, from, edge, id)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 884< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 885< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 886< / td > < td > 0< / td > < td > < span class = zero-hits > return to :: ecs_archetype_t< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 887< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 888< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 889< / td > < td > 0< / td > < td > < span class = zero-hits > local function world_add(< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 890< / td > < td > 0< / td > < td > < span class = zero-hits > world: ecs_world_t,< / span > < / td > < / tr >
< tr > < td > 891< / td > < td > 0< / td > < td > < span class = zero-hits > entity: i53,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 892< / td > < td > 19316< / td > < td > < span class = low-hits > id: i53< / span > < / td > < / tr >
< tr > < td > 893< / td > < td > 19316< / td > < td > < span class = low-hits > ): ()< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 894< / td > < td > 19316< / td > < td > < span class = low-hits > local entity_index = world.entity_index< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 895< / td > < td > 0< / td > < td > < span class = zero-hits > local record = entity_index_try_get_fast(entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 896< / td > < td > 0< / td > < td > < span class = zero-hits > if not record then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 897< / td > < td > 0< / td > < td > < span class = zero-hits > return< / span > < / td > < / tr >
< tr > < td > 898< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 899< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 900< / td > < td > 19315< / td > < td > < span class = low-hits > local from = record.archetype< / span > < / td > < / tr >
< tr > < td > 901< / td > < td > 3< / td > < td > < span class = low-hits > local to = archetype_traverse_add(world, id, from)< / span > < / td > < / tr >
< tr > < td > 902< / td > < td > 0< / td > < td > < span class = zero-hits > if from == to then< / span > < / td > < / tr >
< tr > < td > 903< / td > < td > 19312< / td > < td > < span class = low-hits > return< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 904< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 905< / td > < td > 0< / td > < td > < span class = zero-hits > if from then< / span > < / td > < / tr >
< tr > < td > 906< / td > < td > 19170< / td > < td > < span class = low-hits > entity_move(entity_index, entity, record, to)< / span > < / td > < / tr >
< tr > < td > 907< / td > < td > 19170< / td > < td > < span class = low-hits > else< / span > < / td > < / tr >
< tr > < td > 908< / td > < td > 0< / td > < td > < span class = zero-hits > if #to.types > 0 then< / span > < / td > < / tr >
< tr > < td > 909< / td > < td > 0< / td > < td > < span class = zero-hits > new_entity(entity, record, to)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 910< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 911< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 912< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 913< / td > < td > 0< / td > < td > < span class = zero-hits > local idr = world.component_index[id]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 914< / td > < td > 19312< / td > < td > < span class = low-hits > local on_add = idr.hooks.on_add< / span > < / td > < / tr >
< tr > < td > 915< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 916< / td > < td > 0< / td > < td > < span class = zero-hits > if on_add then< / span > < / td > < / tr >
< tr > < td > 917< / td > < td > 0< / td > < td > < span class = zero-hits > on_add(entity)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 918< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 919< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 920< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 921< / td > < td > 2775< / td > < td > < span class = low-hits > local function world_set(world: ecs_world_t, entity: i53, id: i53, data: unknown): ()< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 922< / td > < td > 2775< / td > < td > < span class = low-hits > local entity_index = world.entity_index< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 923< / td > < td > 0< / td > < td > < span class = zero-hits > local record = entity_index_try_get_fast(entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 924< / td > < td > 0< / td > < td > < span class = zero-hits > if not record then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 925< / td > < td > 0< / td > < td > < span class = zero-hits > return< / span > < / td > < / tr >
< tr > < td > 926< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 927< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 928< / td > < td > 2774< / td > < td > < span class = low-hits > local from: ecs_archetype_t = record.archetype< / span > < / td > < / tr >
< tr > < td > 929< / td > < td > 2774< / td > < td > < span class = low-hits > local to: ecs_archetype_t = archetype_traverse_add(world, id, from)< / span > < / td > < / tr >
< tr > < td > 930< / td > < td > 0< / td > < td > < span class = zero-hits > local idr = world.component_index[id]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 931< / td > < td > 2774< / td > < td > < span class = low-hits > local idr_hooks = idr.hooks< / span > < / td > < / tr >
< tr > < td > 932< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 933< / td > < td > 0< / td > < td > < span class = zero-hits > if from == to then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 934< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- If the archetypes are the same it can avoid moving the entity< / td > >< / tr >
< tr > < td > 935< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- and just set the data directly.< / td > >< / tr >
< tr > < td > 936< / td > < td > 2< / td > < td > < span class = low-hits > local tr = to.records[id]< / span > < / td > < / tr >
< tr > < td > 937< / td > < td > 2< / td > < td > < span class = low-hits > local column = from.columns[tr]< / span > < / td > < / tr >
< tr > < td > 938< / td > < td > 2< / td > < td > < span class = low-hits > column[record.row] = data< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 939< / td > < td > 0< / td > < td > < span class = zero-hits > local on_set = idr_hooks.on_set< / span > < / td > < / tr >
< tr > < td > 940< / td > < td > 0< / td > < td > < span class = zero-hits > if on_set then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 941< / td > < td > 0< / td > < td > < span class = zero-hits > on_set(entity, data)< / span > < / td > < / tr >
< tr > < td > 942< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 943< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 944< / td > < td > 0< / td > < td > < span class = zero-hits > return< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 945< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 946< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 947< / td > < td > 1384< / td > < td > < span class = low-hits > if from then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 948< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- If there was a previous archetype, then the entity needs to move the archetype< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 949< / td > < td > 1388< / td > < td > < span class = low-hits > entity_move(entity_index, entity, record, to)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 950< / td > < td > 0< / td > < td > < span class = zero-hits > else< / span > < / td > < / tr >
< tr > < td > 951< / td > < td > 1388< / td > < td > < span class = low-hits > if #to.types > 0 then< / span > < / td > < / tr >
< tr > < td > 952< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- When there is no previous archetype it should create the archetype< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 953< / td > < td > 0< / td > < td > < span class = zero-hits > new_entity(entity, record, to)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 954< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 955< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 956< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 957< / td > < td > 0< / td > < td > < span class = zero-hits > local tr = to.records[id]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 958< / td > < td > 2772< / td > < td > < span class = low-hits > local column = to.columns[tr]< / span > < / td > < / tr >
< tr > < td > 959< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 960< / td > < td > 2765< / td > < td > < span class = low-hits > column[record.row] = data< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 961< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 962< / td > < td > 0< / td > < td > < span class = zero-hits > local on_add = idr_hooks.on_add< / span > < / td > < / tr >
< tr > < td > 963< / td > < td > 0< / td > < td > < span class = zero-hits > if on_add then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 964< / td > < td > 0< / td > < td > < span class = zero-hits > on_add(entity)< / span > < / td > < / tr >
< tr > < td > 965< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 966< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 967< / td > < td > 1< / td > < td > < span class = low-hits > local on_set = idr_hooks.on_set< / span > < / td > < / tr >
< tr > < td > 968< / td > < td > 0< / td > < td > < span class = zero-hits > if on_set then< / span > < / td > < / tr >
< tr > < td > 969< / td > < td > 0< / td > < td > < span class = zero-hits > on_set(entity, data)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 970< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 971< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 972< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 973< / td > < td > 121< / td > < td > < span class = low-hits > local function world_component(world: World): i53< / span > < / td > < / tr >
< tr > < td > 974< / td > < td > 0< / td > < td > < span class = zero-hits > local id = (world.max_component_id :: number) + 1< / span > < / td > < / tr >
< tr > < td > 975< / td > < td > 0< / td > < td > < span class = zero-hits > if id > HI_COMPONENT_ID then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 976< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- IDs are partitioned into ranges because component IDs are not nominal,< / td > >< / tr >
< tr > < td > 977< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- so it needs to error when IDs intersect into the entity range.< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 978< / td > < td > 121< / td > < td > < span class = low-hits > error("Too many components, consider using world:entity() instead to create components.")< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 979< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 980< / td > < td > 121< / td > < td > < span class = low-hits > world.max_component_id = id< / span > < / td > < / tr >
< tr > < td > 981< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 982< / td > < td > 0< / td > < td > < span class = zero-hits > return id< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 983< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 984< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 985< / td > < td > 298< / td > < td > < span class = low-hits > local function world_remove(world: ecs_world_t, entity: i53, id: i53)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 986< / td > < td > 298< / td > < td > < span class = low-hits > local entity_index = world.entity_index< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 987< / td > < td > 0< / td > < td > < span class = zero-hits > local record = entity_index_try_get_fast(entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 988< / td > < td > 0< / td > < td > < span class = zero-hits > if not record then< / span > < / td > < / tr >
< tr > < td > 989< / td > < td > 298< / td > < td > < span class = low-hits > return< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 990< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 991< / td > < td > 298< / td > < td > < span class = low-hits > local from = record.archetype< / span > < / td > < / tr >
< tr > < td > 992< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 993< / td > < td > 0< / td > < td > < span class = zero-hits > if not from then< / span > < / td > < / tr >
< tr > < td > 994< / td > < td > 0< / td > < td > < span class = zero-hits > return< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 995< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 996< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 997< / td > < td > 296< / td > < td > < span class = low-hits > if from.records[id] then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 998< / td > < td > 296< / td > < td > < span class = low-hits > local idr = world.component_index[id]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 999< / td > < td > 3< / td > < td > < span class = low-hits > local on_remove = idr.hooks.on_remove< / span > < / td > < / tr >
< tr > < td > 1000< / td > < td > 0< / td > < td > < span class = zero-hits > if on_remove then< / span > < / td > < / tr >
< tr > < td > 1001< / td > < td > 0< / td > < td > < span class = zero-hits > on_remove(entity)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1002< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1003< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1004< / td > < td > 296< / td > < td > < span class = low-hits > local to = archetype_traverse_remove(world, id, record.archetype)< / span > < / td > < / tr >
< tr > < td > 1005< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1006< / td > < td > 0< / td > < td > < span class = zero-hits > entity_move(entity_index, entity, record, to)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1007< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1008< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1009< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1010< / td > < td > 153< / td > < td > < span class = low-hits > local function archetype_fast_delete_last(columns: { Column }, column_count: number, types: { i53 }, entity: i53)< / span > < / td > < / tr >
< tr > < td > 1011< / td > < td > 135< / td > < td > < span class = low-hits > for i, column in columns do< / span > < / td > < / tr >
< tr > < td > 1012< / td > < td > 0< / td > < td > < span class = zero-hits > if column ~= NULL_ARRAY then< / span > < / td > < / tr >
< tr > < td > 1013< / td > < td > 0< / td > < td > < span class = zero-hits > column[column_count] = nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1014< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1015< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1016< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1017< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1018< / td > < td > 109< / td > < td > < span class = low-hits > local function archetype_fast_delete(columns: { Column }, column_count: number, row, types, entity)< / span > < / td > < / tr >
< tr > < td > 1019< / td > < td > 103< / td > < td > < span class = low-hits > for i, column in columns do< / span > < / td > < / tr >
< tr > < td > 1020< / td > < td > 103< / td > < td > < span class = low-hits > if column ~= NULL_ARRAY then< / span > < / td > < / tr >
< tr > < td > 1021< / td > < td > 0< / td > < td > < span class = zero-hits > column[row] = column[column_count]< / span > < / td > < / tr >
< tr > < td > 1022< / td > < td > 0< / td > < td > < span class = zero-hits > column[column_count] = nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1023< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1024< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1025< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1026< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1027< / td > < td > 134< / td > < td > < span class = low-hits > local function archetype_delete(world: ecs_world_t, archetype: ecs_archetype_t, row: number)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1028< / td > < td > 134< / td > < td > < span class = low-hits > local entity_index = world.entity_index< / span > < / td > < / tr >
< tr > < td > 1029< / td > < td > 134< / td > < td > < span class = low-hits > local component_index = world.component_index< / span > < / td > < / tr >
< tr > < td > 1030< / td > < td > 134< / td > < td > < span class = low-hits > local columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1031< / td > < td > 134< / td > < td > < span class = low-hits > local id_types = archetype.types< / span > < / td > < / tr >
< tr > < td > 1032< / td > < td > 134< / td > < td > < span class = low-hits > local entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1033< / td > < td > 134< / td > < td > < span class = low-hits > local column_count = #entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1034< / td > < td > 0< / td > < td > < span class = zero-hits > local last = #entities< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1035< / td > < td > 134< / td > < td > < span class = low-hits > local move = entities[last]< / span > < / td > < / tr >
< tr > < td > 1036< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- We assume first that the entity is the last in the archetype< / td > >< / tr >
< tr > < td > 1037< / td > < td > 134< / td > < td > < span class = low-hits > local delete = move< / span > < / td > < / tr >
< tr > < td > 1038< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1039< / td > < td > 58< / td > < td > < span class = low-hits > if row ~= last then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1040< / td > < td > 58< / td > < td > < span class = low-hits > local record_to_move = entity_index_try_get_any(entity_index, move)< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1041< / td > < td > 0< / td > < td > < span class = zero-hits > if record_to_move then< / span > < / td > < / tr >
< tr > < td > 1042< / td > < td > 0< / td > < td > < span class = zero-hits > record_to_move.row = row< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1043< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1044< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1045< / td > < td > 0< / td > < td > < span class = zero-hits > delete = entities[row]< / span > < / td > < / tr >
< tr > < td > 1046< / td > < td > 0< / td > < td > < span class = zero-hits > entities[row] = move< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1047< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1048< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1049< / td > < td > 262< / td > < td > < span class = low-hits > for _, id in id_types do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1050< / td > < td > 262< / td > < td > < span class = low-hits > local idr = component_index[id]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1051< / td > < td > 3< / td > < td > < span class = low-hits > local on_remove = idr.hooks.on_remove< / span > < / td > < / tr >
< tr > < td > 1052< / td > < td > 0< / td > < td > < span class = zero-hits > if on_remove then< / span > < / td > < / tr >
< tr > < td > 1053< / td > < td > 0< / td > < td > < span class = zero-hits > on_remove(delete)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1054< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1055< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1056< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1057< / td > < td > 134< / td > < td > < span class = low-hits > entities[last] = nil :: any< / span > < / td > < / tr >
< tr > < td > 1058< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1059< / td > < td > 0< / td > < td > < span class = zero-hits > if row == last then< / span > < / td > < / tr >
< tr > < td > 1060< / td > < td > 58< / td > < td > < span class = low-hits > archetype_fast_delete_last(columns, column_count, id_types, delete)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1061< / td > < td > 0< / td > < td > < span class = zero-hits > else< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1062< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_fast_delete(columns, column_count, row, id_types, delete)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1063< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1064< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1065< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1066< / td > < td > 6< / td > < td > < span class = low-hits > local function world_clear(world: ecs_world_t, entity: i53)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1067< / td > < td > 6< / td > < td > < span class = low-hits > local entity_index = world.entity_index< / span > < / td > < / tr >
< tr > < td > 1068< / td > < td > 6< / td > < td > < span class = low-hits > local component_index = world.component_index< / span > < / td > < / tr >
< tr > < td > 1069< / td > < td > 6< / td > < td > < span class = low-hits > local archetypes = world.archetypes< / span > < / td > < / tr >
< tr > < td > 1070< / td > < td > 6< / td > < td > < span class = low-hits > local tgt = ECS_PAIR(EcsWildcard, entity)< / span > < / td > < / tr >
< tr > < td > 1071< / td > < td > 6< / td > < td > < span class = low-hits > local idr_t = component_index[tgt]< / span > < / td > < / tr >
< tr > < td > 1072< / td > < td > 6< / td > < td > < span class = low-hits > local idr = component_index[entity]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1073< / td > < td > 0< / td > < td > < span class = zero-hits > local rel = ECS_PAIR(entity, EcsWildcard)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1074< / td > < td > 6< / td > < td > < span class = low-hits > local idr_r = component_index[rel]< / span > < / td > < / tr >
< tr > < td > 1075< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1076< / td > < td > 4< / td > < td > < span class = low-hits > if idr then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1077< / td > < td > 4< / td > < td > < span class = low-hits > local count = 0< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1078< / td > < td > 11< / td > < td > < span class = low-hits > local queue = {}< / span > < / td > < / tr >
< tr > < td > 1079< / td > < td > 11< / td > < td > < span class = low-hits > for archetype_id in idr.cache do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1080< / td > < td > 11< / td > < td > < span class = low-hits > local idr_archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 1081< / td > < td > 11< / td > < td > < span class = low-hits > local entities = idr_archetype.entities< / span > < / td > < / tr >
< tr > < td > 1082< / td > < td > 11< / td > < td > < span class = low-hits > local n = #entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1083< / td > < td > 0< / td > < td > < span class = zero-hits > count += n< / span > < / td > < / tr >
< tr > < td > 1084< / td > < td > 4< / td > < td > < span class = low-hits > table.move(entities, 1, n, #queue + 1, queue)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1085< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1086< / td > < td > 0< / td > < td > < span class = zero-hits > for _, e in queue do< / span > < / td > < / tr >
< tr > < td > 1087< / td > < td > 0< / td > < td > < span class = zero-hits > world_remove(world, e, entity)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1088< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1089< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1090< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1091< / td > < td > 0< / td > < td > < span class = zero-hits > if idr_t then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1092< / td > < td > 0< / td > < td > < span class = zero-hits > local queue< / span > < / td > < / tr >
< tr > < td > 1093< / td > < td > 0< / td > < td > < span class = zero-hits > local ids< / span > < / td > < / tr >
< tr > < td > 1094< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1095< / td > < td > 0< / td > < td > < span class = zero-hits > local count = 0< / span > < / td > < / tr >
< tr > < td > 1096< / td > < td > 0< / td > < td > < span class = zero-hits > local archetype_ids = idr_t.cache< / span > < / td > < / tr >
< tr > < td > 1097< / td > < td > 0< / td > < td > < span class = zero-hits > for archetype_id in archetype_ids do< / span > < / td > < / tr >
< tr > < td > 1098< / td > < td > 0< / td > < td > < span class = zero-hits > local idr_t_archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 1099< / td > < td > 0< / td > < td > < span class = zero-hits > local idr_t_types = idr_t_archetype.types< / span > < / td > < / tr >
< tr > < td > 1100< / td > < td > 0< / td > < td > < span class = zero-hits > local entities = idr_t_archetype.entities< / span > < / td > < / tr >
< tr > < td > 1101< / td > < td > 0< / td > < td > < span class = zero-hits > local removal_queued = false< / span > < / td > < / tr >
< tr > < td > 1102< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1103< / td > < td > 0< / td > < td > < span class = zero-hits > for _, id in idr_t_types do< / span > < / td > < / tr >
< tr > < td > 1104< / td > < td > 0< / td > < td > < span class = zero-hits > if not ECS_IS_PAIR(id) then< / span > < / td > < / tr >
< tr > < td > 1105< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1106< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1107< / td > < td > 0< / td > < td > < span class = zero-hits > local object = entity_index_get_alive(< / span > < / td > < / tr >
< tr > < td > 1108< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index, ECS_PAIR_SECOND(id))< / span > < / td > < / tr >
< tr > < td > 1109< / td > < td > 0< / td > < td > < span class = zero-hits > if object ~= entity then< / span > < / td > < / tr >
< tr > < td > 1110< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1111< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1112< / td > < td > 0< / td > < td > < span class = zero-hits > if not ids then< / span > < / td > < / tr >
< tr > < td > 1113< / td > < td > 0< / td > < td > < span class = zero-hits > ids = {}< / span > < / td > < / tr >
< tr > < td > 1114< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1115< / td > < td > 0< / td > < td > < span class = zero-hits > ids[id] = true< / span > < / td > < / tr >
< tr > < td > 1116< / td > < td > 0< / td > < td > < span class = zero-hits > removal_queued = true< / span > < / td > < / tr >
< tr > < td > 1117< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1118< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1119< / td > < td > 0< / td > < td > < span class = zero-hits > if not removal_queued then< / span > < / td > < / tr >
< tr > < td > 1120< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1121< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1122< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1123< / td > < td > 0< / td > < td > < span class = zero-hits > if not queue then< / span > < / td > < / tr >
< tr > < td > 1124< / td > < td > 0< / td > < td > < span class = zero-hits > queue = {}< / span > < / td > < / tr >
< tr > < td > 1125< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1126< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1127< / td > < td > 0< / td > < td > < span class = zero-hits > local n = #entities< / span > < / td > < / tr >
< tr > < td > 1128< / td > < td > 0< / td > < td > < span class = zero-hits > table.move(entities, 1, n, count + 1, queue)< / span > < / td > < / tr >
< tr > < td > 1129< / td > < td > 0< / td > < td > < span class = zero-hits > count += n< / span > < / td > < / tr >
< tr > < td > 1130< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1131< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1132< / td > < td > 0< / td > < td > < span class = zero-hits > for id in ids do< / span > < / td > < / tr >
< tr > < td > 1133< / td > < td > 0< / td > < td > < span class = zero-hits > for _, child in queue do< / span > < / td > < / tr >
< tr > < td > 1134< / td > < td > 0< / td > < td > < span class = zero-hits > world_remove(world, child, id)< / span > < / td > < / tr >
< tr > < td > 1135< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1136< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1137< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1138< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1139< / td > < td > 1< / td > < td > < span class = low-hits > if idr_r then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1140< / td > < td > 1< / td > < td > < span class = low-hits > local count = 0< / span > < / td > < / tr >
< tr > < td > 1141< / td > < td > 1< / td > < td > < span class = low-hits > local archetype_ids = idr_r.cache< / span > < / td > < / tr >
< tr > < td > 1142< / td > < td > 1< / td > < td > < span class = low-hits > local ids = {}< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1143< / td > < td > 2< / td > < td > < span class = low-hits > local queue = {}< / span > < / td > < / tr >
< tr > < td > 1144< / td > < td > 2< / td > < td > < span class = low-hits > for archetype_id in archetype_ids do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1145< / td > < td > 2< / td > < td > < span class = low-hits > local idr_r_archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 1146< / td > < td > 2< / td > < td > < span class = low-hits > local entities = idr_r_archetype.entities< / span > < / td > < / tr >
< tr > < td > 1147< / td > < td > 2< / td > < td > < span class = low-hits > local tr = idr_r_archetype.records[rel]< / span > < / td > < / tr >
< tr > < td > 1148< / td > < td > 2< / td > < td > < span class = low-hits > local tr_count = idr_r_archetype.counts[rel]< / span > < / td > < / tr >
< tr > < td > 1149< / td > < td > 2< / td > < td > < span class = low-hits > local types = idr_r_archetype.types< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1150< / td > < td > 0< / td > < td > < span class = zero-hits > for i = tr, tr + tr_count - 1 do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1151< / td > < td > 2< / td > < td > < span class = low-hits > ids[types[i]] = true< / span > < / td > < / tr >
< tr > < td > 1152< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1153< / td > < td > 2< / td > < td > < span class = low-hits > local n = #entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1154< / td > < td > 0< / td > < td > < span class = zero-hits > table.move(entities, 1, n, count + 1, queue)< / span > < / td > < / tr >
< tr > < td > 1155< / td > < td > 0< / td > < td > < span class = zero-hits > count += n< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1156< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1157< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1158< / td > < td > 3< / td > < td > < span class = low-hits > for _, e in queue do< / span > < / td > < / tr >
< tr > < td > 1159< / td > < td > 0< / td > < td > < span class = zero-hits > for id in ids do< / span > < / td > < / tr >
< tr > < td > 1160< / td > < td > 0< / td > < td > < span class = zero-hits > world_remove(world, e, id)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1161< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1162< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1163< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1164< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1165< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1166< / td > < td > 50< / td > < td > < span class = low-hits > local function archetype_disconnect_edge(edge: ecs_graph_edge_t)< / span > < / td > < / tr >
< tr > < td > 1167< / td > < td > 50< / td > < td > < span class = low-hits > local edge_next = edge.next< / span > < / td > < / tr >
< tr > < td > 1168< / td > < td > 19< / td > < td > < span class = low-hits > local edge_prev = edge.prev< / span > < / td > < / tr >
< tr > < td > 1169< / td > < td > 0< / td > < td > < span class = zero-hits > if edge_next then< / span > < / td > < / tr >
< tr > < td > 1170< / td > < td > 50< / td > < td > < span class = low-hits > edge_next.prev = edge_prev< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1171< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1172< / td > < td > 0< / td > < td > < span class = zero-hits > if edge_prev then< / span > < / td > < / tr >
< tr > < td > 1173< / td > < td > 0< / td > < td > < span class = zero-hits > edge_prev.next = edge_next< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1174< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1175< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1176< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1177< / td > < td > 23< / td > < td > < span class = low-hits > local function archetype_remove_edge(edges: ecs_graph_edges_t, id: i53, edge: ecs_graph_edge_t)< / span > < / td > < / tr >
< tr > < td > 1178< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_disconnect_edge(edge)< / span > < / td > < / tr >
< tr > < td > 1179< / td > < td > 0< / td > < td > < span class = zero-hits > edges[id] = nil :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1180< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1181< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1182< / td > < td > 36< / td > < td > < span class = low-hits > local function archetype_clear_edges(archetype: ecs_archetype_t)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1183< / td > < td > 36< / td > < td > < span class = low-hits > local add: ecs_graph_edges_t = archetype.add< / span > < / td > < / tr >
< tr > < td > 1184< / td > < td > 36< / td > < td > < span class = low-hits > local remove: ecs_graph_edges_t = archetype.remove< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1185< / td > < td > 9< / td > < td > < span class = low-hits > local node_refs = archetype.refs< / span > < / td > < / tr >
< tr > < td > 1186< / td > < td > 9< / td > < td > < span class = low-hits > for id, edge in add do< / span > < / td > < / tr >
< tr > < td > 1187< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_disconnect_edge(edge)< / span > < / td > < / tr >
< tr > < td > 1188< / td > < td > 36< / td > < td > < span class = low-hits > add[id] = nil :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1189< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1190< / td > < td > 18< / td > < td > < span class = low-hits > for id, edge in remove do< / span > < / td > < / tr >
< tr > < td > 1191< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_disconnect_edge(edge)< / span > < / td > < / tr >
< tr > < td > 1192< / td > < td > 0< / td > < td > < span class = zero-hits > remove[id] = nil :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1193< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1194< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1195< / td > < td > 22< / td > < td > < span class = low-hits > local cur = node_refs.next< / span > < / td > < / tr >
< tr > < td > 1196< / td > < td > 22< / td > < td > < span class = low-hits > while cur do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1197< / td > < td > 22< / td > < td > < span class = low-hits > local edge = cur :: ecs_graph_edge_t< / span > < / td > < / tr >
< tr > < td > 1198< / td > < td > 22< / td > < td > < span class = low-hits > local next_edge = edge.next< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1199< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_remove_edge(edge.from.add, edge.id, edge)< / span > < / td > < / tr >
< tr > < td > 1200< / td > < td > 0< / td > < td > < span class = zero-hits > cur = next_edge< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1201< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1202< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1203< / td > < td > 1< / td > < td > < span class = low-hits > cur = node_refs.prev< / span > < / td > < / tr >
< tr > < td > 1204< / td > < td > 1< / td > < td > < span class = low-hits > while cur do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1205< / td > < td > 1< / td > < td > < span class = low-hits > local edge: ecs_graph_edge_t = cur< / span > < / td > < / tr >
< tr > < td > 1206< / td > < td > 1< / td > < td > < span class = low-hits > local next_edge = edge.prev< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1207< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_remove_edge(edge.from.remove, edge.id, edge)< / span > < / td > < / tr >
< tr > < td > 1208< / td > < td > 0< / td > < td > < span class = zero-hits > cur = next_edge< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1209< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1210< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1211< / td > < td > 0< / td > < td > < span class = zero-hits > node_refs.next = nil< / span > < / td > < / tr >
< tr > < td > 1212< / td > < td > 0< / td > < td > < span class = zero-hits > node_refs.prev = nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1213< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1214< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1215< / td > < td > 1< / td > < td > < span class = low-hits > local function archetype_destroy(world: ecs_world_t, archetype: ecs_archetype_t)< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1216< / td > < td > 0< / td > < td > < span class = zero-hits > if archetype == world.ROOT_ARCHETYPE then< / span > < / td > < / tr >
< tr > < td > 1217< / td > < td > 0< / td > < td > < span class = zero-hits > return< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1218< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1219< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1220< / td > < td > 36< / td > < td > < span class = low-hits > local component_index = world.component_index< / span > < / td > < / tr >
< tr > < td > 1221< / td > < td > 36< / td > < td > < span class = low-hits > archetype_clear_edges(archetype)< / span > < / td > < / tr >
< tr > < td > 1222< / td > < td > 36< / td > < td > < span class = low-hits > local archetype_id = archetype.id< / span > < / td > < / tr >
< tr > < td > 1223< / td > < td > 36< / td > < td > < span class = low-hits > world.archetypes[archetype_id] = nil :: any< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1224< / td > < td > 0< / td > < td > < span class = zero-hits > world.archetype_index[archetype.type] = nil :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1225< / td > < td > 36< / td > < td > < span class = low-hits > local records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1226< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1227< / td > < td > 113< / td > < td > < span class = low-hits > for id in records do< / span > < / td > < / tr >
< tr > < td > 1228< / td > < td > 0< / td > < td > < span class = zero-hits > local observer_list = find_observers(world, EcsOnArchetypeDelete, id)< / span > < / td > < / tr >
< tr > < td > 1229< / td > < td > 0< / td > < td > < span class = zero-hits > if not observer_list then< / span > < / td > < / tr >
< tr > < td > 1230< / td > < td > 2< / td > < td > < span class = low-hits > continue< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1231< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1232< / td > < td > 1< / td > < td > < span class = low-hits > for _, observer in observer_list do< / span > < / td > < / tr >
< tr > < td > 1233< / td > < td > 0< / td > < td > < span class = zero-hits > if query_match(observer.query, archetype) then< / span > < / td > < / tr >
< tr > < td > 1234< / td > < td > 0< / td > < td > < span class = zero-hits > observer.callback(archetype)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1235< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1236< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1237< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1238< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1239< / td > < td > 113< / td > < td > < span class = low-hits > for id in records do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1240< / td > < td > 113< / td > < td > < span class = low-hits > local idr = component_index[id]< / span > < / td > < / tr >
< tr > < td > 1241< / td > < td > 113< / td > < td > < span class = low-hits > idr.cache[archetype_id] = nil :: any< / span > < / td > < / tr >
< tr > < td > 1242< / td > < td > 113< / td > < td > < span class = low-hits > idr.counts[archetype_id] = nil< / span > < / td > < / tr >
< tr > < td > 1243< / td > < td > 113< / td > < td > < span class = low-hits > idr.size -= 1< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1244< / td > < td > 0< / td > < td > < span class = zero-hits > records[id] = nil :: any< / span > < / td > < / tr >
< tr > < td > 1245< / td > < td > 0< / td > < td > < span class = zero-hits > if idr.size == 0 then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1246< / td > < td > 0< / td > < td > < span class = zero-hits > component_index[id] = nil :: any< / span > < / td > < / tr >
< tr > < td > 1247< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1248< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1249< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1250< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1251< / td > < td > 0< / td > < td > < span class = zero-hits > local function world_cleanup(world: ecs_world_t)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1252< / td > < td > 1< / td > < td > < span class = low-hits > local archetypes = world.archetypes< / span > < / td > < / tr >
< tr > < td > 1253< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1254< / td > < td > 4< / td > < td > < span class = low-hits > for _, archetype in archetypes do< / span > < / td > < / tr >
< tr > < td > 1255< / td > < td > 0< / td > < td > < span class = zero-hits > if #archetype.entities == 0 then< / span > < / td > < / tr >
< tr > < td > 1256< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_destroy(world, archetype)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1257< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1258< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1259< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1260< / td > < td > 0< / td > < td > < span class = zero-hits > local new_archetypes = table.create(#archetypes) :: { ecs_archetype_t }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1261< / td > < td > 1< / td > < td > < span class = low-hits > local new_archetype_map = {}< / span > < / td > < / tr >
< tr > < td > 1262< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1263< / td > < td > 6< / td > < td > < span class = low-hits > for index, archetype in archetypes do< / span > < / td > < / tr >
< tr > < td > 1264< / td > < td > 0< / td > < td > < span class = zero-hits > new_archetypes[index] = archetype< / span > < / td > < / tr >
< tr > < td > 1265< / td > < td > 0< / td > < td > < span class = zero-hits > new_archetype_map[archetype.type] = archetype< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1266< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1267< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1268< / td > < td > 0< / td > < td > < span class = zero-hits > world.archetypes = new_archetypes< / span > < / td > < / tr >
< tr > < td > 1269< / td > < td > 0< / td > < td > < span class = zero-hits > world.archetype_index = new_archetype_map< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1270< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1271< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1272< / td > < td > 65684< / td > < td > < span class = high-hits > local function world_delete(world: ecs_world_t, entity: i53)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1273< / td > < td > 65684< / td > < td > < span class = high-hits > local entity_index = world.entity_index< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1274< / td > < td > 1< / td > < td > < span class = low-hits > local record = entity_index_try_get(entity_index, entity)< / span > < / td > < / tr >
< tr > < td > 1275< / td > < td > 0< / td > < td > < span class = zero-hits > if not record then< / span > < / td > < / tr >
< tr > < td > 1276< / td > < td > 0< / td > < td > < span class = zero-hits > return< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1277< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1278< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1279< / td > < td > 0< / td > < td > < span class = zero-hits > local archetype = record.archetype< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1280< / td > < td > 65683< / td > < td > < span class = high-hits > local row = record.row< / span > < / td > < / tr >
< tr > < td > 1281< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1282< / td > < td > 0< / td > < td > < span class = zero-hits > if archetype then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1283< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- In the future should have a destruct mode for< / td > >< / tr >
< tr > < td > 1284< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- deleting archetypes themselves. Maybe requires recycling< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1285< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_delete(world, archetype, row)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1286< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1287< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1288< / td > < td > 65683< / td > < td > < span class = high-hits > local delete = entity< / span > < / td > < / tr >
< tr > < td > 1289< / td > < td > 65683< / td > < td > < span class = high-hits > local component_index = world.component_index< / span > < / td > < / tr >
< tr > < td > 1290< / td > < td > 65683< / td > < td > < span class = high-hits > local archetypes = world.archetypes< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1291< / td > < td > 0< / td > < td > < span class = zero-hits > local tgt = ECS_PAIR(EcsWildcard, delete)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1292< / td > < td > 65683< / td > < td > < span class = high-hits > local rel = ECS_PAIR(delete, EcsWildcard)< / span > < / td > < / tr >
< tr > < td > 1293< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1294< / td > < td > 65683< / td > < td > < span class = high-hits > local idr_t = component_index[tgt]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1295< / td > < td > 0< / td > < td > < span class = zero-hits > local idr = component_index[delete]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1296< / td > < td > 65683< / td > < td > < span class = high-hits > local idr_r = component_index[rel]< / span > < / td > < / tr >
< tr > < td > 1297< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1298< / td > < td > 8< / td > < td > < span class = low-hits > if idr then< / span > < / td > < / tr >
< tr > < td > 1299< / td > < td > 1< / td > < td > < span class = low-hits > local flags = idr.flags< / span > < / td > < / tr >
< tr > < td > 1300< / td > < td > 1< / td > < td > < span class = low-hits > if bit32.band(flags, ECS_ID_DELETE) ~= 0 then< / span > < / td > < / tr >
< tr > < td > 1301< / td > < td > 0< / td > < td > < span class = zero-hits > for archetype_id in idr.cache do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1302< / td > < td > 1< / td > < td > < span class = low-hits > local idr_archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 1303< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1304< / td > < td > 1< / td > < td > < span class = low-hits > local entities = idr_archetype.entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1305< / td > < td > 2< / td > < td > < span class = low-hits > local n = #entities< / span > < / td > < / tr >
< tr > < td > 1306< / td > < td > 0< / td > < td > < span class = zero-hits > for i = n, 1, -1 do< / span > < / td > < / tr >
< tr > < td > 1307< / td > < td > 0< / td > < td > < span class = zero-hits > world_delete(world, entities[i])< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1308< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1309< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1310< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_destroy(world, idr_archetype)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1311< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1312< / td > < td > 12< / td > < td > < span class = low-hits > else< / span > < / td > < / tr >
< tr > < td > 1313< / td > < td > 12< / td > < td > < span class = low-hits > for archetype_id in idr.cache do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1314< / td > < td > 12< / td > < td > < span class = low-hits > local idr_archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 1315< / td > < td > 12< / td > < td > < span class = low-hits > local entities = idr_archetype.entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1316< / td > < td > 10< / td > < td > < span class = low-hits > local n = #entities< / span > < / td > < / tr >
< tr > < td > 1317< / td > < td > 0< / td > < td > < span class = zero-hits > for i = n, 1, -1 do< / span > < / td > < / tr >
< tr > < td > 1318< / td > < td > 0< / td > < td > < span class = zero-hits > world_remove(world, entities[i], delete)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1319< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1320< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1321< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_destroy(world, idr_archetype)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1322< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1323< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1324< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1325< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1326< / td > < td > 13< / td > < td > < span class = low-hits > if idr_t then< / span > < / td > < / tr >
< tr > < td > 1327< / td > < td > 0< / td > < td > < span class = zero-hits > local children< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1328< / td > < td > 13< / td > < td > < span class = low-hits > local ids< / span > < / td > < / tr >
< tr > < td > 1329< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1330< / td > < td > 13< / td > < td > < span class = low-hits > local count = 0< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1331< / td > < td > 18< / td > < td > < span class = low-hits > local archetype_ids = idr_t.cache< / span > < / td > < / tr >
< tr > < td > 1332< / td > < td > 18< / td > < td > < span class = low-hits > for archetype_id in archetype_ids do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1333< / td > < td > 18< / td > < td > < span class = low-hits > local idr_t_archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 1334< / td > < td > 18< / td > < td > < span class = low-hits > local idr_t_types = idr_t_archetype.types< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1335< / td > < td > 0< / td > < td > < span class = zero-hits > local entities = idr_t_archetype.entities< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1336< / td > < td > 18< / td > < td > < span class = low-hits > local removal_queued = false< / span > < / td > < / tr >
< tr > < td > 1337< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1338< / td > < td > 0< / td > < td > < span class = zero-hits > for _, id in idr_t_types do< / span > < / td > < / tr >
< tr > < td > 1339< / td > < td > 0< / td > < td > < span class = zero-hits > if not ECS_IS_PAIR(id) then< / span > < / td > < / tr >
< tr > < td > 1340< / td > < td > 24< / td > < td > < span class = low-hits > continue< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1341< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1342< / td > < td > 24< / td > < td > < span class = low-hits > local object = entity_index_get_alive(< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1343< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index, ECS_PAIR_SECOND(id))< / span > < / td > < / tr >
< tr > < td > 1344< / td > < td > 0< / td > < td > < span class = zero-hits > if object ~= delete then< / span > < / td > < / tr >
< tr > < td > 1345< / td > < td > 20< / td > < td > < span class = low-hits > continue< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1346< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1347< / td > < td > 20< / td > < td > < span class = low-hits > local id_record = component_index[id]< / span > < / td > < / tr >
< tr > < td > 1348< / td > < td > 20< / td > < td > < span class = low-hits > local flags = id_record.flags< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1349< / td > < td > 8< / td > < td > < span class = low-hits > local flags_delete_mask: number = bit32.band(flags, ECS_ID_DELETE)< / span > < / td > < / tr >
< tr > < td > 1350< / td > < td > 15< / td > < td > < span class = low-hits > if flags_delete_mask ~= 0 then< / span > < / td > < / tr >
< tr > < td > 1351< / td > < td > 15< / td > < td > < span class = low-hits > for i = #entities, 1, -1 do< / span > < / td > < / tr >
< tr > < td > 1352< / td > < td > 0< / td > < td > < span class = zero-hits > local child = entities[i]< / span > < / td > < / tr >
< tr > < td > 1353< / td > < td > 8< / td > < td > < span class = low-hits > world_delete(world, child)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1354< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1355< / td > < td > 12< / td > < td > < span class = low-hits > break< / span > < / td > < / tr >
< tr > < td > 1356< / td > < td > 6< / td > < td > < span class = low-hits > else< / span > < / td > < / tr >
< tr > < td > 1357< / td > < td > 0< / td > < td > < span class = zero-hits > if not ids then< / span > < / td > < / tr >
< tr > < td > 1358< / td > < td > 12< / td > < td > < span class = low-hits > ids = {}< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1359< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1360< / td > < td > 0< / td > < td > < span class = zero-hits > ids[id] = true< / span > < / td > < / tr >
< tr > < td > 1361< / td > < td > 0< / td > < td > < span class = zero-hits > removal_queued = true< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1362< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1363< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1364< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1365< / td > < td > 0< / td > < td > < span class = zero-hits > if not removal_queued then< / span > < / td > < / tr >
< tr > < td > 1366< / td > < td > 10< / td > < td > < span class = low-hits > continue< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1367< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1368< / td > < td > 0< / td > < td > < span class = zero-hits > if not children then< / span > < / td > < / tr >
< tr > < td > 1369< / td > < td > 10< / td > < td > < span class = low-hits > children = {}< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1370< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1371< / td > < td > 10< / td > < td > < span class = low-hits > local n = #entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1372< / td > < td > 0< / td > < td > < span class = zero-hits > table.move(entities, 1, n, count + 1, children)< / span > < / td > < / tr >
< tr > < td > 1373< / td > < td > 0< / td > < td > < span class = zero-hits > count += n< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1374< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1375< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1376< / td > < td > 17< / td > < td > < span class = low-hits > if ids then< / span > < / td > < / tr >
< tr > < td > 1377< / td > < td > 19< / td > < td > < span class = low-hits > for _, child in children do< / span > < / td > < / tr >
< tr > < td > 1378< / td > < td > 0< / td > < td > < span class = zero-hits > for id in ids do< / span > < / td > < / tr >
< tr > < td > 1379< / td > < td > 0< / td > < td > < span class = zero-hits > world_remove(world, child, id)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1380< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1381< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1382< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1383< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1384< / td > < td > 0< / td > < td > < span class = zero-hits > for archetype_id in archetype_ids do< / span > < / td > < / tr >
< tr > < td > 1385< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_destroy(world, archetypes[archetype_id])< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1386< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1387< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1388< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1389< / td > < td > 0< / td > < td > < span class = zero-hits > if idr_r then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1390< / td > < td > 0< / td > < td > < span class = zero-hits > local archetype_ids = idr_r.cache< / span > < / td > < / tr >
< tr > < td > 1391< / td > < td > 0< / td > < td > < span class = zero-hits > local flags = idr_r.flags< / span > < / td > < / tr >
< tr > < td > 1392< / td > < td > 0< / td > < td > < span class = zero-hits > if bit32.band(flags, ECS_ID_DELETE) ~= 0 then< / span > < / td > < / tr >
< tr > < td > 1393< / td > < td > 0< / td > < td > < span class = zero-hits > for archetype_id in archetype_ids do< / span > < / td > < / tr >
< tr > < td > 1394< / td > < td > 0< / td > < td > < span class = zero-hits > local idr_r_archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 1395< / td > < td > 0< / td > < td > < span class = zero-hits > local entities = idr_r_archetype.entities< / span > < / td > < / tr >
< tr > < td > 1396< / td > < td > 0< / td > < td > < span class = zero-hits > local n = #entities< / span > < / td > < / tr >
< tr > < td > 1397< / td > < td > 0< / td > < td > < span class = zero-hits > for i = n, 1, -1 do< / span > < / td > < / tr >
< tr > < td > 1398< / td > < td > 0< / td > < td > < span class = zero-hits > world_delete(world, entities[i])< / span > < / td > < / tr >
< tr > < td > 1399< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1400< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_destroy(world, idr_r_archetype)< / span > < / td > < / tr >
< tr > < td > 1401< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1402< / td > < td > 0< / td > < td > < span class = zero-hits > else< / span > < / td > < / tr >
< tr > < td > 1403< / td > < td > 0< / td > < td > < span class = zero-hits > local children = {}< / span > < / td > < / tr >
< tr > < td > 1404< / td > < td > 0< / td > < td > < span class = zero-hits > local count = 0< / span > < / td > < / tr >
< tr > < td > 1405< / td > < td > 0< / td > < td > < span class = zero-hits > local ids = {}< / span > < / td > < / tr >
< tr > < td > 1406< / td > < td > 0< / td > < td > < span class = zero-hits > for archetype_id in archetype_ids do< / span > < / td > < / tr >
< tr > < td > 1407< / td > < td > 0< / td > < td > < span class = zero-hits > local idr_r_archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 1408< / td > < td > 0< / td > < td > < span class = zero-hits > local entities = idr_r_archetype.entities< / span > < / td > < / tr >
< tr > < td > 1409< / td > < td > 0< / td > < td > < span class = zero-hits > local tr = idr_r_archetype.records[rel]< / span > < / td > < / tr >
< tr > < td > 1410< / td > < td > 0< / td > < td > < span class = zero-hits > local tr_count = idr_r_archetype.counts[rel]< / span > < / td > < / tr >
< tr > < td > 1411< / td > < td > 0< / td > < td > < span class = zero-hits > local types = idr_r_archetype.types< / span > < / td > < / tr >
< tr > < td > 1412< / td > < td > 0< / td > < td > < span class = zero-hits > for i = tr, tr_count - 1 do< / span > < / td > < / tr >
< tr > < td > 1413< / td > < td > 0< / td > < td > < span class = zero-hits > ids[types[tr]] = true< / span > < / td > < / tr >
< tr > < td > 1414< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1415< / td > < td > 0< / td > < td > < span class = zero-hits > local n = #entities< / span > < / td > < / tr >
< tr > < td > 1416< / td > < td > 0< / td > < td > < span class = zero-hits > table.move(entities, 1, n, count + 1, children)< / span > < / td > < / tr >
< tr > < td > 1417< / td > < td > 0< / td > < td > < span class = zero-hits > count += n< / span > < / td > < / tr >
< tr > < td > 1418< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1419< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1420< / td > < td > 0< / td > < td > < span class = zero-hits > for _, child in children do< / span > < / td > < / tr >
< tr > < td > 1421< / td > < td > 0< / td > < td > < span class = zero-hits > for id in ids do< / span > < / td > < / tr >
< tr > < td > 1422< / td > < td > 0< / td > < td > < span class = zero-hits > world_remove(world, child, id)< / span > < / td > < / tr >
< tr > < td > 1423< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1424< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1425< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1426< / td > < td > 0< / td > < td > < span class = zero-hits > for archetype_id in archetype_ids do< / span > < / td > < / tr >
< tr > < td > 1427< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_destroy(world, archetypes[archetype_id])< / span > < / td > < / tr >
< tr > < td > 1428< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1429< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1430< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1431< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1432< / td > < td > 65683< / td > < td > < span class = high-hits > local dense_array = entity_index.dense_array< / span > < / td > < / tr >
< tr > < td > 1433< / td > < td > 65683< / td > < td > < span class = high-hits > local index_of_deleted_entity = record.dense< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1434< / td > < td > 0< / td > < td > < span class = zero-hits > local index_of_last_alive_entity = entity_index.alive_count< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1435< / td > < td > 65683< / td > < td > < span class = high-hits > entity_index.alive_count = index_of_last_alive_entity - 1< / span > < / td > < / tr >
< tr > < td > 1436< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1437< / td > < td > 65683< / td > < td > < span class = high-hits > local last_alive_entity = dense_array[index_of_last_alive_entity]< / span > < / td > < / tr >
< tr > < td > 1438< / td > < td > 65683< / td > < td > < span class = high-hits > local r_swap = entity_index_try_get_any(entity_index, last_alive_entity) :: ecs_record_t< / span > < / td > < / tr >
< tr > < td > 1439< / td > < td > 65683< / td > < td > < span class = high-hits > r_swap.dense = index_of_deleted_entity< / span > < / td > < / tr >
< tr > < td > 1440< / td > < td > 65683< / td > < td > < span class = high-hits > record.archetype = nil :: any< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1441< / td > < td > 0< / td > < td > < span class = zero-hits > record.row = nil :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1442< / td > < td > 65683< / td > < td > < span class = high-hits > record.dense = index_of_last_alive_entity< / span > < / td > < / tr >
< tr > < td > 1443< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1444< / td > < td > 0< / td > < td > < span class = zero-hits > dense_array[index_of_deleted_entity] = last_alive_entity< / span > < / td > < / tr >
< tr > < td > 1445< / td > < td > 0< / td > < td > < span class = zero-hits > dense_array[index_of_last_alive_entity] = ECS_GENERATION_INC(entity)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1446< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1447< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1448< / td > < td > 0< / td > < td > < span class = zero-hits > local function world_contains(world: ecs_world_t, entity): boolean< / span > < / td > < / tr >
< tr > < td > 1449< / td > < td > 0< / td > < td > < span class = zero-hits > return entity_index_is_alive(world.entity_index, entity)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1450< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1451< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1452< / td > < td > 0< / td > < td > < span class = zero-hits > local function NOOP() end< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1453< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1454< / td > < td > 0< / td > < td > < span class = zero-hits > export type QueryInner = {< / span > < / td > < / tr >
< tr > < td > 1455< / td > < td > 0< / td > < td > < span class = zero-hits > compatible_archetypes: { Archetype },< / span > < / td > < / tr >
< tr > < td > 1456< / td > < td > 0< / td > < td > < span class = zero-hits > ids: { i53 },< / span > < / td > < / tr >
< tr > < td > 1457< / td > < td > 0< / td > < td > < span class = zero-hits > filter_with: { i53 },< / span > < / td > < / tr >
< tr > < td > 1458< / td > < td > 0< / td > < td > < span class = zero-hits > filter_without: { i53 },< / span > < / td > < / tr >
< tr > < td > 1459< / td > < td > 0< / td > < td > < span class = zero-hits > next: () -> (number, ...any),< / span > < / td > < / tr >
< tr > < td > 1460< / td > < td > 0< / td > < td > < span class = zero-hits > world: World,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1461< / td > < td > 1< / td > < td > < span class = low-hits > }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1462< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1463< / td > < td > 0< / td > < td > < span class = zero-hits > local function query_iter_init(query: ecs_query_data_t): () -> (number, ...any)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1464< / td > < td > 26< / td > < td > < span class = low-hits > local world_query_iter_next< / span > < / td > < / tr >
< tr > < td > 1465< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1466< / td > < td > 26< / td > < td > < span class = low-hits > local compatible_archetypes = query.compatible_archetypes< / span > < / td > < / tr >
< tr > < td > 1467< / td > < td > 26< / td > < td > < span class = low-hits > local lastArchetype = 1< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1468< / td > < td > 4< / td > < td > < span class = low-hits > local archetype = compatible_archetypes[1]< / span > < / td > < / tr >
< tr > < td > 1469< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1470< / td > < td > 22< / td > < td > < span class = low-hits > return NOOP :: () -> (number, ...any)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1471< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1472< / td > < td > 22< / td > < td > < span class = low-hits > local columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1473< / td > < td > 22< / td > < td > < span class = low-hits > local entities = archetype.entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1474< / td > < td > 0< / td > < td > < span class = zero-hits > local i = #entities< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1475< / td > < td > 22< / td > < td > < span class = low-hits > local records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1476< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1477< / td > < td > 22< / td > < td > < span class = low-hits > local ids = query.ids< / span > < / td > < / tr >
< tr > < td > 1478< / td > < td > 22< / td > < td > < span class = low-hits > local A, B, C, D, E, F, G, H, I = unpack(ids)< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1479< / td > < td > 0< / td > < td > < span class = zero-hits > local a: Column, b: Column, c: Column, d: Column< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1480< / td > < td > 22< / td > < td > < span class = low-hits > local e: Column, f: Column, g: Column, h: Column< / span > < / td > < / tr >
< tr > < td > 1481< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1482< / td > < td > 5< / td > < td > < span class = low-hits > if not B then< / span > < / td > < / tr >
< tr > < td > 1483< / td > < td > 3< / td > < td > < span class = low-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1484< / td > < td > 3< / td > < td > < span class = low-hits > elseif not C then< / span > < / td > < / tr >
< tr > < td > 1485< / td > < td > 2< / td > < td > < span class = low-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1486< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1487< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not D then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1488< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1489< / td > < td > 2< / td > < td > < span class = low-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1490< / td > < td > 1< / td > < td > < span class = low-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1491< / td > < td > 1< / td > < td > < span class = low-hits > elseif not E then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1492< / td > < td > 1< / td > < td > < span class = low-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1493< / td > < td > 1< / td > < td > < span class = low-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1494< / td > < td > 1< / td > < td > < span class = low-hits > c = columns[records[C]]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1495< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1496< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not F then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1497< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1498< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1499< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1500< / td > < td > 1< / td > < td > < span class = low-hits > d = columns[records[D]]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1501< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1502< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not G then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1503< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1504< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1505< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1506< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1507< / td > < td > 1< / td > < td > < span class = low-hits > e = columns[records[E]]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1508< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1509< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not H then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1510< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1511< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1512< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1513< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1514< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1515< / td > < td > 1< / td > < td > < span class = low-hits > f = columns[records[F]]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1516< / td > < td > 0< / td > < td > < span class = zero-hits > g = columns[records[G]]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1517< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not I then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1518< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1519< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1520< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1521< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1522< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1523< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 1524< / td > < td > 0< / td > < td > < span class = zero-hits > g = columns[records[G]]< / span > < / td > < / tr >
< tr > < td > 1525< / td > < td > 0< / td > < td > < span class = zero-hits > h = columns[records[H]]< / span > < / td > < / tr >
< tr > < td > 1526< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1527< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1528< / td > < td > 556< / td > < td > < span class = low-hits > if not B then< / span > < / td > < / tr >
< tr > < td > 1529< / td > < td > 556< / td > < td > < span class = low-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1530< / td > < td > 26< / td > < td > < span class = low-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1531< / td > < td > 26< / td > < td > < span class = low-hits > while entity == nil do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1532< / td > < td > 26< / td > < td > < span class = low-hits > lastArchetype += 1< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1533< / td > < td > 18< / td > < td > < span class = low-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 1534< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1535< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1536< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1537< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1538< / td > < td > 8< / td > < td > < span class = low-hits > entities = archetype.entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1539< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1540< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1541< / td > < td > 8< / td > < td > < span class = low-hits > continue< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1542< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1543< / td > < td > 8< / td > < td > < span class = low-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1544< / td > < td > 8< / td > < td > < span class = low-hits > columns = archetype.columns< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1545< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1546< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1547< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1548< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1549< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1550< / td > < td > 538< / td > < td > < span class = low-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1551< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1552< / td > < td > 5< / td > < td > < span class = low-hits > return entity, a[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1553< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1554< / td > < td > 7< / td > < td > < span class = low-hits > elseif not C then< / span > < / td > < / tr >
< tr > < td > 1555< / td > < td > 7< / td > < td > < span class = low-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1556< / td > < td > 3< / td > < td > < span class = low-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1557< / td > < td > 3< / td > < td > < span class = low-hits > while entity == nil do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1558< / td > < td > 3< / td > < td > < span class = low-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 1559< / td > < td > 3< / td > < td > < span class = low-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1560< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1561< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1562< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1563< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1564< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1565< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1566< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1567< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1568< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1569< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1570< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1571< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1572< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1573< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1574< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1575< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1576< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1577< / td > < td > 4< / td > < td > < span class = low-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1578< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1579< / td > < td > 2< / td > < td > < span class = low-hits > return entity, a[row], b[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1580< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1581< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not D then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1582< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1583< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1584< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 1585< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 1586< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 1587< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1588< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 1589< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1590< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1591< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1592< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1593< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1594< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1595< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1596< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1597< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1598< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1599< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1600< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1601< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1602< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1603< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1604< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 1605< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1606< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1607< / td > < td > 2< / td > < td > < span class = low-hits > return entity, a[row], b[row], c[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1608< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1609< / td > < td > 2< / td > < td > < span class = low-hits > elseif not E then< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1610< / td > < td > 2< / td > < td > < span class = low-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1611< / td > < td > 1< / td > < td > < span class = low-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1612< / td > < td > 1< / td > < td > < span class = low-hits > while entity == nil do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1613< / td > < td > 1< / td > < td > < span class = low-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 1614< / td > < td > 1< / td > < td > < span class = low-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1615< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1616< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1617< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1618< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1619< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1620< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1621< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1622< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1623< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1624< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1625< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1626< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1627< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1628< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1629< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1630< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1631< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1632< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1633< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1634< / td > < td > 1< / td > < td > < span class = low-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1635< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1636< / td > < td > 1< / td > < td > < span class = low-hits > return entity, a[row], b[row], c[row], d[row]< / span > < / td > < / tr >
< tr > < td > 1637< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1638< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not F then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1639< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1640< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1641< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 1642< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 1643< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 1644< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1645< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 1646< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1647< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1648< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1649< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1650< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1651< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1652< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1653< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1654< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1655< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1656< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1657< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1658< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1659< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1660< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1661< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1662< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1663< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 1664< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1665< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1666< / td > < td > 1< / td > < td > < span class = low-hits > return entity, a[row], b[row], c[row], d[row], e[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1667< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1668< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not G then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1669< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1670< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1671< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 1672< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 1673< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 1674< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1675< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 1676< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1677< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1678< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1679< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1680< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1681< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1682< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1683< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1684< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1685< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1686< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1687< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1688< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1689< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1690< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1691< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 1692< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1693< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1694< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 1695< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1696< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1697< / td > < td > 1< / td > < td > < span class = low-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1698< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1699< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not H then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1700< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1701< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1702< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 1703< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 1704< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 1705< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1706< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 1707< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1708< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1709< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1710< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1711< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1712< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1713< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1714< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1715< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1716< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1717< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1718< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1719< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1720< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1721< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1722< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 1723< / td > < td > 0< / td > < td > < span class = zero-hits > g = columns[records[G]]< / span > < / td > < / tr >
< tr > < td > 1724< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1725< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1726< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 1727< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1728< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1729< / td > < td > 1< / td > < td > < span class = low-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row], g[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1730< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1731< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not I then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1732< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1733< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1734< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 1735< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 1736< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 1737< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1738< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 1739< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1740< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1741< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1742< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1743< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1744< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1745< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1746< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1747< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1748< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1749< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1750< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1751< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1752< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1753< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1754< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 1755< / td > < td > 0< / td > < td > < span class = zero-hits > g = columns[records[G]]< / span > < / td > < / tr >
< tr > < td > 1756< / td > < td > 0< / td > < td > < span class = zero-hits > h = columns[records[H]]< / span > < / td > < / tr >
< tr > < td > 1757< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1758< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1759< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 1760< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1761< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1762< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row], g[row], h[row]< / span > < / td > < / tr >
< tr > < td > 1763< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1764< / td > < td > 1< / td > < td > < span class = low-hits > else< / span > < / td > < / tr >
< tr > < td > 1765< / td > < td > 2< / td > < td > < span class = low-hits > local output = {}< / span > < / td > < / tr >
< tr > < td > 1766< / td > < td > 2< / td > < td > < span class = low-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 1767< / td > < td > 1< / td > < td > < span class = low-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1768< / td > < td > 1< / td > < td > < span class = low-hits > while entity == nil do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1769< / td > < td > 1< / td > < td > < span class = low-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 1770< / td > < td > 1< / td > < td > < span class = low-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1771< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1772< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1773< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1774< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1775< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1776< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1777< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 1778< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1779< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1780< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 1781< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1782< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1783< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1784< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1785< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1786< / td > < td > 1< / td > < td > < span class = low-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 1787< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1788< / td > < td > 0< / td > < td > < span class = zero-hits > for j, id in ids do< / span > < / td > < / tr >
< tr > < td > 1789< / td > < td > 0< / td > < td > < span class = zero-hits > output[j] = columns[records[id]][row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1790< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1791< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1792< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, unpack(output)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1793< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1794< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1795< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1796< / td > < td > 0< / td > < td > < span class = zero-hits > query.next = world_query_iter_next< / span > < / td > < / tr >
< tr > < td > 1797< / td > < td > 0< / td > < td > < span class = zero-hits > return world_query_iter_next< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1798< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1799< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1800< / td > < td > 20< / td > < td > < span class = low-hits > local function query_iter(query): () -> (number, ...any)< / span > < / td > < / tr >
< tr > < td > 1801< / td > < td > 19< / td > < td > < span class = low-hits > local query_next = query.next< / span > < / td > < / tr >
< tr > < td > 1802< / td > < td > 0< / td > < td > < span class = zero-hits > if not query_next then< / span > < / td > < / tr >
< tr > < td > 1803< / td > < td > 20< / td > < td > < span class = low-hits > query_next = query_iter_init(query)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1804< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1805< / td > < td > 0< / td > < td > < span class = zero-hits > return query_next< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1806< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1807< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1808< / td > < td > 6< / td > < td > < span class = low-hits > local function query_without(query: ecs_query_data_t, ...: i53)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1809< / td > < td > 6< / td > < td > < span class = low-hits > local without = { ... }< / span > < / td > < / tr >
< tr > < td > 1810< / td > < td > 6< / td > < td > < span class = low-hits > query.filter_without = without< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1811< / td > < td > 3< / td > < td > < span class = low-hits > local compatible_archetypes = query.compatible_archetypes< / span > < / td > < / tr >
< tr > < td > 1812< / td > < td > 3< / td > < td > < span class = low-hits > for i = #compatible_archetypes, 1, -1 do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1813< / td > < td > 3< / td > < td > < span class = low-hits > local archetype = compatible_archetypes[i]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1814< / td > < td > 0< / td > < td > < span class = zero-hits > local records = archetype.records< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1815< / td > < td > 3< / td > < td > < span class = low-hits > local matches = true< / span > < / td > < / tr >
< tr > < td > 1816< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1817< / td > < td > 2< / td > < td > < span class = low-hits > for _, id in without do< / span > < / td > < / tr >
< tr > < td > 1818< / td > < td > 2< / td > < td > < span class = low-hits > if records[id] then< / span > < / td > < / tr >
< tr > < td > 1819< / td > < td > 0< / td > < td > < span class = zero-hits > matches = false< / span > < / td > < / tr >
< tr > < td > 1820< / td > < td > 0< / td > < td > < span class = zero-hits > break< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1821< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1822< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1823< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1824< / td > < td > 0< / td > < td > < span class = zero-hits > if matches then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1825< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1826< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1827< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1828< / td > < td > 0< / td > < td > < span class = zero-hits > local last = #compatible_archetypes< / span > < / td > < / tr >
< tr > < td > 1829< / td > < td > 0< / td > < td > < span class = zero-hits > if last ~= i then< / span > < / td > < / tr >
< tr > < td > 1830< / td > < td > 2< / td > < td > < span class = low-hits > compatible_archetypes[i] = compatible_archetypes[last]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1831< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1832< / td > < td > 0< / td > < td > < span class = zero-hits > compatible_archetypes[last] = nil :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1833< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1834< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1835< / td > < td > 0< / td > < td > < span class = zero-hits > return query :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1836< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1837< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1838< / td > < td > 1< / td > < td > < span class = low-hits > local function query_with(query: ecs_query_data_t, ...: i53)< / span > < / td > < / tr >
< tr > < td > 1839< / td > < td > 1< / td > < td > < span class = low-hits > local compatible_archetypes = query.compatible_archetypes< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1840< / td > < td > 0< / td > < td > < span class = zero-hits > local with = { ... }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1841< / td > < td > 1< / td > < td > < span class = low-hits > query.filter_with = with< / span > < / td > < / tr >
< tr > < td > 1842< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1843< / td > < td > 0< / td > < td > < span class = zero-hits > for i = #compatible_archetypes, 1, -1 do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1844< / td > < td > 0< / td > < td > < span class = zero-hits > local archetype = compatible_archetypes[i]< / span > < / td > < / tr >
< tr > < td > 1845< / td > < td > 0< / td > < td > < span class = zero-hits > local records = archetype.records< / span > < / td > < / tr >
< tr > < td > 1846< / td > < td > 0< / td > < td > < span class = zero-hits > local matches = true< / span > < / td > < / tr >
< tr > < td > 1847< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1848< / td > < td > 0< / td > < td > < span class = zero-hits > for _, id in with do< / span > < / td > < / tr >
< tr > < td > 1849< / td > < td > 0< / td > < td > < span class = zero-hits > if not records[id] then< / span > < / td > < / tr >
< tr > < td > 1850< / td > < td > 0< / td > < td > < span class = zero-hits > matches = false< / span > < / td > < / tr >
< tr > < td > 1851< / td > < td > 0< / td > < td > < span class = zero-hits > break< / span > < / td > < / tr >
< tr > < td > 1852< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1853< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1854< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1855< / td > < td > 0< / td > < td > < span class = zero-hits > if matches then< / span > < / td > < / tr >
< tr > < td > 1856< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 1857< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1858< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1859< / td > < td > 0< / td > < td > < span class = zero-hits > local last = #compatible_archetypes< / span > < / td > < / tr >
< tr > < td > 1860< / td > < td > 0< / td > < td > < span class = zero-hits > if last ~= i then< / span > < / td > < / tr >
< tr > < td > 1861< / td > < td > 0< / td > < td > < span class = zero-hits > compatible_archetypes[i] = compatible_archetypes[last]< / span > < / td > < / tr >
< tr > < td > 1862< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1863< / td > < td > 0< / td > < td > < span class = zero-hits > compatible_archetypes[last] = nil :: any< / span > < / td > < / tr >
< tr > < td > 1864< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1865< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1866< / td > < td > 0< / td > < td > < span class = zero-hits > return query :: any< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1867< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1868< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1869< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Meant for directly iterating over archetypes to minimize< / td > >< / tr >
< tr > < td > 1870< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- function call overhead. Should not be used unless iterating over< / td > >< / tr >
< tr > < td > 1871< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- hundreds of thousands of entities in bulk.< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1872< / td > < td > 0< / td > < td > < span class = zero-hits > local function query_archetypes(query)< / span > < / td > < / tr >
< tr > < td > 1873< / td > < td > 0< / td > < td > < span class = zero-hits > return query.compatible_archetypes< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1874< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1875< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1876< / td > < td > 6< / td > < td > < span class = low-hits > local function query_cached(query: ecs_query_data_t)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1877< / td > < td > 6< / td > < td > < span class = low-hits > local with = query.filter_with< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1878< / td > < td > 1< / td > < td > < span class = low-hits > local ids = query.ids< / span > < / td > < / tr >
< tr > < td > 1879< / td > < td > 0< / td > < td > < span class = zero-hits > if with then< / span > < / td > < / tr >
< tr > < td > 1880< / td > < td > 5< / td > < td > < span class = low-hits > table.move(ids, 1, #ids, #with + 1, with)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1881< / td > < td > 0< / td > < td > < span class = zero-hits > else< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1882< / td > < td > 0< / td > < td > < span class = zero-hits > query.filter_with = ids< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1883< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1884< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1885< / td > < td > 0< / td > < td > < span class = zero-hits > local compatible_archetypes = query.compatible_archetypes< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1886< / td > < td > 6< / td > < td > < span class = low-hits > local lastArchetype = 1< / span > < / td > < / tr >
< tr > < td > 1887< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1888< / td > < td > 6< / td > < td > < span class = low-hits > local A, B, C, D, E, F, G, H, I = unpack(ids)< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1889< / td > < td > 0< / td > < td > < span class = zero-hits > local a: Column, b: Column, c: Column, d: Column< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1890< / td > < td > 6< / td > < td > < span class = low-hits > local e: Column, f: Column, g: Column, h: Column< / span > < / td > < / tr >
< tr > < td > 1891< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1892< / td > < td > 6< / td > < td > < span class = low-hits > local world_query_iter_next< / span > < / td > < / tr >
< tr > < td > 1893< / td > < td > 6< / td > < td > < span class = low-hits > local columns: { Column }< / span > < / td > < / tr >
< tr > < td > 1894< / td > < td > 6< / td > < td > < span class = low-hits > local entities: { number }< / span > < / td > < / tr >
< tr > < td > 1895< / td > < td > 6< / td > < td > < span class = low-hits > local i: number< / span > < / td > < / tr >
< tr > < td > 1896< / td > < td > 6< / td > < td > < span class = low-hits > local archetype: ecs_archetype_t< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1897< / td > < td > 0< / td > < td > < span class = zero-hits > local records: { number }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1898< / td > < td > 6< / td > < td > < span class = low-hits > local archetypes = query.compatible_archetypes< / span > < / td > < / tr >
< tr > < td > 1899< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1900< / td > < td > 0< / td > < td > < span class = zero-hits > local world = query.world :: { observable: ecs_observable_t }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1901< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Only need one observer for EcsArchetypeCreate and EcsArchetypeDelete respectively< / td > >< / tr >
< tr > < td > 1902< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- because the event will be emitted for all components of that Archetype.< / td > >< / tr >
< tr > < td > 1903< / td > < td > 6< / td > < td > < span class = low-hits > local observable = world.observable :: ecs_observable_t< / span > < / td > < / tr >
< tr > < td > 1904< / td > < td > 6< / td > < td > < span class = low-hits > local on_create_action = observable[EcsOnArchetypeCreate]< / span > < / td > < / tr >
< tr > < td > 1905< / td > < td > 6< / td > < td > < span class = low-hits > if not on_create_action then< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1906< / td > < td > 0< / td > < td > < span class = zero-hits > on_create_action = {}< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1907< / td > < td > 6< / td > < td > < span class = low-hits > observable[EcsOnArchetypeCreate] = on_create_action< / span > < / td > < / tr >
< tr > < td > 1908< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1909< / td > < td > 6< / td > < td > < span class = low-hits > local query_cache_on_create = on_create_action[A]< / span > < / td > < / tr >
< tr > < td > 1910< / td > < td > 6< / td > < td > < span class = low-hits > if not query_cache_on_create then< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1911< / td > < td > 0< / td > < td > < span class = zero-hits > query_cache_on_create = {}< / span > < / td > < / tr >
< tr > < td > 1912< / td > < td > 0< / td > < td > < span class = zero-hits > on_create_action[A] = query_cache_on_create< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1913< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1914< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 1915< / td > < td > 6< / td > < td > < span class = low-hits > local on_delete_action = observable[EcsOnArchetypeDelete]< / span > < / td > < / tr >
< tr > < td > 1916< / td > < td > 6< / td > < td > < span class = low-hits > if not on_delete_action then< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1917< / td > < td > 0< / td > < td > < span class = zero-hits > on_delete_action = {}< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1918< / td > < td > 6< / td > < td > < span class = low-hits > observable[EcsOnArchetypeDelete] = on_delete_action< / span > < / td > < / tr >
< tr > < td > 1919< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1920< / td > < td > 6< / td > < td > < span class = low-hits > local query_cache_on_delete = on_delete_action[A]< / span > < / td > < / tr >
< tr > < td > 1921< / td > < td > 6< / td > < td > < span class = low-hits > if not query_cache_on_delete then< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1922< / td > < td > 0< / td > < td > < span class = zero-hits > query_cache_on_delete = {}< / span > < / td > < / tr >
< tr > < td > 1923< / td > < td > 0< / td > < td > < span class = zero-hits > on_delete_action[A] = query_cache_on_delete< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1924< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1925< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1926< / td > < td > 0< / td > < td > < span class = zero-hits > local function on_create_callback(archetype)< / span > < / td > < / tr >
< tr > < td > 1927< / td > < td > 0< / td > < td > < span class = zero-hits > table.insert(archetypes, archetype)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1928< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1929< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1930< / td > < td > 1< / td > < td > < span class = low-hits > local function on_delete_callback(archetype)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1931< / td > < td > 1< / td > < td > < span class = low-hits > local i = table.find(archetypes, archetype) :: number< / span > < / td > < / tr >
< tr > < td > 1932< / td > < td > 1< / td > < td > < span class = low-hits > local n = #archetypes< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1933< / td > < td > 0< / td > < td > < span class = zero-hits > archetypes[i] = archetypes[n]< / span > < / td > < / tr >
< tr > < td > 1934< / td > < td > 0< / td > < td > < span class = zero-hits > archetypes[n] = nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1935< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1936< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1937< / td > < td > 0< / td > < td > < span class = zero-hits > local observer_for_create = { query = query, callback = on_create_callback }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1938< / td > < td > 6< / td > < td > < span class = low-hits > local observer_for_delete = { query = query, callback = on_delete_callback }< / span > < / td > < / tr >
< tr > < td > 1939< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1940< / td > < td > 0< / td > < td > < span class = zero-hits > table.insert(query_cache_on_create, observer_for_create)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1941< / td > < td > 6< / td > < td > < span class = low-hits > table.insert(query_cache_on_delete, observer_for_delete)< / span > < / td > < / tr >
< tr > < td > 1942< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1943< / td > < td > 11< / td > < td > < span class = low-hits > local function cached_query_iter()< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1944< / td > < td > 11< / td > < td > < span class = low-hits > lastArchetype = 1< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1945< / td > < td > 1< / td > < td > < span class = low-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 1946< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 1947< / td > < td > 10< / td > < td > < span class = low-hits > return NOOP< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1948< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1949< / td > < td > 10< / td > < td > < span class = low-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 1950< / td > < td > 10< / td > < td > < span class = low-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 1951< / td > < td > 10< / td > < td > < span class = low-hits > records = archetype.records< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1952< / td > < td > 6< / td > < td > < span class = low-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 1953< / td > < td > 4< / td > < td > < span class = low-hits > if not B then< / span > < / td > < / tr >
< tr > < td > 1954< / td > < td > 4< / td > < td > < span class = low-hits > a = columns[records[A]]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1955< / td > < td > 4< / td > < td > < span class = low-hits > elseif not C then< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1956< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1957< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 1958< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not D then< / span > < / td > < / tr >
< tr > < td > 1959< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1960< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1961< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1962< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not E then< / span > < / td > < / tr >
< tr > < td > 1963< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1964< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1965< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1966< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1967< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not F then< / span > < / td > < / tr >
< tr > < td > 1968< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1969< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1970< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1971< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1972< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1973< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not G then< / span > < / td > < / tr >
< tr > < td > 1974< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1975< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1976< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1977< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1978< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1979< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 1980< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not H then< / span > < / td > < / tr >
< tr > < td > 1981< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1982< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1983< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1984< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1985< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1986< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 1987< / td > < td > 0< / td > < td > < span class = zero-hits > g = columns[records[G]]< / span > < / td > < / tr >
< tr > < td > 1988< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not I then< / span > < / td > < / tr >
< tr > < td > 1989< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 1990< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 1991< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 1992< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 1993< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 1994< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 1995< / td > < td > 0< / td > < td > < span class = zero-hits > g = columns[records[G]]< / span > < / td > < / tr >
< tr > < td > 1996< / td > < td > 0< / td > < td > < span class = zero-hits > h = columns[records[H]]< / span > < / td > < / tr >
< tr > < td > 1997< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 1998< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 1999< / td > < td > 0< / td > < td > < span class = zero-hits > return world_query_iter_next< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2000< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2001< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2002< / td > < td > 11< / td > < td > < span class = low-hits > if not B then< / span > < / td > < / tr >
< tr > < td > 2003< / td > < td > 11< / td > < td > < span class = low-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2004< / td > < td > 6< / td > < td > < span class = low-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2005< / td > < td > 6< / td > < td > < span class = low-hits > while entity == nil do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2006< / td > < td > 6< / td > < td > < span class = low-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2007< / td > < td > 6< / td > < td > < span class = low-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2008< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2009< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2010< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2011< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2012< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2013< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2014< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2015< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2016< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2017< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2018< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2019< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2020< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 2021< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2022< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2023< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2024< / td > < td > 5< / td > < td > < span class = low-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2025< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2026< / td > < td > 1< / td > < td > < span class = low-hits > return entity, a[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2027< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2028< / td > < td > 8< / td > < td > < span class = low-hits > elseif not C then< / span > < / td > < / tr >
< tr > < td > 2029< / td > < td > 8< / td > < td > < span class = low-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2030< / td > < td > 4< / td > < td > < span class = low-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2031< / td > < td > 4< / td > < td > < span class = low-hits > while entity == nil do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2032< / td > < td > 4< / td > < td > < span class = low-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2033< / td > < td > 4< / td > < td > < span class = low-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2034< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2035< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2036< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2037< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2038< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2039< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2040< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2041< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2042< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2043< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2044< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2045< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2046< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 2047< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 2048< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2049< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2050< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2051< / td > < td > 4< / td > < td > < span class = low-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2052< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2053< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2054< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2055< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not D then< / span > < / td > < / tr >
< tr > < td > 2056< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2057< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2058< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 2059< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2060< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 2061< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2062< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 2063< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2064< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2065< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2066< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2067< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2068< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2069< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2070< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2071< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2072< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2073< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 2074< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 2075< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 2076< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2077< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2078< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 2079< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2080< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2081< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row]< / span > < / td > < / tr >
< tr > < td > 2082< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2083< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not E then< / span > < / td > < / tr >
< tr > < td > 2084< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2085< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2086< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 2087< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2088< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 2089< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2090< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 2091< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2092< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2093< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2094< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2095< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2096< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2097< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2098< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2099< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2100< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2101< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 2102< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 2103< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 2104< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 2105< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2106< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2107< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 2108< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2109< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2110< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row]< / span > < / td > < / tr >
< tr > < td > 2111< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2112< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not F then< / span > < / td > < / tr >
< tr > < td > 2113< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2114< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2115< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 2116< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2117< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 2118< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2119< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 2120< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2121< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2122< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2123< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2124< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2125< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2126< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2127< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2128< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2129< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2130< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 2131< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 2132< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 2133< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 2134< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 2135< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2136< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2137< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 2138< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2139< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2140< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row]< / span > < / td > < / tr >
< tr > < td > 2141< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2142< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not G then< / span > < / td > < / tr >
< tr > < td > 2143< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2144< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2145< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 2146< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2147< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 2148< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2149< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 2150< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2151< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2152< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2153< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2154< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2155< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2156< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2157< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2158< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2159< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2160< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 2161< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 2162< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 2163< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 2164< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 2165< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 2166< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2167< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2168< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 2169< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2170< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2171< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row]< / span > < / td > < / tr >
< tr > < td > 2172< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2173< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not H then< / span > < / td > < / tr >
< tr > < td > 2174< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2175< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2176< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 2177< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2178< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 2179< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2180< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 2181< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2182< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2183< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2184< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2185< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2186< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2187< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2188< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2189< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2190< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2191< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 2192< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 2193< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 2194< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 2195< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 2196< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 2197< / td > < td > 0< / td > < td > < span class = zero-hits > g = columns[records[G]]< / span > < / td > < / tr >
< tr > < td > 2198< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2199< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2200< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 2201< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2202< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2203< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row], g[row]< / span > < / td > < / tr >
< tr > < td > 2204< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2205< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not I then< / span > < / td > < / tr >
< tr > < td > 2206< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2207< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2208< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 2209< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2210< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 2211< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2212< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 2213< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2214< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2215< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2216< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2217< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2218< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2219< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2220< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2221< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2222< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2223< / td > < td > 0< / td > < td > < span class = zero-hits > a = columns[records[A]]< / span > < / td > < / tr >
< tr > < td > 2224< / td > < td > 0< / td > < td > < span class = zero-hits > b = columns[records[B]]< / span > < / td > < / tr >
< tr > < td > 2225< / td > < td > 0< / td > < td > < span class = zero-hits > c = columns[records[C]]< / span > < / td > < / tr >
< tr > < td > 2226< / td > < td > 0< / td > < td > < span class = zero-hits > d = columns[records[D]]< / span > < / td > < / tr >
< tr > < td > 2227< / td > < td > 0< / td > < td > < span class = zero-hits > e = columns[records[E]]< / span > < / td > < / tr >
< tr > < td > 2228< / td > < td > 0< / td > < td > < span class = zero-hits > f = columns[records[F]]< / span > < / td > < / tr >
< tr > < td > 2229< / td > < td > 0< / td > < td > < span class = zero-hits > g = columns[records[G]]< / span > < / td > < / tr >
< tr > < td > 2230< / td > < td > 0< / td > < td > < span class = zero-hits > h = columns[records[H]]< / span > < / td > < / tr >
< tr > < td > 2231< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2232< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2233< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 2234< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2235< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2236< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row], g[row], h[row]< / span > < / td > < / tr >
< tr > < td > 2237< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2238< / td > < td > 0< / td > < td > < span class = zero-hits > else< / span > < / td > < / tr >
< tr > < td > 2239< / td > < td > 0< / td > < td > < span class = zero-hits > local queryOutput = {}< / span > < / td > < / tr >
< tr > < td > 2240< / td > < td > 0< / td > < td > < span class = zero-hits > function world_query_iter_next(): any< / span > < / td > < / tr >
< tr > < td > 2241< / td > < td > 0< / td > < td > < span class = zero-hits > local entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2242< / td > < td > 0< / td > < td > < span class = zero-hits > while entity == nil do< / span > < / td > < / tr >
< tr > < td > 2243< / td > < td > 0< / td > < td > < span class = zero-hits > lastArchetype += 1< / span > < / td > < / tr >
< tr > < td > 2244< / td > < td > 0< / td > < td > < span class = zero-hits > archetype = compatible_archetypes[lastArchetype]< / span > < / td > < / tr >
< tr > < td > 2245< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
< tr > < td > 2246< / td > < td > 0< / td > < td > < span class = zero-hits > return nil< / span > < / td > < / tr >
< tr > < td > 2247< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2248< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2249< / td > < td > 0< / td > < td > < span class = zero-hits > entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2250< / td > < td > 0< / td > < td > < span class = zero-hits > i = #entities< / span > < / td > < / tr >
< tr > < td > 2251< / td > < td > 0< / td > < td > < span class = zero-hits > if i == 0 then< / span > < / td > < / tr >
< tr > < td > 2252< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2253< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2254< / td > < td > 0< / td > < td > < span class = zero-hits > entity = entities[i]< / span > < / td > < / tr >
< tr > < td > 2255< / td > < td > 0< / td > < td > < span class = zero-hits > columns = archetype.columns< / span > < / td > < / tr >
< tr > < td > 2256< / td > < td > 0< / td > < td > < span class = zero-hits > records = archetype.records< / span > < / td > < / tr >
< tr > < td > 2257< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2258< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2259< / td > < td > 0< / td > < td > < span class = zero-hits > local row = i< / span > < / td > < / tr >
< tr > < td > 2260< / td > < td > 0< / td > < td > < span class = zero-hits > i -= 1< / span > < / td > < / tr >
< tr > < td > 2261< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2262< / td > < td > 0< / td > < td > < span class = zero-hits > if not F then< / span > < / td > < / tr >
< tr > < td > 2263< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row]< / span > < / td > < / tr >
< tr > < td > 2264< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not G then< / span > < / td > < / tr >
< tr > < td > 2265< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row]< / span > < / td > < / tr >
< tr > < td > 2266< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not H then< / span > < / td > < / tr >
< tr > < td > 2267< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row], g[row]< / span > < / td > < / tr >
< tr > < td > 2268< / td > < td > 0< / td > < td > < span class = zero-hits > elseif not I then< / span > < / td > < / tr >
< tr > < td > 2269< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, a[row], b[row], c[row], d[row], e[row], f[row], g[row], h[row]< / span > < / td > < / tr >
< tr > < td > 2270< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2271< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2272< / td > < td > 0< / td > < td > < span class = zero-hits > for j, id in ids do< / span > < / td > < / tr >
< tr > < td > 2273< / td > < td > 0< / td > < td > < span class = zero-hits > queryOutput[j] = columns[records[id]][row]< / span > < / td > < / tr >
< tr > < td > 2274< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2275< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2276< / td > < td > 0< / td > < td > < span class = zero-hits > return entity, unpack(queryOutput)< / span > < / td > < / tr >
< tr > < td > 2277< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2278< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2279< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2280< / td > < td > 6< / td > < td > < span class = low-hits > local cached_query = query :: any< / span > < / td > < / tr >
< tr > < td > 2281< / td > < td > 6< / td > < td > < span class = low-hits > cached_query.archetypes = query_archetypes< / span > < / td > < / tr >
< tr > < td > 2282< / td > < td > 6< / td > < td > < span class = low-hits > cached_query.__iter = cached_query_iter< / span > < / td > < / tr >
< tr > < td > 2283< / td > < td > 6< / td > < td > < span class = low-hits > cached_query.iter = cached_query_iter< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2284< / td > < td > 0< / td > < td > < span class = zero-hits > setmetatable(cached_query, cached_query)< / span > < / td > < / tr >
< tr > < td > 2285< / td > < td > 0< / td > < td > < span class = zero-hits > return cached_query< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2286< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2287< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2288< / td > < td > 1< / td > < td > < span class = low-hits > local Query = {}< / span > < / td > < / tr >
< tr > < td > 2289< / td > < td > 1< / td > < td > < span class = low-hits > Query.__index = Query< / span > < / td > < / tr >
< tr > < td > 2290< / td > < td > 1< / td > < td > < span class = low-hits > Query.__iter = query_iter< / span > < / td > < / tr >
< tr > < td > 2291< / td > < td > 1< / td > < td > < span class = low-hits > Query.iter = query_iter_init< / span > < / td > < / tr >
< tr > < td > 2292< / td > < td > 1< / td > < td > < span class = low-hits > Query.without = query_without< / span > < / td > < / tr >
< tr > < td > 2293< / td > < td > 1< / td > < td > < span class = low-hits > Query.with = query_with< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2294< / td > < td > 0< / td > < td > < span class = zero-hits > Query.archetypes = query_archetypes< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2295< / td > < td > 1< / td > < td > < span class = low-hits > Query.cached = query_cached< / span > < / td > < / tr >
< tr > < td > 2296< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2297< / td > < td > 33< / td > < td > < span class = low-hits > local function world_query(world: ecs_world_t, ...)< / span > < / td > < / tr >
< tr > < td > 2298< / td > < td > 0< / td > < td > < span class = zero-hits > local compatible_archetypes = {}< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2299< / td > < td > 33< / td > < td > < span class = low-hits > local length = 0< / span > < / td > < / tr >
< tr > < td > 2300< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2301< / td > < td > 33< / td > < td > < span class = low-hits > local ids = { ... }< / span > < / td > < / tr >
< tr > < td > 2302< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2303< / td > < td > 33< / td > < td > < span class = low-hits > local archetypes = world.archetypes< / span > < / td > < / tr >
< tr > < td > 2304< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2305< / td > < td > 0< / td > < td > < span class = zero-hits > local idr: ecs_id_record_t?< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2306< / td > < td > 33< / td > < td > < span class = low-hits > local component_index = world.component_index< / span > < / td > < / tr >
< tr > < td > 2307< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2308< / td > < td > 33< / td > < td > < span class = low-hits > local q = setmetatable({< / span > < / td > < / tr >
< tr > < td > 2309< / td > < td > 33< / td > < td > < span class = low-hits > ids = ids,< / span > < / td > < / tr >
< tr > < td > 2310< / td > < td > 33< / td > < td > < span class = low-hits > compatible_archetypes = compatible_archetypes,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2311< / td > < td > 0< / td > < td > < span class = zero-hits > world = world,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2312< / td > < td > 33< / td > < td > < span class = low-hits > }, Query)< / span > < / td > < / tr >
< tr > < td > 2313< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2314< / td > < td > 47< / td > < td > < span class = low-hits > for _, id in ids do< / span > < / td > < / tr >
< tr > < td > 2315< / td > < td > 7< / td > < td > < span class = low-hits > local map = component_index[id]< / span > < / td > < / tr >
< tr > < td > 2316< / td > < td > 0< / td > < td > < span class = zero-hits > if not map then< / span > < / td > < / tr >
< tr > < td > 2317< / td > < td > 0< / td > < td > < span class = zero-hits > return q< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2318< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2319< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2320< / td > < td > 0< / td > < td > < span class = zero-hits > if idr == nil or map.size < idr.size then < / span > < / td > < / tr >
< tr > < td > 2321< / td > < td > 0< / td > < td > < span class = zero-hits > idr = map< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2322< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2323< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2324< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2325< / td > < td > 0< / td > < td > < span class = zero-hits > if not idr then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2326< / td > < td > 0< / td > < td > < span class = zero-hits > return q< / span > < / td > < / tr >
< tr > < td > 2327< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2328< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2329< / td > < td > 48< / td > < td > < span class = low-hits > for archetype_id in idr.cache do< / span > < / td > < / tr >
< tr > < td > 2330< / td > < td > 0< / td > < td > < span class = zero-hits > local compatibleArchetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 2331< / td > < td > 0< / td > < td > < span class = zero-hits > if #compatibleArchetype.entities == 0 then< / span > < / td > < / tr >
< tr > < td > 2332< / td > < td > 34< / td > < td > < span class = low-hits > continue< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2333< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2334< / td > < td > 34< / td > < td > < span class = low-hits > local records = compatibleArchetype.records< / span > < / td > < / tr >
< tr > < td > 2335< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2336< / td > < td > 34< / td > < td > < span class = low-hits > local skip = false< / span > < / td > < / tr >
< tr > < td > 2337< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2338< / td > < td > 47< / td > < td > < span class = low-hits > for i, id in ids do< / span > < / td > < / tr >
< tr > < td > 2339< / td > < td > 0< / td > < td > < span class = zero-hits > local tr = records[id]< / span > < / td > < / tr >
< tr > < td > 2340< / td > < td > 0< / td > < td > < span class = zero-hits > if not tr then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2341< / td > < td > 0< / td > < td > < span class = zero-hits > skip = true< / span > < / td > < / tr >
< tr > < td > 2342< / td > < td > 0< / td > < td > < span class = zero-hits > break< / span > < / td > < / tr >
< tr > < td > 2343< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2344< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2345< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2346< / td > < td > 0< / td > < td > < span class = zero-hits > if skip then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2347< / td > < td > 0< / td > < td > < span class = zero-hits > continue< / span > < / td > < / tr >
< tr > < td > 2348< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2349< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2350< / td > < td > 0< / td > < td > < span class = zero-hits > length += 1< / span > < / td > < / tr >
< tr > < td > 2351< / td > < td > 0< / td > < td > < span class = zero-hits > compatible_archetypes[length] = compatibleArchetype< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2352< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2353< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2354< / td > < td > 0< / td > < td > < span class = zero-hits > return q< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2355< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2356< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2357< / td > < td > 4< / td > < td > < span class = low-hits > local function world_each(world: ecs_world_t, id: i53): () -> ()< / span > < / td > < / tr >
< tr > < td > 2358< / td > < td > 0< / td > < td > < span class = zero-hits > local idr = world.component_index[id]< / span > < / td > < / tr >
< tr > < td > 2359< / td > < td > 0< / td > < td > < span class = zero-hits > if not idr then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2360< / td > < td > 0< / td > < td > < span class = zero-hits > return NOOP< / span > < / td > < / tr >
< tr > < td > 2361< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2362< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2363< / td > < td > 4< / td > < td > < span class = low-hits > local idr_cache = idr.cache< / span > < / td > < / tr >
< tr > < td > 2364< / td > < td > 4< / td > < td > < span class = low-hits > local archetypes = world.archetypes< / span > < / td > < / tr >
< tr > < td > 2365< / td > < td > 4< / td > < td > < span class = low-hits > local archetype_id = next(idr_cache, nil) :: number< / span > < / td > < / tr >
< tr > < td > 2366< / td > < td > 0< / td > < td > < span class = zero-hits > local archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 2367< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype then< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2368< / td > < td > 0< / td > < td > < span class = zero-hits > return NOOP< / span > < / td > < / tr >
< tr > < td > 2369< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2370< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2371< / td > < td > 0< / td > < td > < span class = zero-hits > local entities = archetype.entities< / span > < / td > < / tr >
< tr > < td > 2372< / td > < td > 4< / td > < td > < span class = low-hits > local row = #entities< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2373< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2374< / td > < td > 12< / td > < td > < span class = low-hits > return function(): any< / span > < / td > < / tr >
< tr > < td > 2375< / td > < td > 11< / td > < td > < span class = low-hits > local entity = entities[row]< / span > < / td > < / tr >
< tr > < td > 2376< / td > < td > 11< / td > < td > < span class = low-hits > while not entity do< / span > < / td > < / tr >
< tr > < td > 2377< / td > < td > 4< / td > < td > < span class = low-hits > archetype_id = next(idr_cache, archetype_id) :: number< / span > < / td > < / tr >
< tr > < td > 2378< / td > < td > 0< / td > < td > < span class = zero-hits > if not archetype_id then< / span > < / td > < / tr >
< tr > < td > 2379< / td > < td > 7< / td > < td > < span class = low-hits > return< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2380< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2381< / td > < td > 7< / td > < td > < span class = low-hits > archetype = archetypes[archetype_id]< / span > < / td > < / tr >
< tr > < td > 2382< / td > < td > 7< / td > < td > < span class = low-hits > entities = archetype.entities< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2383< / td > < td > 0< / td > < td > < span class = zero-hits > row = #entities< / span > < / td > < / tr >
< tr > < td > 2384< / td > < td > 8< / td > < td > < span class = low-hits > entity = entities[row]< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2385< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2386< / td > < td > 0< / td > < td > < span class = zero-hits > row -= 1< / span > < / td > < / tr >
< tr > < td > 2387< / td > < td > 0< / td > < td > < span class = zero-hits > return entity< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2388< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2389< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2390< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2391< / td > < td > 0< / td > < td > < span class = zero-hits > local function world_children(world: ecs_world_t, parent: i53)< / span > < / td > < / tr >
< tr > < td > 2392< / td > < td > 0< / td > < td > < span class = zero-hits > return world_each(world, ECS_PAIR(EcsChildOf, parent))< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2393< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2394< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2395< / td > < td > 0< / td > < td > < span class = zero-hits > export type Record = {< / span > < / td > < / tr >
< tr > < td > 2396< / td > < td > 0< / td > < td > < span class = zero-hits > archetype: Archetype,< / span > < / td > < / tr >
< tr > < td > 2397< / td > < td > 0< / td > < td > < span class = zero-hits > row: number,< / span > < / td > < / tr >
< tr > < td > 2398< / td > < td > 0< / td > < td > < span class = zero-hits > dense: i24,< / span > < / td > < / tr >
< tr > < td > 2399< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 2400< / td > < td > 0< / td > < td > < span class = zero-hits > export type ComponentRecord = {< / span > < / td > < / tr >
< tr > < td > 2401< / td > < td > 0< / td > < td > < span class = zero-hits > cache: { [Id]: number },< / span > < / td > < / tr >
< tr > < td > 2402< / td > < td > 0< / td > < td > < span class = zero-hits > counts: { [Id]: number },< / span > < / td > < / tr >
< tr > < td > 2403< / td > < td > 0< / td > < td > < span class = zero-hits > flags: number,< / span > < / td > < / tr >
< tr > < td > 2404< / td > < td > 0< / td > < td > < span class = zero-hits > size: number,< / span > < / td > < / tr >
< tr > < td > 2405< / td > < td > 0< / td > < td > < span class = zero-hits > hooks: {< / span > < / td > < / tr >
< tr > < td > 2406< / td > < td > 0< / td > < td > < span class = zero-hits > on_add: ((entity: Entity) -> ())?,< / span > < / td > < / tr >
< tr > < td > 2407< / td > < td > 0< / td > < td > < span class = zero-hits > on_set: ((entity: Entity, data: any) -> ())?,< / span > < / td > < / tr >
< tr > < td > 2408< / td > < td > 0< / td > < td > < span class = zero-hits > on_remove: ((entity: Entity) -> ())?,< / span > < / td > < / tr >
< tr > < td > 2409< / td > < td > 0< / td > < td > < span class = zero-hits > },< / span > < / td > < / tr >
< tr > < td > 2410< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 2411< / td > < td > 0< / td > < td > < span class = zero-hits > export type ComponentIndex = Map< Id , ComponentRecord > < / span > < / td > < / tr >
< tr > < td > 2412< / td > < td > 0< / td > < td > < span class = zero-hits > export type Archetypes = { [Id]: Archetype }< / span > < / td > < / tr >
< tr > < td > 2413< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2414< / td > < td > 0< / td > < td > < span class = zero-hits > export type EntityIndex = {< / span > < / td > < / tr >
< tr > < td > 2415< / td > < td > 0< / td > < td > < span class = zero-hits > dense_array: Map< number , Entity > ,< / span > < / td > < / tr >
< tr > < td > 2416< / td > < td > 0< / td > < td > < span class = zero-hits > sparse_array: Map< i24 , Record > ,< / span > < / td > < / tr >
< tr > < td > 2417< / td > < td > 0< / td > < td > < span class = zero-hits > alive_count: number,< / span > < / td > < / tr >
< tr > < td > 2418< / td > < td > 0< / td > < td > < span class = zero-hits > max_id: number,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2419< / td > < td > 1< / td > < td > < span class = low-hits > }< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2420< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2421< / td > < td > 0< / td > < td > < span class = zero-hits > local World = {}< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2422< / td > < td > 1< / td > < td > < span class = low-hits > World.__index = World< / span > < / td > < / tr >
< tr > < td > 2423< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2424< / td > < td > 1< / td > < td > < span class = low-hits > World.entity = world_entity< / span > < / td > < / tr >
< tr > < td > 2425< / td > < td > 1< / td > < td > < span class = low-hits > World.query = world_query< / span > < / td > < / tr >
< tr > < td > 2426< / td > < td > 1< / td > < td > < span class = low-hits > World.remove = world_remove< / span > < / td > < / tr >
< tr > < td > 2427< / td > < td > 1< / td > < td > < span class = low-hits > World.clear = world_clear< / span > < / td > < / tr >
< tr > < td > 2428< / td > < td > 1< / td > < td > < span class = low-hits > World.delete = world_delete< / span > < / td > < / tr >
< tr > < td > 2429< / td > < td > 1< / td > < td > < span class = low-hits > World.component = world_component< / span > < / td > < / tr >
< tr > < td > 2430< / td > < td > 1< / td > < td > < span class = low-hits > World.add = world_add< / span > < / td > < / tr >
< tr > < td > 2431< / td > < td > 1< / td > < td > < span class = low-hits > World.set = world_set< / span > < / td > < / tr >
< tr > < td > 2432< / td > < td > 1< / td > < td > < span class = low-hits > World.get = world_get< / span > < / td > < / tr >
< tr > < td > 2433< / td > < td > 1< / td > < td > < span class = low-hits > World.has = world_has< / span > < / td > < / tr >
< tr > < td > 2434< / td > < td > 1< / td > < td > < span class = low-hits > World.target = world_target< / span > < / td > < / tr >
< tr > < td > 2435< / td > < td > 1< / td > < td > < span class = low-hits > World.parent = world_parent< / span > < / td > < / tr >
< tr > < td > 2436< / td > < td > 1< / td > < td > < span class = low-hits > World.contains = world_contains< / span > < / td > < / tr >
< tr > < td > 2437< / td > < td > 1< / td > < td > < span class = low-hits > World.cleanup = world_cleanup< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2438< / td > < td > 0< / td > < td > < span class = zero-hits > World.each = world_each< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2439< / td > < td > 1< / td > < td > < span class = low-hits > World.children = world_children< / span > < / td > < / tr >
< tr > < td > 2440< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2441< / td > < td > 73< / td > < td > < span class = low-hits > local function world_new()< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2442< / td > < td > 73< / td > < td > < span class = low-hits > local entity_index = {< / span > < / td > < / tr >
< tr > < td > 2443< / td > < td > 73< / td > < td > < span class = low-hits > dense_array = {},< / span > < / td > < / tr >
< tr > < td > 2444< / td > < td > 73< / td > < td > < span class = low-hits > sparse_array = {},< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2445< / td > < td > 0< / td > < td > < span class = zero-hits > alive_count = 0,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2446< / td > < td > 73< / td > < td > < span class = low-hits > max_id = 0,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2447< / td > < td > 73< / td > < td > < span class = low-hits > } :: ecs_entity_index_t< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2448< / td > < td > 73< / td > < td > < span class = low-hits > local self = setmetatable({< / span > < / td > < / tr >
< tr > < td > 2449< / td > < td > 73< / td > < td > < span class = low-hits > archetype_index = {} :: { [string]: Archetype },< / span > < / td > < / tr >
< tr > < td > 2450< / td > < td > 73< / td > < td > < span class = low-hits > archetypes = {} :: Archetypes,< / span > < / td > < / tr >
< tr > < td > 2451< / td > < td > 73< / td > < td > < span class = low-hits > component_index = {} :: ComponentIndex,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2452< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index = entity_index,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2453< / td > < td > 73< / td > < td > < span class = low-hits > ROOT_ARCHETYPE = (nil :: any) :: Archetype,< / span > < / td > < / tr >
< tr > < td > 2454< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2455< / td > < td > 0< / td > < td > < span class = zero-hits > max_archetype_id = 0,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2456< / td > < td > 73< / td > < td > < span class = low-hits > max_component_id = 0,< / span > < / td > < / tr >
< tr > < td > 2457< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2458< / td > < td > 0< / td > < td > < span class = zero-hits > observable = {} :: Observable,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2459< / td > < td > 73< / td > < td > < span class = low-hits > }, World) :: any< / span > < / td > < / tr >
< tr > < td > 2460< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2461< / td > < td > 73< / td > < td > < span class = low-hits > self.ROOT_ARCHETYPE = archetype_create(self, {}, "")< / span > < / td > < / tr >
< tr > < td > 2462< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2463< / td > < td > 18688< / td > < td > < span class = low-hits > for i = 1, HI_COMPONENT_ID do< / span > < / td > < / tr >
< tr > < td > 2464< / td > < td > 0< / td > < td > < span class = zero-hits > local e = entity_index_new_id(entity_index)< / span > < / td > < / tr >
< tr > < td > 2465< / td > < td > 0< / td > < td > < span class = zero-hits > world_add(self, e, EcsComponent)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2466< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2467< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2468< / td > < td > 1022< / td > < td > < span class = low-hits > for i = HI_COMPONENT_ID + 1, EcsRest do< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2469< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Initialize built-in components< / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2470< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index_new_id(entity_index)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2471< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2472< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2473< / td > < td > 73< / td > < td > < span class = low-hits > world_add(self, EcsName, EcsComponent)< / span > < / td > < / tr >
< tr > < td > 2474< / td > < td > 73< / td > < td > < span class = low-hits > world_add(self, EcsOnSet, EcsComponent)< / span > < / td > < / tr >
< tr > < td > 2475< / td > < td > 73< / td > < td > < span class = low-hits > world_add(self, EcsOnAdd, EcsComponent)< / span > < / td > < / tr >
< tr > < td > 2476< / td > < td > 73< / td > < td > < span class = low-hits > world_add(self, EcsOnRemove, EcsComponent)< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2477< / td > < td > 0< / td > < td > < span class = zero-hits > world_add(self, EcsWildcard, EcsComponent)< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2478< / td > < td > 73< / td > < td > < span class = low-hits > world_add(self, EcsRest, EcsComponent)< / span > < / td > < / tr >
< tr > < td > 2479< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2480< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsOnAdd, EcsName, "jecs.OnAdd")< / span > < / td > < / tr >
< tr > < td > 2481< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsOnRemove, EcsName, "jecs.OnRemove")< / span > < / td > < / tr >
< tr > < td > 2482< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsOnSet, EcsName, "jecs.OnSet")< / span > < / td > < / tr >
< tr > < td > 2483< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsWildcard, EcsName, "jecs.Wildcard")< / span > < / td > < / tr >
< tr > < td > 2484< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsChildOf, EcsName, "jecs.ChildOf")< / span > < / td > < / tr >
< tr > < td > 2485< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsComponent, EcsName, "jecs.Component")< / span > < / td > < / tr >
< tr > < td > 2486< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsOnDelete, EcsName, "jecs.OnDelete")< / span > < / td > < / tr >
< tr > < td > 2487< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsOnDeleteTarget, EcsName, "jecs.OnDeleteTarget")< / span > < / td > < / tr >
< tr > < td > 2488< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsDelete, EcsName, "jecs.Delete")< / span > < / td > < / tr >
< tr > < td > 2489< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsRemove, EcsName, "jecs.Remove")< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2490< / td > < td > 0< / td > < td > < span class = zero-hits > world_set(self, EcsName, EcsName, "jecs.Name")< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2491< / td > < td > 73< / td > < td > < span class = low-hits > world_set(self, EcsRest, EcsRest, "jecs.Rest")< / span > < / td > < / tr >
< tr > < td > 2492< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2493< / td > < td > 73< / td > < td > < span class = low-hits > world_add(self, EcsChildOf, ECS_PAIR(EcsOnDeleteTarget, EcsDelete))< / span > < / td > < / tr >
< tr > < td > 2494< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2495< / td > < td > 0< / td > < td > < span class = zero-hits > return self< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2496< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > end< / td > >< / tr >
< tr > < td > 2497< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2498< / td > < td > 0< / td > < td > < span class = zero-hits > World.new = world_new< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2499< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2500< / td > < td > 0< / td > < td > < span class = zero-hits > export type Entity< T = unknown > = { __T: T }< / span > < / td > < / tr >
< tr > < td > 2501< / td > < td > 0< / td > < td > < span class = zero-hits > export type Id< T = unknown > = { __T: T }< / span > < / td > < / tr >
< tr > < td > 2502< / td > < td > 0< / td > < td > < span class = zero-hits > export type Pair< P , O > = Id< P > < / span > < / td > < / tr >
< tr > < td > 2503< / td > < td > 0< / td > < td > < span class = zero-hits > type ecs_id_t< T = unknown > = Id< T > | Pair< T , " Tag " > | Pair< "Tag", T>< / span > < / td > < / tr >
< tr > < td > 2504< / td > < td > 0< / td > < td > < span class = zero-hits > export type Item< T... > = (self: Query< T... > ) -> (Entity, T...)< / span > < / td > < / tr >
< tr > < td > 2505< / td > < td > 0< / td > < td > < span class = zero-hits > export type Iter< T... > = (query: Query< T... > ) -> () -> (Entity, T...)< / span > < / td > < / tr >
< tr > < td > 2506< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2507< / td > < td > 0< / td > < td > < span class = zero-hits > export type Query< T... > = typeof(setmetatable({}, {< / span > < / td > < / tr >
< tr > < td > 2508< / td > < td > 0< / td > < td > < span class = zero-hits > __iter = (nil :: any) :: Iter< T... > ,< / span > < / td > < / tr >
< tr > < td > 2509< / td > < td > 0< / td > < td > < span class = zero-hits > })) & {< / span > < / td > < / tr >
< tr > < td > 2510< / td > < td > 0< / td > < td > < span class = zero-hits > iter: Iter< T... > ,< / span > < / td > < / tr >
< tr > < td > 2511< / td > < td > 0< / td > < td > < span class = zero-hits > with: (self: Query< T... > , ...Id) -> Query< T... > ,< / span > < / td > < / tr >
< tr > < td > 2512< / td > < td > 0< / td > < td > < span class = zero-hits > without: (self: Query< T... > , ...Id) -> Query< T... > ,< / span > < / td > < / tr >
< tr > < td > 2513< / td > < td > 0< / td > < td > < span class = zero-hits > archetypes: (self: Query< T... > ) -> { Archetype },< / span > < / td > < / tr >
< tr > < td > 2514< / td > < td > 0< / td > < td > < span class = zero-hits > cached: (self: Query< T... > ) -> Query< T... > ,< / span > < / td > < / tr >
< tr > < td > 2515< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 2516< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2517< / td > < td > 0< / td > < td > < span class = zero-hits > export type Observer = {< / span > < / td > < / tr >
< tr > < td > 2518< / td > < td > 0< / td > < td > < span class = zero-hits > callback: (archetype: Archetype) -> (),< / span > < / td > < / tr >
< tr > < td > 2519< / td > < td > 0< / td > < td > < span class = zero-hits > query: QueryInner,< / span > < / td > < / tr >
< tr > < td > 2520< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 2521< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2522< / td > < td > 0< / td > < td > < span class = zero-hits > export type Observable = {< / span > < / td > < / tr >
< tr > < td > 2523< / td > < td > 0< / td > < td > < span class = zero-hits > [Id]: {< / span > < / td > < / tr >
< tr > < td > 2524< / td > < td > 0< / td > < td > < span class = zero-hits > [Id]: {< / span > < / td > < / tr >
< tr > < td > 2525< / td > < td > 0< / td > < td > < span class = zero-hits > { Observer }< / span > < / td > < / tr >
< tr > < td > 2526< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 2527< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 2528< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 2529< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2530< / td > < td > 0< / td > < td > < span class = zero-hits > export type World = {< / span > < / td > < / tr >
< tr > < td > 2531< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_index: { [string]: Archetype },< / span > < / td > < / tr >
< tr > < td > 2532< / td > < td > 0< / td > < td > < span class = zero-hits > archetypes: Archetypes,< / span > < / td > < / tr >
< tr > < td > 2533< / td > < td > 0< / td > < td > < span class = zero-hits > component_index: ComponentIndex,< / span > < / td > < / tr >
< tr > < td > 2534< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index: EntityIndex,< / span > < / td > < / tr >
< tr > < td > 2535< / td > < td > 0< / td > < td > < span class = zero-hits > ROOT_ARCHETYPE: Archetype,< / span > < / td > < / tr >
< tr > < td > 2536< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2537< / td > < td > 0< / td > < td > < span class = zero-hits > max_component_id: number,< / span > < / td > < / tr >
< tr > < td > 2538< / td > < td > 0< / td > < td > < span class = zero-hits > max_archetype_id: number,< / span > < / td > < / tr >
< tr > < td > 2539< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2540< / td > < td > 0< / td > < td > < span class = zero-hits > observable: any,< / span > < / td > < / tr >
< tr > < td > 2541< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2542< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Creates a new entity< / td > >< / tr >
< tr > < td > 2543< / td > < td > 0< / td > < td > < span class = zero-hits > entity: (self: World, id: Entity?) -> Entity,< / span > < / td > < / tr >
< tr > < td > 2544< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Creates a new entity located in the first 256 ids.< / td > >< / tr >
< tr > < td > 2545< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- These should be used for static components for fast access.< / td > >< / tr >
< tr > < td > 2546< / td > < td > 0< / td > < td > < span class = zero-hits > component: < T > (self: World) -> Entity< T > ,< / span > < / td > < / tr >
< tr > < td > 2547< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Gets the target of an relationship. For example, when a user calls< / td > >< / tr >
< tr > < td > 2548< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- `world:target(id, ChildOf(parent), 0)`, you will obtain the parent entity.< / td > >< / tr >
< tr > < td > 2549< / td > < td > 0< / td > < td > < span class = zero-hits > target: (self: World, id: Entity, relation: Id, index: number?) -> Entity?,< / span > < / td > < / tr >
< tr > < td > 2550< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Deletes an entity and all it's related components and relationships.< / td > >< / tr >
< tr > < td > 2551< / td > < td > 0< / td > < td > < span class = zero-hits > delete: (self: World, id: Entity) -> (),< / span > < / td > < / tr >
< tr > < td > 2552< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2553< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Adds a component to the entity with no value< / td > >< / tr >
< tr > < td > 2554< / td > < td > 0< / td > < td > < span class = zero-hits > add: < T > (self: World, id: Entity, component: Id) -> (),< / span > < / td > < / tr >
< tr > < td > 2555< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Assigns a value to a component on the given entity< / td > >< / tr >
< tr > < td > 2556< / td > < td > 0< / td > < td > < span class = zero-hits > set: < T > (self: World, id: Entity, component: Id< T > , data: T) -> (),< / span > < / td > < / tr >
< tr > < td > 2557< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2558< / td > < td > 0< / td > < td > < span class = zero-hits > cleanup: (self: World) -> (),< / span > < / td > < / tr >
< tr > < td > 2559< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Clears an entity from the world< / td > >< / tr >
< tr > < td > 2560< / td > < td > 0< / td > < td > < span class = zero-hits > clear: (self: World, id: Entity) -> (),< / span > < / td > < / tr >
< tr > < td > 2561< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Removes a component from the given entity< / td > >< / tr >
< tr > < td > 2562< / td > < td > 0< / td > < td > < span class = zero-hits > remove: (self: World, id: Entity, component: Id) -> (),< / span > < / td > < / tr >
< tr > < td > 2563< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Retrieves the value of up to 4 components. These values may be nil.< / td > >< / tr >
< tr > < td > 2564< / td > < td > 0< / td > < td > < span class = zero-hits > get: (< A > (self: World, id: Entity, Id< A > ) -> A?)< / span > < / td > < / tr >
< tr > < td > 2565< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B > (self: World, id: Entity, Id< A > , Id< B > ) -> (A?, B?))< / span > < / td > < / tr >
< tr > < td > 2566< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B , C > (self: World, id: Entity, Id< A > , Id< B > , Id< C > ) -> (A?, B?, C?))< / span > < / td > < / tr >
< tr > < td > 2567< / td > < td > 0< / td > < td > < span class = zero-hits > & < A , B , C , D > (self: World, id: Entity, Id< A > , Id< B > , Id< C > , Id< D > ) -> (A?, B?, C?, D?),< / span > < / td > < / tr >
< tr > < td > 2568< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2569< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Returns whether the entity has the ID.< / td > >< / tr >
< tr > < td > 2570< / td > < td > 0< / td > < td > < span class = zero-hits > has: (self: World, entity: Entity, ...Id) -> boolean,< / span > < / td > < / tr >
< tr > < td > 2571< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2572< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Get parent (target of ChildOf relationship) for entity. If there is no ChildOf relationship pair, it will return nil.< / td > >< / tr >
< tr > < td > 2573< / td > < td > 0< / td > < td > < span class = zero-hits > parent:(self: World, entity: Entity) -> Entity,< / span > < / td > < / tr >
< tr > < td > 2574< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2575< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Checks if the world contains the given entity< / td > >< / tr >
< tr > < td > 2576< / td > < td > 0< / td > < td > < span class = zero-hits > contains:(self: World, entity: Entity) -> boolean,< / span > < / td > < / tr >
< tr > < td > 2577< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2578< / td > < td > 0< / td > < td > < span class = zero-hits > each: (self: World, id: Id) -> () -> Entity,< / span > < / td > < / tr >
< tr > < td > 2579< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2580< / td > < td > 0< / td > < td > < span class = zero-hits > children: (self: World, id: Id) -> () -> Entity,< / span > < / td > < / tr >
< tr > < td > 2581< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2582< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > --- Searches the world for entities that match a given query< / td > >< / tr >
< tr > < td > 2583< / td > < td > 0< / td > < td > < span class = zero-hits > query: (< A > (World, Id< A > ) -> Query< A > )< / span > < / td > < / tr >
< tr > < td > 2584< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B > (World, Id< A > , Id< B > ) -> Query< A , B > )< / span > < / td > < / tr >
< tr > < td > 2585< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B , C > (World, Id< A > , Id< B > , Id< C > ) -> Query< A , B , C > )< / span > < / td > < / tr >
< tr > < td > 2586< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B , C , D > (World, Id< A > , Id< B > , Id< C > , Id< D > ) -> Query< A , B , C , D > )< / span > < / td > < / tr >
< tr > < td > 2587< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B , C , D , E > (World, Id< A > , Id< B > , Id< C > , Id< D > , Id< E > ) -> Query< A , B , C , D , E > )< / span > < / td > < / tr >
< tr > < td > 2588< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B , C , D , E , F > (World, Id< A > , Id< B > , Id< C > , Id< D > , Id< E > , Id< F > ) -> Query< A , B , C , D , E , F > )< / span > < / td > < / tr >
< tr > < td > 2589< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B , C , D , E , F , G > (World, Id< A > , Id< B > , Id< C > , Id< D > , Id< E > , Id< F > , Id< G > ) -> Query< A , B , C , D , E , F , G > )< / span > < / td > < / tr >
< tr > < td > 2590< / td > < td > 0< / td > < td > < span class = zero-hits > & (< A , B , C , D , E , F , G , H > (World, Id< A > , Id< B > , Id< C > , Id< D > , Id< E > , Id< F > , Id< G > , Id< H > , ...Id< any > ) -> Query< A , B , C , D , E , F , G , H > )< / span > < / td > < / tr >
< tr > < td > 2591< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< tr > < td > 2592< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- type function ecs_id_t(entity)< / td > >< / tr >
< tr > < td > 2593< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- local ty = entity:components()[2]< / td > >< / tr >
< tr > < td > 2594< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- local __T = ty:readproperty(types.singleton("__T"))< / td > >< / tr >
< tr > < td > 2595< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- if not __T then< / td > >< / tr >
< tr > < td > 2596< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- return ty:readproperty(types.singleton("__jecs_pair_value"))< / td > >< / tr >
< tr > < td > 2597< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- end< / td > >< / tr >
< tr > < td > 2598< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- return __T< / td > >< / tr >
< tr > < td > 2599< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- end< / td > >< / tr >
< tr > < td > 2600< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2601< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- type function ecs_pair_t(first, second)< / td > >< / tr >
< tr > < td > 2602< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- if ecs_id_t(first):is("nil") then< / td > >< / tr >
< tr > < td > 2603< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- return second< / td > >< / tr >
< tr > < td > 2604< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- else< / td > >< / tr >
< tr > < td > 2605< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- return first< / td > >< / tr >
< tr > < td > 2606< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- end< / td > >< / tr >
< tr > < td > 2607< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- end< / td > >< / tr >
< tr > < td > 2608< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2609< / td > < td > 1< / td > < td > < span class = low-hits > return {< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2610< / td > < td > 0< / td > < td > < span class = zero-hits > World = World :: { new: () -> World },< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2611< / td > < td > 1< / td > < td > < span class = low-hits > world = World.new :: () -> World,< / span > < / td > < / tr >
< tr > < td > 2612< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2613< / td > < td > 1< / td > < td > < span class = low-hits > OnAdd = EcsOnAdd :: Entity< (entity: Entity) -> ()>,< / span > < / td > < / tr >
< tr > < td > 2614< / td > < td > 1< / td > < td > < span class = low-hits > OnRemove = EcsOnRemove :: Entity< (entity: Entity) -> ()>,< / span > < / td > < / tr >
< tr > < td > 2615< / td > < td > 1< / td > < td > < span class = low-hits > OnSet = EcsOnSet :: Entity< (entity: Entity, data: any) -> ()>,< / span > < / td > < / tr >
< tr > < td > 2616< / td > < td > 1< / td > < td > < span class = low-hits > ChildOf = EcsChildOf :: Entity,< / span > < / td > < / tr >
< tr > < td > 2617< / td > < td > 1< / td > < td > < span class = low-hits > Component = EcsComponent :: Entity,< / span > < / td > < / tr >
< tr > < td > 2618< / td > < td > 1< / td > < td > < span class = low-hits > Wildcard = EcsWildcard :: Entity,< / span > < / td > < / tr >
< tr > < td > 2619< / td > < td > 1< / td > < td > < span class = low-hits > w = EcsWildcard :: Entity,< / span > < / td > < / tr >
< tr > < td > 2620< / td > < td > 1< / td > < td > < span class = low-hits > OnDelete = EcsOnDelete :: Entity,< / span > < / td > < / tr >
< tr > < td > 2621< / td > < td > 1< / td > < td > < span class = low-hits > OnDeleteTarget = EcsOnDeleteTarget :: Entity,< / span > < / td > < / tr >
< tr > < td > 2622< / td > < td > 1< / td > < td > < span class = low-hits > Delete = EcsDelete :: Entity,< / span > < / td > < / tr >
< tr > < td > 2623< / td > < td > 1< / td > < td > < span class = low-hits > Remove = EcsRemove :: Entity,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2624< / td > < td > 0< / td > < td > < span class = zero-hits > Name = EcsName :: Entity< string > ,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2625< / td > < td > 1< / td > < td > < span class = low-hits > Rest = EcsRest :: Entity,< / span > < / td > < / tr >
< tr > < td > 2626< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2627< / td > < td > 0< / td > < td > < span class = zero-hits > pair = (ECS_PAIR :: any) :: < P , O > (first: Id< P > , second: Id< O > ) -> Pair< P , O > ,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2628< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2629< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > -- Inwards facing API for testing< / td > >< / tr >
< tr > < td > 2630< / td > < td > 1< / td > < td > < span class = low-hits > ECS_ID = ECS_ENTITY_T_LO,< / span > < / td > < / tr >
< tr > < td > 2631< / td > < td > 1< / td > < td > < span class = low-hits > ECS_GENERATION_INC = ECS_GENERATION_INC,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2632< / td > < td > 0< / td > < td > < span class = zero-hits > ECS_GENERATION = ECS_GENERATION,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2633< / td > < td > 1< / td > < td > < span class = low-hits > ECS_ID_IS_WILDCARD = ECS_ID_IS_WILDCARD,< / span > < / td > < / tr >
< tr > < td > 2634< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2635< / td > < td > 1< / td > < td > < span class = low-hits > ECS_ID_DELETE = ECS_ID_DELETE,< / span > < / td > < / tr >
< tr > < td > 2636< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2637< / td > < td > 1< / td > < td > < span class = low-hits > IS_PAIR = ECS_IS_PAIR,< / span > < / td > < / tr >
< tr > < td > 2638< / td > < td > 1< / td > < td > < span class = low-hits > pair_first = ecs_pair_first,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2639< / td > < td > 0< / td > < td > < span class = zero-hits > pair_second = ecs_pair_second,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2640< / td > < td > 1< / td > < td > < span class = low-hits > entity_index_get_alive = entity_index_get_alive,< / span > < / td > < / tr >
< tr > < td > 2641< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2642< / td > < td > 1< / td > < td > < span class = low-hits > archetype_append_to_records = archetype_append_to_records,< / span > < / td > < / tr >
< tr > < td > 2643< / td > < td > 1< / td > < td > < span class = low-hits > id_record_ensure = id_record_ensure,< / span > < / td > < / tr >
< tr > < td > 2644< / td > < td > 1< / td > < td > < span class = low-hits > archetype_create = archetype_create,< / span > < / td > < / tr >
< tr > < td > 2645< / td > < td > 1< / td > < td > < span class = low-hits > archetype_ensure = archetype_ensure,< / span > < / td > < / tr >
< tr > < td > 2646< / td > < td > 1< / td > < td > < span class = low-hits > find_insert = find_insert,< / span > < / td > < / tr >
< tr > < td > 2647< / td > < td > 1< / td > < td > < span class = low-hits > find_archetype_with = find_archetype_with,< / span > < / td > < / tr >
< tr > < td > 2648< / td > < td > 1< / td > < td > < span class = low-hits > find_archetype_without = find_archetype_without,< / span > < / td > < / tr >
< tr > < td > 2649< / td > < td > 1< / td > < td > < span class = low-hits > archetype_init_edge = archetype_init_edge,< / span > < / td > < / tr >
< tr > < td > 2650< / td > < td > 1< / td > < td > < span class = low-hits > archetype_ensure_edge = archetype_ensure_edge,< / span > < / td > < / tr >
< tr > < td > 2651< / td > < td > 1< / td > < td > < span class = low-hits > init_edge_for_add = init_edge_for_add,< / span > < / td > < / tr >
< tr > < td > 2652< / td > < td > 1< / td > < td > < span class = low-hits > init_edge_for_remove = init_edge_for_remove,< / span > < / td > < / tr >
< tr > < td > 2653< / td > < td > 1< / td > < td > < span class = low-hits > create_edge_for_add = create_edge_for_add,< / span > < / td > < / tr >
< tr > < td > 2654< / td > < td > 1< / td > < td > < span class = low-hits > create_edge_for_remove = create_edge_for_remove,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2655< / td > < td > 0< / td > < td > < span class = zero-hits > archetype_traverse_add = archetype_traverse_add,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2656< / td > < td > 1< / td > < td > < span class = low-hits > archetype_traverse_remove = archetype_traverse_remove,< / span > < / td > < / tr >
< tr > < td > 2657< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2658< / td > < td > 1< / td > < td > < span class = low-hits > entity_move = entity_move,< / span > < / td > < / tr >
< tr > < td > 2659< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2660< / td > < td > 1< / td > < td > < span class = low-hits > entity_index_try_get = entity_index_try_get,< / span > < / td > < / tr >
< tr > < td > 2661< / td > < td > 1< / td > < td > < span class = low-hits > entity_index_try_get_any = entity_index_try_get_any,< / span > < / td > < / tr >
< tr > < td > 2662< / td > < td > 1< / td > < td > < span class = low-hits > entity_index_try_get_fast = entity_index_try_get_fast,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2663< / td > < td > 0< / td > < td > < span class = zero-hits > entity_index_is_alive = entity_index_is_alive,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2664< / td > < td > 1< / td > < td > < span class = low-hits > entity_index_new_id = entity_index_new_id,< / span > < / td > < / tr >
< tr > < td > 2665< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
< tr > < td > 2666< / td > < td > 1< / td > < td > < span class = low-hits > query_iter = query_iter,< / span > < / td > < / tr >
< tr > < td > 2667< / td > < td > 1< / td > < td > < span class = low-hits > query_iter_init = query_iter_init,< / span > < / td > < / tr >
< tr > < td > 2668< / td > < td > 1< / td > < td > < span class = low-hits > query_with = query_with,< / span > < / td > < / tr >
< tr > < td > 2669< / td > < td > 1< / td > < td > < span class = low-hits > query_without = query_without,< / span > < / td > < / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2670< / td > < td > 0< / td > < td > < span class = zero-hits > query_archetypes = query_archetypes,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2671< / td > < td > 1< / td > < td > < span class = low-hits > query_match = query_match,< / span > < / td > < / tr >
< tr > < td > 2672< / td > < td > < span class = 'text-muted' > N/A< / span > < / td > < td > < / td > >< / tr >
2025-03-28 01:29:50 +00:00
< tr > < td > 2673< / td > < td > 0< / td > < td > < span class = zero-hits > find_observers = find_observers,< / span > < / td > < / tr >
2025-03-28 00:53:19 +00:00
< tr > < td > 2674< / td > < td > 0< / td > < td > < span class = zero-hits > }< / span > < / td > < / tr >
< / tbody > < / table > < / body > < / html >