fencer/core/src/transformable.c
2023-11-20 12:04:55 +01:00

42 lines
1.3 KiB
C

#include "transformable.h"
#include "transform.h"
Vector transformable_get_position(Transformable self) {
return self.tc->get_transform(self.data)->position;
}
void transformable_set_position(Transformable self, Vector position) {
self.tc->get_transform(self.data)->position = position;
}
void transformable_move(Transformable self, Vector delta) {
Vector* position = &self.tc->get_transform(self.data)->position;
*position = vaddf(*position, delta);
}
Vector transformable_get_scale(Transformable self) {
return self.tc->get_transform(self.data)->scale;
}
void transformable_set_scale(Transformable self, Vector scale) {
self.tc->get_transform(self.data)->scale = scale;
}
void transformable_scale(Transformable self, Vector factor) {
Vector* scale = &self.tc->get_transform(self.data)->scale;
*scale = vmulf(*scale, factor);
}
float transformable_get_rotation(Transformable self) {
return self.tc->get_transform(self.data)->rotation;
}
void transformable_set_rotation(Transformable self, float rotation) {
self.tc->get_transform(self.data)->rotation = rotation;
}
void transformable_rotate(Transformable self, float delta) {
float* rotation = &self.tc->get_transform(self.data)->rotation;
*rotation = *rotation + delta;
}