Calamity Engine
1.0.0
A cross-platform 2D game engine written in C++ and SDL3.
Loading...
Searching...
No Matches
signal.hpp
Go to the documentation of this file.
1
#pragma once
2
#include <functional>
3
#include <algorithm>
4
#include <vector>
5
6
// btw, this signal class is genuinely so simple that it doesn't need to have a c++ file, i do have a signal.cpp file but it's there for "futureproofing" lmao
7
52
template
<
typename
... Args>
53
class
Signal
{
54
public
:
55
bool
fired
=
false
;
56
57
void
fire
(Args... args) {
58
if
(
fired
)
return
;
59
fired
=
true
;
60
for
(
const
auto
&
callback
: callbacks) {
61
callback
(args...);
62
}
63
}
64
65
void
reset
() {
66
fired
=
false
;
67
}
68
69
void
connect
(std::function<
void
(Args...)> cb) {
70
callbacks.push_back(cb);
71
}
72
73
void
disconnect
(std::function<
void
(Args...)> cb) {
74
callbacks.erase(std::remove(callbacks.begin(), callbacks.end(), cb), callbacks.end());
75
}
76
77
private
:
78
std::vector<std::function<void(Args...)>> callbacks;
79
};
Signal
Definition
signal.hpp:53
Signal::connect
void connect(std::function< void(Args...)> cb)
Definition
signal.hpp:69
Signal::fire
void fire(Args... args)
Definition
signal.hpp:57
Signal::disconnect
void disconnect(std::function< void(Args...)> cb)
Definition
signal.hpp:73
Signal::reset
void reset()
Definition
signal.hpp:65
Signal::fired
bool fired
Definition
signal.hpp:55
callback
float callback(b2ShapeId shapeId, b2Vec2 point, b2Vec2 normal, float fraction, void *context)
Definition
definitions.cpp:108
backend
core
signal.hpp
Generated by
1.9.8