made animations extremely precise
parent
01d89bfc66
commit
6e35a531c7
|
@ -86,10 +86,10 @@ void Player::addWeapon(std::shared_ptr<Weapon> weapon) {
|
|||
_weapons.back()->setReloadCallBack([this]() {
|
||||
Timeline::animate(AnimationListTag("reload_weapon"),
|
||||
std::make_shared<ARotateLeft>(_weapons[_selectedWeapon],
|
||||
10 * Consts::PI,
|
||||
4 * Consts::PI,
|
||||
_weapons[_selectedWeapon]->reloadTime()/2,
|
||||
Animation::LoopOut::None,
|
||||
Animation::InterpolationType::Linear));
|
||||
Animation::InterpolationType::Cos));
|
||||
});
|
||||
|
||||
// add call back function to create fire traces
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "engine/animation/ARotateRelativePoint.h"
|
||||
#include "engine/animation/ATranslateToPoint.h"
|
||||
#include "engine/animation/AWait.h"
|
||||
#include "engine/animation/ATranslate.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
|
|
@ -17,18 +17,6 @@ bool Animation::updateState() {
|
|||
// linear normalized time:
|
||||
_dtime = Time::deltaTime() / _duration;
|
||||
|
||||
if(_time + _dtime < 1.0) {
|
||||
_time += _dtime;
|
||||
} else {
|
||||
_dtime = 1.0 - _time;
|
||||
_time = 1.0 - _dtime;
|
||||
_finished = true;
|
||||
}
|
||||
|
||||
if (_looped == LoopOut::Continue && _time > 0.5) {
|
||||
_time = 0.5;
|
||||
}
|
||||
|
||||
switch (_intType) {
|
||||
case InterpolationType::Bezier:
|
||||
_progress = Interpolation::Bezier(Consts::BEZIER[0], Consts::BEZIER[1], _time);
|
||||
|
@ -51,6 +39,22 @@ bool Animation::updateState() {
|
|||
"Animation::updateState: unknown interpolation type " + std::to_string(static_cast<int>(_intType))};
|
||||
}
|
||||
|
||||
if(_time + _dtime < 1.0) {
|
||||
_time += _dtime;
|
||||
} else {
|
||||
_dtime = 1.0 - _time;
|
||||
_time = 1.0;
|
||||
_dprogress = 1 - _progress;
|
||||
_progress = 1.0;
|
||||
update();
|
||||
_finished = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_looped == LoopOut::Continue && _time > 0.5) {
|
||||
_time = 0.5;
|
||||
}
|
||||
|
||||
update();
|
||||
|
||||
return !_finished;
|
||||
|
|
|
@ -20,7 +20,6 @@ public:
|
|||
};
|
||||
enum class LoopOut {
|
||||
None,
|
||||
Cycle,
|
||||
Continue
|
||||
};
|
||||
private:
|
||||
|
|
Loading…
Reference in New Issue