1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
4 #include "Script/ScriptExtensionMap.h"
6 #include <CrySchematyc2/Services/ILog.h>
8 SERIALIZATION_ENUM_BEGIN_NESTED(Schematyc2
, EScriptExtensionId
, "Schematyc Script Extension Id")
9 SERIALIZATION_ENUM(Schematyc2::EScriptExtensionId::Graph
, "Graph", "Graph")
10 SERIALIZATION_ENUM_END()
14 void CScriptExtensionMap::AddExtension(const IScriptExtensionPtr
& pExtension
)
18 m_extensions
.push_back(pExtension
);
22 IScriptExtension
* CScriptExtensionMap::QueryExtension(EScriptExtensionId id
)
24 for(Extensions::value_type
& pExtension
: m_extensions
)
26 if(pExtension
->GetId_New() == id
)
28 return pExtension
.get();
34 const IScriptExtension
* CScriptExtensionMap::QueryExtension(EScriptExtensionId id
) const
36 for(const Extensions::value_type
& pExtension
: m_extensions
)
38 if(pExtension
->GetId_New() == id
)
40 return pExtension
.get();
46 void CScriptExtensionMap::Refresh(const SScriptRefreshParams
& params
)
48 for(Extensions::value_type
& pExtension
: m_extensions
)
50 pExtension
->Refresh_New(params
);
54 void CScriptExtensionMap::Serialize(Serialization::IArchive
& archive
)
56 class CExtensionWrapper
60 inline CExtensionWrapper(IScriptExtension
& extension
)
61 : m_extension(extension
)
64 void Serialize(Serialization::IArchive
& archive
)
66 m_extension
.Serialize_New(archive
);
71 IScriptExtension
& m_extension
;
74 const Serialization::EnumDescription
& enumDescription
= Serialization::getEnumDescription
<EScriptExtensionId
>();
75 for(Extensions::value_type
& pExtension
: m_extensions
)
77 const char* szName
= enumDescription
.name(pExtension
->GetId_New());
78 SCHEMATYC2_SYSTEM_ASSERT(szName
&& szName
[0]);
79 //archive(*pExtension, szName);
80 archive(CExtensionWrapper(*pExtension
), szName
);
84 void CScriptExtensionMap::RemapGUIDs(IGUIDRemapper
& guidRemapper
)
86 for(Extensions::value_type
& pExtension
: m_extensions
)
88 pExtension
->RemapGUIDs_New(guidRemapper
);