3
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
namespace LV::Server {
|
namespace LV::Server {
|
||||||
|
|
||||||
|
// Идентификаторы на стороне клиента
|
||||||
using VoxelId_c = uint16_t;
|
using VoxelId_c = uint16_t;
|
||||||
using NodeId_c = uint16_t;
|
using NodeId_c = uint16_t;
|
||||||
using WorldId_c = uint8_t;
|
using WorldId_c = uint8_t;
|
||||||
@@ -18,22 +19,34 @@ using ModelId_c = uint16_t;
|
|||||||
|
|
||||||
using ResourceId_t = uint32_t;
|
using ResourceId_t = uint32_t;
|
||||||
|
|
||||||
|
// Двоичные данные
|
||||||
|
using BinTextureId_t = ResourceId_t;
|
||||||
|
using BinModelId_t = ResourceId_t;
|
||||||
|
using BinSoundId_t = ResourceId_t;
|
||||||
|
|
||||||
|
// Игровые определения
|
||||||
using DefVoxelId_t = ResourceId_t;
|
using DefVoxelId_t = ResourceId_t;
|
||||||
using DefNodeId_t = ResourceId_t;
|
using DefNodeId_t = ResourceId_t;
|
||||||
using DefWorldId_t = ResourceId_t;
|
using DefWorldId_t = ResourceId_t;
|
||||||
|
using DefPortalId_t = ResourceId_t;
|
||||||
using DefEntityId_t = ResourceId_t;
|
using DefEntityId_t = ResourceId_t;
|
||||||
using PortalId_t = uint16_t;
|
|
||||||
// В одном регионе может быть максимум 2^16 сущностей. Клиенту адресуются сущности в формате <позиция региона>+<uint16_t>
|
// Конент, основанный на игровых определениях
|
||||||
// И если сущность перешла из одного региона в другой адресация сохраняется
|
|
||||||
using EntityId_t = uint16_t;
|
|
||||||
using WorldId_t = ResourceId_t;
|
using WorldId_t = ResourceId_t;
|
||||||
using TextureId_t = ResourceId_t;
|
|
||||||
using ModelId_t = ResourceId_t;
|
// В одном регионе может быть максимум 2^16 сущностей. Клиенту адресуются сущности в формате <мир>+<позиция региона>+<uint16_t>
|
||||||
using SoundId_t = ResourceId_t;
|
// И если сущность перешла из одного региона в другой, идентификатор сущности на стороне клиента сохраняется
|
||||||
|
using LocalEntityId_t = uint16_t;
|
||||||
|
using GlobalEntityId_t = std::tuple<WorldId_t, Pos::GlobalRegion, LocalEntityId_t>;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
using PortalId_t = uint16_t;
|
||||||
using MediaStreamId_t = uint16_t;
|
using MediaStreamId_t = uint16_t;
|
||||||
using ContentBridgeId_t = uint16_t;
|
using ContentBridgeId_t = uint16_t;
|
||||||
using PlayerId_t = uint32_t;
|
using PlayerId_t = uint32_t;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Сервер загружает информацию о локальных текстурах
|
Сервер загружает информацию о локальных текстурах
|
||||||
Синхронизация часто используемых текстур?
|
Синхронизация часто используемых текстур?
|
||||||
|
|||||||
@@ -216,38 +216,34 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Функции подготавливают пакеты к отправке
|
// Функции подготавливают пакеты к отправке
|
||||||
|
|
||||||
// Необходимые определения шаблонов игрового контента
|
|
||||||
void prepareDefWorld(WorldId_t worldId, void* world);
|
|
||||||
void prepareDefVoxel(VoxelId_t voxelId, void* voxel);
|
|
||||||
void prepareDefNode(NodeId_t worldId, void* node);
|
|
||||||
void prepareDefMediaStream(MediaStreamId_t modelId, void* mediaStream);
|
|
||||||
|
|
||||||
// Отслеживаемое игроком использование контента
|
// Отслеживаемое игроком использование контента
|
||||||
// Maybe?
|
// Maybe?
|
||||||
// Текущий список вокселей, определения нод, которые больше не используются в чанке, и определения нод, которые теперь используются
|
// Текущий список вокселей, определения нод, которые больше не используются в чанке, и определения нод, которые теперь используются
|
||||||
//void prepareChunkUpdate_Voxels(WorldId_t worldId, Pos::GlobalChunk chunkPos, const std::vector<VoxelCube> &voxels, const std::vector<DefVoxelId_t> &noLongerInUseDefs, const std::vector<DefVoxelId_t> &nowUsed);
|
//void prepareChunkUpdate_Voxels(WorldId_t worldId, Pos::GlobalChunk chunkPos, const std::vector<VoxelCube> &voxels, const std::vector<DefVoxelId_t> &noLongerInUseDefs, const std::vector<DefVoxelId_t> &nowUsed);
|
||||||
|
|
||||||
void prepareChunkUpdate_Voxels(WorldId_t worldId, Pos::GlobalChunk chunkPos, const std::vector<VoxelCube> &voxels);
|
void prepareChunkUpdate_Voxels(WorldId_t worldId, Pos::GlobalChunk chunkPos, const std::vector<VoxelCube> &voxels);
|
||||||
void prepareChunkUpdate_Nodes(WorldId_t worldId, Pos::GlobalChunk chunkPos, const std::unordered_map<Pos::Local16_u, Node> &nodes);
|
void prepareChunkUpdate_Nodes(WorldId_t worldId, Pos::GlobalChunk chunkPos, const std::unordered_map<Pos::Local16_u, Node> &nodes);
|
||||||
void prepareChunkUpdate_LightPrism(WorldId_t worldId, Pos::GlobalChunk chunkPos, const LightPrism *lights);
|
void prepareChunkUpdate_LightPrism(WorldId_t worldId, Pos::GlobalChunk chunkPos, const LightPrism *lights);
|
||||||
void prepareChunkRemove(WorldId_t worldId, Pos::GlobalChunk chunkPos);
|
void prepareChunkRemove(WorldId_t worldId, Pos::GlobalChunk chunkPos);
|
||||||
|
|
||||||
void prepareWorldRemove(WorldId_t worldId);
|
|
||||||
|
|
||||||
void prepareEntitySwap(WorldId_t prevWorldId, Pos::GlobalRegion prevRegionPos, EntityId_t prevEntityId,
|
void prepareEntitySwap(WorldId_t prevWorldId, Pos::GlobalRegion prevRegionPos, EntityId_t prevEntityId,
|
||||||
WorldId_t newWorldId, Pos::GlobalRegion newRegionPos, EntityId_t newEntityId);
|
WorldId_t newWorldId, Pos::GlobalRegion newRegionPos, EntityId_t newEntityId);
|
||||||
void prepareEntityUpdate(WorldId_t worldId, Pos::GlobalRegion regionPos, EntityId_t entityId, const Entity *entity);
|
void prepareEntityUpdate(WorldId_t worldId, Pos::GlobalRegion regionPos, EntityId_t entityId, const Entity *entity);
|
||||||
void prepareEntityRemove(WorldId_t worldId, Pos::GlobalRegion regionPos, EntityId_t entityId);
|
void prepareEntityRemove(WorldId_t worldId, Pos::GlobalRegion regionPos, EntityId_t entityId);
|
||||||
|
|
||||||
void prepareWorldNew(DefWorldId_t Id, void* world);
|
void prepareWorldNew(WorldId_t worldId, void* world);
|
||||||
void prepareWorldUpdate(DefWorldId_t defWorldId, void* world);
|
void prepareWorldUpdate(WorldId_t worldId, void* world);
|
||||||
void prepareWorldRemove(DefWorldId_t defWorldId);
|
void prepareWorldRemove(WorldId_t worldId);
|
||||||
|
|
||||||
void preparePortalNew(PortalId_t portalId, void* portal);
|
void preparePortalNew(PortalId_t portalId, void* portal);
|
||||||
void preparePortalUpdate(PortalId_t portalId, void* portal);
|
void preparePortalUpdate(PortalId_t portalId, void* portal);
|
||||||
void preparePortalRemove(PortalId_t portalId);
|
void preparePortalRemove(PortalId_t portalId);
|
||||||
|
|
||||||
|
|
||||||
|
// Необходимые определения шаблонов игрового контента
|
||||||
|
void prepareDefPortal(DefNodeId_t defWorldId, void* node);
|
||||||
|
void prepareDefMediaStream(MediaStreamId_t modelId, void* mediaStream);
|
||||||
|
|
||||||
|
|
||||||
// Прочие моменты
|
// Прочие моменты
|
||||||
void prepareCameraSetEntity(WorldId_t worldId, Pos::GlobalChunk chunkPos, EntityId_t entityId);
|
void prepareCameraSetEntity(WorldId_t worldId, Pos::GlobalChunk chunkPos, EntityId_t entityId);
|
||||||
|
|
||||||
@@ -257,10 +253,19 @@ public:
|
|||||||
// Сообщить о ресурсах
|
// Сообщить о ресурсах
|
||||||
// Сюда приходят все обновления ресурсов движка
|
// Сюда приходят все обновления ресурсов движка
|
||||||
// Глобально их можно запросить в выдаче pushPreparedPackets()
|
// Глобально их можно запросить в выдаче pushPreparedPackets()
|
||||||
|
|
||||||
|
// Двоичные файлы
|
||||||
void informateDefTexture(const std::unordered_map<TextureId_t, std::shared_ptr<ResourceFile>> &textures);
|
void informateDefTexture(const std::unordered_map<TextureId_t, std::shared_ptr<ResourceFile>> &textures);
|
||||||
void informateDefModel(const std::unordered_map<ModelId_t, std::shared_ptr<ResourceFile>> &models);
|
void informateDefModel(const std::unordered_map<ModelId_t, std::shared_ptr<ResourceFile>> &models);
|
||||||
void informateDefSound(const std::unordered_map<SoundId_t, std::shared_ptr<ResourceFile>> &sounds);
|
void informateDefSound(const std::unordered_map<SoundId_t, std::shared_ptr<ResourceFile>> &sounds);
|
||||||
|
|
||||||
|
// Игровые определения
|
||||||
|
void informateDefWorld(const std::unordered_map<DefWorldId_t, void*> &worlds);
|
||||||
|
void informateDefVoxel(const std::unordered_map<DefVoxelId_t, void*> &voxels);
|
||||||
|
void informateDefNode(const std::unordered_map<DefNodeId_t, void*> &nodes);
|
||||||
|
void informateDefEntityes(const std::unordered_map<DefEntityId_t, void*> &entityes);
|
||||||
|
void informateDefPortals(const std::unordered_map<DefPortalId_t, void*> &portals);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
WorldId_c rentWorldRemapId(WorldId_t wId);
|
WorldId_c rentWorldRemapId(WorldId_t wId);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user