#pragma once #include #include #include "mesh.h" #include "render_group.h" struct ent_grid_position { int q; int r; int s; }; struct Entity { glm::mat4 world_transform; glm::vec3 scale; glm::vec3 translation; glm::vec4 rotation; bool use_grid; // NOTE: determines if entity is position with grid_pos or translation ent_grid_position grid_pos; meMeshGroup mesh_group; render_group* ren_group; char model_filename[256]; }; bool entInit(Entity& e, const char* data_dir, rg_shader_program& shader, v3f world_pos); void entFree(Entity& e); inline void entTranslate(Entity& e, glm::vec3 v) { e.world_transform = glm::translate(e.world_transform, v); } inline void entScale(Entity& e, glm::vec3 v) { e.world_transform = glm::scale(e.world_transform, v); }