diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_hook.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_hook.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c index 94a9a922ff7..e0c362171f2 100644 --- a/source/blender/modifiers/intern/MOD_hook.c +++ b/source/blender/modifiers/intern/MOD_hook.c @@ -28,6 +28,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,10 +64,11 @@ static void initData(ModifierData *md) { HookModifierData *hmd = (HookModifierData *)md; - hmd->force = 1.0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(hmd, modifier)); + + MEMCPY_STRUCT_AFTER(hmd, DNA_struct_default_get(HookModifierData), modifier); + hmd->curfalloff = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); - hmd->falloff_type = eHook_Falloff_Smooth; - hmd->flag = 0; } static void copyData(const ModifierData *md, ModifierData *target, const int flag) @@ -117,11 +119,11 @@ static bool isDisabled(const struct Scene *UNUSED(scene), return !hmd->object; } -static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData) +static void foreachIDLink(ModifierData *md, Object *ob, IDWalkFunc walk, void *userData) { HookModifierData *hmd = (HookModifierData *)md; - walk(userData, ob, &hmd->object, IDWALK_CB_NOP); + walk(userData, ob, (ID **)&hmd->object, IDWALK_CB_NOP); } static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) @@ -490,11 +492,11 @@ static void panel_draw(const bContext *UNUSED(C), Panel *panel) if (RNA_enum_get(&ob_ptr, "mode") == OB_MODE_EDIT) { row = uiLayoutRow(layout, true); - uiItemO(row, "Reset", ICON_NONE, "OBJECT_OT_hook_reset"); - uiItemO(row, "Recenter", ICON_NONE, "OBJECT_OT_hook_recenter"); + uiItemO(row, IFACE_("Reset"), ICON_NONE, "OBJECT_OT_hook_reset"); + uiItemO(row, IFACE_("Recenter"), ICON_NONE, "OBJECT_OT_hook_recenter"); row = uiLayoutRow(layout, true); - uiItemO(row, "Select", ICON_NONE, "OBJECT_OT_hook_select"); - uiItemO(row, "Assign", ICON_NONE, "OBJECT_OT_hook_assign"); + uiItemO(row, IFACE_("Select"), ICON_NONE, "OBJECT_OT_hook_select"); + uiItemO(row, IFACE_("Assign"), ICON_NONE, "OBJECT_OT_hook_assign"); } modifier_panel_end(layout, ptr); @@ -558,9 +560,11 @@ ModifierTypeInfo modifierType_Hook = { /* name */ "Hook", /* structName */ "HookModifierData", /* structSize */ sizeof(HookModifierData), + /* srna */ &RNA_HookModifier, /* type */ eModifierTypeType_OnlyDeform, /* flags */ eModifierTypeFlag_AcceptsCVs | eModifierTypeFlag_AcceptsVertexCosOnly | eModifierTypeFlag_SupportsEditmode, + /* icon */ ICON_HOOK, /* copyData */ copyData, /* deformVerts */ deformVerts, @@ -579,8 +583,7 @@ ModifierTypeInfo modifierType_Hook = { /* updateDepsgraph */ updateDepsgraph, /* dependsOnTime */ NULL, /* dependsOnNormals */ NULL, - /* foreachObjectLink */ foreachObjectLink, - /* foreachIDLink */ NULL, + /* foreachIDLink */ foreachIDLink, /* foreachTexLink */ NULL, /* freeRuntimeData */ NULL, /* panelRegister */ panelRegister, |