VisuTwin Canvas
C++ 3D Engine — Metal Backend
Loading...
Searching...
No Matches
animClip.cpp
Go to the documentation of this file.
1
// SPDX-License-Identifier: Apache-2.0
2
// Copyright 2025-2026 Arnis Lektauers
3
#include "
animClip.h
"
4
5
#include <algorithm>
6
7
namespace
visutwin::canvas
8
{
9
AnimClip::AnimClip
(
const
std::shared_ptr<AnimTrack>&
track
,
const
float
time
,
const
float
speed
,
10
const
bool
playing
,
const
bool
loop
)
11
: _track(
track
), _time(
time
), _speed(
speed
), _playing(
playing
), _loop(
loop
)
12
{
13
}
14
15
void
AnimClip::reset
()
16
{
17
_time = 0.0f;
18
_playing =
true
;
19
}
20
21
void
AnimClip::pause
()
22
{
23
_playing =
false
;
24
}
25
26
void
AnimClip::resume
()
27
{
28
_playing =
true
;
29
}
30
31
void
AnimClip::stop
()
32
{
33
_playing =
false
;
34
_time = 0.0f;
35
}
36
37
void
AnimClip::update
(
const
float
dt)
38
{
39
if
(!_playing || !_track) {
40
return
;
41
}
42
43
_time += dt * _speed;
44
45
const
float
duration = _track->duration();
46
if
(duration <= 0.0f) {
47
_time = 0.0f;
48
return
;
49
}
50
51
if
(_loop) {
52
while
(_time > duration) {
53
_time -= duration;
54
}
55
while
(_time < 0.0f) {
56
_time += duration;
57
}
58
}
else
{
59
_time = std::clamp(_time, 0.0f, duration);
60
if
(_time == 0.0f || _time == duration) {
61
_playing =
false
;
62
}
63
}
64
}
65
66
void
AnimClip::eval
(std::unordered_map<std::string, AnimTransform>& transforms)
const
67
{
68
if
(!_track) {
69
return
;
70
}
71
72
_track->eval(_time, transforms);
73
}
74
}
animClip.h
visutwin::canvas::AnimClip::AnimClip
AnimClip(const std::shared_ptr< AnimTrack > &track, float time, float speed, bool playing, bool loop)
Definition
animClip.cpp:9
visutwin::canvas::AnimClip::resume
void resume()
Definition
animClip.cpp:26
visutwin::canvas::AnimClip::playing
bool playing() const
Definition
animClip.h:35
visutwin::canvas::AnimClip::update
void update(float dt)
Definition
animClip.cpp:37
visutwin::canvas::AnimClip::eval
void eval(std::unordered_map< std::string, AnimTransform > &transforms) const
Definition
animClip.cpp:66
visutwin::canvas::AnimClip::track
const std::shared_ptr< AnimTrack > & track() const
Definition
animClip.h:43
visutwin::canvas::AnimClip::stop
void stop()
Definition
animClip.cpp:31
visutwin::canvas::AnimClip::pause
void pause()
Definition
animClip.cpp:21
visutwin::canvas::AnimClip::reset
void reset()
Definition
animClip.cpp:15
visutwin::canvas::AnimClip::time
float time() const
Definition
animClip.h:26
visutwin::canvas::AnimClip::speed
float speed() const
Definition
animClip.h:29
visutwin::canvas::AnimClip::loop
bool loop() const
Definition
animClip.h:32
visutwin::canvas
Definition
eventHandler.cpp:9
framework
anim
evaluator
animClip.cpp
Generated by
1.16.1