|
@@ -253,7 +253,7 @@ class basic_view<Entity, exclude_t<Exclude...>, Component...> {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
template<typename Comp, typename Other>
|
|
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>) {
|
|
if constexpr(std::is_same_v<Comp, Other>) {
|
|
|
return *it;
|
|
return *it;
|
|
|
} else {
|
|
} else {
|
|
@@ -267,17 +267,17 @@ class basic_view<Entity, exclude_t<Exclude...>, Component...> {
|
|
|
auto it = std::get<pool_type<Comp> *>(pools)->begin();
|
|
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))) {
|
|
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)) && ...)
|
|
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>({}))...>) {
|
|
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 {
|
|
} 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 {
|
|
} else {
|
|
|
for(const auto entt: static_cast<const sparse_set<entity_type> &>(*std::get<pool_type<Comp> *>(pools))) {
|
|
for(const auto entt: static_cast<const sparse_set<entity_type> &>(*std::get<pool_type<Comp> *>(pools))) {
|