14auto internal_m2n_camera_screen_point_to_ray(entt::entity
id,
15 const math::vec2& origin,
20 math::vec3 ray_origin{};
22 bool result = comp->get_camera().viewport_to_ray(origin, ray_origin, ray_dir);
25 using converter = dotnet::managed_interface::converter;
26 managed_ray->origin = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_origin);
27 managed_ray->direction = converter::convert<math::vec3, dotnetpp_backend::managed_interface::vector3>(ray_dir);
35auto internal_m2n_camera_screen_point_to_world_2d(entt::entity
id,
const math::vec2& origin) -> math::vec3
39 math::vec3 world_pos{};
41 const auto& frustum = comp->get_camera().get_frustum();
53auto internal_m2n_camera_screen_point_to_world(entt::entity
id,
const math::vec3& origin) -> math::vec3
57 math::vec2 screen_point(origin.x, origin.y);
58 float distance_from_camera = origin.z;
60 math::vec3 ray_origin{};
63 if(!comp->get_camera().viewport_to_ray(screen_point, ray_origin, ray_dir))
68 math::vec3 world_pos = ray_origin + (ray_dir * distance_from_camera);
80 auto reg = dotnet::internal_call_registry(
"Unravel.Core.CameraComponent");
81 reg.add_internal_call(
"internal_m2n_camera_screen_point_to_ray",
82 dotnet_internal_call(internal_m2n_camera_screen_point_to_ray));
83 reg.add_internal_call(
"internal_m2n_camera_screen_point_to_world_2d",
84 dotnet_internal_call(internal_m2n_camera_screen_point_to_world_2d));
85 reg.add_internal_call(
"internal_m2n_camera_screen_point_to_world",
86 dotnet_internal_call(internal_m2n_camera_screen_point_to_world));
#define APPLOG_TRACE(...)
auto safe_get_component(entt::entity id) -> T *
void register_camera_component_script_bindings()