Unverified Commit b6c17016 by Rémi Verschelde Committed by GitHub

Merge pull request #21485 from JFonS/fix_selection

Saner selection code for instanced scenes in 3D, should close #21447
parents d2abbfb1 b58bb95c
...@@ -307,7 +307,7 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, ...@@ -307,7 +307,7 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append,
Node *edited_scene = get_tree()->get_edited_scene_root(); Node *edited_scene = get_tree()->get_edited_scene_root();
ObjectID closest = 0; ObjectID closest = 0;
Spatial *item = NULL; Node *item = NULL;
float closest_dist = 1e20; float closest_dist = 1e20;
int selected_handle = -1; int selected_handle = -1;
...@@ -341,19 +341,16 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, ...@@ -341,19 +341,16 @@ ObjectID SpatialEditorViewport::_select_ray(const Point2 &p_pos, bool p_append,
if (dist < closest_dist) { if (dist < closest_dist) {
//make sure that whathever is selected is editable //make sure that whathever is selected is editable
while (spat && spat != edited_scene && spat->get_owner() != edited_scene && !edited_scene->is_editable_instance(spat->get_owner())) { Node *owner = spat->get_owner();
if (owner != edited_scene && !edited_scene->is_editable_instance(owner)) {
spat = Object::cast_to<Spatial>(spat->get_owner()); item = owner;
}
if (spat) {
item = spat;
closest = spat->get_instance_id();
closest_dist = dist;
selected_handle = handle;
} else { } else {
ERR_PRINT("Bug?"); item = Object::cast_to<Node>(spat);
} }
closest = item->get_instance_id();
closest_dist = dist;
selected_handle = handle;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment