1#ifndef __H__ENGINE_ENTITY__
2#define __H__ENGINE_ENTITY__
6#include "../rendering/context.h"
7#include "../rendering/instances.h"
13#define ENTITY_ID_IDENTITY_MASK ((entity_id_t)0x000FFFFFFFFFFFFF)
14#define CONSTRUCT_MAXIMUM_COMPONENTS 255
17 u64 mask = ~ENTITY_ID_IDENTITY_MASK;
18 return (
id & mask) >> __builtin_ctzl(mask);
26 u32 generation = gen % (~ENTITY_ID_IDENTITY_MASK >>
98 float ar = scale * (float)ctx->
width / (
float)ctx->
height;
99 float left = -ar, right = ar;
100 float bottom = -scale, top = scale;
106 2.f / (right - left),
111 2.f / (top - bottom),
118 (-(right + left) - 2.f * v.
x) / (right - left),
119 (-(top + bottom) - 2.f * v.
y) / (top - bottom),
124 memcpy(&mat.
data, data,
sizeof data);
uint64_t u64
Definition defs.h:46
#define ASSERT__(expr)
Definition defs.h:21
uint32_t u32
Definition defs.h:45
#define CONSTRUCT_MAXIMUM_COMPONENTS
Definition entity.h:14
entity_kind_t
Definition entity.h:34
@ ENTITY_KIND_count
Definition entity.h:39
@ ENTITY_KIND_CONSTRUCT
Definition entity.h:37
@ ENTITY_KIND_MASK_EMPTY
Definition entity.h:35
@ ENTITY_KIND_CAMERA
Definition entity.h:38
@ ENTITY_KIND_TOMBSTONE
Definition entity.h:36
static void entity_construct_add_block(entity_t *entity, vec2i at, block_t block)
Definition entity.h:76
static mat4 entity_camera_calculate_projection(const rendering_ctx_t *ctx, const entity_t *entity)
Definition entity.h:93
static void entity_init_construct(entity_t *entity, allocator_t alloc, vec2i chunk_relative, vec2 chunk_local)
Definition entity.h:62
u64 entity_id_t
Definition entity.h:11
static u64 entity_id_new(u32 gen, u64 id)
Definition entity.h:25
static u64 entity_id_get_identity(entity_id_t id)
Definition entity.h:21
#define ENTITY_ID_IDENTITY_MASK
Definition entity.h:13
static u32 entity_id_get_generation(entity_id_t id)
Definition entity.h:16
entity_kind_t entity_kind_mask_t
Definition entity.h:42
static void entity_init_camera(entity_t *entity, allocator_t alloc, vec2i chunk_relative, vec2 chunk_local, float scale)
Definition entity.h:83
static void instance_buffer_init(instance_buffer_t *buffer, allocator_t alloc, sz capacity)
Definition instances.h:29
#define list_init_ty(ty, ls, alloc)
Definition list.h:36
#define list_push_var(ls, var)
Definition list.h:83
static mat4 mat4_zero()
Definition mat4.h:11
A generic allocator type passed by value. Contains a fallback allocator and a set of function pointer...
Definition memory.h:30
Definition construct.h:34
vec2i offset
Definition construct.h:36
Definition construct.h:62
vec2 velocity
Definition construct.h:67
instance_buffer_t instance
Definition construct.h:64
map_t device_map
Definition construct.h:65
list_t blocks
Definition construct.h:63
bool is_dirty
Definition construct.h:66
entity_id_t self_id
Definition entity.h:46
float scale
Definition entity.h:57
vec2i chunk_relative_position
Definition entity.h:50
construct_t as_construct
Definition entity.h:54
entity_id_t target
Definition entity.h:56
entity_kind_t kind
Definition entity.h:45
vec2 chunk_local_position
Definition entity.h:51
struct entity_t::@4::@6 as_camera
float data[16]
Definition mat4.h:8
i32 height
Definition context.h:12
i32 width
Definition context.h:12
float y
Definition vec2.h:12
float x
Definition vec2.h:12
static vec2 vec2_zero()
{.x = 0, .y = 0}
Definition vec2.h:29