в std::multiset сортировались в соответствии с draw_order_ (чем меньше, там приоритетней компонент)?
class Component
{
public:
Component(class Entity* owner, int order = 100)
: owner_(owner)
, draw_order_(order)
{}
bool operator<(const Component& rhs)
{
return (draw_order_ < rhs.draw_order_);
}
private:
class Entity* owner_;
int draw_order_;
};
class SpriteComponent
: public Component
{
public:
SpriteComponent(class Entity* owner, int order)
: Component(owner, order)
, sprite_(nullptr)
{}
private:
class Sprite* sprite_; // SFML class sf::Sprite
};
class Game
{
// other implementation
private:
std::multiset<SpriteComponent*> sprites_;
};
надо определить функтор: struct ComponentPtrLess { bool operator=(const Component* a, const Component* b) const { return *a < *b; } }; и его в качестве less передать в шаблон multiset.
Надо operator< определить в SpriteComponent или сделать свободной функцией
Обсуждают сегодня