47 : time_source(nullptr),
48 has_animated_visibility(false),
49 need_update_relations(true),
50 need_update_nodes_visibility(true),
51 need_tag_id_on_graph_visibility_update(true),
52 need_tag_id_on_graph_visibility_time_update(false),
55 view_layer(view_layer),
62 is_render_pipeline_depsgraph(false),
63 use_editors_update(false)
103 return id_hash.lookup_default(
id,
nullptr);
113 id_node->init_copy_on_write(id_cow_hint);
126 template<
typename FilterFunc>
177 if (rel !=
nullptr) {
199 const char *description)
206 if (description !=
nullptr && !
STREQ(rel->
name, description)) {
219 if (
node ==
nullptr) {
257 return (
ID *)id_orig;
271 return reinterpret_cast<Depsgraph *
>(deg_depsgraph);
281 const bool do_update_register = deg_graph->
bmain != bmain;
282 if (do_update_register && deg_graph->
bmain !=
nullptr) {
286 deg_graph->
bmain = bmain;
290 if (do_update_register) {
297 if (
graph ==
nullptr) {
303 delete deg_depsgraph;
int BKE_idtype_idcode_to_index(short idcode)
float BKE_scene_frame_get(const struct Scene *scene)
float BKE_scene_ctime_get(const struct Scene *scene)
Set of utility functions and constants to work with consoles.
void BLI_spin_init(SpinLock *spin)
void BLI_spin_end(SpinLock *spin)
struct Depsgraph Depsgraph
@ LIB_TAG_COPIED_ON_WRITE
Read Guarded memory(de)allocation.
void append(const T &value)
const Depsgraph * depsgraph
void DEG_graph_replace_owners(struct Depsgraph *depsgraph, Main *bmain, Scene *scene, ViewLayer *view_layer)
bool DEG_is_active(const struct Depsgraph *depsgraph)
void DEG_make_active(struct Depsgraph *depsgraph)
Depsgraph * DEG_graph_new(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
void DEG_graph_free(Depsgraph *graph)
void DEG_make_inactive(struct Depsgraph *depsgraph)
bool DEG_is_evaluating(const struct Depsgraph *depsgraph)
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
@ RELATION_CHECK_BEFORE_ADD
static void clear_id_nodes_conditional(Depsgraph::IDDepsNodes *id_nodes, const FilterFunc &filter)
void clear_physics_relations(Depsgraph *graph)
DepsNodeFactory * type_get_factory(const NodeType type)
bool deg_copy_on_write_is_expanded(const ID *id_cow)
void unregister_graph(Depsgraph *depsgraph)
void register_graph(Depsgraph *depsgraph)
virtual Node * create_node(const ID *id, const char *subdata, const char *name) const =0
ID * get_cow_id(const ID *id_orig) const
Map< const ID *, ListBase * > * physics_relations[DEG_PHYSICS_RELATIONS_NUM]
IDNode * find_id_node(const ID *id) const
char id_type_updated[INDEX_ID_MAX]
TimeSourceNode * find_time_source() const
IDNode * add_id_node(ID *id, ID *id_cow_hint=nullptr)
Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
Relation * add_new_relation(Node *from, Node *to, const char *description, int flags=0)
char id_type_exist[INDEX_ID_MAX]
Map< const ID *, IDNode * > id_hash
Vector< IDNode * > IDDepsNodes
Relation * check_nodes_connected(const Node *from, const Node *to, const char *description)
TimeSourceNode * add_time_source()
Set< OperationNode * > entry_tags
TimeSourceNode * time_source
void add_entry_tag(OperationNode *node)
virtual void tag_update(Depsgraph *graph, eUpdateSource source) override