107 return id_hash.lookup_default(
id,
nullptr);
130template<
typename FilterFunc>
133 for (
IDNode *id_node : *id_nodes) {
134 if (id_node->id_cow ==
nullptr) {
139 if (id_node->id_cow == id_node->id_orig) {
150 const ID_Type id_type =
GS(id_node->id_cow->name);
183 if (rel !=
nullptr) {
198 rel =
new Relation(from, to, description);
205 const char *description)
212 if (description !=
nullptr && !
STREQ(rel->
name, description)) {
225 if (node ==
nullptr) {
245 if (id_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;
293 deg_graph->
scene = scene;
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.
BPy_StructRNA * 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]
bool need_tag_id_on_graph_visibility_time_update
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)
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(Depsgraph &depsgraph, ID *id_cow_hint=nullptr)