diff options
Diffstat (limited to 'source/blender/depsgraph/intern/nodes/deg_node_component.h')
-rw-r--r-- | source/blender/depsgraph/intern/nodes/deg_node_component.h | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/source/blender/depsgraph/intern/nodes/deg_node_component.h b/source/blender/depsgraph/intern/nodes/deg_node_component.h index 985716deaac..5e79dc1c685 100644 --- a/source/blender/depsgraph/intern/nodes/deg_node_component.h +++ b/source/blender/depsgraph/intern/nodes/deg_node_component.h @@ -39,8 +39,6 @@ struct ID; struct bPoseChannel; struct GHash; -struct EvaluationContext; - namespace DEG { struct Depsgraph; @@ -127,7 +125,7 @@ struct ComponentDepsNode : public DepsNode { OperationDepsNode *get_entry_operation(); OperationDepsNode *get_exit_operation(); - void finalize_build(); + void finalize_build(Depsgraph *graph); IDDepsNode *owner; @@ -146,10 +144,12 @@ struct ComponentDepsNode : public DepsNode { OperationDepsNode *entry_operation; OperationDepsNode *exit_operation; - // XXX: a poll() callback to check if component's first node can be started? + virtual bool depends_on_cow() { return true; } - /* Temporary bitmask, used during graph construction. */ - unsigned int layers; + /* Denotes whether COW component is to be tagged when this component + * is tagged for update. + */ + virtual bool need_tag_cow_before_update() { return true; } }; /* ---------------------------------------- */ @@ -172,16 +172,27 @@ struct ComponentDepsNode : public DepsNode { DEG_COMPONENT_NODE_DECLARE; \ } +#define DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(name) \ + struct name ## ComponentDepsNode : public ComponentDepsNode { \ + DEG_COMPONENT_NODE_DECLARE; \ + virtual bool need_tag_cow_before_update() { return false; } \ + } + DEG_COMPONENT_NODE_DECLARE_GENERIC(Animation); +DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(BatchCache); DEG_COMPONENT_NODE_DECLARE_GENERIC(Cache); +DEG_COMPONENT_NODE_DECLARE_GENERIC(CopyOnWrite); DEG_COMPONENT_NODE_DECLARE_GENERIC(Geometry); +DEG_COMPONENT_NODE_DECLARE_GENERIC(LayerCollections); DEG_COMPONENT_NODE_DECLARE_GENERIC(Parameters); DEG_COMPONENT_NODE_DECLARE_GENERIC(Particles); DEG_COMPONENT_NODE_DECLARE_GENERIC(Proxy); DEG_COMPONENT_NODE_DECLARE_GENERIC(Pose); DEG_COMPONENT_NODE_DECLARE_GENERIC(Sequencer); DEG_COMPONENT_NODE_DECLARE_GENERIC(Shading); +DEG_COMPONENT_NODE_DECLARE_GENERIC(ShadingParameters); DEG_COMPONENT_NODE_DECLARE_GENERIC(Transform); +DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(ObjectFromLayer); /* Bone Component */ struct BoneComponentDepsNode : public ComponentDepsNode { |