!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / Sandbox / Plugins / SchematycEditor / GenericWidgetModelImpl.h
blob919d59a6105d91d8f7d89d168916cf2bb4bb7546
1 // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
4 #include <CrySchematyc2/GUID.h>
5 #include <CrySchematyc2/Script/IScriptFile.h>
7 #include "Util.h"
8 #include "GenericWidgetModel.h"
10 //////////////////////////////////////////////////////////////////////////
11 namespace Cry {
12 namespace SchematycEd {
14 //////////////////////////////////////////////////////////////////////////
15 template <class T>
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 //////////////////////////////////////////////////////////////////////////
25 template <class T>
26 struct CGenericWidgetDictionaryModel::Impl : public CHierarchy<typename T::Typelist, CGenericWidgetDictionaryModel::Unit>
28 virtual const char* GetName() const override
30 return T::Name();
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> \
44 { \
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; } \
50 }; \
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
63 } //namespace Cry