Unravel Engine C++ Reference
Loading...
Searching...
No Matches
ik_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
13void internal_m2n_utils_set_ik_posiiton_ccd(entt::entity id,
14 const math::vec3& target,
15 const math::vec3& pole,
16 int num_bones_in_chain,
17 int max_iterations,
18 float threshold)
19{
20 auto e = get_entity_from_id(id);
21
22 ik_set_position_ccd(e, target, pole, num_bones_in_chain, max_iterations, threshold);
23}
24
25void internal_m2n_utils_set_ik_posiiton_fabrik(entt::entity id,
26 const math::vec3& target,
27 const math::vec3& pole,
28 int num_bones_in_chain,
29 int max_iterations,
30 float threshold)
31{
32 auto e = get_entity_from_id(id);
33
34 ik_set_position_fabrik(e, target, pole, num_bones_in_chain, max_iterations, threshold);
35}
36
37void internal_m2n_utils_set_ik_posiiton_two_bone(entt::entity id,
38 const math::vec3& target,
39 const math::vec3& pole,
40 float weight,
41 float soften)
42{
43 auto e = get_entity_from_id(id);
44
45 ik_set_position_two_bone(e, target, pole, weight, soften);
46}
47
48void internal_m2n_utils_set_ik_look_at_posiiton(entt::entity id, const math::vec3& target, float weight)
49{
50 auto e = get_entity_from_id(id);
51
52 ik_look_at_position(e, target, weight);
53}
54
55} // namespace
56
58{
59 APPLOG_TRACE("{}", __func__);
60
61 auto reg = dotnet::internal_call_registry("Unravel.Core.IK");
62 reg.add_internal_call("internal_m2n_utils_set_ik_posiiton_ccd",
63 dotnet_internal_call(internal_m2n_utils_set_ik_posiiton_ccd));
64 reg.add_internal_call("internal_m2n_utils_set_ik_posiiton_fabrik",
65 dotnet_internal_call(internal_m2n_utils_set_ik_posiiton_fabrik));
66 reg.add_internal_call("internal_m2n_utils_set_ik_posiiton_two_bone",
67 dotnet_internal_call(internal_m2n_utils_set_ik_posiiton_two_bone));
68
69 reg.add_internal_call("internal_m2n_utils_set_ik_look_at_posiiton",
70 dotnet_internal_call(internal_m2n_utils_set_ik_look_at_posiiton));
71}
72
73} // namespace unravel
#define APPLOG_TRACE(...)
Definition logging.h:17
auto ik_set_position_two_bone(entt::handle end_effector, const math::vec3 &target, const math::vec3 &pole, float weight, float soften) -> bool
auto ik_set_position_fabrik(entt::handle end_effector, const math::vec3 &target, const math::vec3 &pole, size_t num_bones_in_chain, int max_iterations, float threshold) -> bool
void register_ik_script_bindings()
auto ik_set_position_ccd(entt::handle end_effector, const math::vec3 &target, const math::vec3 &pole, size_t num_bones_in_chain, int max_iterations, float threshold) -> bool
auto get_entity_from_id(entt::entity id) -> entt::handle
auto ik_look_at_position(entt::handle end_effector, const math::vec3 &target, float weight) -> bool