!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / CryEngine / CrySchematyc2 / LibRegistry.h
blob6eca55cd389e0cf8e080e26f085f059c5c4c466d
1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
5 #include <CrySchematyc2/ILibRegistry.h>
7 #include "AbstractInterface.h"
9 namespace Schematyc2
11 // Library registry.
12 ////////////////////////////////////////////////////////////////////////////////////////////////////
13 class CLibRegistry : public ILibRegistry
15 public:
17 // ILibRegistry
18 virtual ISignalConstPtr GetSignal(const SGUID& guid) const override;
19 virtual void VisitSignals(const LibSignalVisitor& visitor) const override;
20 virtual ILibAbstractInterfaceConstPtr GetAbstractInterface(const SGUID& guid) const override;
21 virtual void VisitAbstractInterfaces(const ILibAbstractInterfaceVisitor& visitor) override;
22 virtual ILibAbstractInterfaceFunctionConstPtr GetAbstractInterfaceFunction(const SGUID& guid) const override;
23 virtual void VisitAbstractInterfaceFunctions(const ILibAbstractInterfaceFunctionVisitor& visitor) override;
24 virtual SGUID FindClass(const char* name) const override;
25 virtual ILibClassConstPtr GetClass(const SGUID& guid) const override;
26 virtual void VisitClasses(const ILibClassVisitor& visitor) const override;
27 virtual bool RegisterLib(const ILibPtr& pLib) override;
28 virtual ILibPtr GetLib(const char* szName) override;
29 virtual SLibRegistrySignals& Signals() override;
30 // ~ILibRegistry
32 void Clear();
34 private:
36 typedef std::unordered_map<SGUID, ISignalConstPtr> TSignalMap;
37 typedef std::unordered_map<SGUID, ILibAbstractInterfaceConstPtr> TAbstractInterfaceMap;
38 typedef std::unordered_map<SGUID, ILibAbstractInterfaceFunctionConstPtr> TAbstractInterfaceFunctionMap;
39 typedef std::unordered_map<SGUID, ILibClassConstPtr> TClassMap;
40 typedef std::map<string, ILibPtr> TLibMap;
42 EVisitStatus VisitAndRegisterSignal(const ISignalConstPtr& pSignal);
43 EVisitStatus VisitAndReleaseSignal(const ISignalConstPtr& pSignal);
44 EVisitStatus VisitAndRegisterAbstractInterface(const ILibAbstractInterfaceConstPtr& pAbstractInterface);
45 EVisitStatus VisitAndReleaseAbstractInterface(const ILibAbstractInterfaceConstPtr& pAbstractInterface);
46 EVisitStatus VisitAndRegisterAbstractInterfaceFunction(const ILibAbstractInterfaceFunctionConstPtr& pAbstractInterfaceFunction);
47 EVisitStatus VisitAndReleaseAbstractInterfaceFunction(const ILibAbstractInterfaceFunctionConstPtr& pAbstractInterfaceFunction);
48 EVisitStatus VisitAndRegisterClass(const ILibClassConstPtr& pClass);
49 EVisitStatus VisitAndReleaseClass(const ILibClassConstPtr& pClass);
50 void ReleaseLib(const TLibMap::iterator& iLib);
52 TSignalMap m_signals;
53 TAbstractInterfaceMap m_abstractInterfaces;
54 TAbstractInterfaceFunctionMap m_abstractInterfaceFunctions;
55 TClassMap m_classes;
56 TLibMap m_libs;
57 SLibRegistrySignals m_registrySignals;