aboutsummaryrefslogtreecommitdiff
#include "renderer.h"

Mat4 Entity_GetModelTransform(Entity* entity)
{
    Mat4 temp;
    Mat4 rotation = mat4_rotate_x(entity->rotX);
    temp = mat4_rotate_y(entity->rotY);
    rotation = mat4_mul(&rotation, &temp);
    temp = mat4_rotate_z(entity->rotZ);
    rotation = mat4_mul(&rotation, &temp);

    temp = mat4_translate(&entity->position);

    Mat4 modelTransform = mat4_mul(&temp, &rotation);
    temp = mat4_scale(entity->scale[0], entity->scale[1], entity->scale[2]);
    modelTransform = mat4_mul(&modelTransform, &temp);

    return modelTransform;
}

Vec2 Entity_GetTexOffset(Entity *entity)
{
    /* Offset inside a texture atlas should default to (0, 0)*/
    Vec2 tex_offset;
    Texture *t = entity->texture;

    int column = entity->index % t->number_of_rows;
    int row = entity->index / t->number_of_rows;
    tex_offset.x = (float)column / t->number_of_rows;
    tex_offset.y = (float)row / t->number_of_rows;

    return tex_offset;
}