Unravel Engine C++ Reference
Loading...
Searching...
No Matches
character_controller_component_bindings.cpp
Go to the documentation of this file.
2#include "script_bindings.h"
3
4#include "../script_interop.h"
5
7
8namespace unravel
9{
10namespace
11{
12
13
14//------------------------------
15// Character Controller Component
16//------------------------------
17void internal_m2n_cc_move(entt::entity id, const math::vec3& displacement)
18{
20 {
21 comp->move(displacement);
22 }
23}
24
25void internal_m2n_cc_jump(entt::entity id, const math::vec3& velocity)
26{
28 {
29 comp->jump(velocity);
30 }
31}
32
33void internal_m2n_cc_apply_impulse(entt::entity id, const math::vec3& impulse)
34{
36 {
37 comp->apply_impulse(impulse);
38 }
39}
40
41void internal_m2n_cc_warp(entt::entity id, const math::vec3& position)
42{
44 {
45 comp->warp(position);
46 }
47}
48
49auto internal_m2n_cc_get_is_grounded(entt::entity id) -> bool
50{
52 {
53 return comp->is_grounded();
54 }
55 return false;
56}
57
58auto internal_m2n_cc_get_can_jump(entt::entity id) -> bool
59{
61 {
62 return comp->can_jump();
63 }
64 return false;
65}
66
67auto internal_m2n_cc_get_velocity(entt::entity id) -> math::vec3
68{
70 {
71 return comp->get_velocity();
72 }
73 return {};
74}
75
76void internal_m2n_cc_set_linear_velocity(entt::entity id, const math::vec3& velocity)
77{
79 {
80 comp->set_linear_velocity(velocity);
81 }
82}
83
84auto internal_m2n_cc_get_linear_velocity(entt::entity id) -> math::vec3
85{
87 {
88 return comp->get_linear_velocity();
89 }
90 return {};
91}
92
93auto internal_m2n_cc_get_radius(entt::entity id) -> float
94{
96 {
97 return comp->get_radius();
98 }
99 return 0.5f;
100}
101
102void internal_m2n_cc_set_radius(entt::entity id, float radius)
103{
105 {
106 comp->set_radius(radius);
107 }
108}
109
110auto internal_m2n_cc_get_height(entt::entity id) -> float
111{
113 {
114 return comp->get_height();
115 }
116 return 1.0f;
117}
118
119void internal_m2n_cc_set_height(entt::entity id, float height)
120{
122 {
123 comp->set_height(height);
124 }
125}
126
127auto internal_m2n_cc_get_center(entt::entity id) -> math::vec3
128{
130 {
131 return comp->get_center();
132 }
133 return {};
134}
135
136void internal_m2n_cc_set_center(entt::entity id, const math::vec3& center)
137{
139 {
140 comp->set_center(center);
141 }
142}
143
144auto internal_m2n_cc_get_step_height(entt::entity id) -> float
145{
147 {
148 return comp->get_step_height();
149 }
150 return 0.3f;
151}
152
153void internal_m2n_cc_set_step_height(entt::entity id, float step_height)
154{
156 {
157 comp->set_step_height(step_height);
158 }
159}
160
161auto internal_m2n_cc_get_slope_limit(entt::entity id) -> float
162{
164 {
165 return comp->get_slope_limit();
166 }
167 return 45.0f;
168}
169
170void internal_m2n_cc_set_slope_limit(entt::entity id, float slope_limit)
171{
173 {
174 comp->set_slope_limit(slope_limit);
175 }
176}
177
178auto internal_m2n_cc_get_skin_width(entt::entity id) -> float
179{
181 {
182 return comp->get_skin_width();
183 }
184 return 0.08f;
185}
186
187void internal_m2n_cc_set_skin_width(entt::entity id, float skin_width)
188{
190 {
191 comp->set_skin_width(skin_width);
192 }
193}
194
195auto internal_m2n_cc_get_gravity_scale(entt::entity id) -> float
196{
198 {
199 return comp->get_gravity_scale();
200 }
201 return 1.0f;
202}
203
204void internal_m2n_cc_set_gravity_scale(entt::entity id, float scale)
205{
207 {
208 comp->set_gravity_scale(scale);
209 }
210}
211
212auto internal_m2n_cc_get_terminal_velocity(entt::entity id) -> float
213{
215 {
216 return comp->get_terminal_velocity();
217 }
218 return 55.0f;
219}
220
221void internal_m2n_cc_set_terminal_velocity(entt::entity id, float speed)
222{
224 {
225 comp->set_terminal_velocity(speed);
226 }
227}
228
229auto internal_m2n_cc_get_linear_damping(entt::entity id) -> float
230{
232 {
233 return comp->get_linear_damping();
234 }
235 return 0.0f;
236}
237
238void internal_m2n_cc_set_linear_damping(entt::entity id, float damping)
239{
241 {
242 comp->set_linear_damping(damping);
243 }
244}
245
246auto internal_m2n_cc_get_include_layers(entt::entity id) -> layer_mask
247{
249 {
250 return comp->get_collision_include_mask();
251 }
252 return {};
253}
254
255void internal_m2n_cc_set_include_layers(entt::entity id, layer_mask mask)
256{
258 {
259 comp->set_collision_include_mask(mask);
260 }
261}
262
263auto internal_m2n_cc_get_exclude_layers(entt::entity id) -> layer_mask
264{
266 {
267 return comp->get_collision_exclude_mask();
268 }
269 return {};
270}
271
272void internal_m2n_cc_set_exclude_layers(entt::entity id, layer_mask mask)
273{
275 {
276 comp->set_collision_exclude_mask(mask);
277 }
278}
279
280auto internal_m2n_cc_get_collision_layers(entt::entity id) -> layer_mask
281{
283 {
284 return comp->get_collision_mask();
285 }
286 return {};
287}
288
289} // namespace
290
292{
293 APPLOG_TRACE("{}", __func__);
294
295 auto reg = dotnet::internal_call_registry("Unravel.Core.CharacterControllerComponent");
296 reg.add_internal_call("internal_m2n_cc_move", dotnet_internal_call(internal_m2n_cc_move));
297 reg.add_internal_call("internal_m2n_cc_jump", dotnet_internal_call(internal_m2n_cc_jump));
298 reg.add_internal_call("internal_m2n_cc_apply_impulse", dotnet_internal_call(internal_m2n_cc_apply_impulse));
299 reg.add_internal_call("internal_m2n_cc_warp", dotnet_internal_call(internal_m2n_cc_warp));
300
301 reg.add_internal_call("internal_m2n_cc_get_is_grounded", dotnet_internal_call(internal_m2n_cc_get_is_grounded));
302 reg.add_internal_call("internal_m2n_cc_get_can_jump", dotnet_internal_call(internal_m2n_cc_get_can_jump));
303 reg.add_internal_call("internal_m2n_cc_get_velocity", dotnet_internal_call(internal_m2n_cc_get_velocity));
304
305 reg.add_internal_call("internal_m2n_cc_get_linear_velocity", dotnet_internal_call(internal_m2n_cc_get_linear_velocity));
306 reg.add_internal_call("internal_m2n_cc_set_linear_velocity", dotnet_internal_call(internal_m2n_cc_set_linear_velocity));
307
308 reg.add_internal_call("internal_m2n_cc_get_radius", dotnet_internal_call(internal_m2n_cc_get_radius));
309 reg.add_internal_call("internal_m2n_cc_set_radius", dotnet_internal_call(internal_m2n_cc_set_radius));
310 reg.add_internal_call("internal_m2n_cc_get_height", dotnet_internal_call(internal_m2n_cc_get_height));
311 reg.add_internal_call("internal_m2n_cc_set_height", dotnet_internal_call(internal_m2n_cc_set_height));
312 reg.add_internal_call("internal_m2n_cc_get_center", dotnet_internal_call(internal_m2n_cc_get_center));
313 reg.add_internal_call("internal_m2n_cc_set_center", dotnet_internal_call(internal_m2n_cc_set_center));
314 reg.add_internal_call("internal_m2n_cc_get_step_height", dotnet_internal_call(internal_m2n_cc_get_step_height));
315 reg.add_internal_call("internal_m2n_cc_set_step_height", dotnet_internal_call(internal_m2n_cc_set_step_height));
316 reg.add_internal_call("internal_m2n_cc_get_slope_limit", dotnet_internal_call(internal_m2n_cc_get_slope_limit));
317 reg.add_internal_call("internal_m2n_cc_set_slope_limit", dotnet_internal_call(internal_m2n_cc_set_slope_limit));
318 reg.add_internal_call("internal_m2n_cc_get_skin_width", dotnet_internal_call(internal_m2n_cc_get_skin_width));
319 reg.add_internal_call("internal_m2n_cc_set_skin_width", dotnet_internal_call(internal_m2n_cc_set_skin_width));
320 reg.add_internal_call("internal_m2n_cc_get_gravity_scale", dotnet_internal_call(internal_m2n_cc_get_gravity_scale));
321 reg.add_internal_call("internal_m2n_cc_set_gravity_scale", dotnet_internal_call(internal_m2n_cc_set_gravity_scale));
322 reg.add_internal_call("internal_m2n_cc_get_terminal_velocity", dotnet_internal_call(internal_m2n_cc_get_terminal_velocity));
323 reg.add_internal_call("internal_m2n_cc_set_terminal_velocity", dotnet_internal_call(internal_m2n_cc_set_terminal_velocity));
324 reg.add_internal_call("internal_m2n_cc_get_linear_damping", dotnet_internal_call(internal_m2n_cc_get_linear_damping));
325 reg.add_internal_call("internal_m2n_cc_set_linear_damping", dotnet_internal_call(internal_m2n_cc_set_linear_damping));
326
327 reg.add_internal_call("internal_m2n_cc_get_include_layers", dotnet_internal_call(internal_m2n_cc_get_include_layers));
328 reg.add_internal_call("internal_m2n_cc_set_include_layers", dotnet_internal_call(internal_m2n_cc_set_include_layers));
329 reg.add_internal_call("internal_m2n_cc_get_exclude_layers", dotnet_internal_call(internal_m2n_cc_get_exclude_layers));
330 reg.add_internal_call("internal_m2n_cc_set_exclude_layers", dotnet_internal_call(internal_m2n_cc_set_exclude_layers));
331 reg.add_internal_call("internal_m2n_cc_get_collision_layers", dotnet_internal_call(internal_m2n_cc_get_collision_layers));
332}
333
334} // namespace unravel
uint32_t height
int layer_mask
math::vec3 position
Definition defaults.cpp:52
#define APPLOG_TRACE(...)
Definition logging.h:17
@ mask
Hard alpha cutoff; casts cutout shadows.
auto safe_get_component(entt::entity id) -> T *
std::vector< float > scale