59 void init(
const ID *
id,
const char *subdata)
override;
69 int name_tag = -1)
const;
158#define DEG_COMPONENT_NODE_DEFINE_TYPEINFO(NodeType, type_, type_name_, id_recalc_tag) \
159 const Node::TypeInfo NodeType::typeinfo = Node::TypeInfo(type_, type_name_, id_recalc_tag)
161#define DEG_COMPONENT_NODE_DECLARE DEG_DEPSNODE_DECLARE
163#define DEG_COMPONENT_NODE_DEFINE(name, NAME, id_recalc_tag) \
164 DEG_COMPONENT_NODE_DEFINE_TYPEINFO( \
165 name##ComponentNode, NodeType::NAME, #name " Component", id_recalc_tag); \
166 static DepsNodeFactoryImpl<name##ComponentNode> DNTI_##NAME
168#define DEG_COMPONENT_NODE_DECLARE_GENERIC(name) \
169 struct name##ComponentNode : public ComponentNode { \
170 DEG_COMPONENT_NODE_DECLARE; \
173#define DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(name) \
174 struct name##ComponentNode : public ComponentNode { \
175 DEG_COMPONENT_NODE_DECLARE; \
176 virtual bool need_tag_cow_before_update(const IDRecalcFlag ) \
182#define DEG_COMPONENT_NODE_DECLARE_NO_COW(name) \
183 struct name##ComponentNode : public ComponentNode { \
184 DEG_COMPONENT_NODE_DECLARE; \
185 virtual bool depends_on_cow() \
221 void init(
const ID *
id,
const char *subdata)
override;
#define ID_TYPE_SUPPORTS_PARAMS_WITHOUT_COW(id_type)
unsigned long long int uint64_t
#define DEG_COMPONENT_NODE_DECLARE_NO_COW_TAG_ON_UPDATE(name)
#define DEG_COMPONENT_NODE_DECLARE_GENERIC(name)
void deg_register_component_depsnodes()
std::function< void(::Depsgraph *)> DepsEvalOperationCb
uint64_t get_default_hash(const T &v, const Args &...args)
DEG_COMPONENT_NODE_DECLARE
bool need_tag_cow_before_update(const IDRecalcFlag tag) override
DEG_COMPONENT_NODE_DECLARE
struct bPoseChannel * pchan
OperationIDKey(const OperationCode opcode)
OperationIDKey(const OperationCode opcode, const StringRef name, const int name_tag)
std::string identifier() const
BLI_STRUCT_EQUALITY_OPERATORS_3(OperationIDKey, opcode, name_tag, name)
OperationNode * get_entry_operation() override
bool possibly_affects_visible_id
virtual bool need_tag_cow_before_update(const IDRecalcFlag)
std::string identifier() const override
OperationNode * get_operation(OperationIDKey key) const
void tag_update(Depsgraph *graph, eUpdateSource source) override
OperationNode * exit_operation
Vector< OperationNode * > operations
OperationNode * find_operation(OperationIDKey key) const
OperationNode * add_operation(const DepsEvalOperationCb &op, OperationCode opcode, const StringRef name="", int name_tag=-1)
OperationNode * get_exit_operation() override
bool has_operation(OperationIDKey key) const
void set_exit_operation(OperationNode *op_node)
void finalize_build(Depsgraph *graph)
~ComponentNode() override
OperationNode * entry_operation
Map< ComponentNode::OperationIDKey, OperationNode * > * operations_map
void set_entry_operation(OperationNode *op_node)
virtual bool depends_on_cow()
DEG_COMPONENT_NODE_DECLARE
bool need_tag_cow_before_update(const IDRecalcFlag) override