Toast Engine
Toggle main menu visibility
Loading...
Searching...
No Matches
lua_signal.hpp
1
#pragma once
2
3
#include "
toast/events/signals.hpp
"
4
#include "
toast/scripting/node_proxy.hpp
"
5
6
#include <memory>
7
#include <string>
8
#include <vector>
9
10
namespace
scripting {
11
12
class
LuaSignal {
13
public
:
14
LuaSignal();
15
16
void
owner(
toast::Box<toast::Node>
node);
17
18
[[nodiscard]]
19
auto
connect(
NodeProxy
target, std::string_view function, signals::ConnectionSource source,
bool
forwards_args =
true
) -> bool;
20
21
[[nodiscard]]
22
auto
disconnect(
NodeProxy
target, std::string_view function, signals::ConnectionSource source) -> bool;
23
24
[[nodiscard]]
25
auto
connectSelf(std::string_view function, signals::ConnectionSource source,
bool
forwards_args =
true
) -> bool;
26
27
[[nodiscard]]
28
auto
disconnectSelf(std::string_view function, signals::ConnectionSource source) -> bool;
29
30
void
clear(signals::ConnectionSource source) { m_state->signal.clear(source); }
31
32
void
fire(
const
signals::DynamicArgs
& args = {}) { m_state->signal.fire(args); }
33
34
void
argTypes(std::vector<std::string> types) { m_state->arg_types = std::move(types); }
35
36
[[nodiscard]]
37
auto
argTypes()
const
->
const
std::vector<std::string>& {
38
return
m_state->arg_types;
39
}
40
41
[[nodiscard]]
42
auto
connections()
const
-> std::vector<signals::ConnectionInfo> {
43
return
m_state->signal.connections();
44
}
45
46
private
:
47
struct
State {
48
toast::Box<toast::Node>
owner;
49
signals::Signal<signals::DynamicArgs> signal;
50
std::vector<std::string> arg_types;
51
};
52
53
std::shared_ptr<State> m_state;
54
};
55
56
}
scripting::NodeProxy
Definition
node_proxy.hpp:55
toast::Box
Intrusive reference-counted handle to a Node.
Definition
box.hpp:35
node_proxy.hpp
Lua-side proxy for a toast::Node.
signals.hpp
signals::DynamicArgs
Definition
signal_types.hpp:18
engine
src
toast
scripting
lua_signal.hpp
Generated by
1.17.0