4#include "flint/math/types.h"
22 inline void buildModelMatrix(
float out[16],
const Vec2f &position,
const Vec2f &size,
23 float rotation,
const Vec2f &origin) {
24 for (
int i = 0; i < 16; ++i) {
25 out[i] = (i % 5 == 0) ? 1.0f : 0.0f;
28 float cosA = std::cos(rotation);
29 float sinA = std::sin(rotation);
31 float tx = position.x - origin.x;
32 float ty = position.y - origin.y;
41 if (rotation == 0.0f) {
45 out[12] = position.x + origin.x - (cosA * origin.x - sinA * origin.y);
46 out[13] = position.y + origin.y - (sinA * origin.x + cosA * origin.y);
60 inline void buildProjectionMatrix(
float out[16],
const FloatRect &cameraView) {
61 for (
int i = 0; i < 16; ++i) {
62 out[i] = (i % 5 == 0) ? 1.0f : 0.0f;
64 out[0] = 2.0f / cameraView.size.x;
65 out[5] = 2.0f / cameraView.size.y;
66 out[12] = -(2.0f * cameraView.position.x + cameraView.size.x) / cameraView.size.x;
67 out[13] = -(2.0f * cameraView.position.y + cameraView.size.y) / cameraView.size.y;