Polyphase Game Engine
Loading...
Searching...
No Matches
FunctionNodes.h
Go to the documentation of this file.
1#pragma once
2
4
5#include <string>
6
8
9static const glm::vec4 kFunctionNodeColor = glm::vec4(0.2f, 0.7f, 0.4f, 1.0f);
10
11// =============================================================================
12// FunctionOutputNode
13// A sink node for function graphs with dynamic input pins.
14// Users add/remove outputs (which are input pins on this node)
15// to define what values the function returns.
16// =============================================================================
18{
19public:
21
22 virtual void SetupPins() override;
23 virtual void Evaluate() override;
24 virtual void SaveStream(Stream& stream) override;
25 virtual void LoadStream(Stream& stream, uint32_t version) override;
26 virtual const char* GetNodeTypeName() const override { return "Function Output"; }
27 virtual const char* GetNodeCategory() const override { return "Function"; }
28 virtual glm::vec4 GetNodeColor() const override { return kFunctionNodeColor; }
29
30 virtual void CopyCustomData(const GraphNode* src) override;
31
32 // Dynamic pin management
33 void AddOutputField(const std::string& name, DatumType type);
34 void RemoveOutputField(uint32_t index);
35};
36
37// =============================================================================
38// FunctionCallNode
39// Calls a named function graph within the same NodeGraphAsset.
40// Pins are dynamically built from the function's InputNodes and FunctionOutputNode.
41// =============================================================================
43{
44public:
46
47 virtual void SetupPins() override;
48 virtual void Evaluate() override;
49 virtual void SaveStream(Stream& stream) override;
50 virtual void LoadStream(Stream& stream, uint32_t version) override;
51 virtual const char* GetNodeTypeName() const override;
52 virtual const char* GetNodeCategory() const override { return "Function"; }
53 virtual glm::vec4 GetNodeColor() const override { return kFunctionNodeColor; }
54
55 virtual void CopyCustomData(const GraphNode* src) override;
56
57 void SetFunctionName(const std::string& name);
58 const std::string& GetFunctionName() const { return mFunctionName; }
59
60 // Rebuild pins from function graph signature
62
63 void SetOwnerAsset(NodeGraphAsset* asset) { mOwnerAsset = asset; }
65
66protected:
67 std::string mFunctionName;
68 NodeGraphAsset* mOwnerAsset = nullptr; // non-owning
69};
DatumType
Definition Datum.h:28
Definition FunctionNodes.h:43
virtual void SetupPins() override
Definition FunctionNodes.cpp:177
NodeGraphAsset * GetOwnerAsset() const
Definition FunctionNodes.h:64
void SetFunctionName(const std::string &name)
Definition FunctionNodes.cpp:350
virtual void SaveStream(Stream &stream) override
Definition FunctionNodes.cpp:245
void SetOwnerAsset(NodeGraphAsset *asset)
Definition FunctionNodes.h:63
std::string mFunctionName
Definition FunctionNodes.h:67
virtual const char * GetNodeCategory() const override
Definition FunctionNodes.h:52
DECLARE_GRAPH_NODE(FunctionCallNode, GraphNode)
virtual const char * GetNodeTypeName() const override
Definition FunctionNodes.cpp:345
const std::string & GetFunctionName() const
Definition FunctionNodes.h:58
virtual glm::vec4 GetNodeColor() const override
Definition FunctionNodes.h:53
virtual void Evaluate() override
Definition FunctionNodes.cpp:182
virtual void CopyCustomData(const GraphNode *src) override
Definition FunctionNodes.cpp:355
void RebuildPinsFromFunction(NodeGraphAsset *asset)
Definition FunctionNodes.cpp:388
NodeGraphAsset * mOwnerAsset
Definition FunctionNodes.h:68
virtual void LoadStream(Stream &stream, uint32_t version) override
Definition FunctionNodes.cpp:267
Definition FunctionNodes.h:18
virtual void Evaluate() override
Definition FunctionNodes.cpp:30
virtual const char * GetNodeTypeName() const override
Definition FunctionNodes.h:26
virtual glm::vec4 GetNodeColor() const override
Definition FunctionNodes.h:28
DECLARE_GRAPH_NODE(FunctionOutputNode, GraphNode)
virtual void SetupPins() override
Definition FunctionNodes.cpp:25
virtual void SaveStream(Stream &stream) override
Definition FunctionNodes.cpp:35
virtual void LoadStream(Stream &stream, uint32_t version) override
Definition FunctionNodes.cpp:48
virtual void CopyCustomData(const GraphNode *src) override
Definition FunctionNodes.cpp:103
virtual const char * GetNodeCategory() const override
Definition FunctionNodes.h:27
void RemoveOutputField(uint32_t index)
Definition FunctionNodes.cpp:151
void AddOutputField(const std::string &name, DatumType type)
Definition FunctionNodes.cpp:122
Definition GraphNode.h:73
Definition NodeGraphAsset.h:12
Definition Stream.h:21