!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / Sandbox / Plugins / EditorSchematyc2 / Bridge / Public / Script / Bridge_IScriptRegistry.h
blob4bdb4acc8a377236b77b37988e3ccda072e8fdb1
1 // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
5 #include <CrySchematyc2/Script/IScriptRegistry.h>
6 #include "Bridge_IScriptFile.h"
8 namespace Schematyc2 {
10 struct IScriptRegistry;
12 struct IScriptClass;
13 struct IScriptEnumeration;
14 struct IScriptFunction;
15 struct IScriptModule;
19 namespace Bridge {
21 typedef TemplateUtils::CDelegate<Schematyc2::EVisitStatus(IScriptFile&)> ScriptFileVisitor;
22 typedef TemplateUtils::CDelegate<Schematyc2::EVisitStatus(const IScriptFile&)> ScriptFileConstVisitor;
24 struct IScriptRegistry
26 virtual ~IScriptRegistry() {}
28 // Compatibility interface.
29 //////////////////////////////////////////////////
30 virtual IScriptFile* LoadFile(const char* szFileName) = 0;
31 virtual IScriptFile* CreateFile(const char* szFileName, Schematyc2::EScriptFileFlags flags = Schematyc2::EScriptFileFlags::None) = 0;
32 virtual IScriptFile* GetFile(const Schematyc2::SGUID& guid) = 0;
33 virtual IScriptFile* GetFile(const char* szFileName) = 0;
34 virtual void VisitFiles(const ScriptFileVisitor& visitor, const char* szFilePath = nullptr) = 0;
35 virtual void VisitFiles(const ScriptFileConstVisitor& visitor, const char* szFilePath = nullptr) const = 0;
36 virtual void RefreshFiles(const Schematyc2::SScriptRefreshParams& params) = 0;
37 virtual bool Load() = 0;
38 virtual void Save(bool bAlwaysSave = false) = 0;
40 // New interface.
41 //////////////////////////////////////////////////
42 virtual Schematyc2::IScriptModule* AddModule(const char* szName, Schematyc2::IScriptElement* pScope = nullptr) = 0;
43 virtual Schematyc2::IScriptEnumeration* AddEnumeration(const char* szName, Schematyc2::IScriptElement* pScope = nullptr) = 0;
44 virtual Schematyc2::IScriptFunction* AddFunction(const char* szName, Schematyc2::IScriptElement* pScope = nullptr) = 0;
45 virtual Schematyc2::IScriptClass* AddClass(const char* szName, const Schematyc2::SGUID& foundationGUID, Schematyc2::IScriptElement* pScope = nullptr) = 0;
46 virtual Schematyc2::IScriptElement* GetElement(const Schematyc2::SGUID& guid) = 0;
47 virtual void RemoveElement(const Schematyc2::SGUID& guid) = 0;
48 virtual Schematyc2::EVisitStatus VisitElements(const Schematyc2::ScriptElementVisitor& visitor, Schematyc2::IScriptElement* pScope = nullptr, Schematyc2::EVisitFlags flags = Schematyc2::EVisitFlags::None) = 0;
49 virtual Schematyc2::EVisitStatus VisitElements(const Schematyc2::ScriptElementConstVisitor& visitor, const Schematyc2::IScriptElement* pScope = nullptr, Schematyc2::EVisitFlags flags = Schematyc2::EVisitFlags::None) const = 0;
50 virtual bool IsElementNameUnique(const char* szName, Schematyc2::IScriptElement* pScope = nullptr) const = 0; // #SchematycTODO : Should we also validate the name here?
51 virtual Schematyc2::SScriptRegistrySignals& Signals() = 0;
52 virtual Bridge::IScriptFile* Wrapfile(Schematyc2::IScriptFile* file) = 0;