[Bf-blender-cvs] [ce7575c823f] blender2.8: Static Override: Move 'auto' flag into override struct, expose it to RNA.

Bastien Montagne noreply at git.blender.org
Wed May 2 16:15:58 CEST 2018


Commit: ce7575c823f169747af870058334395cc9bf7b10
Author: Bastien Montagne
Date:   Wed May 2 16:14:33 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBce7575c823f169747af870058334395cc9bf7b10

Static Override: Move 'auto' flag into override struct, expose it to RNA.

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

M	source/blender/blenkernel/intern/library_override.c
M	source/blender/editors/object/object_relations.c
M	source/blender/makesdna/DNA_ID.h
M	source/blender/makesrna/intern/rna_ID.c

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

diff --git a/source/blender/blenkernel/intern/library_override.c b/source/blender/blenkernel/intern/library_override.c
index 8917fac198c..9f3cc578d2a 100644
--- a/source/blender/blenkernel/intern/library_override.c
+++ b/source/blender/blenkernel/intern/library_override.c
@@ -163,7 +163,7 @@ static ID *override_static_create_from(Main *bmain, ID *reference_id)
 	id_us_min(local_id);
 
 	BKE_override_static_init(local_id, reference_id);
-	local_id->flag |= LIB_OVERRIDE_STATIC_AUTO;
+	local_id->flag |= STATICOVERRIDE_AUTO;
 
 	return local_id;
 }
@@ -534,7 +534,7 @@ bool BKE_override_static_operations_create(ID *local, const bool force_auto)
 	const bool is_template = (local->override_static->reference == NULL);
 	bool ret = false;
 
-	if (!is_template && (force_auto || local->flag & LIB_OVERRIDE_STATIC_AUTO)) {
+	if (!is_template && (force_auto || local->override_static->flag & STATICOVERRIDE_AUTO)) {
 		PointerRNA rnaptr_local, rnaptr_reference;
 		RNA_id_pointer_create(local, &rnaptr_local);
 		RNA_id_pointer_create(local->override_static->reference, &rnaptr_reference);
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index fe53902d9a4..ee1ef490274 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -2332,7 +2332,7 @@ static int make_override_static_exec(bContext *C, wmOperator *op)
 				}
 				else {
 					/* Disable auto-override tags for non-active objects, will help with performaces... */
-					new_ob->id.flag &= ~LIB_OVERRIDE_STATIC_AUTO;
+					new_ob->id.override_static->flag &= ~STATICOVERRIDE_AUTO;
 				}
 				/* We still want to store all objects' current override status (i.e. change of parent). */
 				BKE_override_static_operations_create(&new_ob->id, true);
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index bcce2764eaf..acf054a94d5 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -181,12 +181,18 @@ typedef struct IDOverrideStatic {
 	struct ID *reference;  /* Reference linked ID which this one overrides. */
 	ListBase properties;  /* List of IDOverrideProperty structs. */
 
+	short flag;
+	short pad[3];
+
 	/* Read/write data. */
 	/* Temp ID storing extra override data (used for differential operations only currently).
 	 * Always NULL outside of read/write context. */
 	struct ID *storage;
 } IDOverrideStatic;
 
+enum eStaticOverride_Flag {
+	STATICOVERRIDE_AUTO    = 1 << 0,  /* Allow automatic generation of overriding rules. */
+};
 
 /* watch it: Sequence has identical beginning. */
 /**
@@ -389,7 +395,7 @@ typedef enum ID_Type {
 
 #define ID_IS_STATIC_OVERRIDE_AUTO(_id) (!ID_IS_LINKED((_id)) && \
                                          ID_IS_STATIC_OVERRIDE((_id)) && \
-                                         (((ID *)(_id))->flag & LIB_OVERRIDE_STATIC_AUTO))
+                                         (((ID *)(_id))->override_static->flag & STATICOVERRIDE_AUTO))
 
 #ifdef GS
 #  undef GS
@@ -402,7 +408,6 @@ typedef enum ID_Type {
 
 /* id->flag (persitent). */
 enum {
-	LIB_OVERRIDE_STATIC_AUTO    = 1 << 0,  /* Allow automatic generation of overriding rules. */
 	LIB_FAKEUSER                = 1 << 9,
 };
 
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index deb9e20f34b..a07e43162c2 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -1106,12 +1106,17 @@ static void rna_def_ID_override_static_property(BlenderRNA *brna)
 static void rna_def_ID_override_static(BlenderRNA *brna)
 {
 	StructRNA *srna;
+	PropertyRNA *prop;
 
 	srna = RNA_def_struct(brna, "IDOverrideStatic", NULL);
 	RNA_def_struct_ui_text(srna, "ID Static Override", "Struct gathering all data needed by statically overridden IDs");
 
 	RNA_def_pointer(srna, "reference", "ID", "Reference ID", "Linked ID used as reference by this override");
 
+	prop = RNA_def_boolean(srna, "auto_generate", true, "Auto Generate Override",
+	                       "Automatically generate overriding operations by detecting changes in properties");
+	RNA_def_property_boolean_sdna(prop, NULL, "flag", STATICOVERRIDE_AUTO);
+
 	RNA_def_collection(srna, "properties", "IDOverrideStaticProperty", "Properties",
 	                   "List of overridden properties");



More information about the Bf-blender-cvs mailing list