アニメーションという概念を成立させるシステムというものが今まで全くわからなかったけど、最近になって「もしかしてこうすればいけるんじゃね?」と思ったので適当にメモする
何も参考にしてないし実装してみたわけでもない

  • 例えばqueueにアニメーションのオブジェクトを

  • 必要なのはアニメーションの時間(秒数かな)

  • アニメーションの進行度を0~1で保持する

  • アニメーション進行度をもとに位置とか色とか透明度とか諸々を計算する??

擬似コード

Animator.new(1000 /* ms */, Ease::InOut, [](double t){
  // 1秒かけてx座標が30動く
  this->x += 30 * t;
});
// Ease::InOutはきっと経過時間とアニメーションの時間を入れたらいい感じに0 ~ 1を返してくれる
 
void update() {
  this->Animator.update();
}
 
void Animator::update() {
  for (auto& animation : this->animation_list) {
     animation.tick();
  }
}

よくわからなくなってきた
もうちょい具体的な例がほしいな

  • アニメーションが複数あるときは?
    • 1秒かけて右に100直線移動するアニメーションが始まって0.5秒後に、0.5秒かけて左に50直線移動するアニメーションが始まった時
      • base_posとdraw_posがある?