21#define DECLARE_GRAPH_NODE(Class, Parent) \
22 DECLARE_FACTORY(Class, GraphNode); \
23 DECLARE_OBJECT(Class, Parent); \
26#define DEFINE_GRAPH_NODE(Class) \
27 DEFINE_FACTORY(Class, GraphNode); \
43void RegisterExternalGraphNode(uint32_t typeId,
const char* typeName,
const char* category,
const char* domainName,
const glm::vec4& color);
45#define REGISTER_GRAPH_NODE(Class, TypeName, Category, DomainName, Color) \
46 namespace { struct AutoRegGraphNode_##Class { AutoRegGraphNode_##Class() { \
47 RegisterExternalGraphNode(OctHashString(#Class), TypeName, Category, DomainName, Color); \
48 }} s_autoRegGraphNode_##Class; }
63 const char** domainNames, uint32_t domainCount,
const glm::vec4& color);
65#define REGISTER_GRAPH_NODE_MULTI(Class, TypeName, Category, Color, ...) \
66 namespace { struct AutoRegGraphNodeMulti_##Class { AutoRegGraphNodeMulti_##Class() { \
67 static const char* sDomains[] = { __VA_ARGS__ }; \
68 RegisterExternalGraphNodeMulti(OctHashString(#Class), TypeName, Category, \
69 sDomains, sizeof(sDomains)/sizeof(sDomains[0]), Color); \
70 }} s_autoRegGraphNodeMulti_##Class; }
111 virtual bool GetPinEnumOptions(uint32_t pinIndex, std::vector<PinEnumOption>& outOptions)
const {
return false; }
DatumType
Definition Datum.h:28
void RegisterExternalGraphNode(uint32_t typeId, const char *typeName, const char *category, const char *domainName, const glm::vec4 &color)
Definition GraphDomainManager.cpp:40
void RegisterExternalGraphNodeMulti(uint32_t typeId, const char *typeName, const char *category, const char **domainNames, uint32_t domainCount, const glm::vec4 &color)
Definition GraphDomainManager.cpp:51
uint32_t GraphPinId
Definition GraphTypes.h:8
constexpr GraphNodeId INVALID_GRAPH_NODE_ID
Definition GraphTypes.h:11
uint32_t GraphNodeId
Definition GraphTypes.h:7
Definition GraphNode.h:73
GraphPin & AddOutputPin(const char *name, DatumType type)
Definition GraphNode.cpp:153
std::vector< GraphPin > & GetInputPins()
Definition GraphNode.h:132
virtual const char * GetNodeCategory() const
Definition GraphNode.h:87
GraphPinId GetInputPinId(uint32_t index) const
Definition GraphNode.cpp:225
GraphPinId mNextPinId
Definition GraphNode.h:149
virtual glm::vec4 GetNodeColor() const
Definition GraphNode.cpp:27
GraphPin * GetOutputPin(uint32_t index)
Definition GraphNode.cpp:252
const Datum & GetInputValue(uint32_t index) const
Definition GraphNode.cpp:261
virtual const char * GetEventName() const
Definition GraphNode.h:93
void TriggerExecutionPin(uint32_t outputPinIndex)
Definition GraphNode.cpp:280
DECLARE_OBJECT(GraphNode, Object)
std::vector< GraphPin > & GetOutputPins()
Definition GraphNode.h:133
void SetGraph(NodeGraph *graph)
Definition GraphNode.h:98
void SetId(GraphNodeId id)
Definition GraphNode.h:136
GraphPin * GetInputPin(uint32_t index)
Definition GraphNode.cpp:243
virtual bool GetPinEnumOptions(uint32_t pinIndex, std::vector< PinEnumOption > &outOptions) const
Definition GraphNode.h:111
const std::vector< GraphPin > & GetOutputPins() const
Definition GraphNode.h:131
std::vector< GraphPin > mOutputPins
Definition GraphNode.h:146
virtual ~GraphNode()
Definition GraphNode.cpp:15
virtual void LoadStream(Stream &stream, uint32_t version)
Definition GraphNode.cpp:97
glm::vec2 mEditorPosition
Definition GraphNode.h:147
void SetOutputValue(uint32_t index, const Datum &value)
Definition GraphNode.cpp:272
std::vector< GraphPin > mInputPins
Definition GraphNode.h:145
virtual void SetupPins()
Definition GraphNode.cpp:19
GraphPin & AddInputPin(const char *name, DatumType type, const Datum &defaultValue=Datum())
Definition GraphNode.cpp:138
virtual void SaveStream(Stream &stream)
Definition GraphNode.cpp:76
virtual void Evaluate()
Definition GraphNode.cpp:23
void SetEditorPosition(const glm::vec2 &pos)
Definition GraphNode.h:139
const glm::vec2 & GetEditorPosition() const
Definition GraphNode.h:138
virtual bool IsFlowNode() const
Definition GraphNode.h:91
virtual bool IsEventNode() const
Definition GraphNode.h:92
static void WriteDatumToStream(Stream &stream, const Datum &datum)
Definition GraphNode.cpp:38
GraphNodeId mId
Definition GraphNode.h:144
GraphNodeId GetId() const
Definition GraphNode.h:135
virtual const std::string & GetInputName() const
Definition GraphNode.cpp:32
uint32_t GetNumOutputPins() const
Definition GraphNode.h:128
NodeGraph * GetGraph() const
Definition GraphNode.h:99
virtual const char * GetNodeTypeName() const
Definition GraphNode.h:86
DECLARE_FACTORY_MANAGER(GraphNode)
const std::vector< GraphPin > & GetInputPins() const
Definition GraphNode.h:130
static Datum ReadDatumFromStream(Stream &stream)
Definition GraphNode.cpp:57
uint32_t GetNumInputPins() const
Definition GraphNode.h:127
GraphNode()
Definition GraphNode.cpp:11
DECLARE_FACTORY(GraphNode, GraphNode)
virtual void SetInputName(const std::string &name)
Definition GraphNode.h:95
virtual void CopyCustomData(const GraphNode *src)
Definition GraphNode.h:107
GraphPinId GetOutputPinId(uint32_t index) const
Definition GraphNode.cpp:234
NodeGraph * mGraph
Definition GraphNode.h:143
bool WasExecutionTriggered(uint32_t inputPinIndex) const
Definition GraphNode.cpp:309
virtual bool IsInputNode() const
Definition GraphNode.h:90
Definition NodeGraph.h:17
Definition GraphNode.h:16
int32_t mValue
Definition GraphNode.h:18
const char * mName
Definition GraphNode.h:17