ecsnet
Loading...
Searching...
No Matches
networked_entity.h
Go to the documentation of this file.
1// networked_entity.h
2#pragma once
3
4#include <stdint.h>
5#include <string.h>
6#include "ecs.h"
7
17
22typedef uint32_t interest_mask_t;
35
40ECSNET_API extern component_t COMPONENT_NETWORKED_ENTITY;
41
51static inline void networked_entity_serialize(const void *src, uint8_t *dst) {
52 const networked_entity_t *ne = (const networked_entity_t *)src;
53 memcpy(dst, &ne->network_id, sizeof(uint32_t));
54 memcpy(dst + sizeof(uint32_t), &ne->interest_groups, sizeof(uint32_t));
55}
56
65static inline void networked_entity_deserialize(const uint8_t *buffer_in, void *data_out) {
66 networked_entity_t *ne = (networked_entity_t *)data_out;
67 memcpy(&ne->network_id, buffer_in, sizeof(uint32_t));
68 memcpy(&ne->interest_groups, buffer_in + sizeof(uint32_t), sizeof(uint32_t));
69}
70
77static inline void ecs_register_networked_component(ecs_t *ecs) {
79 .size = sizeof(networked_entity_t),
80 .name = "NetworkedEntity",
81 .serialize = networked_entity_serialize,
82 .deserialize = networked_entity_deserialize,
83 };
84 COMPONENT_NETWORKED_ENTITY = ecs_register_component(ecs, desc);
85}
uint32_t interest_mask_t
Bitmask type for representing interest groups (up to 32 groups).
Definition networked_entity.h:22
Definition ecs_types.h:77
Internal structure representing the ECS world state. This holds:
Definition ecs_internal.h:44
Component representing network identity and interest groups.
Definition networked_entity.h:31
uint32_t network_id
Globally unique ID assigned by the server.
Definition networked_entity.h:32
interest_mask_t interest_groups
Bitmask of interest groups.
Definition networked_entity.h:33