Merge pull request #21485 from JFonS/fix_selection
Saner selection code for instanced scenes in 3D, should close #21447
This commit is contained in:
commit
b6c170165c
|
@ -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,
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue