Просмотр исходного кода

helper:
* break dependency on component_traits
* use public storage traits_type member type

Michele Caini 3 лет назад
Родитель
Сommit
be4eb68a30
1 измененных файлов с 3 добавлено и 3 удалено
  1. 3 3
      src/entt/entity/helper.hpp

+ 3 - 3
src/entt/entity/helper.hpp

@@ -6,7 +6,6 @@
 #include "../core/fwd.hpp"
 #include "../core/type_traits.hpp"
 #include "../signal/delegate.hpp"
-#include "component.hpp"
 #include "fwd.hpp"
 #include "group.hpp"
 #include "view.hpp"
@@ -127,11 +126,12 @@ void invoke(Registry &reg, const typename Registry::entity_type entt) {
 template<typename Registry, typename Component>
 typename Registry::entity_type to_entity(const Registry &reg, const Component &instance) {
     const auto &storage = reg.template storage<Component>();
+    static constexpr auto page_size = storage_for_t<Component>::traits_type::page_size;
     const typename Registry::base_type &base = storage;
     const auto *addr = std::addressof(instance);
 
-    for(auto it = base.rbegin(), last = base.rend(); it < last; it += component_traits<Component>::page_size) {
-        if(const auto dist = (addr - std::addressof(storage.get(*it))); dist >= 0 && dist < static_cast<decltype(dist)>(component_traits<Component>::page_size)) {
+    for(auto it = base.rbegin(), last = base.rend(); it < last; it += page_size) {
+        if(const auto dist = (addr - std::addressof(storage.get(*it))); dist >= 0 && dist < static_cast<decltype(dist)>(page_size)) {
             return *(it + dist);
         }
     }