[Bf-blender-cvs] [7d384bcdbb4] tmp-static-override-insertion: Static Override: Lock 'edition' of constraints & modifiers from overridden data.

Bastien Montagne noreply at git.blender.org
Wed May 2 18:46:48 CEST 2018


Commit: 7d384bcdbb401393388ffb7f64ce3eea6a3fc86a
Author: Bastien Montagne
Date:   Wed May 2 18:45:22 2018 +0200
Branches: tmp-static-override-insertion
https://developer.blender.org/rB7d384bcdbb401393388ffb7f64ce3eea6a3fc86a

Static Override: Lock 'edition' of constraints & modifiers from overridden data.

Means that you cannot move or delete constraints/modifiers coming from
the overriden linked datablock. Local inserted ones can be fully edited.

===================================================================

M	source/blender/editors/object/object_constraint.c
M	source/blender/editors/object/object_modifier.c

===================================================================

diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c
index 95778b73e55..6a0dedd1d43 100644
--- a/source/blender/editors/object/object_constraint.c
+++ b/source/blender/editors/object/object_constraint.c
@@ -598,6 +598,11 @@ static int edit_constraint_poll_generic(bContext *C, StructRNA *rna_type)
 		return 0;
 	}
 
+	if (ID_IS_STATIC_OVERRIDE(ob)) {
+		CTX_wm_operator_poll_msg_set(C, "Cannot edit constraints comming from static override");
+		return (((bConstraint *)ptr.data)->flag & CONSTRAINT_STATICOVERRIDE_LOCAL) != 0;
+	}
+
 	return 1;
 }
 
diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c
index e2197c58d49..dd04a730542 100644
--- a/source/blender/editors/object/object_modifier.c
+++ b/source/blender/editors/object/object_modifier.c
@@ -825,9 +825,19 @@ int edit_modifier_poll_generic(bContext *C, StructRNA *rna_type, int obtype_flag
 	PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", rna_type);
 	Object *ob = (ptr.id.data) ? ptr.id.data : ED_object_active_context(C);
 	
+	if (!ptr.data) {
+		CTX_wm_operator_poll_msg_set(C, "Context missing 'modifier'");
+		return 0;
+	}
+
 	if (!ob || ID_IS_LINKED(ob)) return 0;
 	if (obtype_flag && ((1 << ob->type) & obtype_flag) == 0) return 0;
 	if (ptr.id.data && ID_IS_LINKED(ptr.id.data)) return 0;
+
+	if (ID_IS_STATIC_OVERRIDE(ob)) {
+		CTX_wm_operator_poll_msg_set(C, "Cannot edit modifiers comming from static override");
+		return (((ModifierData *)ptr.data)->flag & eModifierFlag_StaticOverride_Local) != 0;
+	}
 	
 	return 1;
 }



More information about the Bf-blender-cvs mailing list