animate northing

This commit is contained in:
Konstantin Käfer
2014-01-17 13:33:39 +01:00
parent fc8a0d00ac
commit 509b223fbf
10 changed files with 222 additions and 10 deletions

View File

@@ -1,5 +1,4 @@
#include <llmr/map/transform.hpp>
#include <llmr/util/mat4.h>
#include <llmr/util/math.hpp>
#include <cmath>
@@ -29,6 +28,16 @@ transform::transform()
setAngle(angle);
}
bool transform::needsAnimation() const {
return !animations.empty();
}
void transform::updateAnimations() {
animations.remove_if([](const util::animation& animation) {
return animation.update() == util::animation::complete;
});
}
void transform::moveBy(double dx, double dy) {
x += cos(angle) * dx + sin(angle) * dy;
y += cos(angle) * dy + sin(-angle) * dx;
@@ -82,10 +91,15 @@ void transform::rotateBy(double anchor_x, double anchor_y, double start_x, doubl
setAngle(ang);
}
void transform::setAngle(double new_angle) {
angle = new_angle;
while (angle > M_PI) angle -= M2PI;
while (angle <= -M_PI) angle += M2PI;
void transform::setAngle(double new_angle, double duration) {
while (new_angle > M_PI) new_angle -= M2PI;
while (new_angle <= -M_PI) new_angle += M2PI;
if (duration == 0) {
angle = new_angle;
} else {
animations.emplace_front(angle, new_angle, angle, duration);
}
}
void transform::setScale(double new_scale) {