You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
1.4 KiB
94 lines
1.4 KiB
|
|
#include <cassert> |
|
|
|
#include <glm/gtc/matrix_transform.hpp> |
|
|
|
#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)); |
|
} |
|
|
|
|