Polyphase Game Engine
Loading...
Searching...
No Matches
NodeGraphPlayer.h
Go to the documentation of this file.
1#pragma once
2
3#include "Nodes/Node.h"
4#include "AssetRef.h"
7
8#include <vector>
9#include <map>
10
11class NodeGraphAsset;
12class Primitive3D;
13
15{
16 Node* mOtherNode = nullptr;
17};
18
20{
21 Node* mOtherNode = nullptr;
22 glm::vec3 mHitPosition = glm::vec3(0.0f);
23 glm::vec3 mHitNormal = glm::vec3(0.0f);
24};
25
27{
28 Node* mThisComp = nullptr;
29 Node* mOtherComp = nullptr;
30
31 bool operator<(const CollisionPairKey& other) const
32 {
33 if (mThisComp != other.mThisComp)
34 return mThisComp < other.mThisComp;
35 return mOtherComp < other.mOtherComp;
36 }
37};
38
39class NodeGraphPlayer : public Node
40{
41public:
42
44
46 virtual ~NodeGraphPlayer();
47
48 virtual void Create() override;
49 virtual void Destroy() override;
50 virtual void Tick(float deltaTime) override;
51 virtual void Start() override;
52 virtual void Stop() override;
53
54 // Physics event overrides
55 virtual void BeginOverlap(Primitive3D* thisComp, Primitive3D* otherComp) override;
56 virtual void EndOverlap(Primitive3D* thisComp, Primitive3D* otherComp) override;
57 virtual void OnCollision(
58 Primitive3D* thisComp,
59 Primitive3D* otherComp,
60 glm::vec3 impactPoint,
61 glm::vec3 impactNormal,
62 btPersistentManifold* manifold) override;
63
64 virtual void GatherProperties(std::vector<Property>& outProps) override;
65 virtual const char* GetTypeName() const override;
66
67 // Playback API
68 void Play();
69 void Pause();
70 void StopGraph();
71 void Reset();
72 bool IsPlaying() const;
73 bool IsPaused() const;
74
75 // Asset
78
79 // Input setters (delegate to mRuntimeGraph)
80 bool SetInputFloat(const char* name, float value);
81 bool SetInputInt(const char* name, int32_t value);
82 bool SetInputBool(const char* name, bool value);
83 bool SetInputString(const char* name, const char* value);
84 bool SetInputVector(const char* name, const glm::vec3& value);
85 bool SetInputColor(const char* name, const glm::vec4& value);
86 bool SetInputByte(const char* name, uint8_t value);
87 bool SetInputAsset(const char* name, Asset* asset);
88 bool SetInputVector2D(const char* name, const glm::vec2& value);
89 bool SetInputShort(const char* name, int16_t value);
90 bool SetInputNode(const char* name, Node* value);
91 bool SetInputNode3D(const char* name, Node* value);
92 bool SetInputWidget(const char* name, Node* value);
93 bool SetInputText(const char* name, Node* value);
94 bool SetInputQuad(const char* name, Node* value);
95 bool SetInputAudio3D(const char* name, Node* value);
96 bool SetInputScene(const char* name, Asset* asset);
97 bool SetInputSpline3D(const char* name, Node* value);
98
99 // Output reading (after evaluation)
100 float GetOutputFloat(uint32_t pinIndex) const;
101 int32_t GetOutputInt(uint32_t pinIndex) const;
102 bool GetOutputBool(uint32_t pinIndex) const;
103 std::string GetOutputString(uint32_t pinIndex) const;
104 glm::vec2 GetOutputVector2D(uint32_t pinIndex) const;
105 glm::vec3 GetOutputVector(uint32_t pinIndex) const;
106 glm::vec4 GetOutputColor(uint32_t pinIndex) const;
107 uint8_t GetOutputByte(uint32_t pinIndex) const;
108 int16_t GetOutputShort(uint32_t pinIndex) const;
109 Asset* GetOutputAsset(uint32_t pinIndex) const;
110 Node* GetOutputNode(uint32_t pinIndex) const;
111
112 // Settings
113 void SetPlayOnStart(bool v) { mPlayOnStart = v; }
114 bool GetPlayOnStart() const { return mPlayOnStart; }
115
116 // Event system
117 float GetDeltaTime() const { return mDeltaTime; }
118 bool HasStartFired() const { return mStartFired; }
119
120 // Physics event accessors (used by event graph nodes during Evaluate)
123
125
126 // Fire an externally-sourced event (e.g. from the Serial subsystem).
127 // Safe to call from the main thread at any time; no-op if not playing.
128 void FireNamedEvent(const char* eventName);
129
130protected:
131
132 void EnsureRuntimeGraph();
133 void FireEvent(const char* eventName);
135
139 bool mPlaying = false;
140 bool mPaused = false;
141 bool mPlayOnStart = false;
142 bool mStartFired = false;
143 float mDeltaTime = 0.0f;
144
145 // Physics event queues
146 std::vector<OverlapEventData> mBeginOverlapQueue;
147 std::vector<OverlapEventData> mEndOverlapQueue;
148 std::map<CollisionPairKey, CollisionEventData> mCurrentCollisions;
149 std::map<CollisionPairKey, CollisionEventData> mPreviousCollisions;
150
151 // Current event context (set during ProcessPhysicsEvents, read by event graph nodes)
154};
Definition AssetRef.h:18
Definition Asset.h:113
Definition GraphProcessor.h:11
Definition NodeGraphAsset.h:12
Definition NodeGraphPlayer.h:40
bool SetInputColor(const char *name, const glm::vec4 &value)
Definition NodeGraphPlayer.cpp:337
bool IsPlaying() const
Definition NodeGraphPlayer.cpp:281
void FireEvent(const char *eventName)
Definition NodeGraphPlayer.cpp:231
std::map< CollisionPairKey, CollisionEventData > mCurrentCollisions
Definition NodeGraphPlayer.h:148
void Reset()
Definition NodeGraphPlayer.cpp:260
int32_t GetOutputInt(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:426
Node * GetOutputNode(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:525
bool SetInputQuad(const char *name, Node *value)
Definition NodeGraphPlayer.cpp:391
OverlapEventData mCurrentOverlapEventData
Definition NodeGraphPlayer.h:152
float GetOutputFloat(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:415
void EnsureRuntimeGraph()
Definition NodeGraphPlayer.cpp:545
void SetPlayOnStart(bool v)
Definition NodeGraphPlayer.h:113
bool SetInputNode3D(const char *name, Node *value)
Definition NodeGraphPlayer.cpp:373
virtual void OnCollision(Primitive3D *thisComp, Primitive3D *otherComp, glm::vec3 impactPoint, glm::vec3 impactNormal, btPersistentManifold *manifold) override
Definition NodeGraphPlayer.cpp:115
bool SetInputVector2D(const char *name, const glm::vec2 &value)
Definition NodeGraphPlayer.cpp:355
void Pause()
Definition NodeGraphPlayer.cpp:213
bool mStartFired
Definition NodeGraphPlayer.h:142
bool mPlaying
Definition NodeGraphPlayer.h:139
glm::vec4 GetOutputColor(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:481
bool IsPaused() const
Definition NodeGraphPlayer.cpp:286
virtual void BeginOverlap(Primitive3D *thisComp, Primitive3D *otherComp) override
Definition NodeGraphPlayer.cpp:97
NodeGraph * GetRuntimeGraph()
Definition NodeGraphPlayer.h:124
bool SetInputFloat(const char *name, float value)
Definition NodeGraphPlayer.cpp:307
bool SetInputString(const char *name, const char *value)
Definition NodeGraphPlayer.cpp:325
const CollisionEventData & GetCurrentCollisionEventData() const
Definition NodeGraphPlayer.h:122
bool SetInputInt(const char *name, int32_t value)
Definition NodeGraphPlayer.cpp:313
bool SetInputAsset(const char *name, Asset *asset)
Definition NodeGraphPlayer.cpp:349
bool mPlayOnStart
Definition NodeGraphPlayer.h:141
virtual void EndOverlap(Primitive3D *thisComp, Primitive3D *otherComp) override
Definition NodeGraphPlayer.cpp:106
std::string GetOutputString(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:459
bool HasStartFired() const
Definition NodeGraphPlayer.h:118
std::vector< OverlapEventData > mEndOverlapQueue
Definition NodeGraphPlayer.h:147
glm::vec3 GetOutputVector(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:448
virtual void Stop() override
Definition NodeGraphPlayer.cpp:87
bool SetInputNode(const char *name, Node *value)
Definition NodeGraphPlayer.cpp:367
virtual const char * GetTypeName() const override
Definition NodeGraphPlayer.cpp:190
bool GetPlayOnStart() const
Definition NodeGraphPlayer.h:114
virtual void Create() override
Definition NodeGraphPlayer.cpp:24
void ProcessPhysicsEvents()
Definition NodeGraphPlayer.cpp:136
const OverlapEventData & GetCurrentOverlapEventData() const
Definition NodeGraphPlayer.h:121
std::vector< OverlapEventData > mBeginOverlapQueue
Definition NodeGraphPlayer.h:146
NodeGraphPlayer()
Definition NodeGraphPlayer.cpp:15
bool SetInputByte(const char *name, uint8_t value)
Definition NodeGraphPlayer.cpp:343
void FireNamedEvent(const char *eventName)
Definition NodeGraphPlayer.cpp:224
bool GetOutputBool(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:437
DECLARE_NODE(NodeGraphPlayer, Node)
std::map< CollisionPairKey, CollisionEventData > mPreviousCollisions
Definition NodeGraphPlayer.h:149
Asset * GetOutputAsset(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:514
bool SetInputBool(const char *name, bool value)
Definition NodeGraphPlayer.cpp:319
bool SetInputVector(const char *name, const glm::vec3 &value)
Definition NodeGraphPlayer.cpp:331
CollisionEventData mCurrentCollisionEventData
Definition NodeGraphPlayer.h:153
bool mPaused
Definition NodeGraphPlayer.h:140
bool SetInputScene(const char *name, Asset *asset)
Definition NodeGraphPlayer.cpp:403
GraphProcessor mProcessor
Definition NodeGraphPlayer.h:138
void Play()
Definition NodeGraphPlayer.cpp:195
float mDeltaTime
Definition NodeGraphPlayer.h:143
virtual void Tick(float deltaTime) override
Definition NodeGraphPlayer.cpp:40
NodeGraph * mRuntimeGraph
Definition NodeGraphPlayer.h:137
void StopGraph()
Definition NodeGraphPlayer.cpp:218
bool SetInputWidget(const char *name, Node *value)
Definition NodeGraphPlayer.cpp:379
int16_t GetOutputShort(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:503
void SetNodeGraphAsset(NodeGraphAsset *asset)
Definition NodeGraphPlayer.cpp:291
bool SetInputSpline3D(const char *name, Node *value)
Definition NodeGraphPlayer.cpp:409
bool SetInputShort(const char *name, int16_t value)
Definition NodeGraphPlayer.cpp:361
float GetDeltaTime() const
Definition NodeGraphPlayer.h:117
bool SetInputAudio3D(const char *name, Node *value)
Definition NodeGraphPlayer.cpp:397
bool SetInputText(const char *name, Node *value)
Definition NodeGraphPlayer.cpp:385
virtual void GatherProperties(std::vector< Property > &outProps) override
Definition NodeGraphPlayer.cpp:180
AssetRef mNodeGraphAsset
Definition NodeGraphPlayer.h:136
uint8_t GetOutputByte(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:492
NodeGraphAsset * GetNodeGraphAsset() const
Definition NodeGraphPlayer.cpp:302
virtual void Start() override
Definition NodeGraphPlayer.cpp:77
glm::vec2 GetOutputVector2D(uint32_t pinIndex) const
Definition NodeGraphPlayer.cpp:470
virtual void Destroy() override
Definition NodeGraphPlayer.cpp:29
virtual ~NodeGraphPlayer()
Definition NodeGraphPlayer.cpp:20
Definition NodeGraph.h:17
Definition Node.h:67
Definition Primitive3d.h:46
Definition NodeGraphPlayer.h:20
Node * mOtherNode
Definition NodeGraphPlayer.h:21
glm::vec3 mHitNormal
Definition NodeGraphPlayer.h:23
glm::vec3 mHitPosition
Definition NodeGraphPlayer.h:22
Definition NodeGraphPlayer.h:27
bool operator<(const CollisionPairKey &other) const
Definition NodeGraphPlayer.h:31
Node * mOtherComp
Definition NodeGraphPlayer.h:29
Node * mThisComp
Definition NodeGraphPlayer.h:28
Definition NodeGraphPlayer.h:15
Node * mOtherNode
Definition NodeGraphPlayer.h:16