aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/je_sprite.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-11-13 21:33:25 +0800
committerchai <chaifix@163.com>2018-11-13 21:33:25 +0800
commitd2058dce75ceb67f27c50e9f27d755a4d30c9003 (patch)
tree7575e4b15b637511705632c276f244159841e375 /src/libjin/Graphics/je_sprite.cpp
parent75792c15480d3d99b2ba7e79e143e4b569b22611 (diff)
*修改渲染模块
Diffstat (limited to 'src/libjin/Graphics/je_sprite.cpp')
-rw-r--r--src/libjin/Graphics/je_sprite.cpp72
1 files changed, 62 insertions, 10 deletions
diff --git a/src/libjin/Graphics/je_sprite.cpp b/src/libjin/Graphics/je_sprite.cpp
index 4ef32a4..9ee4fc1 100644
--- a/src/libjin/Graphics/je_sprite.cpp
+++ b/src/libjin/Graphics/je_sprite.cpp
@@ -12,6 +12,12 @@ namespace JinEngine
Sprite::Sprite()
: mShader(nullptr)
, mGraphic(nullptr)
+ , mScale(1, 1)
+ , mColor(255, 255, 255, 255)
+ {
+ }
+
+ Sprite::~Sprite()
{
}
@@ -22,37 +28,81 @@ namespace JinEngine
void Sprite::setOrigin(Origin origin)
{
-
+ int l = 0, r = 0, t = 0, b = 0;
+ if (mGraphic != nullptr)
+ {
+ r = mGraphic->getWidth();
+ b = mGraphic->getHeight();
+ }
+ switch (origin)
+ {
+ case TopLeft:
+ mOrigin.x = l;
+ mOrigin.y = t;
+ break;
+ case TopCenter:
+ mOrigin.x = r/2.f;
+ mOrigin.y = t;
+ break;
+ case TopRight:
+ mOrigin.x = r;
+ mOrigin.y = t;
+ break;
+ case MiddleLeft:
+ mOrigin.x = l;
+ mOrigin.y = b/2.f;
+ break;
+ case MiddleCenter:
+ mOrigin.x = r/2.f;
+ mOrigin.y = b/2.f;
+ break;
+ case MiddleRight:
+ mOrigin.x = r;
+ mOrigin.y = b/2.f;
+ break;
+ case BottomLeft:
+ mOrigin.x = l;
+ mOrigin.y = b;
+ break;
+ case BottomCenter:
+ mOrigin.x = r/2.f;
+ mOrigin.y = b;
+ break;
+ case BottomRight:
+ mOrigin.x = r;
+ mOrigin.y = b;
+ break;
+ }
}
void Sprite::setOrigin(int x, int y)
{
-
+ mOrigin.set(x, y);
}
void Sprite::setPosition(int x, int y)
{
-
+ mPosition.set(x, y);
}
void Sprite::setScale(float x, float y)
{
-
+ mScale.set(x, y);
}
void Sprite::setColor(Color color)
{
-
+ mColor = color;
}
- void Sprite::setShader(const Shader* shader)
+ void Sprite::setShader(Shader* shader)
{
-
+ mShader = shader;
}
void Sprite::setGraphic(const Graphic* graphic)
{
-
+ mGraphic = graphic;
}
void Sprite::render()
@@ -60,8 +110,10 @@ namespace JinEngine
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);
+ if(mShader != nullptr)
+ mShader->use();
+ if(mGraphic != nullptr)
+ mGraphic->render(mPosition.x, mPosition.y, mScale.x, mScale.y, mRotation, mOrigin.x, mOrigin.y);
shader->use();
gl.setColor(c);
}