You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
Merge pull request #105664 from smix8/gridmap_selection_crash
Fix GridMap move selection crashing on invalid MeshLibrary item
This commit is contained in:
@@ -551,6 +551,9 @@ void GridMapEditor::_fill_selection() {
|
|||||||
|
|
||||||
void GridMapEditor::_clear_clipboard_data() {
|
void GridMapEditor::_clear_clipboard_data() {
|
||||||
for (const ClipboardItem &E : clipboard_items) {
|
for (const ClipboardItem &E : clipboard_items) {
|
||||||
|
if (E.instance.is_null()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
RenderingServer::get_singleton()->free(E.instance);
|
RenderingServer::get_singleton()->free(E.instance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,6 +584,10 @@ void GridMapEditor::_set_clipboard_data() {
|
|||||||
item.orientation = node->get_cell_item_orientation(selected);
|
item.orientation = node->get_cell_item_orientation(selected);
|
||||||
item.instance = RenderingServer::get_singleton()->instance_create2(mesh->get_rid(), scenario);
|
item.instance = RenderingServer::get_singleton()->instance_create2(mesh->get_rid(), scenario);
|
||||||
|
|
||||||
|
if (mesh.is_valid()) {
|
||||||
|
item.instance = RenderingServer::get_singleton()->instance_create2(mesh->get_rid(), scenario);
|
||||||
|
}
|
||||||
|
|
||||||
clipboard_items.push_back(item);
|
clipboard_items.push_back(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -608,6 +615,9 @@ void GridMapEditor::_update_paste_indicator() {
|
|||||||
RenderingServer::get_singleton()->instance_set_transform(paste_instance, node->get_global_transform() * xf);
|
RenderingServer::get_singleton()->instance_set_transform(paste_instance, node->get_global_transform() * xf);
|
||||||
|
|
||||||
for (const ClipboardItem &item : clipboard_items) {
|
for (const ClipboardItem &item : clipboard_items) {
|
||||||
|
if (item.instance.is_null()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
xf = Transform3D();
|
xf = Transform3D();
|
||||||
xf.origin = (paste_indicator.begin + (paste_indicator.current - paste_indicator.click) + center) * node->get_cell_size();
|
xf.origin = (paste_indicator.begin + (paste_indicator.current - paste_indicator.click) + center) * node->get_cell_size();
|
||||||
xf.basis = rot * xf.basis;
|
xf.basis = rot * xf.basis;
|
||||||
|
|||||||
Reference in New Issue
Block a user