diff options
author | Campbell Barton <ideasman42@gmail.com> | 2009-10-07 20:32:55 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2009-10-07 20:32:55 +0400 |
commit | 763358fe913c9ede43921f3ccc4cd6fdbfc5f809 (patch) | |
tree | d9ecd1ce68e412717e86502efe1380c507b08ec3 /source/blender/editors/render/render_shading.c | |
parent | df63ccd904f28c3796f15ae14afcb18b45831fe9 (diff) |
copy icon in the material buttons list view so you can copy the current set of materials to other selected objects, (like Ctrl+L, Materials in 2.4x)
Diffstat (limited to 'source/blender/editors/render/render_shading.c')
-rw-r--r-- | source/blender/editors/render/render_shading.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 56605ad0970..26df0df935b 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -431,6 +431,44 @@ void OBJECT_OT_material_slot_deselect(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } + +static int material_slot_copy_exec(bContext *C, wmOperator *op) +{ + Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + Material ***matar; + + if(!ob || !(matar= give_matarar(ob))) + return OPERATOR_CANCELLED; + + CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + if(ob != ob_iter && give_matarar(ob_iter)) { + assign_matarar(ob_iter, matar, ob->totcol); + if(ob_iter->totcol==ob->totcol) { + ob_iter->actcol= ob->actcol; + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob_iter); + } + } + } + CTX_DATA_END; + + return OPERATOR_FINISHED; +} + + +void OBJECT_OT_material_slot_copy(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy Material to Others"; + ot->idname= "OBJECT_OT_material_slot_copy"; + ot->description="Copies materials to other selected objects."; + + /* api callbacks */ + ot->exec= material_slot_copy_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + /********************** new material operator *********************/ static int new_material_exec(bContext *C, wmOperator *op) |