Unravel Engine C++ Reference
Loading...
Searching...
No Matches
audio_source_component_bindings.cpp
Go to the documentation of this file.
2#include "script_bindings.h"
3
4#include "../script_interop.h"
5
8
9namespace unravel
10{
11namespace
12{
13
14auto internal_m2n_audio_source_get_loop(entt::entity id) -> bool
15{
17 {
18 return comp->is_looping();
19 }
20
21 return {};
22}
23
24//-------------------------------------------------
25
26void internal_m2n_audio_source_set_loop(entt::entity id, bool loop)
27{
29 {
30 comp->set_loop(loop);
31 }
32}
33
34auto internal_m2n_audio_source_get_volume(entt::entity id) -> float
35{
37 {
38 return comp->get_volume();
39 }
40
41 return {};
42}
43
44void internal_m2n_audio_source_set_volume(entt::entity id, float volume)
45{
47 {
48 comp->set_volume(volume);
49 }
50}
51
52auto internal_m2n_audio_source_get_pitch(entt::entity id) -> float
53{
55 {
56 return comp->get_pitch();
57 }
58
59 return {};
60}
61
62void internal_m2n_audio_source_set_pitch(entt::entity id, float pitch)
63{
65 {
66 comp->set_pitch(pitch);
67 }
68}
69
70auto internal_m2n_audio_source_get_volume_rolloff(entt::entity id) -> float
71{
73 {
74 return comp->get_volume_rolloff();
75 }
76
77 return {};
78}
79
80void internal_m2n_audio_source_set_volume_rolloff(entt::entity id, float rolloff)
81{
83 {
84 comp->set_volume_rolloff(rolloff);
85 }
86}
87
88auto internal_m2n_audio_source_get_min_distance(entt::entity id) -> float
89{
91 {
92 return comp->get_range().min;
93 }
94
95 return {};
96}
97
98void internal_m2n_audio_source_set_min_distance(entt::entity id, float distance)
99{
101 {
102 auto range = comp->get_range();
104 comp->set_range(range);
105 }
106}
107
108auto internal_m2n_audio_source_get_max_distance(entt::entity id) -> float
109{
111 {
112 return comp->get_range().max;
113 }
114
115 return {};
116}
117
118void internal_m2n_audio_source_set_max_distance(entt::entity id, float distance)
119{
121 {
122 auto range = comp->get_range();
124 comp->set_range(range);
125 }
126}
127
128auto internal_m2n_audio_source_get_mute(entt::entity id) -> bool
129{
131 {
132 return comp->is_muted();
133 }
134
135 return {};
136}
137
138void internal_m2n_audio_source_set_mute(entt::entity id, bool mute)
139{
141 {
142 comp->set_mute(mute);
143 }
144}
145
146auto internal_m2n_audio_source_get_time(entt::entity id) -> float
147{
149 {
150 return float(comp->get_playback_position().count());
151 }
152
153 return {};
154}
155
156void internal_m2n_audio_source_set_time(entt::entity id, float seconds)
157{
159 {
160 comp->set_playback_position(audio::duration_t(seconds));
161 }
162}
163
164auto internal_m2n_audio_source_is_playing(entt::entity id) -> bool
165{
167 {
168 return comp->is_playing();
169 }
170
171 return {};
172}
173
174auto internal_m2n_audio_source_is_paused(entt::entity id) -> bool
175{
177 {
178 return comp->is_paused();
179 }
180
181 return {};
182}
183
184void internal_m2n_audio_source_play(entt::entity id)
185{
187 {
188 comp->play();
189 }
190}
191
192void internal_m2n_audio_source_stop(entt::entity id)
193{
195 {
196 comp->stop();
197 }
198}
199
200void internal_m2n_audio_source_pause(entt::entity id)
201{
203 {
204 comp->pause();
205 }
206}
207
208void internal_m2n_audio_source_resume(entt::entity id)
209{
211 {
212 comp->resume();
213 }
214}
215
216auto internal_m2n_audio_source_get_audio_clip(entt::entity id) -> hpp::uuid
217{
219 {
220 return comp->get_clip().uid();
221 }
222
223 return {};
224}
225
226void internal_m2n_audio_source_set_audio_clip(entt::entity id, hpp::uuid uid)
227{
229 {
230 auto& ctx = engine::context();
231 auto& am = ctx.get_cached<asset_manager>();
232
233 auto asset = am.get_asset<audio_clip>(uid);
234 comp->set_clip(asset);
235 }
236}
237
238} // namespace
239
241{
242 APPLOG_TRACE("{}", __func__);
243
244 auto reg = dotnet::internal_call_registry("Unravel.Core.AudioSourceComponent");
245 reg.add_internal_call("internal_m2n_audio_source_get_loop", dotnet_internal_call(internal_m2n_audio_source_get_loop));
246 reg.add_internal_call("internal_m2n_audio_source_set_loop", dotnet_internal_call(internal_m2n_audio_source_set_loop));
247 reg.add_internal_call("internal_m2n_audio_source_get_volume",
248 dotnet_internal_call(internal_m2n_audio_source_get_volume));
249 reg.add_internal_call("internal_m2n_audio_source_set_volume",
250 dotnet_internal_call(internal_m2n_audio_source_set_volume));
251 reg.add_internal_call("internal_m2n_audio_source_get_pitch",
252 dotnet_internal_call(internal_m2n_audio_source_get_pitch));
253 reg.add_internal_call("internal_m2n_audio_source_set_pitch",
254 dotnet_internal_call(internal_m2n_audio_source_set_pitch));
255 reg.add_internal_call("internal_m2n_audio_source_get_volume_rolloff",
256 dotnet_internal_call(internal_m2n_audio_source_get_volume_rolloff));
257 reg.add_internal_call("internal_m2n_audio_source_set_volume_rolloff",
258 dotnet_internal_call(internal_m2n_audio_source_set_volume_rolloff));
259 reg.add_internal_call("internal_m2n_audio_source_get_min_distance",
260 dotnet_internal_call(internal_m2n_audio_source_get_min_distance));
261 reg.add_internal_call("internal_m2n_audio_source_set_min_distance",
262 dotnet_internal_call(internal_m2n_audio_source_set_min_distance));
263 reg.add_internal_call("internal_m2n_audio_source_get_max_distance",
264 dotnet_internal_call(internal_m2n_audio_source_get_max_distance));
265 reg.add_internal_call("internal_m2n_audio_source_set_max_distance",
266 dotnet_internal_call(internal_m2n_audio_source_set_max_distance));
267 reg.add_internal_call("internal_m2n_audio_source_get_mute", dotnet_internal_call(internal_m2n_audio_source_get_mute));
268
269 reg.add_internal_call("internal_m2n_audio_source_set_mute", dotnet_internal_call(internal_m2n_audio_source_set_mute));
270
271 reg.add_internal_call("internal_m2n_audio_source_is_playing",
272 dotnet_internal_call(internal_m2n_audio_source_is_playing));
273 reg.add_internal_call("internal_m2n_audio_source_is_paused",
274 dotnet_internal_call(internal_m2n_audio_source_is_paused));
275 reg.add_internal_call("internal_m2n_audio_source_play", dotnet_internal_call(internal_m2n_audio_source_play));
276 reg.add_internal_call("internal_m2n_audio_source_stop", dotnet_internal_call(internal_m2n_audio_source_stop));
277
278 reg.add_internal_call("internal_m2n_audio_source_pause", dotnet_internal_call(internal_m2n_audio_source_pause));
279 reg.add_internal_call("internal_m2n_audio_source_resume", dotnet_internal_call(internal_m2n_audio_source_resume));
280 reg.add_internal_call("internal_m2n_audio_source_get_audio_clip",
281 dotnet_internal_call(internal_m2n_audio_source_get_audio_clip));
282 reg.add_internal_call("internal_m2n_audio_source_set_audio_clip",
283 dotnet_internal_call(internal_m2n_audio_source_set_audio_clip));
284}
285
286} // namespace unravel
#define APPLOG_TRACE(...)
Definition logging.h:17
void register_audio_source_component_script_bindings()
auto safe_get_component(entt::entity id) -> T *
std::iterator_traits< octet_iterator >::difference_type distance(octet_iterator first, octet_iterator last)
Definition checked.h:218
static auto context() -> rtti::context &
Definition engine.cpp:111