1 // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
4 #include <CrySchematyc2/GUID.h>
5 #include <CrySchematyc2/Script/IScriptFile.h>
8 #include "GenericWidgetModel.h"
10 //////////////////////////////////////////////////////////////////////////
12 namespace SchematycEd
{
14 //////////////////////////////////////////////////////////////////////////
16 struct CGenericWidgetDictionaryModel::Unit
: public virtual CGenericWidgetDictionaryModel
18 template <typename V
> void Visit(const V
& v
)
20 LoadScriptElementType
<T
>(std::get
<0>(v
), std::get
<1>(v
));
24 //////////////////////////////////////////////////////////////////////////
26 struct CGenericWidgetDictionaryModel::Impl
: public CHierarchy
<typename
T::Typelist
, CGenericWidgetDictionaryModel::Unit
>
28 virtual const char* GetName() const override
33 virtual void BuildFromScriptClass(IScriptFile
* file
, const SGUID
& classGUID
) override
35 CHierarchy
<typename
T::Typelist
, CGenericWidgetDictionaryModel::Unit
>::Visit(std::make_tuple(file
, classGUID
));
39 //////////////////////////////////////////////////////////////////////////
40 template <typename T
, size_t gridx
, size_t gridy
> struct CCategoryTraits
;
42 #define DECL_CATEGORY(name, gridx, gridy, typelist) \
43 template <> struct CCategoryTraits<typelist, gridx, gridy> \
45 using Category = CGenericWidgetDictionaryModel::Impl<CCategoryTraits<typelist, gridx, gridy>>; \
46 using Typelist = typelist; \
47 static const size_t GRID_X = gridx; \
48 static const size_t GRID_Y = gridy; \
49 static const char* Name() { return #name; } \
51 using C##name##CategoryTraits = CCategoryTraits<typelist, gridx, gridy>; \
52 using C##name##CategoryModel = typename CCategoryTraits<typelist, gridx, gridy>::Category; \
55 //////////////////////////////////////////////////////////////////////////
56 DECL_CATEGORY(Types
, 0, 0, TYPELIST_2( IScriptStructure
, IScriptEnumeration
))
57 DECL_CATEGORY(Graphs
, 1, 0, TYPELIST_1( IDocGraph
))
58 DECL_CATEGORY(Signals
, 2, 0, TYPELIST_1( IScriptSignal
))
59 DECL_CATEGORY(Variables
, 0, 1, TYPELIST_2( IScriptTimer
, IScriptVariable
))
60 DECL_CATEGORY(Components
, 1, 1, TYPELIST_3( IScriptState
, IScriptStateMachine
, IScriptComponentInstance
))
62 } //namespace SchematycEd