1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
5 #include <CrySchematyc2/Script/IScriptGraph.h>
7 #include "Deprecated/DocGraphBase.h"
8 #include "Script/ScriptElementBase.h"
9 #include "Script/ScriptVariableDeclaration.h"
13 class CScriptGraphBase
: public IScriptGraphExtension
17 CScriptGraphBase(IScriptElement
& element
);
20 virtual EScriptExtensionId
GetId_New() const override
;
21 virtual void Refresh_New(const SScriptRefreshParams
& params
) override
;
22 virtual void Serialize_New(Serialization::IArchive
& archive
) override
;
23 virtual void RemapGUIDs_New(IGUIDRemapper
& guidRemapper
) override
;
27 virtual SGUID
GetContextGUID() const override
;
28 virtual IScriptElement
& GetElement_New() override
;
29 virtual const IScriptElement
& GetElement_New() const override
;
30 virtual void SetPos(Vec2 pos
) override
;
31 virtual Vec2
GetPos() const override
;
32 virtual size_t GetInputCount() const override
;
33 virtual const char* GetInputName(size_t inputIdx
) const override
;
34 virtual IAnyConstPtr
GetInputValue(size_t inputIdx
) const override
;
35 virtual size_t GetOutputCount() const override
;
36 virtual const char* GetOutputName(size_t outputIdx
) const override
;
37 virtual IAnyConstPtr
GetOutputValue(size_t outputIdx
) const override
;
38 virtual void RefreshAvailableNodes(const CAggregateTypeId
& inputTypeId
) override
;
39 virtual size_t GetAvailableNodeCount() override
;
40 virtual const char* GetAvailableNodeName(size_t availableNodeIdx
) const override
;
41 virtual EScriptGraphNodeType
GetAvailableNodeType(size_t availableNodeIdx
) const override
;
42 virtual SGUID
GetAvailableNodeContextGUID(size_t availableNodeIdx
) const override
;
43 virtual SGUID
GetAvailableNodeRefGUID(size_t availableNodeIdx
) const override
;
44 virtual IScriptGraphNode
* AddNode(EScriptGraphNodeType type
, const SGUID
& contextGUID
= SGUID(), const SGUID
& refGUID
= SGUID(), Vec2 pos
= Vec2()) override
;
45 virtual void RemoveNode(const SGUID
& guid
) override
;
46 virtual IScriptGraphNode
* GetNode(const SGUID
& guid
) override
;
47 virtual const IScriptGraphNode
* GetNode(const SGUID
& guid
) const override
;
48 virtual void VisitNodes(const ScriptGraphNodeVisitor
& visitor
) override
;
49 virtual void VisitNodes(const ScriptGraphNodeConstVisitor
& visitor
) const override
;
50 virtual bool CanAddLink(const SGUID
& srcNodeGUID
, const char* szScOutputName
, const SGUID
& dstNodeGUID
, const char* szDstInputName
) const override
;
51 virtual IScriptGraphLink
* AddLink(const SGUID
& srcNodeGUID
, const char* szScOutputName
, const SGUID
& dstNodeGUID
, const char* szDstInputName
) override
;
52 virtual void RemoveLink(size_t linkIdx
) override
;
53 virtual void RemoveLinks(const SGUID
& nodeGUID
) override
;
54 virtual size_t GetLinkCount() const override
;
55 virtual size_t FindLink(const SGUID
& srcGUID
, const char* szSrcOutputName
, const SGUID
& dstNodeGUID
, const char* szDstInputName
) const override
;
56 virtual IScriptGraphLink
* GetLink(size_t linkIdx
) override
;
57 virtual const IScriptGraphLink
* GetLink(size_t linkIdx
) const override
;
58 virtual void VisitLinks(const ScriptGraphLinkVisitor
& visitor
) override
;
59 virtual void VisitLinks(const ScriptGraphLinkConstVisitor
& visitor
) const override
;
60 virtual void RemoveBrokenLinks() override
;
61 virtual SScriptGraphSignals
& Signals() override
;
64 // IScriptGraphExtension
65 virtual uint32
GetNodeCount() const override
;
66 virtual bool AddNode_New(const IScriptGraphNodePtr
& pNode
) override
;
67 virtual void PopulateNodeCreationMenu(IScriptGraphNodeCreationMenu
& nodeCreationMenu
) override
;
68 virtual void VisitInputLinks(const ScriptGraphLinkVisitor
& visitor
, const SGUID
& dstNodeGUID
, const char* szDstInputName
) override
;
69 virtual void VisitInputLinks(const ScriptGraphLinkConstVisitor
& visitor
, const SGUID
& dstNodeGUID
, const char* szDstInputName
) const override
;
70 virtual void VisitOutputLinks(const ScriptGraphLinkVisitor
& visitor
, const SGUID
& srcNodeGUID
, const char* szSrcOutputName
) override
;
71 virtual void VisitOutputLinks(const ScriptGraphLinkConstVisitor
& visitor
, const SGUID
& srcNodeGUID
, const char* szSrcOutputName
) const override
;
72 virtual bool GetLinkSrc(const IScriptGraphLink
& link
, IScriptGraphNode
*& pNode
, uint32
& outputIdx
) override
;
73 virtual bool GetLinkSrc(const IScriptGraphLink
& link
, const IScriptGraphNode
*& pNode
, uint32
& outputIdx
) const override
;
74 virtual bool GetLinkDst(const IScriptGraphLink
& link
, IScriptGraphNode
*& pNode
, uint32
& inputIdx
) override
;
75 virtual bool GetLinkDst(const IScriptGraphLink
& link
, const IScriptGraphNode
*& pNode
, uint32
& inputIdx
) const override
;
76 // ~IScriptGraphExtension
80 typedef std::map
<SGUID
, IScriptGraphNodePtr
> Nodes
;
81 typedef std::vector
<CScriptGraphLinkPtr
> Links
;
83 IScriptElement
& m_element
;
87 SScriptGraphSignals m_signals
;