[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