1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
4 #include "Script/GraphNodes/ScriptGraphBeginNode.h"
6 #include <CrySchematyc2/IDomainContext.h>
7 #include <CrySchematyc2/Script/IScriptGraphNodeCompiler.h>
8 #include <CrySchematyc2/Script/IScriptGraphNodeCreationMenu.h>
10 #include "Script/GraphNodes/ScriptGraphNodeFactory.h"
14 const SGUID
CScriptGraphBeginNode::s_typeGUID
= "12bdfa06-ba95-4e48-bb2d-bb48a7080abc";
16 CScriptGraphBeginNode::CScriptGraphBeginNode() {}
18 CScriptGraphBeginNode::CScriptGraphBeginNode(const SGUID
& guid
)
19 : CScriptGraphNodeBase(guid
)
22 CScriptGraphBeginNode::CScriptGraphBeginNode(const SGUID
& guid
, const Vec2
& pos
)
23 : CScriptGraphNodeBase(guid
, pos
)
26 SGUID
CScriptGraphBeginNode::GetTypeGUID() const
31 EScriptGraphNodeType
CScriptGraphBeginNode::GetType() const
33 return EScriptGraphNodeType::Begin
;
36 EScriptGraphColor
CScriptGraphBeginNode::GetColor() const
38 return EScriptGraphColor::Green
;
41 void CScriptGraphBeginNode::Refresh(const SScriptRefreshParams
& params
)
43 CRY_PROFILE_FUNCTION(PROFILE_LOADING_ONLY
);
45 CScriptGraphNodeBase::Refresh(params
);
47 CScriptGraphNodeBase::SetName("Begin");
48 CScriptGraphNodeBase::AddOutput(EScriptGraphPortFlags::BeginSequence
| EScriptGraphPortFlags::Execute
, "Out");
51 void CScriptGraphBeginNode::Serialize(Serialization::IArchive
& archive
)
53 CRY_PROFILE_FUNCTION(PROFILE_LOADING_ONLY
);
55 CScriptGraphNodeBase::Serialize(archive
);
58 void CScriptGraphBeginNode::RemapGUIDs(IGUIDRemapper
& guidRemapper
)
60 CScriptGraphNodeBase::RemapGUIDs(guidRemapper
);
63 void CScriptGraphBeginNode::Compile_New(IScriptGraphNodeCompiler
& compiler
) const
65 compiler
.BindCallback(&Execute
);
68 void CScriptGraphBeginNode::RegisterCreator(CScriptGraphNodeFactory
& factory
)
70 class CCreator
: public IScriptGraphNodeCreator
74 // IScriptGraphNodeCreator
76 virtual SGUID
GetTypeGUID() const override
78 return CScriptGraphBeginNode::s_typeGUID
;
81 virtual IScriptGraphNodePtr
CreateNode() override
83 return std::make_shared
<CScriptGraphBeginNode
>(gEnv
->pSchematyc2
->CreateGUID());
86 virtual void PopulateNodeCreationMenu(IScriptGraphNodeCreationMenu
& nodeCreationMenu
, const IDomainContext
& domainContext
, const IScriptGraphExtension
& graph
) override
{}
88 // ~IScriptGraphNodeCreator
91 factory
.RegisterCreator(std::make_shared
<CCreator
>());
94 SRuntimeResult
CScriptGraphBeginNode::Execute(IObject
* pObject
, const SRuntimeActivationParams
& activationParams
, CRuntimeNodeData
& data
)
96 return SRuntimeResult(ERuntimeStatus::Continue
, EOutputIdx::Out
);