!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / CryEngine / CrySchematyc2 / Script / Elements / ScriptAbstractInterfaceFunction.cpp
blobad506fffab85b9dfa86319a10714c2248f3ef29a
1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
3 #include "StdAfx.h"
4 #include "Script/Elements/ScriptAbstractInterfaceFunction.h"
6 #include <CrySerialization/BlackBox.h>
7 #include <CrySerialization/IArchiveHost.h>
8 #include <CrySerialization/STL.h>
9 #include <CrySchematyc2/GUIDRemapper.h>
10 #include <CrySchematyc2/Deprecated/DocUtils.h>
11 #include <CrySchematyc2/Env/IEnvRegistry.h>
12 #include <CrySchematyc2/Serialization/ISerializationContext.h>
13 #include <CrySchematyc2/Serialization/SerializationUtils.h>
15 namespace Schematyc2
17 //////////////////////////////////////////////////////////////////////////
18 CScriptAbstractInterfaceFunction::CScriptAbstractInterfaceFunction(IScriptFile& file, const SGUID& guid, const SGUID& scopeGUID, const char* szName)
19 : CScriptElementBase(EScriptElementType::AbstractInterfaceFunction, file)
20 , m_guid(guid)
21 , m_scopeGUID(scopeGUID)
22 , m_name(szName)
25 //////////////////////////////////////////////////////////////////////////
26 EAccessor CScriptAbstractInterfaceFunction::GetAccessor() const
28 return EAccessor::Private;
31 //////////////////////////////////////////////////////////////////////////
32 SGUID CScriptAbstractInterfaceFunction::GetGUID() const
34 return m_guid;
37 //////////////////////////////////////////////////////////////////////////
38 SGUID CScriptAbstractInterfaceFunction::GetScopeGUID() const
40 return m_scopeGUID;
43 //////////////////////////////////////////////////////////////////////////
44 bool CScriptAbstractInterfaceFunction::SetName(const char* szName)
46 m_name = szName;
47 return true;
50 //////////////////////////////////////////////////////////////////////////
51 const char* CScriptAbstractInterfaceFunction::GetName() const
53 return m_name.c_str();
56 //////////////////////////////////////////////////////////////////////////
57 void CScriptAbstractInterfaceFunction::EnumerateDependencies(const ScriptDependancyEnumerator& enumerator) const
59 SCHEMATYC2_SYSTEM_ASSERT(enumerator);
60 if(enumerator)
62 for(const CScriptVariableDeclaration& input : m_inputs)
64 input.EnumerateDependencies(enumerator);
66 for(const CScriptVariableDeclaration& output : m_outputs)
68 output.EnumerateDependencies(enumerator);
73 //////////////////////////////////////////////////////////////////////////
74 void CScriptAbstractInterfaceFunction::Refresh(const SScriptRefreshParams& params)
76 if(params.reason == EScriptRefreshReason::EditorAdd)
78 m_userDocumentation.SetCurrentUserAsAuthor();
82 //////////////////////////////////////////////////////////////////////////
83 void CScriptAbstractInterfaceFunction::Serialize(Serialization::IArchive& archive)
85 CRY_PROFILE_FUNCTION(PROFILE_LOADING_ONLY);
87 CScriptElementBase::Serialize(archive);
89 SerializationContext::SetValidatorLink(archive, SValidatorLink(m_guid)); // #SchematycTODO : Can we set this from CScriptElementBase?
90 switch(SerializationContext::GetPass(archive))
92 case ESerializationPass::PreLoad:
94 archive(m_guid, "guid");
95 archive(m_scopeGUID, "scope_guid");
96 archive(m_name, "name");
97 archive(m_inputs, "inputs");
98 archive(m_outputs, "outputs");
99 archive(m_userDocumentation, "userDocumentation", "Documentation");
100 break;
102 case ESerializationPass::Load:
104 archive(m_inputs, "inputs");
105 archive(m_outputs, "outputs");
106 break;
108 case ESerializationPass::Save:
110 Serialization::SContext fileContext(archive, static_cast<IScriptFile*>(&CScriptElementBase::GetFile())); // #SchematycTODO : Do we still need this?
111 archive(m_guid, "guid");
112 archive(m_scopeGUID, "scope_guid");
113 archive(m_name, "name");
114 archive(m_inputs, "inputs");
115 archive(m_outputs, "outputs");
116 archive(m_userDocumentation, "userDocumentation", "Documentation");
117 break;
119 case ESerializationPass::Edit:
121 Serialization::SContext fileContext(archive, static_cast<IScriptFile*>(&CScriptElementBase::GetFile())); // #SchematycTODO : Do we still need this?
122 archive(m_inputs, "inputs", "Inputs");
123 archive(m_outputs, "outputs", "Outputs");
124 archive(m_userDocumentation, "userDocumentation", "Documentation");
125 break;
130 //////////////////////////////////////////////////////////////////////////
131 void CScriptAbstractInterfaceFunction::RemapGUIDs(IGUIDRemapper& guidRemapper)
133 m_guid = guidRemapper.Remap(m_guid);
134 m_scopeGUID = guidRemapper.Remap(m_scopeGUID);
137 //////////////////////////////////////////////////////////////////////////
138 const char* CScriptAbstractInterfaceFunction::GetAuthor() const
140 return m_userDocumentation.author.c_str();
143 //////////////////////////////////////////////////////////////////////////
144 const char* CScriptAbstractInterfaceFunction::GetDescription() const
146 return m_userDocumentation.description.c_str();
149 //////////////////////////////////////////////////////////////////////////
150 size_t CScriptAbstractInterfaceFunction::GetInputCount() const
152 return m_inputs.size();
155 //////////////////////////////////////////////////////////////////////////
156 const char* CScriptAbstractInterfaceFunction::GetInputName(size_t inputIdx) const
158 return inputIdx < m_inputs.size() ? m_inputs[inputIdx].GetName() : "";
161 //////////////////////////////////////////////////////////////////////////
162 IAnyConstPtr CScriptAbstractInterfaceFunction::GetInputValue(size_t inputIdx) const
164 return inputIdx < m_inputs.size() ? m_inputs[inputIdx].GetValue() : IAnyConstPtr();
167 //////////////////////////////////////////////////////////////////////////
168 size_t CScriptAbstractInterfaceFunction::GetOutputCount() const
170 return m_outputs.size();
173 //////////////////////////////////////////////////////////////////////////
174 const char* CScriptAbstractInterfaceFunction::GetOutputName(size_t outputIdx) const
176 return outputIdx < m_outputs.size() ? m_outputs[outputIdx].GetName() : "";
179 //////////////////////////////////////////////////////////////////////////
180 IAnyConstPtr CScriptAbstractInterfaceFunction::GetOutputValue(size_t outputIdx) const
182 return outputIdx < m_outputs.size() ? m_outputs[outputIdx].GetValue() : IAnyConstPtr();