76 : bmain_(bmain), graph_(
graph), cache_(cache)
85 if (base->
flag & base_flag) {
109 if (pchan ==
nullptr || pchan->
bone ==
nullptr) {
150 DEG_NODE_VISITED = (1 << 0),
160 op_node->custom_flags = 0;
161 op_node->num_links_pending = 0;
162 for (Relation *rel : op_node->outlinks) {
164 ++op_node->num_links_pending;
167 if (op_node->num_links_pending == 0) {
169 op_node->custom_flags |= DEG_NODE_VISITED;
173 OperationNode *op_node;
176 for (Relation *rel : op_node->inlinks) {
178 OperationNode *op_from = (OperationNode *)rel->from;
179 op_from->owner->affects_directly_visible |= op_node->owner->affects_directly_visible;
183 for (Relation *rel : op_node->inlinks) {
185 OperationNode *op_from = (OperationNode *)rel->from;
188 --op_from->num_links_pending;
190 if ((op_from->num_links_pending == 0) && (op_from->custom_flags & DEG_NODE_VISITED) == 0) {
192 op_from->custom_flags |= DEG_NODE_VISITED;
205 deg_graph_build_flush_visibility(
graph);
Blender kernel action and pose functionality.
struct bPoseChannel * BKE_pose_channel_find_name(const struct bPose *pose, const char *name)
void BLI_stack_pop(BLI_Stack *stack, void *dst) ATTR_NONNULL()
void BLI_stack_push(BLI_Stack *stack, const void *src) ATTR_NONNULL()
bool BLI_stack_is_empty(const BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_stack_free(BLI_Stack *stack) ATTR_NONNULL()
#define BLI_stack_new(esize, descr)
ID and Library types, which are fundamental for sdna.
@ ID_RECALC_COPY_ON_WRITE
#define ID_IS_LINKED(_id)
Object is a sort of wrapper for general info.
bool isPropertyAnimated(ID *id, Args... args)
DepsgraphBuilderCache * cache_
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 need_pull_base_into_graph(Base *base)
DepsgraphBuilder(Main *bmain, Depsgraph *graph, DepsgraphBuilderCache *cache)
void deg_graph_remove_unused_noops(Depsgraph *graph)
bool deg_check_base_in_depsgraph(const Depsgraph *graph, Base *base)
void deg_graph_build_finalize(Main *bmain, Depsgraph *graph)
bool deg_copy_on_write_is_expanded(const ID *id_cow)
void graph_id_tag_update(Main *bmain, Depsgraph *graph, ID *id, int flag, eUpdateSource update_source)
bool deg_check_id_in_depsgraph(const Depsgraph *graph, ID *id_orig)
@ DEG_UPDATE_SOURCE_RELATIONS
struct Object * proxy_from
IDNode * find_id_node(const ID *id) const
OperationNodes operations
DEGCustomDataMeshMasks customdata_masks
DEGCustomDataMeshMasks previous_customdata_masks
Map< ComponentIDKey, ComponentNode * > components
void finalize_build(Depsgraph *graph)
uint32_t previous_eval_flags