Merge pull request #39051 from Xrayez/geometry-split
Split `Geometry` singleton into `Geometry2D` and `Geometry3D`
This commit is contained in:
commit
1620669f4e
70 changed files with 1503 additions and 1379 deletions
|
|
@ -31,6 +31,7 @@
|
|||
#include "abstract_polygon_2d_editor.h"
|
||||
|
||||
#include "canvas_item_editor_plugin.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "editor/editor_scale.h"
|
||||
|
||||
|
|
@ -671,7 +672,7 @@ AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_edge_point(c
|
|||
Vector2 segment[2] = { xform.xform(points[i] + offset),
|
||||
xform.xform(points[(i + 1) % n_points] + offset) };
|
||||
|
||||
Vector2 cp = Geometry::get_closest_point_to_segment_2d(p_pos, segment);
|
||||
Vector2 cp = Geometry2D::get_closest_point_to_segment(p_pos, segment);
|
||||
|
||||
if (cp.distance_squared_to(segment[0]) < eps2 || cp.distance_squared_to(segment[1]) < eps2) {
|
||||
continue; //not valid to reuse point
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
#include "core/input/input.h"
|
||||
#include "core/io/resource_loader.h"
|
||||
#include "core/math/delaunay_2d.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "core/project_settings.h"
|
||||
#include "editor/editor_scale.h"
|
||||
|
|
@ -165,7 +165,7 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven
|
|||
triangle.push_back(points[idx]);
|
||||
}
|
||||
|
||||
if (Geometry::is_point_in_triangle(mb->get_position(), triangle[0], triangle[1], triangle[2])) {
|
||||
if (Geometry2D::is_point_in_triangle(mb->get_position(), triangle[0], triangle[1], triangle[2])) {
|
||||
selected_triangle = i;
|
||||
_update_tool_erase();
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
#include "core/input/input.h"
|
||||
#include "core/io/resource_loader.h"
|
||||
#include "core/math/delaunay_2d.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "core/project_settings.h"
|
||||
#include "editor/editor_scale.h"
|
||||
|
|
@ -191,7 +191,7 @@ void AnimationNodeStateMachineEditor::_state_machine_gui_input(const Ref<InputEv
|
|||
transition_lines[i].from,
|
||||
transition_lines[i].to
|
||||
};
|
||||
Vector2 cpoint = Geometry::get_closest_point_to_segment_2d(mb->get_position(), s);
|
||||
Vector2 cpoint = Geometry2D::get_closest_point_to_segment(mb->get_position(), s);
|
||||
float d = cpoint.distance_to(mb->get_position());
|
||||
if (d > transition_lines[i].width) {
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "canvas_item_editor_plugin.h"
|
||||
|
||||
#include "core/input/input.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "core/print_string.h"
|
||||
#include "core/project_settings.h"
|
||||
|
|
@ -672,7 +673,7 @@ void CanvasItemEditor::_get_bones_at_pos(const Point2 &p_pos, Vector<_SelectResu
|
|||
}
|
||||
|
||||
// Check if the point is inside the Polygon2D
|
||||
if (Geometry::is_point_in_polygon(screen_pos, bone_shape)) {
|
||||
if (Geometry2D::is_point_in_polygon(screen_pos, bone_shape)) {
|
||||
// Check if the item is already in the list
|
||||
bool duplicate = false;
|
||||
for (int i = 0; i < r_items.size(); i++) {
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include "canvas_item_editor_plugin.h"
|
||||
#include "core/input/input.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/os/file_access.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "editor/editor_settings.h"
|
||||
|
|
@ -196,7 +197,7 @@ bool CollisionPolygon3DEditor::forward_spatial_gui_input(Camera3D *p_camera, con
|
|||
p_camera->unproject_position(gt.xform(Vector3(poly[(i + 1) % poly.size()].x, poly[(i + 1) % poly.size()].y, depth)))
|
||||
};
|
||||
|
||||
Vector2 cp = Geometry::get_closest_point_to_segment_2d(gpoint, points);
|
||||
Vector2 cp = Geometry2D::get_closest_point_to_segment(gpoint, points);
|
||||
if (cp.distance_squared_to(points[0]) < CMP_EPSILON2 || cp.distance_squared_to(points[1]) < CMP_EPSILON2) {
|
||||
continue; //not valid to reuse point
|
||||
}
|
||||
|
|
|
|||
|
|
@ -832,7 +832,7 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
|
|||
|
||||
Vector3 r;
|
||||
|
||||
if (Geometry::segment_intersects_sphere(ray_pos, ray_pos + ray * MAX_Z, grabber_pos, grabber_radius, &r)) {
|
||||
if (Geometry3D::segment_intersects_sphere(ray_pos, ray_pos + ray * MAX_Z, grabber_pos, grabber_radius, &r)) {
|
||||
float d = r.distance_to(ray_pos);
|
||||
if (d < col_d) {
|
||||
col_d = d;
|
||||
|
|
@ -929,7 +929,7 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
|
|||
|
||||
Vector3 r;
|
||||
|
||||
if (Geometry::segment_intersects_sphere(ray_pos, ray_pos + ray * MAX_Z, grabber_pos, grabber_radius, &r)) {
|
||||
if (Geometry3D::segment_intersects_sphere(ray_pos, ray_pos + ray * MAX_Z, grabber_pos, grabber_radius, &r)) {
|
||||
float d = r.distance_to(ray_pos);
|
||||
if (d < col_d) {
|
||||
col_d = d;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
|
||||
#include "path_3d_editor_plugin.h"
|
||||
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/math/geometry_3d.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "node_3d_editor_plugin.h"
|
||||
#include "scene/resources/curve.h"
|
||||
|
|
@ -344,7 +346,7 @@ bool Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref
|
|||
Vector2 s[2];
|
||||
s[0] = p_camera->unproject_position(from);
|
||||
s[1] = p_camera->unproject_position(to);
|
||||
Vector2 inters = Geometry::get_closest_point_to_segment_2d(mbpos, s);
|
||||
Vector2 inters = Geometry2D::get_closest_point_to_segment(mbpos, s);
|
||||
float d = inters.distance_to(mbpos);
|
||||
|
||||
if (d < 10 && d < closest_d) {
|
||||
|
|
@ -354,7 +356,7 @@ bool Path3DEditorPlugin::forward_spatial_gui_input(Camera3D *p_camera, const Ref
|
|||
Vector3 ray_dir = p_camera->project_ray_normal(mbpos);
|
||||
|
||||
Vector3 ra, rb;
|
||||
Geometry::get_closest_points_between_segments(ray_from, ray_from + ray_dir * 4096, from, to, ra, rb);
|
||||
Geometry3D::get_closest_points_between_segments(ray_from, ray_from + ray_dir * 4096, from, to, ra, rb);
|
||||
|
||||
closest_seg_point = it.xform(rb);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
#include "canvas_item_editor_plugin.h"
|
||||
#include "core/input/input.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "core/os/file_access.h"
|
||||
#include "core/os/keyboard.h"
|
||||
#include "editor/editor_scale.h"
|
||||
|
|
@ -693,7 +694,7 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
|
|||
polys.write[j] = mtx.xform(points_prev[idx]);
|
||||
}
|
||||
|
||||
if (Geometry::is_point_in_polygon(Vector2(mb->get_position().x, mb->get_position().y), polys)) {
|
||||
if (Geometry2D::is_point_in_polygon(Vector2(mb->get_position().x, mb->get_position().y), polys)) {
|
||||
erase_index = i;
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "sprite_2d_editor_plugin.h"
|
||||
|
||||
#include "canvas_item_editor_plugin.h"
|
||||
#include "core/math/geometry_2d.h"
|
||||
#include "editor/editor_scale.h"
|
||||
#include "scene/2d/collision_polygon_2d.h"
|
||||
#include "scene/2d/light_occluder_2d.h"
|
||||
|
|
@ -233,7 +234,7 @@ void Sprite2DEditor::_update_mesh_data() {
|
|||
computed_vertices.push_back(vtx);
|
||||
}
|
||||
|
||||
Vector<int> poly = Geometry::triangulate_polygon(lines[j]);
|
||||
Vector<int> poly = Geometry2D::triangulate_polygon(lines[j]);
|
||||
|
||||
for (int i = 0; i < poly.size(); i += 3) {
|
||||
for (int k = 0; k < 3; k++) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue