76 lines
No EOL
2.7 KiB
C++
Executable file
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;
|
|
|
|
};
|
|
|
|
} |