aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Graphics')
-rw-r--r--src/libjin/Graphics/je_gl.cpp18
-rw-r--r--src/libjin/Graphics/je_gl.h10
-rw-r--r--src/libjin/Graphics/je_sprite.cpp63
-rw-r--r--src/libjin/Graphics/je_sprite.h34
4 files changed, 106 insertions, 19 deletions
diff --git a/src/libjin/Graphics/je_gl.cpp b/src/libjin/Graphics/je_gl.cpp
index 9ef1460..f72ce37 100644
--- a/src/libjin/Graphics/je_gl.cpp
+++ b/src/libjin/Graphics/je_gl.cpp
@@ -1,5 +1,6 @@
#define OGL2D_IMPLEMENT
#include "je_gl.h"
+#include "je_color.h"
namespace JinEngine
{
@@ -8,5 +9,22 @@ namespace JinEngine
OpenGL gl;
+ void OpenGL::setColor(Channel r, Channel g, Channel b, Channel a)
+ {
+ setColor(Color(r, g, b, a));
+ }
+
+ void OpenGL::setColor(Color c)
+ {
+ mCurrentColor = c;
+ glColor4f(c.r / 255.f, c.g / 255.f, c.b / 255.f, c.a / 255.f);
+ }
+
+ Color OpenGL::getColor()
+ {
+ return mCurrentColor;
+ }
+
+
} // namespace Graphics
} // namespace JinEngine
diff --git a/src/libjin/Graphics/je_gl.h b/src/libjin/Graphics/je_gl.h
index 48dccc2..331d899 100644
--- a/src/libjin/Graphics/je_gl.h
+++ b/src/libjin/Graphics/je_gl.h
@@ -3,6 +3,7 @@
#include "../math/je_matrix.h"
+#include "je_color.h"
#include "GLee/GLee.h"
#include "ogl/OpenGL.h"
@@ -31,6 +32,15 @@ namespace JinEngine
{
}
+ void setColor(Channel r, Channel g, Channel b, Channel a);
+
+ void setColor(Color c);
+
+ Color getColor();
+
+ private:
+ Color mCurrentColor;
+
};
extern OpenGL gl;
diff --git a/src/libjin/Graphics/je_sprite.cpp b/src/libjin/Graphics/je_sprite.cpp
index 4d4fa12..4ef32a4 100644
--- a/src/libjin/Graphics/je_sprite.cpp
+++ b/src/libjin/Graphics/je_sprite.cpp
@@ -1,16 +1,69 @@
+#include "shaders/je_shader.h"
+
#include "je_sprite.h"
+using namespace JinEngine::Graphics::Shaders;
+
namespace JinEngine
{
namespace Graphics
{
- void Sprite::onRender()
+ Sprite::Sprite()
+ : mShader(nullptr)
+ , mGraphic(nullptr)
+ {
+ }
+
+ void Sprite::setRotation(float r)
+ {
+ mRotation = r;
+ }
+
+ void Sprite::setOrigin(Origin origin)
+ {
+
+ }
+
+ void Sprite::setOrigin(int x, int y)
+ {
+
+ }
+
+ void Sprite::setPosition(int x, int y)
+ {
+
+ }
+
+ void Sprite::setScale(float x, float y)
+ {
+
+ }
+
+ void Sprite::setColor(Color color)
+ {
+
+ }
+
+ void Sprite::setShader(const Shader* shader)
+ {
+
+ }
+
+ void Sprite::setGraphic(const Graphic* graphic)
+ {
+
+ }
+
+ void Sprite::render()
{
- if (mShader != nullptr)
- mShader->use();
-
- mShader->unuse();
+ Shader* shader = Shader::getCurrentShader();
+ Color c = gl.getColor();
+ gl.setColor(mColor);
+ mShader->use();
+ mGraphic->render(mPosition.x, mPosition.y, mScale.x, mScale.y, mRotation, mOrigin.x, mOrigin.y);
+ shader->use();
+ gl.setColor(c);
}
} // namespace Graphics
diff --git a/src/libjin/Graphics/je_sprite.h b/src/libjin/Graphics/je_sprite.h
index 76ef30a..4fb7ebf 100644
--- a/src/libjin/Graphics/je_sprite.h
+++ b/src/libjin/Graphics/je_sprite.h
@@ -11,19 +11,6 @@ namespace JinEngine
{
namespace Graphics
{
- /** Determines position of the sprite in its bounds. */
- enum SpriteAnchor
- {
- SA_TopLeft,
- SA_TopCenter,
- SA_TopRight,
- SA_MiddleLeft,
- SA_MiddleCenter,
- SA_MiddleRight,
- SA_BottomLeft,
- SA_BottomCenter,
- SA_BottomRight
- };
///
/// A sprite is unit of rendering. Animation is based on sprite, but not texture or other graphic stuff.
@@ -31,6 +18,24 @@ namespace JinEngine
class Sprite
{
public:
+ Sprite();
+ virtual ~Sprite();
+
+ enum Origin
+ {
+ TopLeft,
+ TopCenter,
+ TopRight,
+ MiddleLeft,
+ MiddleCenter,
+ MiddleRight,
+ BottomLeft,
+ BottomCenter,
+ BottomRight
+ };
+
+ void setRotation(float r);
+ void setOrigin(Origin origin);
void setOrigin(int x, int y);
void setPosition(int x, int y);
void setScale(float x, float y);
@@ -41,7 +46,7 @@ namespace JinEngine
///
/// Render callback.
///
- virtual void onRender();
+ virtual void render();
private:
///
@@ -50,6 +55,7 @@ namespace JinEngine
Math::Vector2<float> mPosition;
Math::Vector2<int> mOrigin;
Math::Vector2<float> mScale;
+ float mRotation;
Color mColor;
Shaders::Shader* mShader;
Graphic* mGraphic;