!B (Sandbox) (CE-21795) Importing models with multisubmaterials via fbx switches...
[CRYENGINE.git] / Code / CryEngine / CrySchematyc2 / Script / GraphNodes / ScriptGraphNodeBase.h
blob123e75a01423e4bcefc546ecd41422afe2b82a63
1 // Copyright 2001-2019 Crytek GmbH / Crytek Group. All rights reserved.
3 #pragma once
5 #include <CrySchematyc2/Script/IScriptGraph.h>
7 namespace Schematyc2
9 class CScriptGraphNodeBase : public IScriptGraphNode
11 private:
13 struct SPort
15 SPort(EScriptGraphPortFlags _flags, const char* _szName, const CAggregateTypeId& _typeId);
17 EScriptGraphPortFlags flags;
18 string name;
19 CAggregateTypeId typeId;
22 typedef std::vector<SPort> PortVector;
24 public:
26 CScriptGraphNodeBase(); // #SchematycTODO : Do we really need a default constructor?
27 CScriptGraphNodeBase(const SGUID& guid);
28 CScriptGraphNodeBase(const SGUID& guid, const Vec2& pos);
30 // IScriptGraphNode
31 virtual void Attach(IScriptGraphExtension& graph) override;
32 virtual void SetGUID(const SGUID& guid) override;
33 virtual SGUID GetGUID() const override;
34 virtual void SetName(const char* szName) override;
35 virtual const char* GetName() const override;
36 virtual EScriptGraphNodeType GetType() const override;
37 virtual SGUID GetContextGUID() const override;
38 virtual SGUID GetRefGUID() const override;
39 virtual void SetPos(Vec2 pos) override;
40 virtual Vec2 GetPos() const override;
41 virtual size_t GetInputCount() const override;
42 virtual uint32 FindInput(const char* szName) const override;
43 virtual const char* GetInputName(size_t inputIdx) const override;
44 virtual EScriptGraphPortFlags GetInputFlags(size_t inputIdx) const override;
45 virtual CAggregateTypeId GetInputTypeId(size_t inputIdx) const override;
46 virtual size_t GetOutputCount() const override;
47 virtual uint32 FindOutput(const char* szName) const override;
48 virtual const char* GetOutputName(size_t outputIdx) const override;
49 virtual EScriptGraphPortFlags GetOutputFlags(size_t outputIdx) const override;
50 virtual CAggregateTypeId GetOutputTypeId(size_t outputIdx) const override;
51 virtual IAnyConstPtr GetCustomOutputDefault() const override;
52 virtual size_t AddCustomOutput(const IAny& value) override;
53 virtual void EnumerateOptionalOutputs(const ScriptGraphNodeOptionalOutputEnumerator& enumerator) override;
54 virtual size_t AddOptionalOutput(const char* szName, EScriptGraphPortFlags flags, const CAggregateTypeId& typeId) override;
55 virtual void RemoveOutput(size_t outputIdx) override;
56 virtual void Refresh(const SScriptRefreshParams& params) override;
57 virtual void Serialize(Serialization::IArchive& archive) override;
58 virtual void RemapGUIDs(IGUIDRemapper& guidRemapper) override;
59 virtual void PreCompileSequence(IDocGraphSequencePreCompiler& preCompiler, size_t outputIdx) const override;
60 virtual void LinkSequence(IDocGraphSequenceLinker& linker, size_t outputIdx, const LibFunctionId& functionId) const override;
61 virtual void Compile(IDocGraphNodeCompiler& compiler, EDocGraphSequenceStep sequenceStep, size_t portIdx) const override;
62 // ~IScriptGraphNode
64 protected:
66 IScriptGraphExtension* GetGraph(); // #SchematycTODO : Move this function to the IScriptGraphNode interface? Should we return a reference?
67 const IScriptGraphExtension* GetGraph() const; // #SchematycTODO : Move this function to the IScriptGraphNode interface? Should we return a reference?
68 const char* GetDebugLabel() const; // #SchematycTODO : Move this function to the IScriptGraphNode interface?
69 size_t AddInput(EScriptGraphPortFlags flags, const char* szName, const CAggregateTypeId& typeId = CAggregateTypeId());
70 void SetInputTypeId(size_t inputIdx, const CAggregateTypeId& typeId); // #SchematycTODO : Remove!!!
71 void RemoveInput(size_t inputIdx);
72 size_t AddOutput(EScriptGraphPortFlags flags, const char* szName, const CAggregateTypeId& typeId = CAggregateTypeId());
73 void SetOutputTypeId(size_t outputIdx, const CAggregateTypeId& typeId); // #SchematycTODO : Remove!!!
75 private:
77 void SerializeBasicInfo(Serialization::IArchive& archive);
78 void SerializeDebugLabel(Serialization::IArchive& archive);
79 void Edit(Serialization::IArchive& archive);
81 private:
83 IScriptGraphExtension* m_pGraph;
84 SGUID m_guid;
85 string m_name;
86 string m_debugLabel;
87 Vec2 m_pos;
88 PortVector m_inputs;
89 PortVector m_outputs;