]> git.seodisparate.com - EntityComponentMetaSystem/commitdiff
Fix to Meta/Matching
authorStephen Seo <seo.disparate@gmail.com>
Sun, 13 Mar 2016 09:17:06 +0000 (18:17 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Sun, 13 Mar 2016 09:17:06 +0000 (18:17 +0900)
src/EC/Meta/Matching.hpp
src/test/ECTest.cpp
src/test/MetaTest.cpp

index e2e5a7808f494bd7a9f9473b3f1e405e521a1ffe..8b525f9989e6780164e953ab92cc32419506d3ea 100644 (file)
@@ -12,6 +12,7 @@ namespace EC
         template <typename TTypeListA, typename TTypeListB>
         struct MatchingHelper
         {
+            using type = TypeList<>;
         };
 
         template <typename TTypeListA, typename TTypeListB, typename... Matching>
index aa546b3a4dc3f9b657ddee52ebaf208a89fb0eea..a881d9770535389864de0208295d3b5a2bdfe179 100644 (file)
@@ -1,6 +1,8 @@
 
 #include <gtest/gtest.h>
 
+#include <iostream>
+
 #include <tuple>
 #include <EC/Meta/Meta.hpp>
 #include <EC/EC.hpp>
@@ -102,5 +104,15 @@ TEST(EC, Manager)
 
     std::size_t edata = std::get<std::size_t>(manager.getEntityInfo(0));
     EXPECT_EQ(edata, 1);
+
+    std::size_t e2 = manager.addEntity();
+
+    manager.addTag<T0>(e2);
+
+    auto updateTagOnly = [] (std::size_t id) {
+        std::cout << "UpdateTagOnly was run." << std::endl;
+    };
+
+    manager.forMatchingSignature<EC::Meta::TypeList<T0> >(updateTagOnly);
 }
 
index 0f34fe12eff2f5db79e2278c193815f4c99ecff2..6dcf850bf5ab920f4c2b0a457d945e2b8e3895ab 100644 (file)
@@ -227,5 +227,11 @@ TEST(Meta, Matching)
         bool isSame = std::is_same<ListSome, Matched>::value;
         EXPECT_TRUE(isSame);
     }
+
+    {
+        using Matched = EC::Meta::Matching<ListTagsAll, ListComponentsAll>::type;
+        bool isSame = std::is_same<EC::Meta::TypeList<>, Matched>::value;
+        EXPECT_TRUE(isSame);
+    }
 }