[Bf-blender-cvs] [9551bdc] depsgraph_refactor: Depsgraph: GPencil animdata is now included in the depsgraph

Joshua Leung noreply at git.blender.org
Fri Jan 16 08:04:38 CET 2015


Commit: 9551bdcdb48395501c1c454ceee0375bcf9adebe
Author: Joshua Leung
Date:   Fri Jan 16 19:37:10 2015 +1300
Branches: depsgraph_refactor
https://developer.blender.org/rB9551bdcdb48395501c1c454ceee0375bcf9adebe

Depsgraph: GPencil animdata is now included in the depsgraph

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

M	source/blender/depsgraph/intern/depsgraph_build.h
M	source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
M	source/blender/depsgraph/intern/depsgraph_build_relations.cpp

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

diff --git a/source/blender/depsgraph/intern/depsgraph_build.h b/source/blender/depsgraph/intern/depsgraph_build.h
index baf0366..50405fc 100644
--- a/source/blender/depsgraph/intern/depsgraph_build.h
+++ b/source/blender/depsgraph/intern/depsgraph_build.h
@@ -101,6 +101,7 @@ struct DepsgraphNodeBuilder {
 	void build_texture_stack(DepsNode *owner_node, MTex **texture_stack);
 	void build_world(World *world);
 	void build_compositor(Scene *scene);
+	void build_gpencil(bGPdata *gpd);
 	
 private:
 	Main *m_bmain;
@@ -257,6 +258,7 @@ struct DepsgraphRelationBuilder
 	void build_texture(ID *owner, Tex *tex);
 	void build_texture_stack(ID *owner, MTex **texture_stack);
 	void build_compositor(Scene *scene);
+	void build_gpencil(ID *owner, bGPdata *gpd);
 	
 protected:
 	RootDepsNode *find_node(const RootKey &key) const;
diff --git a/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp b/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
index 4599f29..9af05cb 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_nodes.cpp
@@ -44,6 +44,7 @@ extern "C" {
 #include "DNA_constraint_types.h"
 #include "DNA_curve_types.h"
 #include "DNA_effect_types.h"
+#include "DNA_gpencil_types.h"
 #include "DNA_group_types.h"
 #include "DNA_key_types.h"
 #include "DNA_lamp_types.h"
@@ -170,6 +171,11 @@ void DepsgraphNodeBuilder::build_scene(Scene *scene)
 	
 	/* sequencer */
 	// XXX...
+	
+	/* grease pencil */
+	if (scene->gpd) {
+		build_gpencil(scene->gpd);
+	}
 }
 
 /* Build depsgraph for the given group
@@ -260,6 +266,11 @@ void DepsgraphNodeBuilder::build_object(Scene *scene, Base *base, Object *ob)
 	if (ob->particlesystem.first) {
 		build_particles(ob);
 	}
+	
+	/* grease pencil */
+	if (ob->gpd) {
+		build_gpencil(ob->gpd);
+	}
 }
 
 void DepsgraphNodeBuilder::build_object_transform(Scene *scene, Object *ob)
@@ -905,3 +916,17 @@ void DepsgraphNodeBuilder::build_compositor(Scene *scene)
 	ComponentDepsNode *owner_node = add_component_node(&scene->id, DEPSNODE_TYPE_PARAMETERS);
 	build_nodetree(owner_node, scene->nodetree);
 }
+
+void DepsgraphNodeBuilder::build_gpencil(bGPdata *gpd)
+{
+	ID *gpd_id = &gpd->id;
+	
+	/* gpencil itself */
+	// XXX: what about multiple users of same datablock? This should only get added once
+	add_id_node(gpd_id);
+	
+	/* The main reason Grease Pencil is included here is because the animation (and drivers)
+	 * need to be hosted somewhere...
+	 */
+	build_animdata(gpd_id);
+}
diff --git a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
index 9240396..d8048a7 100644
--- a/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
+++ b/source/blender/depsgraph/intern/depsgraph_build_relations.cpp
@@ -44,6 +44,7 @@ extern "C" {
 #include "DNA_constraint_types.h"
 #include "DNA_curve_types.h"
 #include "DNA_effect_types.h"
+#include "DNA_gpencil_types.h"
 #include "DNA_group_types.h"
 #include "DNA_key_types.h"
 #include "DNA_lamp_types.h"
@@ -276,6 +277,11 @@ void DepsgraphRelationBuilder::build_scene(Scene *scene)
 	if (scene->nodetree) {
 		build_compositor(scene);
 	}
+	
+	/* grease pencil */
+	if (scene->gpd) {
+		build_gpencil(&scene->id, scene->gpd);
+	}
 }
 
 void DepsgraphRelationBuilder::build_object(Scene *scene, Object *ob)
@@ -375,6 +381,11 @@ void DepsgraphRelationBuilder::build_object(Scene *scene, Object *ob)
 	if (ob->particlesystem.first) {
 		build_particles(scene, ob);
 	}
+	
+	/* grease pencil */
+	if (ob->gpd) {
+		build_gpencil(&ob->id, ob->gpd);
+	}
 }
 
 void DepsgraphRelationBuilder::build_object_parent(Object *ob)
@@ -1521,6 +1532,7 @@ void DepsgraphRelationBuilder::build_material(ID *owner, Material *ma)
 		return;
 	id_tag_set(ma_id);
 	
+	/* animation */
 	build_animdata(ma_id);
 	
 	/* textures */
@@ -1571,3 +1583,11 @@ void DepsgraphRelationBuilder::build_compositor(Scene *scene)
 	/* For now, just a plain wrapper? */
 	build_nodetree(&scene->id, scene->nodetree);
 }
+
+void DepsgraphRelationBuilder::build_gpencil(ID *UNUSED(owner), bGPdata *gpd)
+{
+	/* animation */
+	build_animdata(&gpd->id);
+	
+	// TODO: parent object (when that feature is implemented)
+}




More information about the Bf-blender-cvs mailing list