[Bf-blender-cvs] [b318a3a] id_override_static: Add ways to forbid override/auto-override.

Bastien Montagne noreply at git.blender.org
Mon Jan 2 12:56:44 CET 2017


Commit: b318a3a81174209967895d2efe58a60ab8802a69
Author: Bastien Montagne
Date:   Fri Dec 30 18:15:49 2016 +0100
Branches: id_override_static
https://developer.blender.org/rBb318a3a81174209967895d2efe58a60ab8802a69

Add ways to forbid override/auto-override.

Add a 'NOOP' override ruul to prevent any kind of override on a given
RNA path, and an ID flag 'AUTOOVERRIDE' to allow automatic definition of
override rules based on changed data.

Again, just defines, do not do anything yet.

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

M	source/blender/blenkernel/intern/library_override.c
M	source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M	source/blender/editors/object/object_relations.c
M	source/blender/makesdna/DNA_ID.h

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

diff --git a/source/blender/blenkernel/intern/library_override.c b/source/blender/blenkernel/intern/library_override.c
index a4487fc..ee2a122 100644
--- a/source/blender/blenkernel/intern/library_override.c
+++ b/source/blender/blenkernel/intern/library_override.c
@@ -169,7 +169,9 @@ bool BKE_override_status_check_reference(ID *local)
 bool BKE_override_operations_create(ID *local)
 {
 	BLI_assert(local->override != NULL);
-	printf("Should generate static override rules for %s\n", local->name);
+	if (local->flag & LIB_AUTOOVERRIDE) {
+		printf("Should generate static override rules for %s\n", local->name);
+	}
 	return false;
 }
 
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 01b167c..87e6cee 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -173,7 +173,7 @@ IDDepsNode *DepsgraphNodeBuilder::add_id_node(ID *id)
 	if (id_node == NULL) {
 		id_node = m_graph->add_id_node(id, id->name);
 
-		if (id->override != NULL) {
+		if (id->override != NULL && (id->flag & LIB_AUTOOVERRIDE) != 0) {
 			ComponentDepsNode *comp_node = id_node->add_component(DEPSNODE_TYPE_PARAMETERS, "override_generator");
 			comp_node->owner = id_node;
 
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 8be3da9..070ef49 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -2366,13 +2366,14 @@ static int make_override_exec(bContext *C, wmOperator *UNUSED(op))
 	/* Note that we most likely want to do this in a more BKE generic function later, but for now will do for testing. */
 
 	id_copy(bmain, &refobj->id, (ID **)&locobj, false);
+	locobj->id.flag |= LIB_AUTOOVERRIDE;
 
 	/* Remapping *before* defining override (this will have to be fixed btw, remapping of ref pointer...). */
 	BKE_libblock_remap(bmain, refobj, locobj, ID_REMAP_SKIP_INDIRECT_USAGE);
 
 	IDOverride *override = BKE_override_init(&locobj->id, &refobj->id);
 
-	/* For testing only of course! This will have to be auto-generated... */
+	/* For testing only of course! This will have to be auto-generated/editable by user... */
 	{
 		IDOverrideProperty *overp = MEM_callocN(sizeof(IDOverrideProperty), __func__);
 		overp->rna_path = BLI_strdup("location");
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index 15b032d..9d1a2e9 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -130,6 +130,8 @@ typedef struct IDOverridePropertyOperation {
 /* IDOverridePropertyOperation->operation. */
 enum {
 	/* Basic operations. */
+	IDOVERRIDE_NOOP          =   0,  /* Special value, forbids any overriding. */
+
 	IDOVERRIDE_REPLACE       =   1,  /* Fully replace local value by reference one. */
 
 	/* Numeric-only operations. */
@@ -353,6 +355,7 @@ typedef enum ID_Type {
 
 /* id->flag (persitent). */
 enum {
+	LIB_AUTOOVERRIDE    = 1 << 0,  /* Allow automatic generation of overriding rules. */
 	LIB_FAKEUSER        = 1 << 9,
 };




More information about the Bf-blender-cvs mailing list