RunicVTT Open Source Virtual Tabletop for TTRPG using P2P
Loading...
Searching...
No Matches
Serializer.h
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include <string>
5#include <glm/glm.hpp>
6#include <iostream>
7#include <cstring> // For memcpy
8#include "Components.h" // Include your components header
9
11{
12public:
13 // Serialize methods for basic types
14 static void serializeInt(std::vector<unsigned char>& buffer, int value);
15 static void serializeFloat(std::vector<unsigned char>& buffer, float value);
16 static void serializeBool(std::vector<unsigned char>& buffer, bool value);
17 static void serializeString(std::vector<unsigned char>& buffer, const std::string& str);
18 static void serializeVec2(std::vector<unsigned char>& buffer, const glm::vec2& vec);
19 static void serializeUInt64(std::vector<unsigned char>& buffer, uint64_t value);
20 static void serializeUInt32(std::vector<unsigned char>& buffer, uint32_t value);
21 static void serializeUInt8(std::vector<unsigned char>& buffer, uint8_t value);
22
23 // Deserialize methods for basic types
24 static int deserializeInt(const std::vector<unsigned char>& buffer, size_t& offset);
25 static float deserializeFloat(const std::vector<unsigned char>& buffer, size_t& offset);
26 static bool deserializeBool(const std::vector<unsigned char>& buffer, size_t& offset);
27 static std::string deserializeString(const std::vector<unsigned char>& buffer, size_t& offset);
28 static glm::vec2 deserializeVec2(const std::vector<unsigned char>& buffer, size_t& offset);
29 static uint64_t deserializeUInt64(const std::vector<unsigned char>& buffer, size_t& offset);
30 static uint32_t deserializeUInt32(const std::vector<unsigned char>& buffer, size_t& offset);
31 static uint8_t deserializeUInt8(const std::vector<unsigned char>& buffer, size_t& offset);
32
33 // Serialize methods for components
34 static void serializePosition(std::vector<unsigned char>& buffer, const Position* position);
35 static Position deserializePosition(const std::vector<unsigned char>& buffer, size_t& offset);
36
37 static void serializeSize(std::vector<unsigned char>& buffer, const Size* size);
38 static Size deserializeSize(const std::vector<unsigned char>& buffer, size_t& offset);
39
40 static void serializeVisibility(std::vector<unsigned char>& buffer, const Visibility* visibility);
41 static Visibility deserializeVisibility(const std::vector<unsigned char>& buffer, size_t& offset);
42
43 static void serializeMoving(std::vector<unsigned char>& buffer, const Moving* moving);
44 static Moving deserializeMoving(const std::vector<unsigned char>& buffer, size_t& offset);
45
46 static void serializeTextureComponent(std::vector<unsigned char>& buffer, const TextureComponent* texture);
47 static TextureComponent deserializeTextureComponent(const std::vector<unsigned char>& buffer, size_t& offset);
48
49 static void serializePanning(std::vector<unsigned char>& buffer, const Panning* panning);
50 static Panning deserializePanning(const std::vector<unsigned char>& buffer, size_t& offset);
51
52 static void serializeGrid(std::vector<unsigned char>& buffer, const Grid* grid);
53 static Grid deserializeGrid(const std::vector<unsigned char>& buffer, size_t& offset);
54
55 static void serializeMarkerComponent(std::vector<unsigned char>& buffer, const MarkerComponent* marker_component);
56 static MarkerComponent deserializeMarkerComponent(const std::vector<unsigned char>& buffer, size_t& offset);
57
58 static void serializeBoard(std::vector<unsigned char>& buffer, const Board* board);
59 static Board deserializeBoard(const std::vector<unsigned char>& buffer, size_t& offset);
60
61 static void serializeGameTable(std::vector<unsigned char>& buffer, const GameTable* gameTable);
62 static GameTable deserializeGameTable(const std::vector<unsigned char>& buffer, size_t& offset);
63
64 static void serializeMarkerEntity(std::vector<unsigned char>& buffer, const flecs::entity entity, flecs::world& ecs);
65 static flecs::entity deserializeMarkerEntity(const std::vector<unsigned char>& buffer, size_t& offset, flecs::world& ecs);
66
67 static void serializeFogEntity(std::vector<unsigned char>& buffer, const flecs::entity entity, flecs::world& ecs);
68 static flecs::entity deserializeFogEntity(const std::vector<unsigned char>& buffer, size_t& offset, flecs::world& ecs);
69
70 static void serializeGameTableEntity(std::vector<unsigned char>& buffer, const flecs::entity entity, flecs::world& ecs);
71 static flecs::entity deserializeGameTableEntity(const std::vector<unsigned char>& buffer, size_t& offset, flecs::world& ecs);
72
73 static void serializeBoardEntity(std::vector<unsigned char>& buffer, const flecs::entity entity, flecs::world& ecs);
74 static flecs::entity deserializeBoardEntity(const std::vector<unsigned char>& buffer, size_t& offset, flecs::world& ecs);
75};
76
77// Serialize and Deserialize MarkerEntity
78inline void Serializer::serializeMarkerEntity(std::vector<unsigned char>& buffer, const flecs::entity entity, flecs::world& ecs)
79{
80 auto identifier = entity.get<Identifier>();
81 auto position = entity.get<Position>();
82 auto size = entity.get<Size>();
83 auto texture = entity.get<TextureComponent>();
84 auto visibility = entity.get<Visibility>();
85 auto moving = entity.get<Moving>();
86 auto marker_component = entity.get<MarkerComponent>();
87
88 serializeUInt64(buffer, identifier->id);
89 serializePosition(buffer, position);
90 serializeSize(buffer, size);
91 serializeMoving(buffer, moving);
92 serializeVisibility(buffer, visibility);
93 serializeTextureComponent(buffer, texture);
94 serializeMarkerComponent(buffer, marker_component);
95}
96
97inline flecs::entity Serializer::deserializeMarkerEntity(const std::vector<unsigned char>& buffer, size_t& offset, flecs::world& ecs)
98{
99
100 uint64_t marker_id = Serializer::deserializeUInt64(buffer, offset);
101 auto position = deserializePosition(buffer, offset);
102 auto size = deserializeSize(buffer, offset);
103 auto moving = deserializeMoving(buffer, offset);
104 auto visibility = deserializeVisibility(buffer, offset);
105 auto texture = deserializeTextureComponent(buffer, offset);
106 auto marker_component = deserializeMarkerComponent(buffer, offset);
107 auto marker = ecs.entity()
108 .set<Identifier>({marker_id})
109 .set<Position>(position)
110 .set<Size>(size)
111 .set<Moving>(moving)
112 .set<Visibility>(visibility)
113 .set<MarkerComponent>(marker_component)
114 .set<TextureComponent>({0, texture.image_path, texture.size});
115
116 return marker;
117}
118
119// Serialize and Deserialize FogEntity
120inline void Serializer::serializeFogEntity(std::vector<unsigned char>& buffer, const flecs::entity entity, flecs::world& ecs)
121{
122 auto identifier = entity.get<Identifier>();
123 auto position = entity.get<Position>();
124 auto size = entity.get<Size>();
125 auto visibility = entity.get<Visibility>();
126
127 serializeUInt64(buffer, identifier->id);
128 serializePosition(buffer, position);
129 serializeSize(buffer, size);
130 serializeVisibility(buffer, visibility);
131}
132
133inline flecs::entity Serializer::deserializeFogEntity(const std::vector<unsigned char>& buffer, size_t& offset, flecs::world& ecs)
134{
135
136 uint64_t fog_id = Serializer::deserializeUInt64(buffer, offset);
137 auto position = deserializePosition(buffer, offset);
138 auto size = deserializeSize(buffer, offset);
139 auto visibility = deserializeVisibility(buffer, offset);
140
141 auto fog = ecs.entity()
142 .set<Identifier>({fog_id})
143 .set<Position>(position)
144 .set<Size>(size)
145 .set<Visibility>(visibility);
146
147 return fog;
148}
149
150inline void Serializer::serializeGameTableEntity(std::vector<unsigned char>& buffer, const flecs::entity entity, flecs::world& ecs)
151{
152 auto identifier = entity.get<Identifier>();
153 auto game_table = entity.get<GameTable>();
154 //auto game_table_id = entity.id();
155
156 serializeUInt64(buffer, identifier->id);
157 serializeGameTable(buffer, game_table);
158
159 int boardCount = 0;
160 ecs.defer_begin();
161 entity.children([&](flecs::entity child)
162 {
163 if (child.has<Board>()) {
164 boardCount++;
165 } });
166 ecs.defer_end();
167 Serializer::serializeInt(buffer, boardCount);
168 ecs.defer_begin();
169 entity.children([&](flecs::entity child)
170 { serializeBoardEntity(buffer, child, ecs); });
171 ecs.defer_end();
172}
173
174inline flecs::entity Serializer::deserializeGameTableEntity(const std::vector<unsigned char>& buffer, size_t& offset, flecs::world& ecs)
175{
176 //auto game_table_id = deserializeInt(buffer, offset);
177 auto identifier = deserializeUInt64(buffer, offset);
178 auto game_table = deserializeGameTable(buffer, offset);
179 auto game_table_entity = ecs.entity().set(GameTable{game_table});
180 game_table_entity.set(Identifier{identifier});
181
182 int board_count = Serializer::deserializeInt(buffer, offset);
183 for (int i = 1; i <= board_count; i++)
184 {
185 auto board_entity = deserializeBoardEntity(buffer, offset, ecs);
186 board_entity.add(flecs::ChildOf, game_table_entity);
187 }
188
189 return game_table_entity;
190}
191
192inline void Serializer::serializeBoardEntity(std::vector<unsigned char>& buffer, const flecs::entity entity, flecs::world& ecs)
193{
194 auto identifier = entity.get<Identifier>();
195 auto boardData = entity.get<Board>();
196 auto panning = entity.get<Panning>();
197 auto grid = entity.get<Grid>();
198 auto texture = entity.get<TextureComponent>();
199 auto size = entity.get<Size>();
200
201 Serializer::serializeUInt64(buffer, identifier->id);
202 Serializer::serializeBoard(buffer, boardData);
203 Serializer::serializePanning(buffer, panning);
204 Serializer::serializeGrid(buffer, grid);
206 Serializer::serializeSize(buffer, size);
207
208 // Serialize markers
209 int markerCount = 0;
210 ecs.defer_begin();
211 entity.children([&](flecs::entity child)
212 {
213 if (child.has<MarkerComponent>()) {
214 markerCount++;
215 } });
216 Serializer::serializeInt(buffer, markerCount);
217 // Serialize each marker's data
218 entity.children([&](flecs::entity child)
219 {
220 if (child.has<MarkerComponent>()) {
221 serializeMarkerEntity(buffer, child, ecs);
222 } });
223 ecs.defer_end();
224 // Serialize fog entities
225 int fogCount = 0;
226 ecs.defer_begin();
227 entity.children([&](flecs::entity child)
228 {
229 if (child.has<FogOfWar>()) {
230 fogCount++;
231 } });
232 ecs.defer_end();
233 Serializer::serializeInt(buffer, fogCount);
234 // Serialize each fog's data
235 ecs.defer_begin();
236 entity.children([&](flecs::entity child)
237 {
238 if (child.has<FogOfWar>()) {
239 serializeFogEntity(buffer, child, ecs);
240 } });
241 ecs.defer_end();
242}
243
244inline flecs::entity Serializer::deserializeBoardEntity(const std::vector<unsigned char>& buffer, size_t& offset, flecs::world& ecs)
245{
246
247 uint64_t board_id = Serializer::deserializeUInt64(buffer, offset);
248 auto boardData = Serializer::deserializeBoard(buffer, offset);
249 auto panning = Serializer::deserializePanning(buffer, offset);
250 auto grid = Serializer::deserializeGrid(buffer, offset);
251 auto texture = Serializer::deserializeTextureComponent(buffer, offset);
252 auto size = Serializer::deserializeSize(buffer, offset);
253
254 auto newBoard = ecs.entity()
255 .set<Identifier>({board_id})
256 .set<Board>(boardData)
257 .set<Panning>(panning)
258 .set<Grid>(grid)
259 .set<TextureComponent>({0, texture.image_path, texture.size})
260 .set<Size>(size);
261
262 // Deserialize markers
263 int markerCount = Serializer::deserializeInt(buffer, offset);
264 for (int i = 0; i < markerCount; ++i)
265 {
266 auto marker = deserializeMarkerEntity(buffer, offset, ecs);
267 marker.add<MarkerComponent>();
268 marker.add(flecs::ChildOf, newBoard);
269 }
270
271 // Deserialize fog entities
272 int fogCount = Serializer::deserializeInt(buffer, offset);
273 for (int i = 0; i < fogCount; ++i)
274 {
275 auto fog = deserializeFogEntity(buffer, offset, ecs);
276 fog.add<FogOfWar>();
277 fog.add(flecs::ChildOf, newBoard);
278 }
279
280 return newBoard;
281}
282
283// Implementation
284inline void Serializer::serializeMarkerComponent(std::vector<unsigned char>& b, const MarkerComponent* marker_component)
285{
286 serializeString(b, marker_component->ownerPeerUsername);
287 serializeString(b, marker_component->ownerUniqueId);
288 serializeBool(b, marker_component->allowAllPlayersMove);
289 serializeBool(b, marker_component->locked);
290}
291
292inline MarkerComponent Serializer::deserializeMarkerComponent(const std::vector<unsigned char>& b, size_t& off)
293{
294 MarkerComponent marker_component{};
295 marker_component.ownerPeerUsername = deserializeString(b, off);
296 marker_component.ownerUniqueId = deserializeString(b, off);
297 marker_component.allowAllPlayersMove = deserializeBool(b, off);
298 marker_component.locked = deserializeBool(b, off);
299 return marker_component;
300}
301
302inline void Serializer::serializeInt(std::vector<unsigned char>& buffer, int value)
303{
304 buffer.insert(buffer.end(), reinterpret_cast<unsigned char*>(&value), reinterpret_cast<unsigned char*>(&value) + sizeof(int));
305}
306
307inline void Serializer::serializeFloat(std::vector<unsigned char>& buffer, float value)
308{
309 buffer.insert(buffer.end(), reinterpret_cast<unsigned char*>(&value), reinterpret_cast<unsigned char*>(&value) + sizeof(float));
310}
311
312inline void Serializer::serializeBool(std::vector<unsigned char>& buffer, bool value)
313{
314 unsigned char byteValue = value ? 1 : 0;
315 buffer.push_back(byteValue);
316}
317
318inline void Serializer::serializeString(std::vector<unsigned char>& buffer, const std::string& str)
319{
320 int length = static_cast<int>(str.size());
321 serializeInt(buffer, length);
322 buffer.insert(buffer.end(), str.begin(), str.end());
323}
324
325inline void Serializer::serializeVec2(std::vector<unsigned char>& buffer, const glm::vec2& vec)
326{
327 serializeFloat(buffer, vec.x);
328 serializeFloat(buffer, vec.y);
329}
330
331inline void Serializer::serializeUInt64(std::vector<unsigned char>& buffer, uint64_t value)
332{
333 buffer.insert(buffer.end(), reinterpret_cast<unsigned char*>(&value), reinterpret_cast<unsigned char*>(&value) + sizeof(uint64_t));
334}
335
336inline void Serializer::serializeUInt32(std::vector<unsigned char>& buffer, uint32_t value)
337{
338 buffer.insert(buffer.end(), reinterpret_cast<unsigned char*>(&value), reinterpret_cast<unsigned char*>(&value) + sizeof(uint32_t));
339}
340
341inline void Serializer::serializeUInt8(std::vector<unsigned char>& buffer, uint8_t value)
342{
343 buffer.push_back(static_cast<unsigned char>(value));
344}
345
346inline uint8_t Serializer::deserializeUInt8(const std::vector<unsigned char>& buffer, size_t& offset)
347{
348 uint8_t v = static_cast<uint8_t>(buffer[offset]);
349 offset += sizeof(uint8_t);
350 return v;
351}
352
353inline uint32_t Serializer::deserializeUInt32(const std::vector<unsigned char>& buffer, size_t& offset)
354{
355 uint32_t value = *reinterpret_cast<const uint32_t*>(&buffer[offset]);
356 offset += sizeof(uint32_t);
357 return value;
358}
359
360inline uint64_t Serializer::deserializeUInt64(const std::vector<unsigned char>& buffer, size_t& offset)
361{
362 uint64_t value = *reinterpret_cast<const uint64_t*>(&buffer[offset]);
363 offset += sizeof(uint64_t);
364 return value;
365}
366
367inline int Serializer::deserializeInt(const std::vector<unsigned char>& buffer, size_t& offset)
368{
369 int value = *reinterpret_cast<const int*>(&buffer[offset]);
370 offset += sizeof(int);
371 return value;
372}
373
374inline float Serializer::deserializeFloat(const std::vector<unsigned char>& buffer, size_t& offset)
375{
376 float value = *reinterpret_cast<const float*>(&buffer[offset]);
377 offset += sizeof(float);
378 return value;
379}
380
381inline bool Serializer::deserializeBool(const std::vector<unsigned char>& buffer, size_t& offset)
382{
383 bool value = buffer[offset] != 0;
384 offset += sizeof(unsigned char);
385 return value;
386}
387
388inline std::string Serializer::deserializeString(const std::vector<unsigned char>& buffer, size_t& offset)
389{
390 int length = deserializeInt(buffer, offset);
391 std::string str(buffer.begin() + offset, buffer.begin() + offset + length);
392 offset += length;
393 return str;
394}
395
396inline glm::vec2 Serializer::deserializeVec2(const std::vector<unsigned char>& buffer, size_t& offset)
397{
398 float x = deserializeFloat(buffer, offset);
399 float y = deserializeFloat(buffer, offset);
400 return glm::vec2(x, y);
401}
402
403inline void Serializer::serializePosition(std::vector<unsigned char>& buffer, const Position* position)
404{
405 serializeFloat(buffer, position->x);
406 serializeFloat(buffer, position->y);
407}
408
409inline Position Serializer::deserializePosition(const std::vector<unsigned char>& buffer, size_t& offset)
410{
411 float x = deserializeFloat(buffer, offset);
412 float y = deserializeFloat(buffer, offset);
413 return Position{x, y};
414}
415
416inline void Serializer::serializeSize(std::vector<unsigned char>& buffer, const Size* size)
417{
418 serializeFloat(buffer, size->width);
419 serializeFloat(buffer, size->height);
420}
421
422inline Size Serializer::deserializeSize(const std::vector<unsigned char>& buffer, size_t& offset)
423{
424 float width = deserializeFloat(buffer, offset);
425 float height = deserializeFloat(buffer, offset);
426 return Size{width, height};
427}
428
429// Example for Visibility component:
430inline void Serializer::serializeVisibility(std::vector<unsigned char>& buffer, const Visibility* visibility)
431{
432 serializeBool(buffer, visibility->isVisible);
433}
434
435inline Visibility Serializer::deserializeVisibility(const std::vector<unsigned char>& buffer, size_t& offset)
436{
437 bool isVisible = deserializeBool(buffer, offset);
438 return Visibility{isVisible};
439}
440
441// Serialize and Deserialize Moving
442inline void Serializer::serializeMoving(std::vector<unsigned char>& buffer, const Moving* moving)
443{
444 serializeBool(buffer, moving->isDragging);
445}
446
447inline Moving Serializer::deserializeMoving(const std::vector<unsigned char>& buffer, size_t& offset)
448{
449 bool isDragging = deserializeBool(buffer, offset);
450 return Moving{isDragging};
451}
452
453// Serialize and Deserialize TextureComponent
454inline void Serializer::serializeTextureComponent(std::vector<unsigned char>& buffer, const TextureComponent* texture)
455{
456 serializeInt(buffer, static_cast<int>(texture->textureID));
457 serializeString(buffer, texture->image_path);
458 serializeVec2(buffer, texture->size);
459}
460
461inline TextureComponent Serializer::deserializeTextureComponent(const std::vector<unsigned char>& buffer, size_t& offset)
462{
463 GLuint textureID = static_cast<GLuint>(deserializeInt(buffer, offset));
464 std::string image_path = deserializeString(buffer, offset);
465 glm::vec2 size = deserializeVec2(buffer, offset);
466 return TextureComponent{0, image_path, size};
467}
468
469// Serialize and Deserialize Panning
470inline void Serializer::serializePanning(std::vector<unsigned char>& buffer, const Panning* panning)
471{
472 serializeBool(buffer, panning->isPanning);
473}
474
475inline Panning Serializer::deserializePanning(const std::vector<unsigned char>& buffer, size_t& offset)
476{
477 bool isPanning = deserializeBool(buffer, offset);
478 return Panning{isPanning};
479}
480
481// Serialize and Deserialize Grid
482inline void Serializer::serializeGrid(std::vector<unsigned char>& buffer, const Grid* grid)
483{
484 serializeVec2(buffer, grid->offset);
485 serializeFloat(buffer, grid->cell_size);
486 serializeBool(buffer, grid->is_hex);
487 serializeBool(buffer, grid->snap_to_grid);
488 serializeBool(buffer, grid->visible);
489 serializeFloat(buffer, grid->opacity);
490}
491
492inline Grid Serializer::deserializeGrid(const std::vector<unsigned char>& buffer, size_t& offset)
493{
494 glm::vec2 offset_val = deserializeVec2(buffer, offset);
495 float cell_size = deserializeFloat(buffer, offset);
496 bool is_hex = deserializeBool(buffer, offset);
497 bool snap_to_grid = deserializeBool(buffer, offset);
498 bool visible = deserializeBool(buffer, offset);
499 float opacity = deserializeFloat(buffer, offset);
500
501 return Grid{offset_val, cell_size, is_hex, snap_to_grid, visible, opacity};
502}
503
504// Serialize and Deserialize Board
505inline void Serializer::serializeBoard(std::vector<unsigned char>& buffer, const Board* board)
506{
507 serializeString(buffer, board->board_name);
508}
509
510inline Board Serializer::deserializeBoard(const std::vector<unsigned char>& buffer, size_t& offset)
511{
512 std::string board_name = deserializeString(buffer, offset);
513 return Board{board_name};
514}
515
516// Serialize and Deserialize GameTable
517inline void Serializer::serializeGameTable(std::vector<unsigned char>& buffer, const GameTable* gameTable)
518{
519 serializeString(buffer, gameTable->gameTableName);
520}
521
522inline GameTable Serializer::deserializeGameTable(const std::vector<unsigned char>& buffer, size_t& offset)
523{
524 std::string gameTableName = deserializeString(buffer, offset);
525 return GameTable{gameTableName};
526}
static void serializePanning(std::vector< unsigned char > &buffer, const Panning *panning)
Definition Serializer.h:470
static flecs::entity deserializeGameTableEntity(const std::vector< unsigned char > &buffer, size_t &offset, flecs::world &ecs)
Definition Serializer.h:174
static void serializeFogEntity(std::vector< unsigned char > &buffer, const flecs::entity entity, flecs::world &ecs)
Definition Serializer.h:120
static Size deserializeSize(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:422
static uint32_t deserializeUInt32(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:353
static void serializeBool(std::vector< unsigned char > &buffer, bool value)
Definition Serializer.h:312
static Visibility deserializeVisibility(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:435
static void serializeTextureComponent(std::vector< unsigned char > &buffer, const TextureComponent *texture)
Definition Serializer.h:454
static void serializeBoardEntity(std::vector< unsigned char > &buffer, const flecs::entity entity, flecs::world &ecs)
Definition Serializer.h:192
static void serializeUInt8(std::vector< unsigned char > &buffer, uint8_t value)
Definition Serializer.h:341
static float deserializeFloat(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:374
static int deserializeInt(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:367
static std::string deserializeString(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:388
static Grid deserializeGrid(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:492
static GameTable deserializeGameTable(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:522
static void serializeVec2(std::vector< unsigned char > &buffer, const glm::vec2 &vec)
Definition Serializer.h:325
static flecs::entity deserializeMarkerEntity(const std::vector< unsigned char > &buffer, size_t &offset, flecs::world &ecs)
Definition Serializer.h:97
static Position deserializePosition(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:409
static void serializeUInt64(std::vector< unsigned char > &buffer, uint64_t value)
Definition Serializer.h:331
static Panning deserializePanning(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:475
static void serializeSize(std::vector< unsigned char > &buffer, const Size *size)
Definition Serializer.h:416
static bool deserializeBool(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:381
static void serializeGameTable(std::vector< unsigned char > &buffer, const GameTable *gameTable)
Definition Serializer.h:517
static void serializeMarkerEntity(std::vector< unsigned char > &buffer, const flecs::entity entity, flecs::world &ecs)
Definition Serializer.h:78
static void serializeGameTableEntity(std::vector< unsigned char > &buffer, const flecs::entity entity, flecs::world &ecs)
Definition Serializer.h:150
static void serializeString(std::vector< unsigned char > &buffer, const std::string &str)
Definition Serializer.h:318
static void serializeFloat(std::vector< unsigned char > &buffer, float value)
Definition Serializer.h:307
static void serializePosition(std::vector< unsigned char > &buffer, const Position *position)
Definition Serializer.h:403
static void serializeBoard(std::vector< unsigned char > &buffer, const Board *board)
Definition Serializer.h:505
static uint8_t deserializeUInt8(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:346
static flecs::entity deserializeFogEntity(const std::vector< unsigned char > &buffer, size_t &offset, flecs::world &ecs)
Definition Serializer.h:133
static MarkerComponent deserializeMarkerComponent(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:292
static TextureComponent deserializeTextureComponent(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:461
static glm::vec2 deserializeVec2(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:396
static void serializeMarkerComponent(std::vector< unsigned char > &buffer, const MarkerComponent *marker_component)
Definition Serializer.h:284
static uint64_t deserializeUInt64(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:360
static void serializeMoving(std::vector< unsigned char > &buffer, const Moving *moving)
Definition Serializer.h:442
static void serializeUInt32(std::vector< unsigned char > &buffer, uint32_t value)
Definition Serializer.h:336
static Moving deserializeMoving(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:447
static Board deserializeBoard(const std::vector< unsigned char > &buffer, size_t &offset)
Definition Serializer.h:510
static void serializeInt(std::vector< unsigned char > &buffer, int value)
Definition Serializer.h:302
static void serializeGrid(std::vector< unsigned char > &buffer, const Grid *grid)
Definition Serializer.h:482
static void serializeVisibility(std::vector< unsigned char > &buffer, const Visibility *visibility)
Definition Serializer.h:430
static flecs::entity deserializeBoardEntity(const std::vector< unsigned char > &buffer, size_t &offset, flecs::world &ecs)
Definition Serializer.h:244
bool snap_to_grid
Definition Components.h:68
glm::vec2 offset
Definition Components.h:65
float opacity
Definition Components.h:70
float cell_size
Definition Components.h:66
bool is_hex
Definition Components.h:67
bool visible
Definition Components.h:69
std::string ownerPeerUsername
Definition Components.h:82
float y
Definition Components.h:21
float x
Definition Components.h:20
float height
Definition Components.h:28
float width
Definition Components.h:27