[Bf-blender-cvs] [6aadfa243de] master: Depsgraph: Mark build methods as virtual

Sergey Sharybin noreply at git.blender.org
Wed Sep 25 14:42:07 CEST 2019


Commit: 6aadfa243de3736d48400ceb8eae81febeffd987
Author: Sergey Sharybin
Date:   Fri Sep 20 16:42:04 2019 +0200
Branches: master
https://developer.blender.org/rB6aadfa243de3736d48400ceb8eae81febeffd987

Depsgraph: Mark build methods as virtual

Allows to override behavior in a subclasses.

Currently no functional changes. The penalty of calls being virtual
should be neglectable.

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

M	source/blender/depsgraph/intern/builder/deg_builder.cc
M	source/blender/depsgraph/intern/builder/deg_builder.h
M	source/blender/depsgraph/intern/builder/deg_builder_nodes.h
M	source/blender/depsgraph/intern/builder/deg_builder_relations.h

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

diff --git a/source/blender/depsgraph/intern/builder/deg_builder.cc b/source/blender/depsgraph/intern/builder/deg_builder.cc
index 4cbdd169980..4ca7240abd1 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder.cc
@@ -74,6 +74,10 @@ DepsgraphBuilder::DepsgraphBuilder(Main *bmain, Depsgraph *graph, DepsgraphBuild
 {
 }
 
+DepsgraphBuilder::~DepsgraphBuilder()
+{
+}
+
 bool DepsgraphBuilder::need_pull_base_into_graph(Base *base)
 {
   /* Simple check: enabled bases are always part of dependency graph. */
diff --git a/source/blender/depsgraph/intern/builder/deg_builder.h b/source/blender/depsgraph/intern/builder/deg_builder.h
index 040bb6cfeea..97e12e9ceb2 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder.h
@@ -35,11 +35,13 @@ class DepsgraphBuilderCache;
 
 class DepsgraphBuilder {
  public:
-  bool need_pull_base_into_graph(Base *base);
+  virtual ~DepsgraphBuilder();
 
-  bool check_pchan_has_bbone(Object *object, const bPoseChannel *pchan);
-  bool check_pchan_has_bbone_segments(Object *object, const bPoseChannel *pchan);
-  bool check_pchan_has_bbone_segments(Object *object, const char *bone_name);
+  virtual bool need_pull_base_into_graph(Base *base);
+
+  virtual bool check_pchan_has_bbone(Object *object, const bPoseChannel *pchan);
+  virtual bool check_pchan_has_bbone_segments(Object *object, const bPoseChannel *pchan);
+  virtual bool check_pchan_has_bbone_segments(Object *object, const char *bone_name);
 
  protected:
   /* NOTE: The builder does NOT take ownership over any of those resources. */
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
index 8763936b865..865f60432c1 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.h
@@ -93,8 +93,8 @@ class DepsgraphNodeBuilder : public DepsgraphBuilder {
     return (T *)cow->id.orig_id;
   }
 
-  void begin_build();
-  void end_build();
+  virtual void begin_build();
+  virtual void end_build();
 
   IDNode *add_id_node(ID *id);
   IDNode *find_id_node(ID *id);
@@ -145,73 +145,75 @@ class DepsgraphNodeBuilder : public DepsgraphBuilder {
   OperationNode *find_operation_node(
       ID *id, NodeType comp_type, OperationCode opcode, const char *name = "", int name_tag = -1);
 
-  void build_id(ID *id);
+  virtual void build_id(ID *id);
 
-  void build_scene_render(Scene *scene, ViewLayer *view_layer);
-  void build_scene_parameters(Scene *scene);
-  void build_scene_compositor(Scene *scene);
+  virtual void build_scene_render(Scene *scene, ViewLayer *view_layer);
+  virtual void build_scene_parameters(Scene *scene);
+  virtual void build_scene_compositor(Scene *scene);
 
-  void build_layer_collections(ListBase *lb);
-  void build_view_layer(Scene *scene,
-                        ViewLayer *view_layer,
-                        eDepsNode_LinkedState_Type linked_state);
-  void build_collection(LayerCollection *from_layer_collection, Collection *collection);
-  void build_object(int base_index,
-                    Object *object,
-                    eDepsNode_LinkedState_Type linked_state,
-                    bool is_visible);
-  void build_object_proxy_from(Object *object, bool is_object_visible);
-  void build_object_proxy_group(Object *object, bool is_object_visible);
-  void build_object_flags(int base_index, Object *object, eDepsNode_LinkedState_Type linked_state);
-  void build_object_data(Object *object, bool is_object_visible);
-  void build_object_data_camera(Object *object);
-  void build_object_data_geometry(Object *object, bool is_object_visible);
-  void build_object_data_geometry_datablock(ID *obdata, bool is_object_visible);
-  void build_object_data_light(Object *object);
-  void build_object_data_lightprobe(Object *object);
-  void build_object_data_speaker(Object *object);
-  void build_object_transform(Object *object);
-  void build_object_constraints(Object *object);
-  void build_object_pointcache(Object *object);
-  void build_pose_constraints(Object *object,
-                              bPoseChannel *pchan,
-                              int pchan_index,
-                              bool is_object_visible);
-  void build_rigidbody(Scene *scene);
-  void build_particle_systems(Object *object, bool is_object_visible);
-  void build_particle_settings(ParticleSettings *part);
-  void build_animdata(ID *id);
-  void build_animdata_nlastrip_targets(ListBase *strips);
-  void build_animation_images(ID *id);
-  void build_action(bAction *action);
-  void build_driver(ID *id, FCurve *fcurve, int driver_index);
-  void build_driver_variables(ID *id, FCurve *fcurve);
-  void build_driver_id_property(ID *id, const char *rna_path);
-  void build_parameters(ID *id);
-  void build_ik_pose(Object *object, bPoseChannel *pchan, bConstraint *con);
-  void build_splineik_pose(Object *object, bPoseChannel *pchan, bConstraint *con);
-  void build_rig(Object *object, bool is_object_visible);
-  void build_proxy_rig(Object *object);
-  void build_armature(bArmature *armature);
-  void build_shapekeys(Key *key);
-  void build_camera(Camera *camera);
-  void build_light(Light *lamp);
-  void build_nodetree(bNodeTree *ntree);
-  void build_material(Material *ma);
-  void build_materials(Material **materials, int num_materials);
-  void build_texture(Tex *tex);
-  void build_image(Image *image);
-  void build_world(World *world);
-  void build_gpencil(bGPdata *gpd);
-  void build_cachefile(CacheFile *cache_file);
-  void build_mask(Mask *mask);
-  void build_movieclip(MovieClip *clip);
-  void build_lightprobe(LightProbe *probe);
-  void build_speaker(Speaker *speaker);
-  void build_sound(bSound *sound);
-  void build_scene_sequencer(Scene *scene);
-  void build_scene_audio(Scene *scene);
-  void build_scene_speakers(Scene *scene, ViewLayer *view_layer);
+  virtual void build_layer_collections(ListBase *lb);
+  virtual void build_view_layer(Scene *scene,
+                                ViewLayer *view_layer,
+                                eDepsNode_LinkedState_Type linked_state);
+  virtual void build_collection(LayerCollection *from_layer_collection, Collection *collection);
+  virtual void build_object(int base_index,
+                            Object *object,
+                            eDepsNode_LinkedState_Type linked_state,
+                            bool is_visible);
+  virtual void build_object_proxy_from(Object *object, bool is_object_visible);
+  virtual void build_object_proxy_group(Object *object, bool is_object_visible);
+  virtual void build_object_flags(int base_index,
+                                  Object *object,
+                                  eDepsNode_LinkedState_Type linked_state);
+  virtual void build_object_data(Object *object, bool is_object_visible);
+  virtual void build_object_data_camera(Object *object);
+  virtual void build_object_data_geometry(Object *object, bool is_object_visible);
+  virtual void build_object_data_geometry_datablock(ID *obdata, bool is_object_visible);
+  virtual void build_object_data_light(Object *object);
+  virtual void build_object_data_lightprobe(Object *object);
+  virtual void build_object_data_speaker(Object *object);
+  virtual void build_object_transform(Object *object);
+  virtual void build_object_constraints(Object *object);
+  virtual void build_object_pointcache(Object *object);
+  virtual void build_pose_constraints(Object *object,
+                                      bPoseChannel *pchan,
+                                      int pchan_index,
+                                      bool is_object_visible);
+  virtual void build_rigidbody(Scene *scene);
+  virtual void build_particle_systems(Object *object, bool is_object_visible);
+  virtual void build_particle_settings(ParticleSettings *part);
+  virtual void build_animdata(ID *id);
+  virtual void build_animdata_nlastrip_targets(ListBase *strips);
+  virtual void build_animation_images(ID *id);
+  virtual void build_action(bAction *action);
+  virtual void build_driver(ID *id, FCurve *fcurve, int driver_index);
+  virtual void build_driver_variables(ID *id, FCurve *fcurve);
+  virtual void build_driver_id_property(ID *id, const char *rna_path);
+  virtual void build_parameters(ID *id);
+  virtual void build_ik_pose(Object *object, bPoseChannel *pchan, bConstraint *con);
+  virtual void build_splineik_pose(Object *object, bPoseChannel *pchan, bConstraint *con);
+  virtual void build_rig(Object *object, bool is_object_visible);
+  virtual void build_proxy_rig(Object *object);
+  virtual void build_armature(bArmature *armature);
+  virtual void build_shapekeys(Key *key);
+  virtual void build_camera(Camera *camera);
+  virtual void build_light(Light *lamp);
+  virtual void build_nodetree(bNodeTree *ntree);
+  virtual void build_material(Material *ma);
+  virtual void build_materials(Material **materials, int num_materials);
+  virtual void build_texture(Tex *tex);
+  virtual void build_image(Image *image);
+  virtual void build_world(World *world);
+  virtual void build_gpencil(bGPdata *gpd);
+  virtual void build_cachefile(CacheFile *cache_file);
+  virtual void build_mask(Mask *mask);
+  virtual void build_movieclip(MovieClip *clip);
+  virtual void build_lightprobe(LightProbe *probe);
+  virtual void build_speaker(Speaker *speaker);
+  virtual void build_sound(bSound *sound);
+  virtual void build_scene_sequencer(Scene *scene);
+  virtual void build_scene_audio(Scene *scene);
+  virtual void build_scene_speakers(Scene *scene, ViewLayer *view_layer);
 
   /* Per-ID information about what was already in the dependency graph.
    * Allows to re-use certain values, to speed up following evaluation. */
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.h b/source/blender/depsgraph/intern/builder/deg_builder_relations.h
index 36eb10a456b..c6a0014577f 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.h
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.h
@@ -191,95 +191,95 @@ class Deps

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list