diff options
Diffstat (limited to 'source/blender/blenkernel/intern/material.c')
-rw-r--r-- | source/blender/blenkernel/intern/material.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 04a07fb42be..f899901b54e 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -954,7 +954,8 @@ void BKE_id_material_assign(Main *bmain, ID *id, Material *ma, short act) BKE_objects_materials_test_all(bmain, id); } -void BKE_object_material_assign(Main *bmain, Object *ob, Material *ma, short act, int assign_type) +static void object_material_assign( + Main *bmain, Object *ob, Material *ma, short act, int assign_type, bool do_test_all) { Material *mao, **matar, ***matarar; short *totcolp; @@ -1037,7 +1038,10 @@ void BKE_object_material_assign(Main *bmain, Object *ob, Material *ma, short act id_us_min(&mao->id); } (*matarar)[act - 1] = ma; - BKE_objects_materials_test_all(bmain, ob->data); /* Data may be used by several objects... */ + /* Data may be used by several objects. */ + if (do_test_all) { + BKE_objects_materials_test_all(bmain, ob->data); + } } if (ma) { @@ -1045,6 +1049,19 @@ void BKE_object_material_assign(Main *bmain, Object *ob, Material *ma, short act } } +void BKE_object_material_assign(Main *bmain, Object *ob, Material *ma, short act, int assign_type) +{ + object_material_assign(bmain, ob, ma, act, assign_type, true); +} + +void BKE_object_material_assign_single_obdata(struct Main *bmain, + struct Object *ob, + struct Material *ma, + short act) +{ + object_material_assign(bmain, ob, ma, act, BKE_MAT_ASSIGN_OBDATA, false); +} + void BKE_object_material_remap(Object *ob, const unsigned int *remap) { Material ***matar = BKE_object_material_array_p(ob); |