Chrysalis - Renderer
Loading...
Searching...
No Matches
BaseAnimatedRenderer.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_BASEANIMATEDRENDERER_H
2#define CHRYSALIS_BASEANIMATEDRENDERER_H
3
4#include <chrono>
5
6#include "BaseRenderer.h"
7
8namespace Chrysalis {
9 template<typename D>
11 protected:
12 explicit BaseAnimatedRenderer(D* data): BaseRenderer<D>(data) {}
13
14 void complete() {
15 isCompleted_ = true;
16 }
17 virtual void prepareNextFrame(int64_t startTime, int64_t previousFrameTime, int64_t currentFrameTime) = 0;
18 public:
19 bool animate() {
20 const auto now = clock::now();
21 const int64_t currentTime = std::chrono::duration_cast<std::chrono::milliseconds>(now.time_since_epoch()).count();
22
23 if (isCompleted_) {
24 startTime_ = currentTime;
25 isCompleted_ = false;
26 time_ = currentTime;
27 }
28 prepareNextFrame(startTime_, time_, currentTime);
29 time_ = currentTime;
31 return !isCompleted_;
32 }
33 private:
34 using clock = std::chrono::steady_clock;
35
36 int64_t time_ = 0;
37 int64_t startTime_ = 0;
38 bool isCompleted_ = true;
39 };
40}
41
42#endif //CHRYSALIS_BASEANIMATEDRENDERER_H
void complete()
Definition BaseAnimatedRenderer.h:14
BaseAnimatedRenderer(D *data)
Definition BaseAnimatedRenderer.h:12
bool animate()
Definition BaseAnimatedRenderer.h:19
virtual void prepareNextFrame(int64_t startTime, int64_t previousFrameTime, int64_t currentFrameTime)=0
BaseRenderer(D *data)
Definition BaseRenderer.h:16
void upload()
Definition BaseRenderer.h:24
Definition Area.h:4