mirror of
https://github.com/Relintai/sfw.git
synced 2024-12-20 21:06:49 +01:00
62 lines
1.2 KiB
C++
62 lines
1.2 KiB
C++
#include "sprite.h"
|
|
|
|
void Sprite::render() {
|
|
mesh_instance->position.x = position.x;
|
|
mesh_instance->position.y = position.y;
|
|
|
|
mesh_instance->rotation.z = rotation;
|
|
|
|
mesh_instance->scale.x = scale.x;
|
|
mesh_instance->scale.y = scale.y;
|
|
|
|
mesh_instance->render();
|
|
}
|
|
|
|
void Sprite::update_mesh() {
|
|
Mesh *mesh = mesh_instance->mesh;
|
|
|
|
mesh->clear();
|
|
|
|
float w2 = width / 2.0;
|
|
float h2 = height / 2.0;
|
|
|
|
mesh->add_uv(region_x, region_y);
|
|
mesh->add_vertex2(-w2, h2);
|
|
|
|
mesh->add_uv(region_x + region_width, region_y + region_height);
|
|
mesh->add_vertex2(w2, -h2);
|
|
|
|
mesh->add_uv(region_x, region_y + region_height);
|
|
mesh->add_vertex2(-w2, -h2);
|
|
|
|
mesh->add_uv(region_x + region_width, region_y);
|
|
mesh->add_vertex2(w2, h2);
|
|
|
|
mesh->add_triangle(1, 0, 2);
|
|
mesh->add_triangle(0, 1, 3);
|
|
|
|
mesh->upload();
|
|
}
|
|
|
|
Sprite::Sprite() : Object2D() {
|
|
mesh_instance = new MeshInstance();
|
|
mesh_instance->mesh = new Mesh(2);
|
|
|
|
width = 1;
|
|
height = 1;
|
|
|
|
region_x = 0;
|
|
region_y = 0;
|
|
region_width = 1;
|
|
region_height = 1;
|
|
}
|
|
|
|
Sprite::~Sprite() {
|
|
delete mesh_instance->mesh;
|
|
delete mesh_instance;
|
|
}
|
|
|
|
|
|
|
|
|