//////////////////////////////////////////////////////////// //~ Key types #define PP_NilEntKey ((PP_EntKey) { 0 }) #define PP_RootEntKey ((PP_EntKey) { .v.hi = 0x75ebb7a47d1ca753, .v.lo = 0x2d505fc8961e5576 }) Struct(PP_EntKey) { U128 v; }; //////////////////////////////////////////////////////////// //~ Shape types Struct(PP_Shape) { f32 radius; u32 points_count; Vec2 points[8]; }; //////////////////////////////////////////////////////////// //~ Ent types ////////////////////////////// //- Ent roperties Enum(PP_EntProp) { PP_EntProp_None, }; ////////////////////////////// //- Ent Struct(PP_Ent) { PP_EntKey parent; PP_EntKey first; PP_EntKey last; PP_EntKey next; PP_EntKey prev; PP_EntKey key; PP_Shape shape; } extern Readonly PP_nil_ent; ////////////////////////////// //- Ent list Struct(PP_EntListNode) { PP_EntListNode *next; PP_Ent ent; }; Struct(PP_EntList) { PP_EntListNode *first; PP_EntListNode *last; u64 count; }; //////////////////////////////////////////////////////////// //~ Lookup types Struct(PP_EntLookupBin) { i32 _; }; //////////////////////////////////////////////////////////// //~ World types Struct(PP_World) { i64 tick; PP_Ent *ents; i64 ents_count; }; Struct(PP_WorldNode) { PP_WorldNode *next; PP_World world; }; //////////////////////////////////////////////////////////// //~ Nil helpers b32 PP_IsKeyNil(PP_EntKey key); b32 PP_IsEntNil(PP_Ent *ent);