diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_object.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_object.c | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c index b2cbfbbf6f0..b4453996095 100644 --- a/source/blender/makesrna/intern/rna_object.c +++ b/source/blender/makesrna/intern/rna_object.c @@ -427,7 +427,7 @@ static void rna_Object_dependency_update(Main *bmain, Scene *UNUSED(scene), Poin WM_main_add_notifier(NC_OBJECT | ND_PARENT, ptr->id.data); } -static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value) +static void rna_Object_data_set(struct ReportList *reports, PointerRNA *ptr, PointerRNA value) { Object *ob = (Object *)ptr->data; ID *id = value.data; @@ -441,8 +441,13 @@ static void rna_Object_data_set(PointerRNA *ptr, PointerRNA value) return; } - BLI_assert(BKE_id_is_in_global_main(&ob->id)); - BLI_assert(BKE_id_is_in_global_main(id)); + if ((id->tag & LIB_TAG_NO_MAIN) != (ob->id.tag & LIB_TAG_NO_MAIN)) { + BKE_report(reports, + RPT_ERROR, + "Can only assign evaluated data to to evaluated object, or original data to " + "original object"); + return; + } if (ob->type == OB_EMPTY) { if (ob->data) { @@ -529,7 +534,9 @@ static bool rna_Object_data_poll(PointerRNA *ptr, const PointerRNA value) return true; } -static void rna_Object_parent_set(PointerRNA *ptr, PointerRNA value) +static void rna_Object_parent_set(struct ReportList *UNUSED(reports), + PointerRNA *ptr, + PointerRNA value) { Object *ob = (Object *)ptr->data; Object *par = (Object *)value.data; @@ -614,7 +621,9 @@ static const EnumPropertyItem *rna_Object_instance_type_itemf(bContext *UNUSED(C return item; } -static void rna_Object_dup_collection_set(PointerRNA *ptr, PointerRNA value) +static void rna_Object_dup_collection_set(struct ReportList *UNUSED(reports), + PointerRNA *ptr, + PointerRNA value) { Object *ob = (Object *)ptr->data; Collection *grp = (Collection *)value.data; @@ -890,7 +899,9 @@ static PointerRNA rna_Object_active_material_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_Material, ma); } -static void rna_Object_active_material_set(PointerRNA *ptr, PointerRNA value) +static void rna_Object_active_material_set(struct ReportList *UNUSED(reports), + PointerRNA *ptr, + PointerRNA value) { Object *ob = (Object *)ptr->id.data; @@ -1089,7 +1100,9 @@ static PointerRNA rna_MaterialSlot_material_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_Material, ma); } -static void rna_MaterialSlot_material_set(PointerRNA *ptr, PointerRNA value) +static void rna_MaterialSlot_material_set(struct ReportList *UNUSED(reports), + PointerRNA *ptr, + PointerRNA value) { Object *ob = (Object *)ptr->id.data; int index = (Material **)ptr->data - ob->mat; @@ -1277,7 +1290,9 @@ static PointerRNA rna_Object_active_constraint_get(PointerRNA *ptr) return rna_pointer_inherit_refine(ptr, &RNA_Constraint, con); } -static void rna_Object_active_constraint_set(PointerRNA *ptr, PointerRNA value) +static void rna_Object_active_constraint_set(struct ReportList *UNUSED(reports), + PointerRNA *ptr, + PointerRNA value) { Object *ob = (Object *)ptr->id.data; BKE_constraints_active_set(&ob->constraints, (bConstraint *)value.data); |