Files
Towards/modules/server/tests/ZoneManagerTests.cpp
Martin Slachta a04f0dc262 initial
2026-07-18 14:31:15 +02:00

57 lines
1.3 KiB
C++

#include "ZoneManager.hpp"
#include <cassert>
using namespace tw::net;
int main() {
ZoneManager zoneA(im::AreaBounds(
glm::vec2(0.0f, 0.0f),
glm::vec2(1000.0f, 1000.0f)
));
ZoneManager zoneB(im::AreaBounds(
glm::vec2(1000.0f, 0.0f),
glm::vec2(2000.0f, 1000.0f)
));
zoneA.register_neighbor_zone(&zoneB);
zoneB.register_neighbor_zone(&zoneA);
auto entityA = zoneA.spawn_entity({
.name = "EntityA",
.position = glm::vec3(0.0f, 0.0f, 0.0f),
});
zoneA.add_client(1, entityA);
auto entityB = zoneB.spawn_entity({
.name = "EntityB",
.position = glm::vec3(1030.0f, 500.0f, 0.0f),
});
zoneB.add_client(1, entityB);
auto transformB = zoneB.registry().get<tw::Transform>(entityB);
auto interest = zoneA.get_interest(1);
assert(interest->interest().empty());
tw::Transform* transformA = zoneA.registry().try_get<tw::Transform>(entityA);
transformA->set_position(glm::vec3(970.0f, 0.0f, 0.0f));
zoneA.tick(0, 0.1f);
zoneB.tick(0, 0.1f);
interest = zoneA.get_interest(1);
transformA = zoneA.registry().try_get<tw::Transform>(entityA);
transformA->set_position(glm::vec3(1020.0f, 0.0f, 0.0f));
zoneA.tick(1, 0.1f);
zoneB.tick(1, 0.1f);
interest = zoneA.get_interest(1);
return 0;
}