[Bf-blender-cvs] [5f86d6e6eb8] master: Depsgraph: Cleanup, node from RNA pointer search

Sergey Sharybin noreply at git.blender.org
Mon Dec 4 14:49:27 CET 2017


Commit: 5f86d6e6eb82083d457d925cf144c498a291b955
Author: Sergey Sharybin
Date:   Mon Dec 4 12:45:42 2017 +0100
Branches: master
https://developer.blender.org/rB5f86d6e6eb82083d457d925cf144c498a291b955

Depsgraph: Cleanup, node from RNA pointer search

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

M	source/blender/depsgraph/intern/depsgraph.cc

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

diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc
index a17b083feb9..cdf59f61d0c 100644
--- a/source/blender/depsgraph/intern/depsgraph.cc
+++ b/source/blender/depsgraph/intern/depsgraph.cc
@@ -95,16 +95,15 @@ static bool pointer_to_id_node_criteria(const PointerRNA *ptr,
                                         const PropertyRNA *prop,
                                         ID **id)
 {
-	if (!ptr->type)
+	if (ptr->type == NULL) {
 		return false;
-
-	if (!prop) {
+	}
+	if (prop != NULL) {
 		if (RNA_struct_is_ID(ptr->type)) {
 			*id = (ID *)ptr->data;
 			return true;
 		}
 	}
-
 	return false;
 }
 
@@ -114,49 +113,40 @@ static bool pointer_to_component_node_criteria(const PointerRNA *ptr,
                                                eDepsNode_Type *type,
                                                const char **subdata)
 {
-	if (!ptr->type)
+	if (ptr->type == NULL) {
 		return false;
-
+	}
 	/* Set default values for returns. */
 	*id      = (ID *)ptr->id.data;  /* For obvious reasons... */
 	*subdata = "";                 /* Default to no subdata (e.g. bone) name
 	                                * lookup in most cases. */
-
-	/* Handling of commonly known scenarios... */
+	/* Handling of commonly known scenarios. */
 	if (ptr->type == &RNA_PoseBone) {
 		bPoseChannel *pchan = (bPoseChannel *)ptr->data;
-
-		/* Bone - generally, we just want the bone component... */
+		/* Bone - generally, we just want the bone component. */
 		*type = DEG_NODE_TYPE_BONE;
 		*subdata = pchan->name;
-
 		return true;
 	}
 	else if (ptr->type == &RNA_Bone) {
 		Bone *bone = (Bone *)ptr->data;
-
 		/* armature-level bone, but it ends up going to bone component anyway */
-		// TODO: the ID in thise case will end up being bArmature, not Object as needed!
+		// NOTE: the ID in thise case will end up being bArmature.
 		*type = DEG_NODE_TYPE_BONE;
 		*subdata = bone->name;
-		//*id = ...
-
 		return true;
 	}
 	else if (RNA_struct_is_a(ptr->type, &RNA_Constraint)) {
 		Object *object = (Object *)ptr->id.data;
 		bConstraint *con = (bConstraint *)ptr->data;
-
-		/* object or bone? */
+		/* Check whether is object or bone constraint. */
 		if (BLI_findindex(&object->constraints, con) != -1) {
-			/* object transform */
-			// XXX: for now, we can't address the specific constraint or the constraint stack...
+			/* Constraint is defining object transform. */
 			*type = DEG_NODE_TYPE_TRANSFORM;
 			return true;
 		}
-		else if (object->pose) {
-			bPoseChannel *pchan;
-			for (pchan = (bPoseChannel *)object->pose->chanbase.first; pchan; pchan = pchan->next) {
+		else if (object->pose != NULL) {
+			LINKLIST_FOREACH(bPoseChannel *, pchan, &object->pose->chanbase) {
 				if (BLI_findindex(&pchan->constraints, con) != -1) {
 					/* bone transforms */
 					*type = DEG_NODE_TYPE_BONE;
@@ -167,23 +157,12 @@ static bool pointer_to_component_node_criteria(const PointerRNA *ptr,
 		}
 	}
 	else if (RNA_struct_is_a(ptr->type, &RNA_Modifier)) {
-		//ModifierData *md = (ModifierData *)ptr->data;
-
-		/* Modifier */
-		/* NOTE: subdata is not the same as "operation name",
-		 * so although we have unique ops for modifiers,
-		 * we can't lump them together
-		 */
-		*type = DEG_NODE_TYPE_BONE;
-		//*subdata = md->name;
-
+		*type = DEG_NODE_TYPE_GEOMETRY;
 		return true;
 	}
 	else if (ptr->type == &RNA_Object) {
-		//Object *object = (Object *)ptr->data;
-
 		/* Transforms props? */
-		if (prop) {
+		if (prop != NULL) {
 			const char *prop_identifier = RNA_property_identifier((PropertyRNA *)prop);
 			/* TODO(sergey): How to optimize this? */
 			if (strstr(prop_identifier, "location") ||
@@ -205,11 +184,11 @@ static bool pointer_to_component_node_criteria(const PointerRNA *ptr,
 	}
 	else if (ptr->type == &RNA_ShapeKey) {
 		Key *key = (Key *)ptr->id.data;
-
-		/* ShapeKeys are currently handled as geometry on the geometry that owns it */
-		*id = key->from; // XXX
+		/* ShapeKeys are currently handled as geometry on the geometry that
+		 * owns it.
+		 */
+		*id = key->from;
 		*type = DEG_NODE_TYPE_PARAMETERS;
-
 		return true;
 	}
 	else if (RNA_struct_is_a(ptr->type, &RNA_Sequence)) {
@@ -219,13 +198,11 @@ static bool pointer_to_component_node_criteria(const PointerRNA *ptr,
 		*subdata = seq->name; // xxx?
 		return true;
 	}
-
-	if (prop) {
-		/* All unknown data effectively falls under "parameter evaluation" */
+	if (prop != NULL) {
+		/* All unknown data effectively falls under "parameter evaluation". */
 		*type = DEG_NODE_TYPE_PARAMETERS;
 		return true;
 	}
-
 	return false;
 }



More information about the Bf-blender-cvs mailing list