/** * Copyright (c) 2025 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "ecs/ecscomponent.h" #include "display/mesh/mesh.h" typedef struct { mesh_t *mesh; } meshrenderer_t; extern meshrenderer_t MESH_RENDERER_DATA[ECS_ENTITY_COUNT_MAX]; extern ecscomponent_t MESH_RENDERER_COMPONENT; #define meshRendererAdd(id) \ ((meshrenderer_t*)ecsComponentDataAdd(&MESH_RENDERER_COMPONENT, id)) #define meshRendererGet(id) \ ((meshrenderer_t*)ecsComponentDataGet(&MESH_RENDERER_COMPONENT, id)) #define meshRendererHas(id) \ (ecsComponentDataHas(&MESH_RENDERER_COMPONENT, id)) #define meshRendererRemove(id) \ ecsComponentDataRemove(&MESH_RENDERER_COMPONENT, id) #define meshRendererGetAll(out) \ ecsComponentGetAll(&MESH_RENDERER_COMPONENT, out) /** * Draw the mesh for the given entity. * * @param id The ID of the entity with the mesh renderer component. */ void meshRendererDraw(const ecsid_t id);