#include "xna/game/component.hpp" namespace xna { sptr GameComponentCollection::operator[](size_t index) const { if (index >= components.size()) return nullptr; return components[index]; } sptr GameComponentCollection::At(size_t index) const { if (index >= components.size()) return nullptr; return components[index]; } bool GameComponentCollection::UpdateOrderComparer(sptr const& x, sptr const& y) { auto comp1 = std::reinterpret_pointer_cast(x); auto comp2 = std::reinterpret_pointer_cast(y); if (!comp1 && !comp2) return false; if (!comp1) return true; if (!comp2) return false; return comp1->UpdateOrder() < comp2->UpdateOrder(); } bool GameComponentCollection::DrawOrderComparer(sptr const& x, sptr const& y) { auto comp1 = std::reinterpret_pointer_cast(x); auto comp2 = std::reinterpret_pointer_cast(y); if (!comp1 && !comp2) return false; if (!comp1) return true; if (!comp2) return false; return comp1->DrawOrder() < comp2->DrawOrder(); } }