1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-12 13:20:55 +00:00

Merge pull request #84486 from jcostello/jcostello/fix-material-drop

Fix material drag and drop
This commit is contained in:
Rémi Verschelde
2024-01-04 14:25:52 +01:00

View File

@@ -4247,17 +4247,16 @@ bool Node3DEditorViewport::_apply_preview_material(ObjectID p_target, const Poin
return false; return false;
} }
if (spatial_editor->get_preview_material() != mesh_instance->get_surface_override_material(closest_surface)) {
spatial_editor->set_preview_material_surface(closest_surface); spatial_editor->set_preview_material_surface(closest_surface);
spatial_editor->set_preview_reset_material(mesh_instance->get_surface_override_material(closest_surface)); spatial_editor->set_preview_reset_material(mesh_instance->get_surface_override_material(closest_surface));
mesh_instance->set_surface_override_material(closest_surface, spatial_editor->get_preview_material()); mesh_instance->set_surface_override_material(closest_surface, spatial_editor->get_preview_material());
}
return true; return true;
} }
GeometryInstance3D *geometry_instance = Object::cast_to<GeometryInstance3D>(target_inst); GeometryInstance3D *geometry_instance = Object::cast_to<GeometryInstance3D>(target_inst);
if (geometry_instance && spatial_editor->get_preview_material() != geometry_instance->get_material_override()) { if (geometry_instance) {
spatial_editor->set_preview_material_surface(-1);
spatial_editor->set_preview_reset_material(geometry_instance->get_material_override()); spatial_editor->set_preview_reset_material(geometry_instance->get_material_override());
geometry_instance->set_material_override(spatial_editor->get_preview_material()); geometry_instance->set_material_override(spatial_editor->get_preview_material());
return true; return true;
@@ -4277,7 +4276,6 @@ void Node3DEditorViewport::_reset_preview_material() const {
GeometryInstance3D *geometry_instance = Object::cast_to<GeometryInstance3D>(last_target_inst); GeometryInstance3D *geometry_instance = Object::cast_to<GeometryInstance3D>(last_target_inst);
if (mesh_instance && spatial_editor->get_preview_material_surface() != -1) { if (mesh_instance && spatial_editor->get_preview_material_surface() != -1) {
mesh_instance->set_surface_override_material(spatial_editor->get_preview_material_surface(), spatial_editor->get_preview_reset_material()); mesh_instance->set_surface_override_material(spatial_editor->get_preview_material_surface(), spatial_editor->get_preview_reset_material());
spatial_editor->set_preview_material_surface(-1);
} else if (geometry_instance) { } else if (geometry_instance) {
geometry_instance->set_material_override(spatial_editor->get_preview_reset_material()); geometry_instance->set_material_override(spatial_editor->get_preview_reset_material());
} }