| 893 | } |
| 894 | |
| 895 | void sugoiS_query(sugoi_storage_t* storage, const sugoi_filter_t* filter, const sugoi_meta_filter_t* meta, sugoi_view_callback_t callback, void* u) |
| 896 | { |
| 897 | SKR_ASSERT(sugoi::ordered(*filter)); |
| 898 | SKR_ASSERT(sugoi::ordered(*meta)); |
| 899 | |
| 900 | if (storage->scheduler) |
| 901 | { |
| 902 | SKR_ASSERT(storage->scheduler->is_main_thread(storage)); |
| 903 | auto filterChunk = [&](sugoi_group_t* group) { |
| 904 | for (EIndex i = 0; i < filter->all.length; ++i) |
| 905 | { |
| 906 | int idx = group->index(filter->all.data[i]); |
| 907 | if (idx != sugoi::kInvalidTypeIndex) |
| 908 | storage->scheduler->sync_entry(group->archetype, idx, false); |
| 909 | } |
| 910 | if (callback) |
| 911 | storage->query(group, *filter, *meta, nullptr, nullptr, callback, u); |
| 912 | }; |
| 913 | storage->query_groups(*filter, *meta, SUGOI_LAMBDA(filterChunk)); |
| 914 | } |
| 915 | else |
| 916 | { |
| 917 | if (callback) |
| 918 | storage->query(*filter, *meta, callback, u); |
| 919 | } |
| 920 | } |
| 921 | |
| 922 | void sugoiS_merge(sugoi_storage_t* storage, sugoi_storage_t* source) |
| 923 | { |
no test coverage detected