16 const math::vec3& origin,
17 const math::vec3& direction,
23 auto& physics = ctx.get_cached<physics_system>();
27 using converter = dotnet::managed_interface::converter;
31 hit->entity = ray_hit->entity;
32 hit->point = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_hit->point);
33 hit->normal = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_hit->normal);
34 hit->distance = ray_hit->distance;
37 return ray_hit.has_value();
40auto internal_m2n_physics_ray_cast_all(
const math::vec3& origin,
41 const math::vec3& direction,
44 bool query_sensors) -> hpp::small_vector<dotnetpp_backend::managed_interface::raycast_hit>
47 auto& physics = ctx.get_cached<physics_system>();
51 hpp::small_vector<dotnetpp_backend::managed_interface::raycast_hit>
hits;
53 using converter = dotnet::managed_interface::converter;
54 for(
const auto& ray_hit : ray_hits)
56 auto&
hit =
hits.emplace_back();
57 hit.entity = ray_hit.entity;
58 hit.point = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_hit.point);
59 hit.normal = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_hit.normal);
60 hit.distance = ray_hit.distance;
67 const math::vec3& origin,
68 const math::vec3& direction,
75 auto& physics = ctx.get_cached<physics_system>();
79 using converter = dotnet::managed_interface::converter;
83 hit->entity = ray_hit->entity;
84 hit->point = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_hit->point);
85 hit->normal = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_hit->normal);
86 hit->distance = ray_hit->distance;
89 return ray_hit.has_value();
92auto internal_m2n_physics_sphere_cast_all(
const math::vec3& origin,
93 const math::vec3& direction,
97 bool query_sensors) -> hpp::small_vector<dotnetpp_backend::managed_interface::raycast_hit>
100 auto& physics = ctx.get_cached<physics_system>();
104 hpp::small_vector<dotnetpp_backend::managed_interface::raycast_hit>
hits;
106 using converter = dotnet::managed_interface::converter;
107 for(
const auto& ray_hit : ray_hits)
109 auto&
hit =
hits.emplace_back();
110 hit.entity = ray_hit.entity;
111 hit.point = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_hit.point);
112 hit.normal = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_hit.normal);
113 hit.distance = ray_hit.distance;
119auto internal_m2n_physics_sphere_overlap(
const math::vec3& origin,
float radius,
int layer_mask,
bool query_sensors)
123 auto& physics = ctx.get_cached<physics_system>();
135 auto reg = dotnet::internal_call_registry(
"Unravel.Core.Physics");
136 reg.add_internal_call(
"internal_m2n_physics_ray_cast", dotnet_internal_call(internal_m2n_physics_ray_cast));
137 reg.add_internal_call(
"internal_m2n_physics_ray_cast_all", dotnet_internal_call(internal_m2n_physics_ray_cast_all));
138 reg.add_internal_call(
"internal_m2n_physics_sphere_cast", dotnet_internal_call(internal_m2n_physics_sphere_cast));
139 reg.add_internal_call(
"internal_m2n_physics_sphere_cast_all",
140 dotnet_internal_call(internal_m2n_physics_sphere_cast_all));
141 reg.add_internal_call(
"internal_m2n_physics_sphere_overlap",
142 dotnet_internal_call(internal_m2n_physics_sphere_overlap));
unravel::physics_vector< hit_info > hits
#define APPLOG_TRACE(...)
void register_physics_script_bindings()
hpp::small_vector< T, SmallSizeCapacity > physics_vector
static auto context() -> rtti::context &