载入中...
搜索中...
未找到
AnimPlayer.h
浏览该文件的文档.
1#pragma once
2
4
5namespace eve::animation {
6
7class AnimClip;
8class AnimSkeleton;
9
15public:
16 explicit AnimPlayer(AnimSkeleton *skeleton);
17 ~AnimPlayer() = default;
18
19 AnimPlayer(const AnimPlayer &) = delete;
20 AnimPlayer &operator=(const AnimPlayer &) = delete;
21
22 AnimSkeleton *getSkeleton() const { return skeleton_; }
23
24 void play(AnimClip *clip);
26 void crossFade(AnimClip *clip, float blendSeconds);
27
28 void stop();
29 void pause();
30 void resume();
31
32 void setSpeed(float speed);
33 float getSpeed() const { return speed_; }
34 void setTime(float seconds);
35 float getTime() const { return time_; }
36 void setLoop(bool loop) { loopOverride_ = loop; hasLoopOverride_ = true; }
37 bool getLoop() const;
38
39 bool isPlaying() const { return playing_ && clip_ != nullptr; }
40 bool isPaused() const { return paused_; }
41
42 AnimClip *getClip() const { return clip_; }
44
46 void update(float dt);
47
48private:
49 bool effectiveLoop() const;
50
51 AnimSkeleton *skeleton_ = nullptr;
52 AnimClip *clip_ = nullptr;
53 AnimClip *prevClip_ = nullptr;
54 AnimPose pose_;
55 AnimPose prevPose_;
56 float time_ = 0.f;
57 float prevTime_ = 0.f;
58 float speed_ = 1.f;
59 float blendDuration_ = 0.f;
60 float blendElapsed_ = 0.f;
61 bool blending_ = false;
62 bool playing_ = false;
63 bool paused_ = false;
64 bool hasLoopOverride_ = false;
65 bool loopOverride_ = true;
66};
67
68} // namespace eve::animation
Keyframed skeletal animation clip (local TRS tracks per bone). Script type: AnimClip.
Definition AnimClip.h:17
Single-clip (or cross-fading) 3D animation player. Script type: AnimPlayer.
Definition AnimPlayer.h:14
void setSpeed(float speed)
void setTime(float seconds)
AnimPlayer(const AnimPlayer &)=delete
void setLoop(bool loop)
Definition AnimPlayer.h:36
void update(float dt)
Advance playback and sample into internal pose.
void crossFade(AnimClip *clip, float blendSeconds)
Cross-fade to clip over blendSeconds (keeps sampling previous until done).
AnimSkeleton * getSkeleton() const
Definition AnimPlayer.h:22
AnimPlayer & operator=(const AnimPlayer &)=delete
AnimClip * getClip() const
Definition AnimPlayer.h:42
void play(AnimClip *clip)
Evaluated local (and optional world) pose for an AnimSkeleton. Script type: AnimPose.
Definition AnimPose.h:15
3D bone hierarchy + bind-pose local TRS for skeletal animation. Independent of ik::Skeleton3D (FABRIK...