aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/util/AbsolutePosition.cpp
blob: 29ade233b1f3e372088dee98568168997af5cb4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "AbsolutePosition.h"

using namespace crepe;

vec2 AbsolutePosition::get_position(const Transform & transform, const vec2 & offset) {
	// Get the rotation in radians
	float radians1 = transform.rotation * (M_PI / 180.0);

	// Calculate total offset with scale
	vec2 total_offset = offset * transform.scale;

	// Rotate
	float rotated_total_offset_x1
		= total_offset.x * cos(radians1) - total_offset.y * sin(radians1);
	float rotated_total_offset_y1
		= total_offset.x * sin(radians1) + total_offset.y * cos(radians1);

	// Final positions considering scaling and rotation
	return (transform.position + vec2(rotated_total_offset_x1, rotated_total_offset_y1));
}