view: minor changes

This commit is contained in:
Michele Caini
2020-07-28 22:51:15 +02:00
parent 9b28c1fdd2
commit 291e3cd229

View File

@@ -253,7 +253,7 @@ class basic_view<Entity, exclude_t<Exclude...>, Component...> {
}
template<typename Comp, typename Other>
[[nodiscard]] decltype(auto) get([[maybe_unused]] component_iterator<Comp> it, [[maybe_unused]] pool_type<Other> *cpool, [[maybe_unused]] const Entity entt) const {
[[nodiscard]] decltype(auto) get([[maybe_unused]] component_iterator<Comp> &it, [[maybe_unused]] pool_type<Other> *cpool, [[maybe_unused]] const Entity entt) const {
if constexpr(std::is_same_v<Comp, Other>) {
return *it;
} else {
@@ -267,17 +267,17 @@ class basic_view<Entity, exclude_t<Exclude...>, Component...> {
auto it = std::get<pool_type<Comp> *>(pools)->begin();
for(const auto entt: static_cast<const sparse_set<entity_type> &>(*std::get<pool_type<Comp> *>(pools))) {
auto curr = it++;
if(((std::is_same_v<Comp, Component> || std::get<pool_type<Component> *>(pools)->contains(entt)) && ...)
&& (sizeof...(Exclude) == 0 || std::none_of(filter.cbegin(), filter.cend(), [entt](const sparse_set<Entity> *cpool) { return cpool->contains(entt); })))
&& (sizeof...(Exclude) == 0 || std::none_of(filter.cbegin(), filter.cend(), [entt](const sparse_set<Entity> *cpool) { return cpool->contains(entt); })))
{
if constexpr(std::is_invocable_v<Func, decltype(get<Type>({}))...>) {
func(get<Comp, Type>(curr, std::get<pool_type<Type> *>(pools), entt)...);
func(get<Comp, Type>(it, std::get<pool_type<Type> *>(pools), entt)...);
} else {
func(entt, get<Comp, Type>(curr, std::get<pool_type<Type> *>(pools), entt)...);
func(entt, get<Comp, Type>(it, std::get<pool_type<Type> *>(pools), entt)...);
}
}
++it;
}
} else {
for(const auto entt: static_cast<const sparse_set<entity_type> &>(*std::get<pool_type<Comp> *>(pools))) {