LibD/src/Sprite/Sprite.h

48 lines
1.5 KiB
C++

#pragma once
#include <string>
#include <cstdarg>
#include "../System/String.h"
#include "../Math/Vec2.h"
#include "../Math/Rect.h"
class Texture;
class Sprite {
public:
Sprite();
virtual ~Sprite();
virtual void Update(float dt);
virtual void Draw() const;
virtual void Draw(float x, float y);
virtual void DrawRegion(const Rect& src) const;
virtual bool LoadSprite(const std::string& filename);
const Vec2& GetPosition() const { return position; }
float GetX(void) { return position.x; }
float GetY(void) { return position.y; }
const Vec2& GetSize() const { return size; }
float GetWidth() { return size.x; }
float GetHeight() { return size.y; }
const Vec2& GetScale() const { return scale; }
float GetRotation() const { return rotation; }
Texture* GetTexture() { return texture; }
const Texture* GetTexture() const { return texture; }
void SetPosition(const Vec2& position) { this->position = position; }
void SetX(float xArg) { this->position.x = xArg; }
void SetY(float yArg) { this->position.y = yArg; }
void SetScale(const Vec2& scale) { this->scale = scale; }
void SetRotation(float rotation) { this->rotation = rotation; }
void SetTexture(Texture* texture);
protected:
Vec2 position;
Vec2 size;
Vec2 scale;
float rotation;
Texture* texture;
};