Gamedev Framework (gf) 0.21.0
A C++17 framework for 2D games
Animation.h
1/*
2 * Gamedev Framework (gf)
3 * Copyright (C) 2016-2021 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
118 private:
119 struct Frame {
120 const Texture *texture;
121 RectF bounds;
122 Time duration;
123 };
124
125 std::size_t m_currentFrame;
126 Time m_currentDurationInFrame;
127 std::vector<Frame> m_frames;
128 bool m_loop;
129 };
130
131#ifndef DOXYGEN_SHOULD_SKIP_THIS
132}
133#endif
134}
135
136#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.
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.
Definition: Action.h:35