From e0170625ef2cd68f990a8c1a4cb7870ab9f49fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= Date: Sat, 4 Mar 2017 22:57:53 +0100 Subject: [PATCH] Expose uncapped versions of closest-point-to-segment utilities --- core/bind/core_bind.cpp | 13 +++++++++++++ core/bind/core_bind.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index 18aa131075..f83d593c17 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -1307,6 +1307,16 @@ Vector3 _Geometry::get_closest_point_to_segment(const Vector3& p_point, const Ve Vector3 s[2]={p_a,p_b}; return Geometry::get_closest_point_to_segment(p_point,s); } +Vector2 _Geometry::get_closest_point_to_segment_uncapped_2d(const Vector2& p_point, const Vector2& p_a,const Vector2& p_b) { + + Vector2 s[2]={p_a,p_b}; + return Geometry::get_closest_point_to_segment_uncapped_2d(p_point,s); +} +Vector3 _Geometry::get_closest_point_to_segment_uncapped(const Vector3& p_point, const Vector3& p_a,const Vector3& p_b) { + + Vector3 s[2]={p_a,p_b}; + return Geometry::get_closest_point_to_segment_uncapped(p_point,s); +} Variant _Geometry::ray_intersects_triangle( const Vector3& p_from, const Vector3& p_dir, const Vector3& p_v0,const Vector3& p_v1,const Vector3& p_v2) { Vector3 res; @@ -1426,6 +1436,9 @@ void _Geometry::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_closest_point_to_segment_2d","point","s1","s2"),&_Geometry::get_closest_point_to_segment_2d); ObjectTypeDB::bind_method(_MD("get_closest_point_to_segment","point","s1","s2"),&_Geometry::get_closest_point_to_segment); + ObjectTypeDB::bind_method(_MD("get_closest_point_to_segment_uncapped_2d","point","s1","s2"),&_Geometry::get_closest_point_to_segment_uncapped_2d); + ObjectTypeDB::bind_method(_MD("get_closest_point_to_segment_uncapped","point","s1","s2"),&_Geometry::get_closest_point_to_segment_uncapped); + ObjectTypeDB::bind_method(_MD("get_uv84_normal_bit","normal"),&_Geometry::get_uv84_normal_bit); ObjectTypeDB::bind_method(_MD("ray_intersects_triangle","from","dir","a","b","c"),&_Geometry::ray_intersects_triangle); diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index 11a8a7ba7a..ce9a639120 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -353,6 +353,8 @@ public: DVector get_closest_points_between_segments(const Vector3& p1,const Vector3& p2,const Vector3& q1,const Vector3& q2); Vector2 get_closest_point_to_segment_2d(const Vector2& p_point, const Vector2& p_a,const Vector2& p_b); Vector3 get_closest_point_to_segment(const Vector3& p_point, const Vector3& p_a,const Vector3& p_b); + Vector2 get_closest_point_to_segment_uncapped_2d(const Vector2& p_point, const Vector2& p_a,const Vector2& p_b); + Vector3 get_closest_point_to_segment_uncapped(const Vector3& p_point, const Vector3& p_a,const Vector3& p_b); Variant ray_intersects_triangle( const Vector3& p_from, const Vector3& p_dir, const Vector3& p_v0,const Vector3& p_v1,const Vector3& p_v2); Variant segment_intersects_triangle( const Vector3& p_from, const Vector3& p_to, const Vector3& p_v0,const Vector3& p_v1,const Vector3& p_v2); bool point_is_inside_triangle(const Vector2& s, const Vector2& a, const Vector2& b, const Vector2& c) const;