Polyphase Game Engine
Loading...
Searching...
No Matches
Signals.h
Go to the documentation of this file.
1#pragma once
2
3#include "SmartPointer.h"
4#include "ScriptFunc.h"
5#include "Datum.h"
6
7#include <unordered_map>
8
9class Node;
10
11typedef void (*SignalHandlerFP)(Node*, const std::vector<Datum>&);
12
18
19class Signal
20{
21public:
22
23 void Emit(const std::vector<Datum>& args);
24 void Connect(Node* node, SignalHandlerFP func);
25 void Connect(Node* node, const ScriptFunc& func);
26 void Disconnect(Node* node);
27
28private:
29
30 void CleanupDeadConnections();
31
32 std::unordered_map<NodePtrWeak, SignalHandlerFunc> mConnectionMap;
33 std::vector <std::pair<NodePtrWeak, SignalHandlerFunc>> mPendingConnects;
34 std::vector <NodePtrWeak> mPendingDisconnects;
35 bool mEmitting = false;
36
37};
void(* SignalHandlerFP)(Node *, const std::vector< Datum > &)
Definition Signals.h:11
Definition Node.h:67
Definition ScriptFunc.h:10
Definition Signals.h:20
void Emit(const std::vector< Datum > &args)
Definition Signals.cpp:5
Definition Signals.h:14
ScriptFunc mScriptFunc
Definition Signals.h:16
SignalHandlerFP mFuncPointer
Definition Signals.h:15