[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