#include #include #include "dumbLog.h" #include "entity.h" #include "util.h" // forward declarations void initDefaults(entity& e); // interface #if 0 bool entInitModel(entity& e, const char* model_path) { initDefaults(e); if (meLoadFromFile(e.meshes, model_path)) { e.render_objs = roInitModel(e.meshes); if (e.render_objs != nullptr) return true; } entFree(e); return false; } #endif bool entInitModel(entity* e, model* mdl) { e->render_objs = roInitModel(mdl); e->world_transform = glm::mat4(1); e->model_id = mdl->filepath_hash; if (e->render_objs == nullptr) { entFree(e); return false; } return true; } void entFree(entity* e) { roFree(e->render_objs); e->render_objs = nullptr; } void entSetWorldPosition(entity& e, glm::vec3 v) { e.world_transform[3][0] = v.x; e.world_transform[3][1] = v.y; e.world_transform[3][2] = v.z; } void entTranslate(entity& e, glm::vec3 v) { e.world_transform = glm::translate(e.world_transform, v); } void entScale(entity& e, glm::vec3 v) { e.world_transform = glm::scale(e.world_transform, v); } void entRotate(entity*& e, float angle, glm::vec3 axis) { e->world_transform = glm::rotate(e->world_transform, angle, axis); } // internal void initDefaults(entity& e) { e.world_transform = glm::mat4(1.0); entScale(e, glm::vec3(1.0)); entSetWorldPosition(e, glm::vec3(0, 0, 0)); }