Polyphase Game Engine
Loading...
Searching...
No Matches
NodeGraphAsset.h
Go to the documentation of this file.
1#pragma once
2
3#include "Asset.h"
4#include "Factory.h"
7
8#include <vector>
9#include <string>
10
11class NodeGraphAsset : public Asset
12{
13public:
14
16
19
20 virtual void LoadStream(Stream& stream, Platform platform) override;
21 virtual void SaveStream(Stream& stream, Platform platform) override;
22 virtual void Create() override;
23 virtual void Destroy() override;
24
25 virtual void GatherProperties(std::vector<Property>& outProps) override;
26 virtual glm::vec4 GetTypeColor() override;
27 virtual const char* GetTypeName() override;
28
29 NodeGraph& GetGraph() { return mGraph; }
30 const NodeGraph& GetGraph() const { return mGraph; }
31
32 // Function graphs
33 NodeGraph* AddFunctionGraph(const std::string& name);
34 void RemoveFunctionGraph(uint32_t index);
35 NodeGraph* FindFunctionGraph(const std::string& name) const;
36 uint32_t GetNumFunctionGraphs() const { return (uint32_t)mFunctionGraphs.size(); }
37 NodeGraph* GetFunctionGraph(uint32_t index);
38 const std::vector<NodeGraph*>& GetFunctionGraphs() const { return mFunctionGraphs; }
39 void RenameFunctionGraph(uint32_t index, const std::string& newName);
42
43 // Variables
44 int32_t AddVariable(const std::string& name, DatumType type);
45 void RemoveVariable(uint32_t index);
46 void RenameVariable(uint32_t index, const std::string& newName);
47 int32_t FindVariableIndex(const std::string& name) const;
48 GraphVariable* GetVariable(uint32_t index);
49 const GraphVariable* GetVariable(uint32_t index) const;
50 uint32_t GetNumVariables() const { return (uint32_t)mVariables.size(); }
51 const std::vector<GraphVariable>& GetVariables() const { return mVariables; }
52 std::vector<GraphVariable>& GetVariables() { return mVariables; }
54
55 static bool HandlePropChange(Datum* datum, uint32_t index, const void* newValue);
56
57protected:
58
60 std::vector<NodeGraph*> mFunctionGraphs;
61 std::vector<GraphVariable> mVariables;
62 int32_t mDomainIndex = 0;
63};
DatumType
Definition Datum.h:28
Platform
Definition EngineTypes.h:31
Definition Asset.h:113
Definition Datum.h:164
Definition NodeGraphAsset.h:12
virtual void Create() override
Definition NodeGraphAsset.cpp:96
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition NodeGraphAsset.cpp:200
std::vector< GraphVariable > & GetVariables()
Definition NodeGraphAsset.h:52
uint32_t GetNumFunctionGraphs() const
Definition NodeGraphAsset.h:36
virtual void SaveStream(Stream &stream, Platform platform) override
Definition NodeGraphAsset.cpp:74
int32_t mDomainIndex
Definition NodeGraphAsset.h:62
static bool HandlePropChange(Datum *datum, uint32_t index, const void *newValue)
Definition NodeGraphAsset.cpp:150
NodeGraphAsset()
Definition NodeGraphAsset.cpp:13
const std::vector< GraphVariable > & GetVariables() const
Definition NodeGraphAsset.h:51
int32_t FindVariableIndex(const std::string &name) const
Definition NodeGraphAsset.cpp:424
void ResolveFunctionCallNodes()
Definition NodeGraphAsset.cpp:307
NodeGraph * FindFunctionGraph(const std::string &name) const
Definition NodeGraphAsset.cpp:245
void RenameVariable(uint32_t index, const std::string &newName)
Definition NodeGraphAsset.cpp:375
void RenameFunctionGraph(uint32_t index, const std::string &newName)
Definition NodeGraphAsset.cpp:266
virtual glm::vec4 GetTypeColor() override
Definition NodeGraphAsset.cpp:327
virtual void Destroy() override
Definition NodeGraphAsset.cpp:136
void RemoveFunctionGraph(uint32_t index)
Definition NodeGraphAsset.cpp:236
const std::vector< NodeGraph * > & GetFunctionGraphs() const
Definition NodeGraphAsset.h:38
GraphVariable * GetVariable(uint32_t index)
Definition NodeGraphAsset.cpp:436
void RemoveVariable(uint32_t index)
Definition NodeGraphAsset.cpp:367
~NodeGraphAsset()
Definition NodeGraphAsset.cpp:18
std::vector< NodeGraph * > mFunctionGraphs
Definition NodeGraphAsset.h:60
int32_t AddVariable(const std::string &name, DatumType type)
Definition NodeGraphAsset.cpp:337
NodeGraph & GetGraph()
Definition NodeGraphAsset.h:29
uint32_t GetNumVariables() const
Definition NodeGraphAsset.h:50
DECLARE_ASSET(NodeGraphAsset, Asset)
void ResetVariablesToDefaults()
Definition NodeGraphAsset.cpp:454
NodeGraph * GetFunctionGraph(uint32_t index)
Definition NodeGraphAsset.cpp:257
void ResolveVariableNodes()
Definition NodeGraphAsset.cpp:462
const NodeGraph & GetGraph() const
Definition NodeGraphAsset.h:30
virtual void LoadStream(Stream &stream, Platform platform) override
Definition NodeGraphAsset.cpp:22
NodeGraph * AddFunctionGraph(const std::string &name)
Definition NodeGraphAsset.cpp:220
virtual const char * GetTypeName() override
Definition NodeGraphAsset.cpp:332
std::vector< GraphVariable > mVariables
Definition NodeGraphAsset.h:61
NodeGraph mGraph
Definition NodeGraphAsset.h:59
Definition NodeGraph.h:17
Definition Stream.h:21
Definition GraphVariable.h:8