diff options
Diffstat (limited to 'src/libjin/Graphics')
-rw-r--r-- | src/libjin/Graphics/je_gl.cpp | 18 | ||||
-rw-r--r-- | src/libjin/Graphics/je_gl.h | 10 | ||||
-rw-r--r-- | src/libjin/Graphics/je_sprite.cpp | 63 | ||||
-rw-r--r-- | src/libjin/Graphics/je_sprite.h | 34 |
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; |