| 753 | } |
| 754 | |
| 755 | sugoi_storage_t* sugoi_storage_t::clone() |
| 756 | { |
| 757 | sugoi_storage_t* dst = SkrNew<sugoi_storage_t>(); |
| 758 | dst->entities = entities; |
| 759 | dst->userdata = userdata; |
| 760 | dst->timestamp = timestamp; |
| 761 | for (auto group : groups) |
| 762 | { |
| 763 | auto dstGroup = dst->clone_group(group.second); |
| 764 | for (auto chunk : group.second->chunks) |
| 765 | { |
| 766 | auto count = chunk->count; |
| 767 | auto view = sugoi_chunk_view_t{ chunk, 0, count }; |
| 768 | while (count != 0) |
| 769 | { |
| 770 | sugoi_chunk_view_t v = dst->allocate_view(dstGroup, count); |
| 771 | sugoi::clone_view(v, view.chunk, view.start + (view.count - count)); |
| 772 | std::memcpy((sugoi_entity_t*)v.chunk->get_entities() + v.start, view.chunk->get_entities() + view.start + (view.count - count), v.count * sizeof(sugoi_entity_t)); |
| 773 | count -= v.count; |
| 774 | } |
| 775 | } |
| 776 | } |
| 777 | for (auto query : queries) |
| 778 | { |
| 779 | dst->make_query(query->filter, query->parameters); |
| 780 | } |
| 781 | return dst; |
| 782 | } |
| 783 | |
| 784 | void sugoi_storage_t::make_alias(skr::StringView name, skr::StringView aliasName) |
| 785 | { |
nothing calls this directly
no test coverage detected