48 : time_source(nullptr),
49 has_animated_visibility(
false),
50 need_update_relations(
true),
51 need_update_nodes_visibility(
true),
52 need_tag_id_on_graph_visibility_update(
true),
53 need_tag_id_on_graph_visibility_time_update(
false),
56 view_layer(view_layer),
62 use_visibility_optimization(
true),
64 is_render_pipeline_depsgraph(
false),
65 use_editors_update(
false),
107 return id_hash.lookup_default(
id,
nullptr);
117 id_node->init_copy_on_write(*
this, id_cow_hint);
130template<
typename FilterFunc>
183 if (rel !=
nullptr) {
198 rel =
new Relation(from, to, description);
205 const char *description)
207 for (
Relation *rel : from->outlinks) {
212 if (description !=
nullptr && !
STREQ(rel->name, description)) {
225 if (node ==
nullptr) {
263 return (
ID *)id_orig;
277 return reinterpret_cast<Depsgraph *
>(deg_depsgraph);
287 const bool do_update_register = deg_graph->
bmain != bmain;
288 if (do_update_register && deg_graph->
bmain !=
nullptr) {
292 deg_graph->
bmain = bmain;
296 if (do_update_register) {
303 if (graph ==
nullptr) {
309 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)
Set of utility functions and constants to work with consoles.
void BLI_spin_init(SpinLock *spin)
void BLI_spin_end(SpinLock *spin)
bool DEG_is_evaluating(const Depsgraph *depsgraph)
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)
Read Guarded memory(de)allocation.
void append(const T &value)
const Depsgraph * depsgraph
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
@ 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, const char *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]
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)
virtual void tag_update(Depsgraph *graph, eUpdateSource source) override