You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Style: clang-format: Disable KeepEmptyLinesAtTheStartOfBlocks
This commit is contained in:
@@ -53,17 +53,14 @@ AbstractPolygon2DEditor::Vertex::Vertex(int p_polygon, int p_vertex) :
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::Vertex::operator==(const AbstractPolygon2DEditor::Vertex &p_vertex) const {
|
||||
|
||||
return polygon == p_vertex.polygon && vertex == p_vertex.vertex;
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::Vertex::operator!=(const AbstractPolygon2DEditor::Vertex &p_vertex) const {
|
||||
|
||||
return !(*this == p_vertex);
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::Vertex::valid() const {
|
||||
|
||||
return vertex >= 0;
|
||||
}
|
||||
|
||||
@@ -82,14 +79,12 @@ AbstractPolygon2DEditor::PosVertex::PosVertex(int p_polygon, int p_vertex, const
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::_is_empty() const {
|
||||
|
||||
if (!_get_node())
|
||||
return true;
|
||||
|
||||
const int n = _get_polygon_count();
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
|
||||
Vector<Vector2> vertices = _get_polygon(i);
|
||||
|
||||
if (vertices.size() != 0)
|
||||
@@ -100,66 +95,54 @@ bool AbstractPolygon2DEditor::_is_empty() const {
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::_is_line() const {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::_has_uv() const {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
int AbstractPolygon2DEditor::_get_polygon_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
Variant AbstractPolygon2DEditor::_get_polygon(int p_idx) const {
|
||||
|
||||
return _get_node()->get("polygon");
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_set_polygon(int p_idx, const Variant &p_polygon) const {
|
||||
|
||||
_get_node()->set("polygon", p_polygon);
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_action_set_polygon(int p_idx, const Variant &p_previous, const Variant &p_polygon) {
|
||||
|
||||
Node2D *node = _get_node();
|
||||
undo_redo->add_do_method(node, "set_polygon", p_polygon);
|
||||
undo_redo->add_undo_method(node, "set_polygon", p_previous);
|
||||
}
|
||||
|
||||
Vector2 AbstractPolygon2DEditor::_get_offset(int p_idx) const {
|
||||
|
||||
return Vector2(0, 0);
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_commit_action() {
|
||||
|
||||
undo_redo->add_do_method(canvas_item_editor, "update_viewport");
|
||||
undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_action_add_polygon(const Variant &p_polygon) {
|
||||
|
||||
_action_set_polygon(0, p_polygon);
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_action_remove_polygon(int p_idx) {
|
||||
|
||||
_action_set_polygon(p_idx, _get_polygon(p_idx), PoolVector<Vector2>());
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_action_set_polygon(int p_idx, const Variant &p_polygon) {
|
||||
|
||||
_action_set_polygon(p_idx, _get_polygon(p_idx), p_polygon);
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::_has_resource() const {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -167,18 +150,14 @@ void AbstractPolygon2DEditor::_create_resource() {
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_menu_option(int p_option) {
|
||||
|
||||
switch (p_option) {
|
||||
|
||||
case MODE_CREATE: {
|
||||
|
||||
mode = MODE_CREATE;
|
||||
button_create->set_pressed(true);
|
||||
button_edit->set_pressed(false);
|
||||
button_delete->set_pressed(false);
|
||||
} break;
|
||||
case MODE_EDIT: {
|
||||
|
||||
_wip_close();
|
||||
mode = MODE_EDIT;
|
||||
button_create->set_pressed(false);
|
||||
@@ -186,7 +165,6 @@ void AbstractPolygon2DEditor::_menu_option(int p_option) {
|
||||
button_delete->set_pressed(false);
|
||||
} break;
|
||||
case MODE_DELETE: {
|
||||
|
||||
_wip_close();
|
||||
mode = MODE_DELETE;
|
||||
button_create->set_pressed(false);
|
||||
@@ -197,11 +175,8 @@ void AbstractPolygon2DEditor::_menu_option(int p_option) {
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_notification(int p_what) {
|
||||
|
||||
switch (p_what) {
|
||||
|
||||
case NOTIFICATION_READY: {
|
||||
|
||||
disable_polygon_editing(false, String());
|
||||
|
||||
button_create->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveCreate", "EditorIcons"));
|
||||
@@ -216,7 +191,6 @@ void AbstractPolygon2DEditor::_notification(int p_what) {
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_node_removed(Node *p_node) {
|
||||
|
||||
if (p_node == _get_node()) {
|
||||
edit(NULL);
|
||||
hide();
|
||||
@@ -226,14 +200,12 @@ void AbstractPolygon2DEditor::_node_removed(Node *p_node) {
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_wip_changed() {
|
||||
|
||||
if (wip_active && _is_line()) {
|
||||
_set_polygon(0, wip);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_wip_cancel() {
|
||||
|
||||
wip.clear();
|
||||
wip_active = false;
|
||||
|
||||
@@ -249,10 +221,8 @@ void AbstractPolygon2DEditor::_wip_close() {
|
||||
return;
|
||||
|
||||
if (_is_line()) {
|
||||
|
||||
_set_polygon(0, wip);
|
||||
} else if (wip.size() >= (_is_line() ? 2 : 3)) {
|
||||
|
||||
undo_redo->create_action(TTR("Create Polygon"));
|
||||
_action_add_polygon(wip);
|
||||
if (_has_uv()) {
|
||||
@@ -261,7 +231,6 @@ void AbstractPolygon2DEditor::_wip_close() {
|
||||
}
|
||||
_commit_action();
|
||||
} else {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -279,7 +248,6 @@ void AbstractPolygon2DEditor::_wip_close() {
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::disable_polygon_editing(bool p_disable, String p_reason) {
|
||||
|
||||
_polygon_editing_enabled = !p_disable;
|
||||
|
||||
button_create->set_disabled(p_disable);
|
||||
@@ -287,12 +255,10 @@ void AbstractPolygon2DEditor::disable_polygon_editing(bool p_disable, String p_r
|
||||
button_delete->set_disabled(p_disable);
|
||||
|
||||
if (p_disable) {
|
||||
|
||||
button_create->set_tooltip(p_reason);
|
||||
button_edit->set_tooltip(p_reason);
|
||||
button_delete->set_tooltip(p_reason);
|
||||
} else {
|
||||
|
||||
button_create->set_tooltip(TTR("Create points."));
|
||||
button_edit->set_tooltip(TTR("Edit points.\nLMB: Move Point\nRMB: Erase Point"));
|
||||
button_delete->set_tooltip(TTR("Erase points."));
|
||||
@@ -300,14 +266,12 @@ void AbstractPolygon2DEditor::disable_polygon_editing(bool p_disable, String p_r
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
|
||||
|
||||
if (!_get_node() || !_polygon_editing_enabled)
|
||||
return false;
|
||||
|
||||
Ref<InputEventMouseButton> mb = p_event;
|
||||
|
||||
if (!_has_resource()) {
|
||||
|
||||
if (mb.is_valid() && mb->get_button_index() == 1 && mb->is_pressed()) {
|
||||
create_resource->set_text(String("No polygon resource on this node.\nCreate and assign one?"));
|
||||
create_resource->popup_centered_minsize();
|
||||
@@ -320,7 +284,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
return false;
|
||||
|
||||
if (mb.is_valid()) {
|
||||
|
||||
Transform2D xform = canvas_item_editor->get_canvas_transform() * _get_node()->get_global_transform();
|
||||
|
||||
Vector2 gpoint = mb->get_position();
|
||||
@@ -335,11 +298,9 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
const PosVertex insert = closest_edge_point(gpoint);
|
||||
|
||||
if (insert.valid()) {
|
||||
|
||||
Vector<Vector2> vertices = _get_polygon(insert.polygon);
|
||||
|
||||
if (vertices.size() < (_is_line() ? 2 : 3)) {
|
||||
|
||||
vertices.push_back(cpoint);
|
||||
undo_redo->create_action(TTR("Edit Polygon"));
|
||||
selected_point = Vertex(insert.polygon, vertices.size());
|
||||
@@ -347,7 +308,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
_commit_action();
|
||||
return true;
|
||||
} else {
|
||||
|
||||
Vector<Vector2> vertices2 = _get_polygon(insert.polygon);
|
||||
pre_move_edit = vertices2;
|
||||
edited_point = PosVertex(insert.polygon, insert.vertex + 1, xform.affine_inverse().xform(insert.pos));
|
||||
@@ -361,12 +321,10 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
|
||||
//look for points to move
|
||||
const PosVertex closest = closest_point(gpoint);
|
||||
|
||||
if (closest.valid()) {
|
||||
|
||||
pre_move_edit = _get_polygon(closest.polygon);
|
||||
edited_point = PosVertex(closest, xform.affine_inverse().xform(closest.pos));
|
||||
selected_point = closest;
|
||||
@@ -374,14 +332,11 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
canvas_item_editor->update_viewport();
|
||||
return true;
|
||||
} else {
|
||||
|
||||
selected_point = Vertex();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
if (edited_point.valid()) {
|
||||
|
||||
//apply
|
||||
|
||||
Vector<Vector2> vertices = _get_polygon(edited_point.polygon);
|
||||
@@ -397,23 +352,18 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
}
|
||||
}
|
||||
} else if (mb->get_button_index() == BUTTON_RIGHT && mb->is_pressed() && !edited_point.valid()) {
|
||||
|
||||
const PosVertex closest = closest_point(gpoint);
|
||||
|
||||
if (closest.valid()) {
|
||||
|
||||
remove_point(closest);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (mode == MODE_DELETE) {
|
||||
|
||||
if (mb->get_button_index() == BUTTON_LEFT && mb->is_pressed()) {
|
||||
|
||||
const PosVertex closest = closest_point(gpoint);
|
||||
|
||||
if (closest.valid()) {
|
||||
|
||||
remove_point(closest);
|
||||
return true;
|
||||
}
|
||||
@@ -421,11 +371,8 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
}
|
||||
|
||||
if (mode == MODE_CREATE) {
|
||||
|
||||
if (mb->get_button_index() == BUTTON_LEFT && mb->is_pressed()) {
|
||||
|
||||
if (_is_line()) {
|
||||
|
||||
// for lines, we don't have a wip mode, and we can undo each single add point.
|
||||
Vector<Vector2> vertices = _get_polygon(0);
|
||||
vertices.push_back(cpoint);
|
||||
@@ -434,7 +381,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
_commit_action();
|
||||
return true;
|
||||
} else if (!wip_active) {
|
||||
|
||||
wip.clear();
|
||||
wip.push_back(cpoint);
|
||||
wip_active = true;
|
||||
@@ -446,7 +392,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
edge_point = PosVertex();
|
||||
return true;
|
||||
} else {
|
||||
|
||||
const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius");
|
||||
|
||||
if (!_is_line() && wip.size() > 1 && xform.xform(wip[0]).distance_to(xform.xform(cpoint)) < grab_threshold) {
|
||||
@@ -455,7 +400,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
|
||||
return true;
|
||||
} else {
|
||||
|
||||
//add wip point
|
||||
wip.push_back(cpoint);
|
||||
_wip_changed();
|
||||
@@ -474,11 +418,9 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
Ref<InputEventMouseMotion> mm = p_event;
|
||||
|
||||
if (mm.is_valid()) {
|
||||
|
||||
Vector2 gpoint = mm->get_position();
|
||||
|
||||
if (edited_point.valid() && (wip_active || (mm->get_button_mask() & BUTTON_MASK_LEFT))) {
|
||||
|
||||
Vector2 cpoint = _get_node()->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint)));
|
||||
|
||||
//Move the point in a single axis. Should only work when editing a polygon and while holding shift.
|
||||
@@ -494,7 +436,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
edited_point = PosVertex(edited_point, cpoint);
|
||||
|
||||
if (!wip_active) {
|
||||
|
||||
Vector<Vector2> vertices = _get_polygon(edited_point.polygon);
|
||||
ERR_FAIL_INDEX_V(edited_point.vertex, vertices.size(), false);
|
||||
vertices.write[edited_point.vertex] = cpoint - _get_offset(edited_point.polygon);
|
||||
@@ -503,25 +444,20 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
|
||||
canvas_item_editor->update_viewport();
|
||||
} else if (mode == MODE_EDIT || (_is_line() && mode == MODE_CREATE)) {
|
||||
|
||||
const PosVertex onEdgeVertex = closest_edge_point(gpoint);
|
||||
|
||||
if (onEdgeVertex.valid()) {
|
||||
|
||||
hover_point = Vertex();
|
||||
edge_point = onEdgeVertex;
|
||||
canvas_item_editor->update_viewport();
|
||||
} else {
|
||||
|
||||
if (edge_point.valid()) {
|
||||
|
||||
edge_point = PosVertex();
|
||||
canvas_item_editor->update_viewport();
|
||||
}
|
||||
|
||||
const PosVertex new_hover_point = closest_point(gpoint);
|
||||
if (hover_point != new_hover_point) {
|
||||
|
||||
hover_point = new_hover_point;
|
||||
canvas_item_editor->update_viewport();
|
||||
}
|
||||
@@ -532,13 +468,9 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
Ref<InputEventKey> k = p_event;
|
||||
|
||||
if (k.is_valid() && k->is_pressed()) {
|
||||
|
||||
if (k->get_scancode() == KEY_DELETE || k->get_scancode() == KEY_BACKSPACE) {
|
||||
|
||||
if (wip_active && selected_point.polygon == -1) {
|
||||
|
||||
if (wip.size() > selected_point.vertex) {
|
||||
|
||||
wip.remove(selected_point.vertex);
|
||||
_wip_changed();
|
||||
selected_point = wip.size() - 1;
|
||||
@@ -546,17 +478,14 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
|
||||
const Vertex active_point = get_active_point();
|
||||
|
||||
if (active_point.valid()) {
|
||||
|
||||
remove_point(active_point);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else if (wip_active && k->get_scancode() == KEY_ENTER) {
|
||||
|
||||
_wip_close();
|
||||
} else if (wip_active && k->get_scancode() == KEY_ESCAPE) {
|
||||
_wip_cancel();
|
||||
@@ -567,7 +496,6 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overlay) {
|
||||
|
||||
if (!_get_node())
|
||||
return;
|
||||
|
||||
@@ -580,7 +508,6 @@ void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overl
|
||||
const bool is_closed = !_is_line();
|
||||
|
||||
for (int j = -1; j < n_polygons; j++) {
|
||||
|
||||
if (wip_active && wip_destructive && j != -1)
|
||||
continue;
|
||||
|
||||
@@ -588,11 +515,9 @@ void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overl
|
||||
Vector2 offset;
|
||||
|
||||
if (wip_active && j == edited_point.polygon) {
|
||||
|
||||
points = Variant(wip);
|
||||
offset = Vector2(0, 0);
|
||||
} else {
|
||||
|
||||
if (j == -1)
|
||||
continue;
|
||||
points = _get_polygon(j);
|
||||
@@ -600,11 +525,9 @@ void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overl
|
||||
}
|
||||
|
||||
if (!wip_active && j == edited_point.polygon && EDITOR_GET("editors/poly_editor/show_previous_outline")) {
|
||||
|
||||
const Color col = Color(0.5, 0.5, 0.5); // FIXME polygon->get_outline_color();
|
||||
const int n = pre_move_edit.size();
|
||||
for (int i = 0; i < n - (is_closed ? 0 : 1); i++) {
|
||||
|
||||
Vector2 p, p2;
|
||||
p = pre_move_edit[i] + offset;
|
||||
p2 = pre_move_edit[(i + 1) % n] + offset;
|
||||
@@ -620,14 +543,12 @@ void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overl
|
||||
const Color col = Color(1, 0.3, 0.1, 0.8);
|
||||
|
||||
for (int i = 0; i < n_points; i++) {
|
||||
|
||||
const Vertex vertex(j, i);
|
||||
|
||||
const Vector2 p = (vertex == edited_point) ? edited_point.pos : (points[i] + offset);
|
||||
const Vector2 point = xform.xform(p);
|
||||
|
||||
if (is_closed || i < n_points - 1) {
|
||||
|
||||
Vector2 p2;
|
||||
if (j == edited_point.polygon &&
|
||||
((wip_active && i == n_points - 1) || (((i + 1) % n_points) == edited_point.vertex)))
|
||||
@@ -641,7 +562,6 @@ void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overl
|
||||
}
|
||||
|
||||
for (int i = 0; i < n_points; i++) {
|
||||
|
||||
const Vertex vertex(j, i);
|
||||
|
||||
const Vector2 p = (vertex == edited_point) ? edited_point.pos : (points[i] + offset);
|
||||
@@ -660,19 +580,16 @@ void AbstractPolygon2DEditor::forward_canvas_draw_over_viewport(Control *p_overl
|
||||
}
|
||||
|
||||
if (edge_point.valid()) {
|
||||
|
||||
Ref<Texture> add_handle = get_icon("EditorHandleAdd", "EditorIcons");
|
||||
p_overlay->draw_texture(add_handle, edge_point.pos - add_handle->get_size() * 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::edit(Node *p_polygon) {
|
||||
|
||||
if (!canvas_item_editor)
|
||||
canvas_item_editor = CanvasItemEditor::get_singleton();
|
||||
|
||||
if (p_polygon) {
|
||||
|
||||
_set_node(p_polygon);
|
||||
|
||||
// Enable the pencil tool if the polygon is empty.
|
||||
@@ -687,7 +604,6 @@ void AbstractPolygon2DEditor::edit(Node *p_polygon) {
|
||||
hover_point = Vertex();
|
||||
selected_point = Vertex();
|
||||
} else {
|
||||
|
||||
_set_node(NULL);
|
||||
}
|
||||
|
||||
@@ -695,25 +611,21 @@ void AbstractPolygon2DEditor::edit(Node *p_polygon) {
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::_bind_methods() {
|
||||
|
||||
ClassDB::bind_method(D_METHOD("_node_removed"), &AbstractPolygon2DEditor::_node_removed);
|
||||
ClassDB::bind_method(D_METHOD("_menu_option"), &AbstractPolygon2DEditor::_menu_option);
|
||||
ClassDB::bind_method(D_METHOD("_create_resource"), &AbstractPolygon2DEditor::_create_resource);
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditor::remove_point(const Vertex &p_vertex) {
|
||||
|
||||
PoolVector<Vector2> vertices = _get_polygon(p_vertex.polygon);
|
||||
|
||||
if (vertices.size() > (_is_line() ? 2 : 3)) {
|
||||
|
||||
vertices.remove(p_vertex.vertex);
|
||||
|
||||
undo_redo->create_action(TTR("Edit Polygon (Remove Point)"));
|
||||
_action_set_polygon(p_vertex.polygon, vertices);
|
||||
_commit_action();
|
||||
} else {
|
||||
|
||||
undo_redo->create_action(TTR("Remove Polygon And Point"));
|
||||
_action_remove_polygon(p_vertex.polygon);
|
||||
_commit_action();
|
||||
@@ -728,12 +640,10 @@ void AbstractPolygon2DEditor::remove_point(const Vertex &p_vertex) {
|
||||
}
|
||||
|
||||
AbstractPolygon2DEditor::Vertex AbstractPolygon2DEditor::get_active_point() const {
|
||||
|
||||
return hover_point.valid() ? hover_point : selected_point;
|
||||
}
|
||||
|
||||
AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_point(const Vector2 &p_pos) const {
|
||||
|
||||
const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius");
|
||||
|
||||
const int n_polygons = _get_polygon_count();
|
||||
@@ -743,13 +653,11 @@ AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_point(const
|
||||
real_t closest_dist = 1e10;
|
||||
|
||||
for (int j = 0; j < n_polygons; j++) {
|
||||
|
||||
PoolVector<Vector2> points = _get_polygon(j);
|
||||
const Vector2 offset = _get_offset(j);
|
||||
const int n_points = points.size();
|
||||
|
||||
for (int i = 0; i < n_points; i++) {
|
||||
|
||||
Vector2 cp = xform.xform(points[i] + offset);
|
||||
|
||||
real_t d = cp.distance_to(p_pos);
|
||||
@@ -764,7 +672,6 @@ AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_point(const
|
||||
}
|
||||
|
||||
AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_edge_point(const Vector2 &p_pos) const {
|
||||
|
||||
const real_t grab_threshold = EDITOR_GET("editors/poly_editor/point_grab_radius");
|
||||
const real_t eps = grab_threshold * 2;
|
||||
const real_t eps2 = eps * eps;
|
||||
@@ -776,14 +683,12 @@ AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_edge_point(c
|
||||
real_t closest_dist = 1e10;
|
||||
|
||||
for (int j = 0; j < n_polygons; j++) {
|
||||
|
||||
PoolVector<Vector2> points = _get_polygon(j);
|
||||
const Vector2 offset = _get_offset(j);
|
||||
const int n_points = points.size();
|
||||
const int n_segments = n_points - (_is_line() ? 1 : 0);
|
||||
|
||||
for (int i = 0; i < n_segments; i++) {
|
||||
|
||||
Vector2 segment[2] = { xform.xform(points[i] + offset),
|
||||
xform.xform(points[(i + 1) % n_points] + offset) };
|
||||
|
||||
@@ -804,7 +709,6 @@ AbstractPolygon2DEditor::PosVertex AbstractPolygon2DEditor::closest_edge_point(c
|
||||
}
|
||||
|
||||
AbstractPolygon2DEditor::AbstractPolygon2DEditor(EditorNode *p_editor, bool p_wip_destructive) {
|
||||
|
||||
canvas_item_editor = NULL;
|
||||
editor = p_editor;
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
@@ -841,22 +745,17 @@ AbstractPolygon2DEditor::AbstractPolygon2DEditor(EditorNode *p_editor, bool p_wi
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditorPlugin::edit(Object *p_object) {
|
||||
|
||||
polygon_editor->edit(Object::cast_to<Node>(p_object));
|
||||
}
|
||||
|
||||
bool AbstractPolygon2DEditorPlugin::handles(Object *p_object) const {
|
||||
|
||||
return p_object->is_class(klass);
|
||||
}
|
||||
|
||||
void AbstractPolygon2DEditorPlugin::make_visible(bool p_visible) {
|
||||
|
||||
if (p_visible) {
|
||||
|
||||
polygon_editor->show();
|
||||
} else {
|
||||
|
||||
polygon_editor->hide();
|
||||
polygon_editor->edit(NULL);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user