/
d.vision
/
division_engine_cpp
Обзор
Документация
Войти
/
d.vision
/
division_engine_cpp
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
third_party/flecs-3.2.11/test/cpp_api/src/Iterable.cpp
120 строк
3 KB
Den163
Added flecs and glm to the repo
31 май 2024, 23:08
31 май 2024, 23:08
5d252b3
Код
Авторство
О чём код?
#include <cpp_api.h> void Iterable_page_each(void) { flecs::world ecs; auto e1 = ecs.entity(); e1.set<Self>({e1}); auto e2 = ecs.entity(); e2.set<Self>({e2}); auto e3 = ecs.entity(); e3.set<Self>({e3}); auto e4 = ecs.entity(); e4.set<Self>({e4}); auto e5 = ecs.entity(); e5.set<Self>({e5}); auto q = ecs.query<Self>(); int32_t count = 0; q.page(1, 3).each([&](flecs::entity e, Self& self) { count ++; test_assert(e != e1); test_assert(e != e5); test_assert(e == self.value); }); test_int(count, 3); } void Iterable_page_iter(void) { flecs::world ecs; auto e1 = ecs.entity(); e1.set<Self>({e1}); auto e2 = ecs.entity(); e2.set<Self>({e2}); auto e3 = ecs.entity(); e3.set<Self>({e3}); auto e4 = ecs.entity(); e4.set<Self>({e4}); auto e5 = ecs.entity(); e5.set<Self>({e5}); auto q = ecs.query<Self>(); int32_t count = 0; q.page(1, 3).iter([&](flecs::iter it, Self* self) { test_int(it.count(), 3); test_assert(it.entity(0) == e2); test_assert(it.entity(1) == e3); test_assert(it.entity(2) == e4); test_assert(it.entity(0) == self[0].value); test_assert(it.entity(1) == self[1].value); test_assert(it.entity(2) == self[2].value); count += it.count(); }); test_int(count, 3); } void Iterable_worker_each(void) { flecs::world ecs; auto e1 = ecs.entity(); e1.set<Self>({e1}); auto e2 = ecs.entity(); e2.set<Self>({e2}); auto e3 = ecs.entity(); e3.set<Self>({e3}); auto e4 = ecs.entity(); e4.set<Self>({e4}); auto e5 = ecs.entity(); e5.set<Self>({e5}); auto q = ecs.query<Self>(); int32_t count = 0; q.worker(0, 2).each([&](flecs::entity e, Self& self) { count ++; test_assert(e != e4); test_assert(e != e5); test_assert(e == self.value); }); test_int(count, 3); count = 0; q.worker(1, 2).each([&](flecs::entity e, Self& self) { count ++; test_assert(e != e1); test_assert(e != e2); test_assert(e != e3); test_assert(e == self.value); }); test_int(count, 2); } void Iterable_worker_iter(void) { flecs::world ecs; auto e1 = ecs.entity(); e1.set<Self>({e1}); auto e2 = ecs.entity(); e2.set<Self>({e2}); auto e3 = ecs.entity(); e3.set<Self>({e3}); auto e4 = ecs.entity(); e4.set<Self>({e4}); auto e5 = ecs.entity(); e5.set<Self>({e5}); auto q = ecs.query<Self>(); int32_t count = 0; q.worker(0, 2).iter([&](flecs::iter it, Self* self) { test_int(it.count(), 3); test_assert(it.entity(0) == e1); test_assert(it.entity(1) == e2); test_assert(it.entity(2) == e3); test_assert(it.entity(0) == self[0].value); test_assert(it.entity(1) == self[1].value); test_assert(it.entity(2) == self[2].value); count += it.count(); }); test_int(count, 3); count = 0; q.worker(1, 2).iter([&](flecs::iter it, Self* self) { test_int(it.count(), 2); test_assert(it.entity(0) == e4); test_assert(it.entity(1) == e5); test_assert(it.entity(0) == self[0].value); test_assert(it.entity(1) == self[1].value); count += it.count(); }); test_int(count, 2); }