#pragma once #include #include #include #include #include #include #include namespace Game::Renderer { class Renderer; class Texture; } namespace Game::Object { class Entity { public: Entity(std::string name, std::shared_ptr tex, Transform transform) : mName(name), mTex(tex), mTransform(transform), mIsActive(true) { LOG("Created Entity: " << mName); } // I will define the copy and move constructors later - just deleted for now Entity(const Entity&); Entity& operator=(const Entity&); Entity(Entity&&) noexcept; Entity& operator=(Entity&&) noexcept; ~Entity(); virtual void start() = 0; virtual void update() = 0; void render(Game::Renderer::Renderer* renderer); // Setters and getters void setTexture(std::shared_ptr tex) { mTex = tex; } void setName(const std::string& name) { mName = name; } void setTransform(const Transform& transform) { mTransform = transform; } void setActive(bool active) { mIsActive = active; } std::shared_ptr getTexture() { return mTex; } std::string getName() { return mName; } Transform* getTransform() { return &mTransform; } bool isActive() { return mIsActive; } protected: std::string mName; std::shared_ptr mTex; Transform mTransform; bool mIsActive; private: float mScaleConstant = 0.25f; }; }