Files
Towards/modules/server/src/ZoneProxy.hpp
T

34 lines
945 B
C++
Raw Normal View History

2026-07-18 14:31:15 +02:00
#pragma once
#include "systems/Interest.hpp"
#include <glm/glm.hpp>
#include <string>
namespace tw::net {
// Pure game-state snapshot used to transfer an entity between zones.
// Session/client mapping is the owner's (e.g. ZoneServer's) responsibility.
struct EntityInfo {
std::string name;
glm::vec3 position;
};
// Abstract handle to a zone from the outside.
// Implementations may be local (same process) or remote (over the network).
class ZoneProxy {
public:
virtual ~ZoneProxy() = default;
// The geographic area this zone owns in the XZ plane.
virtual im::AreaBounds area() const = 0;
// Accept an entity transferred from another zone.
// The callee spawns the entity in its own world.
// Session routing (calling add_client on the receiving zone) is the
// owner's responsibility and must happen separately.
virtual void transfer_entity(EntityInfo&& info) = 0;
};
} // namespace tw::net