#include "./pool.h" #include #include #include #include #include #include "util/memory/memory.h" #include "core/locommon/counter.h" #include "core/loentity/pool.h" #include "core/loshader/ground.h" #include "./base.h" LOENTITY_POOL_SOURCE_TEMPLATE(loground) loground_pool_t* loground_pool_new( loshader_ground_drawer_t* drawer, locommon_counter_t* idgen, size_t length) { assert(drawer != NULL); assert(idgen != NULL); assert(length > 0); loground_pool_t* pool = memory_new( sizeof(*pool) + (length-1)*sizeof(pool->items[0])); *pool = (typeof(*pool)) { .idgen = idgen, .length = length, }; for (size_t i = 0; i < pool->length; ++i) { loground_base_initialize(&pool->items[i], drawer); } return pool; }