Chrysalis - Renderer
Toggle main menu visibility
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
8
namespace
Chrysalis
{
9
template
<
typename
D>
10
class
BaseAnimatedRenderer
:
public
BaseRenderer
<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;
30
BaseRenderer<D>::upload
();
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
BaseRenderer.h
Chrysalis::BaseAnimatedRenderer::complete
void complete()
Definition
BaseAnimatedRenderer.h:14
Chrysalis::BaseAnimatedRenderer::BaseAnimatedRenderer
BaseAnimatedRenderer(D *data)
Definition
BaseAnimatedRenderer.h:12
Chrysalis::BaseAnimatedRenderer::animate
bool animate()
Definition
BaseAnimatedRenderer.h:19
Chrysalis::BaseAnimatedRenderer::prepareNextFrame
virtual void prepareNextFrame(int64_t startTime, int64_t previousFrameTime, int64_t currentFrameTime)=0
Chrysalis::BaseRenderer::BaseRenderer
BaseRenderer(D *data)
Definition
BaseRenderer.h:16
Chrysalis::BaseRenderer::upload
void upload()
Definition
BaseRenderer.h:24
Chrysalis
Definition
Area.h:4
renderer
include
BaseAnimatedRenderer.h
Generated by
1.17.0