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)
16 u64 mask = ~ENTITY_ID_IDENTITY_MASK;
17 return (
id & mask) >> __builtin_ctzl(mask);
25 u32 generation = gen % (~ENTITY_ID_IDENTITY_MASK >>
93 float ar = scale * (float)ctx->
width / (
float)ctx->
height;
94 float left = -ar, right = ar;
95 float bottom = -scale, top = scale;
101 2.f / (right - left),
106 2.f / (top - bottom),
113 (-(right + left) - 2.f * v.
x) / (right - left),
114 (-(top + bottom) - 2.f * v.
y) / (top - bottom),
119 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
static void construct_init(construct_t *construct, allocator_t alloc)
Definition construct.h:73
entity_kind_t
Definition entity.h:33
@ ENTITY_KIND_count
Definition entity.h:38
@ ENTITY_KIND_CONSTRUCT
Definition entity.h:36
@ ENTITY_KIND_MASK_EMPTY
Definition entity.h:34
@ ENTITY_KIND_CAMERA
Definition entity.h:37
@ ENTITY_KIND_TOMBSTONE
Definition entity.h:35
static void entity_construct_add_block(entity_t *entity, vec2i at, block_t block)
Definition entity.h:70
static mat4 entity_camera_calculate_projection(const rendering_ctx_t *ctx, const entity_t *entity)
Definition entity.h:88
static void entity_init_construct(entity_t *entity, allocator_t alloc, vec2i chunk_relative, vec2 chunk_local)
Definition entity.h:61
u64 entity_id_t
Definition entity.h:11
static u64 entity_id_new(u32 gen, u64 id)
Definition entity.h:24
static u64 entity_id_get_identity(entity_id_t id)
Definition entity.h:20
#define ENTITY_ID_IDENTITY_MASK
Definition entity.h:13
static u32 entity_id_get_generation(entity_id_t id)
Definition entity.h:15
entity_kind_t entity_kind_mask_t
Definition entity.h:41
static void entity_init_camera(entity_t *entity, allocator_t alloc, vec2i chunk_relative, vec2 chunk_local, float scale)
Definition entity.h:78
#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:36
vec2i offset
Definition construct.h:38
Definition construct.h:64
list_t blocks
Definition construct.h:65
bool is_dirty
Definition construct.h:68
entity_id_t self_id
Definition entity.h:45
float scale
Definition entity.h:56
vec2i chunk_relative_position
Definition entity.h:49
construct_t as_construct
Definition entity.h:53
entity_id_t target
Definition entity.h:55
entity_kind_t kind
Definition entity.h:44
vec2 chunk_local_position
Definition entity.h:50
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