diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_decimate.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_decimate.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/source/blender/modifiers/intern/MOD_decimate.c b/source/blender/modifiers/intern/MOD_decimate.c index 72a868cc6a7..10ed4f8d80b 100644 --- a/source/blender/modifiers/intern/MOD_decimate.c +++ b/source/blender/modifiers/intern/MOD_decimate.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -63,9 +64,9 @@ static void initData(ModifierData *md) { DecimateModifierData *dmd = (DecimateModifierData *)md; - dmd->percent = 1.0; - dmd->angle = DEG2RADF(5.0f); - dmd->defgrp_factor = 1.0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(dmd, modifier)); + + MEMCPY_STRUCT_AFTER(dmd, DNA_struct_default_get(DecimateModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), @@ -139,7 +140,7 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh * } if (dmd->face_count <= 3) { - BKE_modifier_set_error(md, "Modifier requires more than 3 input faces"); + BKE_modifier_set_error(ctx->object, md, "Modifier requires more than 3 input faces"); return mesh; } @@ -234,13 +235,13 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel) PointerRNA ob_ptr; PointerRNA *ptr = modifier_panel_get_property_pointers(panel, &ob_ptr); - uiLayoutSetPropSep(layout, true); - int decimate_type = RNA_enum_get(ptr, "decimate_type"); char count_info[32]; snprintf(count_info, 32, "%s: %d", IFACE_("Face Count"), RNA_int_get(ptr, "face_count")); - uiItemR(layout, ptr, "decimate_type", 0, NULL, ICON_NONE); + uiItemR(layout, ptr, "decimate_type", UI_ITEM_R_EXPAND, NULL, ICON_NONE); + + uiLayoutSetPropSep(layout, true); if (decimate_type == MOD_DECIM_MODE_COLLAPSE) { uiItemR(layout, ptr, "ratio", UI_ITEM_R_SLIDER, NULL, ICON_NONE); @@ -267,7 +268,8 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel) } else { /* decimate_type == MOD_DECIM_MODE_DISSOLVE. */ uiItemR(layout, ptr, "angle_limit", 0, NULL, ICON_NONE); - uiItemR(layout, ptr, "delimit", 0, NULL, ICON_NONE); + uiLayout *col = uiLayoutColumn(layout, false); + uiItemR(col, ptr, "delimit", 0, NULL, ICON_NONE); uiItemR(layout, ptr, "use_dissolve_boundaries", 0, NULL, ICON_NONE); } uiItemL(layout, count_info, ICON_NONE); @@ -284,8 +286,10 @@ ModifierTypeInfo modifierType_Decimate = { /* name */ "Decimate", /* structName */ "DecimateModifierData", /* structSize */ sizeof(DecimateModifierData), + /* srna */ &RNA_DecimateModifier, /* type */ eModifierTypeType_Nonconstructive, /* flags */ eModifierTypeFlag_AcceptsMesh | eModifierTypeFlag_AcceptsCVs, + /* icon */ ICON_MOD_DECIM, /* copyData */ BKE_modifier_copydata_generic, @@ -305,7 +309,6 @@ ModifierTypeInfo modifierType_Decimate = { /* updateDepsgraph */ NULL, /* dependsOnTime */ NULL, /* dependsOnNormals */ NULL, - /* foreachObjectLink */ NULL, /* foreachIDLink */ NULL, /* foreachTexLink */ NULL, /* freeRuntimeData */ NULL, |