AsloEngine/asloengine/headers/gameobject.hpp
2019-08-29 18:42:28 +02:00

76 lines
No EOL
2.7 KiB
C++
Executable file

#pragma once
#include <math.h>
#include <memory>
#include "aslosignals.hpp"
#include "helpers.hpp"
namespace asloengine
{
class GameObject
{
public:
sf::RenderWindow *render_window;
sf::String name = "nonameobject";
bool alive = true;
GameObject(sf::String _name);
virtual ~GameObject();
virtual void start(sf::RenderWindow *window);
virtual void update(float delta_time);
virtual void destroy();
static sf::Vector2f calculate_child_position(sf::Vector2f& offset, sf::Vector2f& scale, float rotation);
static sf::Vector2f calculate_child_position_centered(
sf::FloatRect& parent_rect, sf::FloatRect& child_rect, sf::Vector2f& offset, sf::Vector2f& scale, float rotation
);
virtual sf::View set_crop(sf::Vector2f _position, sf::Vector2f _size);
virtual sf::View set_crop(float _left, float _top, float _width, float _height);
// Main Property Getters and Setters
virtual void set_position(sf::Vector2f& _position);
virtual void set_scale(sf::Vector2f& _scale);
virtual void set_origin(sf::Vector2f& _origin);
virtual void set_rotation(float _rotation);
virtual void set_position(float _position_x, float _position_y);
virtual void set_scale(float _scale_x, float _scale_y);
virtual void set_origin(float _origin_x, float _origin_y);
virtual sf::Vector2f get_position() const;
virtual sf::Vector2f get_scale() const;
virtual sf::Vector2f get_origin() const;
virtual float get_rotation() const;
// Main Property Modifiers
virtual void move(sf::Vector2f& _move);
virtual void rescale(sf::Vector2f& _rescale);
virtual void translate_origin(sf::Vector2f& _translate_origin);
virtual void rotate(float _rotate);
virtual void move(float _move_x, float _move_y);
virtual void rescale(float _rescale_x, float _rescale_y);
virtual void translate_origin(float _translate_origin_x, float _translate_origin_y);
// Custom Derived Implementations
virtual void draw();
virtual void on_main_property_update();
virtual void on_start();
virtual void on_update(float delta_time);
virtual void on_post_update(float delta_time);
virtual void on_destroy();
protected:
bool main_property_changed = false;
sf::Vector2f position;
sf::Vector2f scale;
sf::Vector2f origin;
float rotation;
};
}