#pragma once

#include "Component.hpp"
#include <engine/utility/Priority.hpp>

namespace megu::kernel {
    template <class Ge>
    class Graphical : public Component<Ge> {
        public:
            inline Graphical(Priority l = 0, Priority o = 0)
            : _layer(l), _object(o) {}

            inline Priority getLayerPriority() const {return this->_layer;}
            inline Priority getObjectPriority() const {return this->_object;}

            inline void setLayerPriority(Priority p) {this->_layer = p;}
            inline void setLayerObject(Priority p) {this->_object = p;}

            virtual void update(double) = 0;

        private:
            Priority _layer;
            Priority _object;
            
    }; 
}