103 return id_hash.lookup_default(
id,
nullptr);
126template<
typename FilterFunc>
129 for (
IDNode *id_node : *id_nodes) {
130 if (id_node->id_cow ==
nullptr) {
135 if (id_node->id_cow == id_node->id_orig) {
146 const ID_Type id_type =
GS(id_node->id_cow->name);
179 if (rel !=
nullptr) {
197 static_assert(std::is_trivially_destructible_v<Relation>);
207 const char *description)
214 if (description !=
nullptr && !
STREQ(rel->
name, description)) {
227 if (node ==
nullptr) {
250 if (id_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;
298 deg_graph->
scene = scene;
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)
BPy_StructRNA * depsgraph
unsigned long long int uint64_t
void append(const T &value)
@ 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)
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]
bool need_tag_id_on_graph_visibility_time_update
LinearAllocator build_allocator
light_linking::Cache light_linking_cache
bool need_tag_id_on_graph_visibility_update
TimeSourceNode * find_time_source() const
IDNode * add_id_node(ID *id, ID *id_cow_hint=nullptr)
bool is_render_pipeline_depsgraph
Vector< IDNode * > IDDepsNodes
char id_type_updated_backup[INDEX_ID_MAX]
bool need_update_nodes_visibility
Depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, eEvaluationMode mode)
DepsgraphEvaluateSyncWriteback sync_writeback
Relation * add_new_relation(Node *from, Node *to, const char *description, int flags=0)
char id_type_exist[INDEX_ID_MAX]
bool has_animated_visibility
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
bool need_update_relations
void add_entry_tag(OperationNode *node)
void init_copy_on_write(ID *id_cow_hint=nullptr)