Added EC/Meta/Morph.hpp
Started work on EC/Manager.hpp
This commit is contained in:
parent
f99e7c69ca
commit
1926a9eabb
5 changed files with 81 additions and 0 deletions
|
@ -7,6 +7,7 @@ set(EntityComponentSystem_HEADERS
|
||||||
EC/Meta/Contains.hpp
|
EC/Meta/Contains.hpp
|
||||||
EC/Meta/ContainsAll.hpp
|
EC/Meta/ContainsAll.hpp
|
||||||
EC/Meta/IndexOf.hpp
|
EC/Meta/IndexOf.hpp
|
||||||
|
EC/Meta/Morph.hpp
|
||||||
EC/Meta/Meta.hpp
|
EC/Meta/Meta.hpp
|
||||||
EC/Bitset.hpp
|
EC/Bitset.hpp
|
||||||
EC/EC.hpp)
|
EC/EC.hpp)
|
||||||
|
|
20
src/EC/Manager.hpp
Normal file
20
src/EC/Manager.hpp
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
|
||||||
|
#ifndef EC_MANAGER_HPP
|
||||||
|
#define EC_MANAGER_HPP
|
||||||
|
|
||||||
|
namespace EC
|
||||||
|
{
|
||||||
|
template <typename ComponentsList, typename TagsList, typename Signatures>
|
||||||
|
struct Manager
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using Combined = EC::Meta::Combine<ComponentsList, TagsList>;
|
||||||
|
|
||||||
|
private:
|
||||||
|
using BitsetType = EC::Bitset<ComponentsList, TagsList>;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -4,4 +4,5 @@
|
||||||
#include "Contains.hpp"
|
#include "Contains.hpp"
|
||||||
#include "ContainsAll.hpp"
|
#include "ContainsAll.hpp"
|
||||||
#include "IndexOf.hpp"
|
#include "IndexOf.hpp"
|
||||||
|
#include "Morph.hpp"
|
||||||
|
|
||||||
|
|
28
src/EC/Meta/Morph.hpp
Normal file
28
src/EC/Meta/Morph.hpp
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
#ifndef EC_META_MORPH_HPP
|
||||||
|
#define EC_META_MORPH_HPP
|
||||||
|
|
||||||
|
#include "TypeList.hpp"
|
||||||
|
|
||||||
|
namespace EC
|
||||||
|
{
|
||||||
|
namespace Meta
|
||||||
|
{
|
||||||
|
template <typename TypeA, typename TypeB>
|
||||||
|
struct MorphHelper
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
|
template <template <typename...> class TypeA, template <typename...> class TypeB, typename... TypesA, typename... TypesB>
|
||||||
|
struct MorphHelper<TypeA<TypesA...>, TypeB<TypesB...> >
|
||||||
|
{
|
||||||
|
using type = TypeB<TypesA...>;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename TypeA, typename TypeB>
|
||||||
|
using Morph = typename MorphHelper<TypeA, TypeB>::type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
|
||||||
#include <gtest/gtest.h>
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include <tuple>
|
||||||
#include <EC/Meta/Meta.hpp>
|
#include <EC/Meta/Meta.hpp>
|
||||||
#include <EC/EC.hpp>
|
#include <EC/EC.hpp>
|
||||||
|
|
||||||
|
@ -125,3 +126,33 @@ TEST(Meta, Combine)
|
||||||
EXPECT_EQ(combinedAllTemp, listAllTemp);
|
EXPECT_EQ(combinedAllTemp, listAllTemp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Meta, Morph)
|
||||||
|
{
|
||||||
|
using TupleAll = std::tuple<C0, C1, C2, C3>;
|
||||||
|
using MorphedTuple = EC::Meta::Morph<TupleAll, EC::Meta::TypeList<> >;
|
||||||
|
|
||||||
|
int morphedTupleTemp = MorphedTuple::size;
|
||||||
|
int componentsTemp = ListComponentsAll::size;
|
||||||
|
EXPECT_EQ(morphedTupleTemp, componentsTemp);
|
||||||
|
|
||||||
|
morphedTupleTemp = EC::Meta::IndexOf<C0, MorphedTuple>::value;
|
||||||
|
componentsTemp = EC::Meta::IndexOf<C0, ListComponentsAll>::value;
|
||||||
|
EXPECT_EQ(morphedTupleTemp, componentsTemp);
|
||||||
|
|
||||||
|
morphedTupleTemp = EC::Meta::IndexOf<C1, MorphedTuple>::value;
|
||||||
|
componentsTemp = EC::Meta::IndexOf<C1, ListComponentsAll>::value;
|
||||||
|
EXPECT_EQ(morphedTupleTemp, componentsTemp);
|
||||||
|
|
||||||
|
morphedTupleTemp = EC::Meta::IndexOf<C2, MorphedTuple>::value;
|
||||||
|
componentsTemp = EC::Meta::IndexOf<C2, ListComponentsAll>::value;
|
||||||
|
EXPECT_EQ(morphedTupleTemp, componentsTemp);
|
||||||
|
|
||||||
|
morphedTupleTemp = EC::Meta::IndexOf<C3, MorphedTuple>::value;
|
||||||
|
componentsTemp = EC::Meta::IndexOf<C3, ListComponentsAll>::value;
|
||||||
|
EXPECT_EQ(morphedTupleTemp, componentsTemp);
|
||||||
|
|
||||||
|
using MorphedComponents = EC::Meta::Morph<ListComponentsAll, std::tuple<> >;
|
||||||
|
bool isSame = std::is_same<MorphedComponents, TupleAll>::value;
|
||||||
|
EXPECT_TRUE(isSame);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue