xcal
基于 C++23 的现代图形渲染引擎
载入中...
搜索中...
未找到
animationdriver.hpp
浏览该文件的文档.
1
11#pragma once
12#include <xcal/public.h>
13
14#include <cstddef>
16
17namespace xcal::animation {
19 private:
20 const AnimationHandle* handle_;
21 const float_t frame_rate_;
22 size_t current_frame_index_{0};
23
24 public:
26 : handle_(handle), frame_rate_(frame_rate) {}
27
28 public:
29 ~AnimationDriver() = default;
30
31 public:
32 bool finished() const { return current_frame_index_ >= frame_count(); }
33 bool playing() const { return !finished() && current_frame_index_; }
34 void next() {
35 if (finished()) return;
36 auto c = frame_count();
37 handle_->animation->update_to((float_t)(current_frame_index_++) /
38 (frame_count() - 1));
39 }
40 size_t frame_count() const { return handle_->duration * frame_rate_; }
41 AbsAnimation* animation() const { return handle_->animation; }
42 float_t start_time() const { return handle_->start_time; }
43 float_t end_time() const { return handle_->start_time + handle_->duration; }
44 float_t duration() const { return handle_->duration; }
45 float_t frame_rate() const { return frame_rate_; }
46 size_t current_frame_index() const { return current_frame_index_; }
47
48 public:
53};
54
55} // namespace xcal::animation
抽象动画基类
virtual void update_to(float_t time)=0
更新到指定时间点
AnimationDriver & operator=(const AnimationDriver &)=delete
AnimationDriver & operator=(AnimationDriver &&)=delete
AnimationDriver(AnimationHandle *handle, float_t frame_rate)
AnimationDriver(const AnimationDriver &)=delete
AnimationDriver(AnimationDriver &&)=delete
float float_t
Definition public.h:27
#define XCAL_API
Definition public.h:69