aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/sprite.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/graphics/sprite.h')
-rw-r--r--src/libjin/graphics/sprite.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/libjin/graphics/sprite.h b/src/libjin/graphics/sprite.h
new file mode 100644
index 0000000..2acebe0
--- /dev/null
+++ b/src/libjin/graphics/sprite.h
@@ -0,0 +1,55 @@
+#ifndef __JE_SPRITE_H__
+#define __JE_SPRITE_H__
+
+#include "../common/types.h"
+#include "../math/vector2.hpp"
+
+#include "color.h"
+#include "graphic.h"
+#include "renderable.h"
+
+namespace JinEngine
+{
+ namespace Graphics
+ {
+
+ ///
+ /// A sprite is unit of rendering. Animation is based on sprite, but not texture or other graphic stuff.
+ ///
+ class Sprite : public Object, public Renderable
+ {
+ public:
+
+ Sprite(const Graphic* graphic, const Math::Quad& quad, Origin origin);
+
+ Sprite(const Graphic* graphic, const Math::Quad& quad, float ox, float oy);
+
+ Sprite(const Graphic* graphic, Origin origin);
+
+ Sprite(const Graphic* graphic, float ox, float oy);
+
+ virtual ~Sprite();
+
+ Math::Vector2<int> getSize();
+
+ void render(float x, float y, float sx, float sy, float r) const override;
+
+ private:
+
+ void setOrigin(Origin origin);
+
+ const Math::Vector2<float> mOrigin;
+
+ ///
+ /// Quad of graphic.
+ ///
+ const Math::Quad mQuad;
+
+ const Graphic* mGraphic;
+
+ };
+
+ } // namespace Graphics
+} // namespace JinEngine
+
+#endif \ No newline at end of file