Gamedev Framework (gf) 1.2.0
A C++17 framework for 2D games
Animation.h
1/*
2 * Gamedev Framework (gf)
3 * Copyright (C) 2016-2022 Julien Bernard
4 *
5 * This software is provided 'as-is', without any express or implied
6 * warranty. In no event will the authors be held liable for any damages
7 * arising from the use of this software.
8 *
9 * Permission is granted to anyone to use this software for any purpose,
10 * including commercial applications, and to alter it and redistribute it
11 * freely, subject to the following restrictions:
12 *
13 * 1. The origin of this software must not be misrepresented; you must not
14 * claim that you wrote the original software. If you use this software
15 * in a product, an acknowledgment in the product documentation would be
16 * appreciated but is not required.
17 * 2. Altered source versions must be plainly marked as such, and must not be
18 * misrepresented as being the original software.
19 * 3. This notice may not be removed or altered from any source distribution.
20 */
21#ifndef GF_ANIMATION_H
22#define GF_ANIMATION_H
23
24#include <cstddef>
25#include <vector>
26
27#include "GraphicsApi.h"
28#include "Rect.h"
29#include "Time.h"
30
31namespace gf {
32#ifndef DOXYGEN_SHOULD_SKIP_THIS
33inline namespace v1 {
34#endif
35
36 class Texture;
37
49 class GF_GRAPHICS_API Animation {
50 public:
55
66 void addFrame(const Texture& texture, const RectF& bounds, Time duration);
67
80 void addTileset(const Texture& texture, Vector2i layout, Time duration, int frameCount, int frameOffset = 0);
81
87 void setLoop(bool enabled);
88
95 const Texture& getCurrentTexture() const;
96
104
111 bool update(Time time);
112
116 void reset();
117
121 bool isFinished() const;
122
123 private:
124 struct Frame {
125 const Texture *texture;
126 RectF bounds;
127 Time duration;
128 };
129
130 std::size_t m_currentFrame;
131 Time m_currentDurationInFrame;
132 std::vector<Frame> m_frames;
133 bool m_loop;
134 };
135
136#ifndef DOXYGEN_SHOULD_SKIP_THIS
137}
138#endif
139}
140
141#endif // GF_ANIMATION_H
An animation.
Definition: Animation.h:49
Animation()
Default constructor.
void addTileset(const Texture &texture, Vector2i layout, Time duration, int frameCount, int frameOffset=0)
Add a entire tileset to the animation.
RectF getCurrentBounds() const
Get the current texture rectangle.
bool update(Time time)
Update the state of the animation.
bool isFinished() const
Tell if the animation is finished.
const Texture & getCurrentTexture() const
Get the current texture.
void setLoop(bool enabled)
Enable or disable the animation loop.
void addFrame(const Texture &texture, const RectF &bounds, Time duration)
Add a frame to the animation.
void reset()
Reset the animation.
A texture for colored images.
Definition: Texture.h:313
Represents a time value.
Definition: Time.h:65
@ Texture
A GPU texture.
The namespace for gf classes.