]> git.seodisparate.com - EntityComponentMetaSystem/commitdiff
Undo change of temporary struct in Manager
authorStephen Seo <seo.disparate@gmail.com>
Thu, 16 Jun 2022 04:26:06 +0000 (13:26 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Thu, 16 Jun 2022 04:26:06 +0000 (13:26 +0900)
src/EC/Manager.hpp

index 11c913413f0e97876c624962587fe523c39996ed..6c93f9026068b00bf01bc08f24871447f1f97d64 100644 (file)
@@ -119,7 +119,7 @@ namespace EC
             std::array<std::size_t, 2> range;
             Manager *manager;
             EntitiesType *entities;
-            BitsetType signature;
+            const BitsetType *signature;
             void *userData;
             std::unordered_set<std::size_t> dead;
         };
@@ -818,7 +818,7 @@ namespace EC
                     fnDataAr[i].range = {begin, end};
                     fnDataAr[i].manager = this;
                     fnDataAr[i].entities = &entities;
-                    fnDataAr[i].signature = signatureBitset;
+                    fnDataAr[i].signature = &signatureBitset;
                     fnDataAr[i].userData = userData;
                     for(std::size_t j = begin; j < end; ++j) {
                         if(!isAlive(j)) {
@@ -834,10 +834,10 @@ namespace EC
                                 continue;
                             }
 
-                            if(((data->signature)
+                            if(((*data->signature)
                                         & std::get<BitsetType>(
                                             data->entities->at(i)))
-                                    == data->signature) {
+                                    == *data->signature) {
                                 Helper::call(i,
                                              *data->manager,
                                              std::forward<Function>(function),
@@ -2006,7 +2006,7 @@ namespace EC
                     fnDataAr[i].range = {begin, end};
                     fnDataAr[i].manager = this;
                     fnDataAr[i].entities = &entities;
-                    fnDataAr[i].signature = signatureBitset;
+                    fnDataAr[i].signature = &signatureBitset;
                     fnDataAr[i].userData = userData;
                     for(std::size_t j = begin; j < end; ++j) {
                         if(!isAlive(j)) {
@@ -2019,10 +2019,10 @@ namespace EC
                                 ++i) {
                             if(data->dead.find(i) != data->dead.end()) {
                                 continue;
-                            } else if((data->signature
+                            } else if((*data->signature
                                         & std::get<BitsetType>(
                                             data->entities->at(i)))
-                                    == data->signature) {
+                                    == *data->signature) {
                                 fn(i, data->manager, data->userData);
                             }
                         }