44 has_animated_visibility(
false),
45 need_update_relations(
true),
46 need_update_nodes_visibility(
true),
47 need_tag_id_on_graph_visibility_update(
true),
48 need_tag_id_on_graph_visibility_time_update(
false),
51 view_layer(view_layer),
57 use_visibility_optimization(
true),
59 is_render_pipeline_depsgraph(
false),
60 use_editors_update(
false),
103 return id_hash.lookup_default(
id,
nullptr);
113 id_node->init_copy_on_write(*
this, id_cow_hint);
126template<
typename FilterFunc>
179 if (rel !=
nullptr) {
197 static_assert(std::is_trivially_destructible_v<Relation>);
199 from->outlinks.append(rel);
207 const char *description)
214 if (description !=
nullptr && !
STREQ(rel->name, description)) {
227 if (
node ==
nullptr) {
268 return (
ID *)id_orig;
282 return reinterpret_cast<Depsgraph *
>(deg_depsgraph);
292 const bool do_update_register = deg_graph->
bmain != bmain;
293 if (do_update_register && deg_graph->
bmain !=
nullptr) {
297 deg_graph->
bmain = bmain;
301 if (do_update_register) {
308 if (
graph ==
nullptr) {
314 delete deg_depsgraph;
int BKE_idtype_idcode_to_index(short idcode)
float BKE_scene_ctime_get(const Scene *scene)
float BKE_scene_frame_get(const Scene *scene)
void BLI_spin_init(SpinLock *spin)
void BLI_spin_end(SpinLock *spin)
bool DEG_is_evaluating(const Depsgraph *depsgraph)
@ DEG_EVALUATE_SYNC_WRITEBACK_NO
uint64_t DEG_get_update_count(const Depsgraph *depsgraph)
void DEG_disable_visibility_optimization(Depsgraph *depsgraph)
Depsgraph * DEG_graph_new(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
bool DEG_is_active(const Depsgraph *depsgraph)
void DEG_graph_replace_owners(Depsgraph *depsgraph, Main *bmain, Scene *scene, ViewLayer *view_layer)
void DEG_graph_free(Depsgraph *graph)
void DEG_make_inactive(Depsgraph *depsgraph)
void DEG_make_active(Depsgraph *depsgraph)
destruct_ptr< T > construct(Args &&...args)
void append(const T &value)
const Depsgraph * depsgraph
@ RELATION_CHECK_BEFORE_ADD
bool deg_eval_copy_is_expanded(const ID *id_cow)
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)
void unregister_graph(Depsgraph *depsgraph)
void register_graph(Depsgraph *depsgraph)
unsigned __int64 uint64_t
virtual Node * create_node(const ID *id, const char *subdata, StringRef name) const =0
bool use_visibility_optimization
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]
LinearAllocator build_allocator
light_linking::Cache light_linking_cache
TimeSourceNode * find_time_source() const
IDNode * add_id_node(ID *id, ID *id_cow_hint=nullptr)
char id_type_updated_backup[INDEX_ID_MAX]
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
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)
void tag_update(Depsgraph *graph, eUpdateSource source) override