Blender V4.3
blender::deg::DepsgraphNodeBuilder Class Reference

#include <deg_builder_nodes.h>

Inherits blender::deg::DepsgraphBuilder.

Classes

struct  BuilderWalkUserData
 
struct  IDInfo
 

Public Member Functions

 DepsgraphNodeBuilder (Main *bmain, Depsgraph *graph, DepsgraphBuilderCache *cache)
 
 ~DepsgraphNodeBuilder ()
 
IDget_cow_id (const ID *id_orig) const
 
IDensure_cow_id (ID *id_orig)
 
template<typename T >
Tget_cow_datablock (const T *orig) const
 
template<typename T >
Tget_orig_datablock (const T *cow) const
 
virtual void begin_build ()
 
virtual void end_build ()
 
int foreach_id_cow_detect_need_for_update_callback (ID *id_cow_self, ID *id_pointer)
 
IDNodeadd_id_node (ID *id)
 
IDNodefind_id_node (const ID *id)
 
TimeSourceNodeadd_time_source ()
 
ComponentNodeadd_component_node (ID *id, NodeType comp_type, const char *comp_name="")
 
ComponentNodefind_component_node (const ID *id, NodeType comp_type, const char *comp_name="")
 
OperationNodeadd_operation_node (ComponentNode *comp_node, OperationCode opcode, const DepsEvalOperationCb &op=nullptr, const char *name="", int name_tag=-1)
 
OperationNodeadd_operation_node (ID *id, NodeType comp_type, const char *comp_name, OperationCode opcode, const DepsEvalOperationCb &op=nullptr, const char *name="", int name_tag=-1)
 
OperationNodeadd_operation_node (ID *id, NodeType comp_type, OperationCode opcode, const DepsEvalOperationCb &op=nullptr, const char *name="", int name_tag=-1)
 
OperationNodeensure_operation_node (ID *id, NodeType comp_type, const char *comp_name, OperationCode opcode, const DepsEvalOperationCb &op=nullptr, const char *name="", int name_tag=-1)
 
OperationNodeensure_operation_node (ID *id, NodeType comp_type, OperationCode opcode, const DepsEvalOperationCb &op=nullptr, const char *name="", int name_tag=-1)
 
bool has_operation_node (ID *id, NodeType comp_type, const char *comp_name, OperationCode opcode, const char *name="", int name_tag=-1)
 
bool has_operation_node (ID *id, NodeType comp_type, OperationCode opcode)
 
OperationNodefind_operation_node (const ID *id, NodeType comp_type, const char *comp_name, OperationCode opcode, const char *name="", int name_tag=-1)
 
OperationNodefind_operation_node (const ID *id, NodeType comp_type, OperationCode opcode, const char *name="", int name_tag=-1)
 
OperationNodefind_operation_node (const OperationKey &key)
 
virtual void build_id (ID *id, bool force_be_visible=false)
 
virtual void build_generic_id (ID *id)
 
virtual void build_idproperties (IDProperty *id_property)
 
virtual void build_scene_render (Scene *scene, ViewLayer *view_layer)
 
virtual void build_scene_camera (Scene *scene)
 
virtual void build_scene_parameters (Scene *scene)
 
virtual void build_scene_compositor (Scene *scene)
 
virtual void build_layer_collections (ListBase *lb)
 
virtual void build_view_layer (Scene *scene, ViewLayer *view_layer, eDepsNode_LinkedState_Type linked_state)
 
virtual void build_collection (LayerCollection *from_layer_collection, Collection *collection)
 
virtual void build_object (int base_index, Object *object, eDepsNode_LinkedState_Type linked_state, bool is_visible)
 
virtual void build_object_instance_collection (Object *object, bool is_object_visible)
 
virtual void build_object_from_layer (int base_index, Object *object, eDepsNode_LinkedState_Type linked_state)
 
virtual void build_object_flags (int base_index, Object *object, eDepsNode_LinkedState_Type linked_state)
 
virtual void build_object_modifiers (Object *object)
 
virtual void build_object_data (Object *object)
 
virtual void build_object_data_camera (Object *object)
 
virtual void build_object_data_geometry (Object *object)
 
virtual void build_object_data_geometry_datablock (ID *obdata)
 
virtual void build_object_data_light (Object *object)
 
virtual void build_object_data_lightprobe (Object *object)
 
virtual void build_object_data_speaker (Object *object)
 
virtual void build_object_data_grease_pencil (Object *object)
 
virtual void build_object_transform (Object *object)
 
virtual void build_object_constraints (Object *object)
 
virtual void build_object_pointcache (Object *object)
 
virtual void build_object_shading (Object *object)
 
virtual void build_object_light_linking (Object *object)
 
virtual void build_light_linking_collection (Collection *collection)
 
virtual void build_pose_constraints (Object *object, bPoseChannel *pchan, int pchan_index)
 
virtual void build_rigidbody (Scene *scene)
 
virtual void build_particle_systems (Object *object, bool is_object_visible)
 
virtual void build_particle_settings (ParticleSettings *part)
 
virtual void build_animdata (ID *id)
 
virtual void build_animdata_nlastrip_targets (ListBase *strips)
 
virtual void build_animation_images (ID *id)
 
virtual void build_action (bAction *action)
 
virtual void build_driver (ID *id, FCurve *fcurve, int driver_index)
 
virtual void build_driver_variables (ID *id, FCurve *fcurve)
 
virtual void build_driver_scene_camera_variable (Scene *scene, const char *camera_path)
 
virtual void build_driver_id_property (const PointerRNA &target_prop, const char *rna_path_from_target_prop)
 
virtual void build_parameters (ID *id)
 
virtual void build_dimensions (Object *object)
 
virtual void build_ik_pose (Object *object, bPoseChannel *pchan, bConstraint *con)
 
virtual void build_splineik_pose (Object *object, bPoseChannel *pchan, bConstraint *con)
 
virtual void build_rig (Object *object)
 
virtual void build_armature (bArmature *armature)
 
virtual void build_armature_bones (ListBase *bones)
 
virtual void build_armature_bone_collections (blender::Span< BoneCollection * > collections)
 
virtual void build_shapekeys (Key *key)
 
virtual void build_camera (Camera *camera)
 
virtual void build_light (Light *lamp)
 
virtual void build_nodetree (bNodeTree *ntree)
 
virtual void build_nodetree_socket (bNodeSocket *socket)
 
virtual void build_material (Material *ma)
 
virtual void build_materials (Material **materials, int num_materials)
 
virtual void build_freestyle_lineset (FreestyleLineSet *fls)
 
virtual void build_freestyle_linestyle (FreestyleLineStyle *linestyle)
 
virtual void build_texture (Tex *tex)
 
virtual void build_image (Image *image)
 
virtual void build_world (World *world)
 
virtual void build_cachefile (CacheFile *cache_file)
 
virtual void build_mask (Mask *mask)
 
virtual void build_movieclip (MovieClip *clip)
 
virtual void build_lightprobe (LightProbe *probe)
 
virtual void build_speaker (Speaker *speaker)
 
virtual void build_sound (bSound *sound)
 
virtual void build_scene_sequencer (Scene *scene)
 
virtual void build_scene_audio (Scene *scene)
 
virtual void build_scene_speakers (Scene *scene, ViewLayer *view_layer)
 
virtual void build_vfont (VFont *vfont)
 
- Public Member Functions inherited from blender::deg::DepsgraphBuilder
virtual ~DepsgraphBuilder ()=default
 
virtual bool need_pull_base_into_graph (const Base *base)
 
virtual bool is_object_visibility_animated (const Object *object)
 
virtual bool is_modifier_visibility_animated (const Object *object, const ModifierData *modifier)
 
virtual bool check_pchan_has_bbone (const Object *object, const bPoseChannel *pchan)
 
virtual bool check_pchan_has_bbone_segments (const Object *object, const bPoseChannel *pchan)
 
virtual bool check_pchan_has_bbone_segments (const Object *object, const char *bone_name)
 

Protected Member Functions

void tag_previously_tagged_nodes ()
 
void update_invalid_cow_pointers ()
 
- Protected Member Functions inherited from blender::deg::DepsgraphBuilder
 DepsgraphBuilder (Main *bmain, Depsgraph *graph, DepsgraphBuilderCache *cache)
 

Static Protected Member Functions

static void modifier_walk (void *user_data, struct Object *object, struct ID **idpoin, int cb_flag)
 
static void constraint_walk (bConstraint *constraint, ID **idpoin, bool is_reference, void *user_data)
 

Protected Attributes

Vector< PersistentOperationKeysaved_entry_tags_
 
Vector< PersistentOperationKeyneeds_update_operations_
 
Scenescene_
 
ViewLayerview_layer_
 
int view_layer_index_
 
bool is_parent_collection_visible_
 
Map< uint, IDInfo * > id_info_hash_
 
BuilderMap built_map_
 
- Protected Attributes inherited from blender::deg::DepsgraphBuilder
Mainbmain_
 
Depsgraphgraph_
 
DepsgraphBuilderCachecache_
 

Additional Inherited Members

- Static Public Member Functions inherited from blender::deg::DepsgraphBuilder
static const char * get_rna_path_relative_to_scene_camera (const Scene *scene, const PointerRNA &target_prop, const char *rna_path)
 

Detailed Description

Definition at line 66 of file deg_builder_nodes.h.

Constructor & Destructor Documentation

◆ DepsgraphNodeBuilder()

blender::deg::DepsgraphNodeBuilder::DepsgraphNodeBuilder ( Main * bmain,
Depsgraph * graph,
DepsgraphBuilderCache * cache )

Definition at line 129 of file deg_builder_nodes.cc.

◆ ~DepsgraphNodeBuilder()

blender::deg::DepsgraphNodeBuilder::~DepsgraphNodeBuilder ( )

Member Function Documentation

◆ add_component_node()

ComponentNode * blender::deg::DepsgraphNodeBuilder::add_component_node ( ID * id,
NodeType comp_type,
const char * comp_name = "" )

◆ add_id_node()

◆ add_operation_node() [1/3]

OperationNode * blender::deg::DepsgraphNodeBuilder::add_operation_node ( ComponentNode * comp_node,
OperationCode opcode,
const DepsEvalOperationCb & op = nullptr,
const char * name = "",
int name_tag = -1 )

Definition at line 245 of file deg_builder_nodes.cc.

References blender::deg::ComponentNode::add_operation(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BLI_assert_msg, blender::deg::ComponentNode::find_operation(), blender::deg::DepsgraphBuilder::graph_, blender::deg::ComponentNode::identifier(), blender::deg::OperationNode::identifier(), and blender::deg::Depsgraph::operations.

Referenced by add_operation_node(), add_operation_node(), build_action(), build_animation_images(), build_animdata(), build_armature(), build_cachefile(), build_collection(), build_dimensions(), build_ik_pose(), build_image(), build_light(), build_light_linking_collection(), build_lightprobe(), build_mask(), build_material(), build_movieclip(), build_nodetree(), build_object(), build_object_constraints(), build_object_data_geometry(), build_object_data_geometry_datablock(), build_object_data_lightprobe(), build_object_data_speaker(), build_object_flags(), build_object_from_layer(), build_object_light_linking(), build_object_modifiers(), build_object_pointcache(), build_object_shading(), build_object_transform(), build_parameters(), build_particle_settings(), build_particle_systems(), build_pose_constraints(), build_rig(), build_rigidbody(), build_scene_audio(), build_scene_parameters(), build_scene_sequencer(), build_shapekeys(), build_sound(), build_speaker(), build_splineik_pose(), build_texture(), build_vfont(), build_view_layer(), build_world(), ensure_operation_node(), and ensure_operation_node().

◆ add_operation_node() [2/3]

OperationNode * blender::deg::DepsgraphNodeBuilder::add_operation_node ( ID * id,
NodeType comp_type,
const char * comp_name,
OperationCode opcode,
const DepsEvalOperationCb & op = nullptr,
const char * name = "",
int name_tag = -1 )

Definition at line 267 of file deg_builder_nodes.cc.

References add_component_node(), and add_operation_node().

◆ add_operation_node() [3/3]

OperationNode * blender::deg::DepsgraphNodeBuilder::add_operation_node ( ID * id,
NodeType comp_type,
OperationCode opcode,
const DepsEvalOperationCb & op = nullptr,
const char * name = "",
int name_tag = -1 )

Definition at line 279 of file deg_builder_nodes.cc.

References add_operation_node().

◆ add_time_source()

TimeSourceNode * blender::deg::DepsgraphNodeBuilder::add_time_source ( )

◆ begin_build()

◆ build_action()

◆ build_animation_images()

void blender::deg::DepsgraphNodeBuilder::build_animation_images ( ID * id)
virtual

◆ build_animdata()

◆ build_animdata_nlastrip_targets()

void blender::deg::DepsgraphNodeBuilder::build_animdata_nlastrip_targets ( ListBase * strips)
virtual

◆ build_armature()

◆ build_armature_bone_collections()

void blender::deg::DepsgraphNodeBuilder::build_armature_bone_collections ( blender::Span< BoneCollection * > collections)
virtual

Definition at line 1864 of file deg_builder_nodes.cc.

References build_idproperties().

Referenced by build_armature().

◆ build_armature_bones()

void blender::deg::DepsgraphNodeBuilder::build_armature_bones ( ListBase * bones)
virtual

◆ build_cachefile()

◆ build_camera()

void blender::deg::DepsgraphNodeBuilder::build_camera ( Camera * camera)
virtual

◆ build_collection()

◆ build_dimensions()

void blender::deg::DepsgraphNodeBuilder::build_dimensions ( Object * object)
virtual

◆ build_driver()

void blender::deg::DepsgraphNodeBuilder::build_driver ( ID * id,
FCurve * fcurve,
int driver_index )
virtual

Build graph node(s) for Driver

Parameters
idID-Block that driver is attached to
fcurveDriver-FCurve
driver_indexIndex in animation data drivers list

Definition at line 1315 of file deg_builder_nodes.cc.

References FCurve::array_index, BKE_animsys_eval_driver(), build_driver_variables(), depsgraph, blender::deg::DRIVER, ensure_operation_node(), get_cow_id(), blender::deg::PARAMETERS, and FCurve::rna_path.

Referenced by build_animdata().

◆ build_driver_id_property()

◆ build_driver_scene_camera_variable()

void blender::deg::DepsgraphNodeBuilder::build_driver_scene_camera_variable ( Scene * scene,
const char * camera_path )
virtual

◆ build_driver_variables()

◆ build_freestyle_lineset()

void blender::deg::DepsgraphNodeBuilder::build_freestyle_lineset ( FreestyleLineSet * fls)
virtual

◆ build_freestyle_linestyle()

◆ build_generic_id()

void blender::deg::DepsgraphNodeBuilder::build_generic_id ( ID * id)
virtual

◆ build_id()

◆ build_idproperties()

◆ build_ik_pose()

void blender::deg::DepsgraphNodeBuilder::build_ik_pose ( Object * object,
bPoseChannel * pchan,
bConstraint * con )
virtual

◆ build_image()

◆ build_layer_collections()

◆ build_light()

◆ build_light_linking_collection()

void blender::deg::DepsgraphNodeBuilder::build_light_linking_collection ( Collection * collection)
virtual

◆ build_lightprobe()

◆ build_mask()

◆ build_material()

◆ build_materials()

void blender::deg::DepsgraphNodeBuilder::build_materials ( Material ** materials,
int num_materials )
virtual

Definition at line 2050 of file deg_builder_nodes.cc.

References build_material().

Referenced by build_object_data(), and build_object_data_geometry().

◆ build_movieclip()

◆ build_nodetree()

◆ build_nodetree_socket()

void blender::deg::DepsgraphNodeBuilder::build_nodetree_socket ( bNodeSocket * socket)
virtual

◆ build_object()

void blender::deg::DepsgraphNodeBuilder::build_object ( int base_index,
Object * object,
eDepsNode_LinkedState_Type linked_state,
bool is_visible )
virtual

◆ build_object_constraints()

void blender::deg::DepsgraphNodeBuilder::build_object_constraints ( Object * object)
virtual

Constraints Graph Notes

For constraints, we currently only add a operation node to the Transform or Bone components (depending on whichever type of owner we have). This represents the entire constraints stack, which is for now just executed as a single monolithic block. At least initially, this should be sufficient for ensuring that the porting/refactoring process remains manageable.

However, when the time comes for developing "node-based" constraints, we'll need to split this up into pre/post nodes for "constraint stack evaluation" + operation nodes for each constraint (i.e. the contents of the loop body used in the current "solve_constraints()" operation).

– Aligorith, August 2013

Definition at line 1134 of file deg_builder_nodes.cc.

References add_operation_node(), depsgraph, get_cow_datablock(), scene_, blender::deg::TRANSFORM, and blender::deg::TRANSFORM_CONSTRAINTS.

Referenced by build_object_transform().

◆ build_object_data()

◆ build_object_data_camera()

void blender::deg::DepsgraphNodeBuilder::build_object_data_camera ( Object * object)
virtual

Definition at line 1034 of file deg_builder_nodes.cc.

References build_camera().

Referenced by build_object_data().

◆ build_object_data_geometry()

◆ build_object_data_geometry_datablock()

◆ build_object_data_grease_pencil()

void blender::deg::DepsgraphNodeBuilder::build_object_data_grease_pencil ( Object * object)
virtual

◆ build_object_data_light()

void blender::deg::DepsgraphNodeBuilder::build_object_data_light ( Object * object)
virtual

Definition at line 1040 of file deg_builder_nodes.cc.

References build_light(), and lamp.

Referenced by build_object_data().

◆ build_object_data_lightprobe()

void blender::deg::DepsgraphNodeBuilder::build_object_data_lightprobe ( Object * object)
virtual

◆ build_object_data_speaker()

void blender::deg::DepsgraphNodeBuilder::build_object_data_speaker ( Object * object)
virtual

◆ build_object_flags()

void blender::deg::DepsgraphNodeBuilder::build_object_flags ( int base_index,
Object * object,
eDepsNode_LinkedState_Type linked_state )
virtual

◆ build_object_from_layer()

◆ build_object_instance_collection()

void blender::deg::DepsgraphNodeBuilder::build_object_instance_collection ( Object * object,
bool is_object_visible )
virtual

Definition at line 914 of file deg_builder_nodes.cc.

References build_collection(), and is_parent_collection_visible_.

Referenced by build_object().

◆ build_object_light_linking()

◆ build_object_modifiers()

◆ build_object_pointcache()

void blender::deg::DepsgraphNodeBuilder::build_object_pointcache ( Object * object)
virtual

◆ build_object_shading()

void blender::deg::DepsgraphNodeBuilder::build_object_shading ( Object * object)
virtual

◆ build_object_transform()

◆ build_parameters()

◆ build_particle_settings()

◆ build_particle_systems()

void blender::deg::DepsgraphNodeBuilder::build_particle_systems ( Object * object,
bool is_object_visible )
virtual

Particle Systems Nodes

There are two types of nodes associated with representing particle systems: 1) Component (EVAL_PARTICLES) - This is the particle-system evaluation context for an object. It acts as the container for all the nodes associated with a particular set of particle systems. 2) Particle System Evaluation Operation - This operation node acts as a black-box evaluation step for one particle system referenced by the particle systems stack. All dependencies link to this operation.

Definition at line 1569 of file deg_builder_nodes.cc.

References add_component_node(), add_operation_node(), BKE_particle_system_eval_init(), build_collection(), build_object(), build_particle_settings(), blender::deg::DEG_ID_LINKED_INDIRECTLY, depsgraph, ELEM, get_cow_datablock(), LISTBASE_FOREACH, blender::deg::Node::name, PART_DRAW_GR, PART_DRAW_OB, PART_PHYS_BOIDS, PART_PHYS_KEYED, blender::deg::PARTICLE_SYSTEM, blender::deg::PARTICLE_SYSTEM_DONE, blender::deg::PARTICLE_SYSTEM_EVAL, blender::deg::PARTICLE_SYSTEM_INIT, blender::deg::OperationNode::set_as_entry(), and blender::deg::OperationNode::set_as_exit().

Referenced by build_object().

◆ build_pose_constraints()

◆ build_rig()

void blender::deg::DepsgraphNodeBuilder::build_rig ( Object * object)
virtual

Pose/Armature Bones Graph.

Pose Rig Graph

Pose Component:

  • Mainly used for referencing Bone components.
  • This is where the evaluation operations for init/exec/cleanup (ik) solvers live, and are later hooked up (so that they can be interleaved during runtime) with bone-operations they depend on/affect.
  • init_pose_eval() and cleanup_pose_eval() are absolute first and last steps of pose eval process. ALL bone operations must be performed between these two...

Bone Component:

  • Used for representing each bone within the rig
  • Acts to encapsulate the evaluation operations (base matrix + parenting, and constraint stack) so that they can be easily found.
  • Everything else which depends on bone-results hook up to the component only so that we can redirect those to point at either the post-IK/post-constraint/post-matrix steps, as needed.

IK Solvers.

  • These require separate processing steps are pose-level to be executed between chains of bones (i.e. once the base transforms of a bunch of bones is done)

Unsolved Issues:

  • Care is needed to ensure that multi-headed trees work out the same as in ik-tree building
  • Animated chain-lengths are a problem.

Definition at line 132 of file deg_builder_nodes_rig.cc.

References add_operation_node(), BKE_pose_channels_hash_ensure(), BKE_pose_rebuild(), BKE_pose_update_constraint_flags(), blender::deg::BONE, blender::deg::BONE_DONE, blender::deg::BONE_LOCAL, blender::deg::BONE_POSE_PARENT, blender::deg::BONE_READY, blender::deg::BONE_SEGMENTS, build_armature(), build_idproperties(), build_ik_pose(), build_object(), build_pose_constraints(), build_splineik_pose(), blender::deg::DepsgraphBuilder::check_pchan_has_bbone(), CONSTRAINT_TYPE_KINEMATIC, CONSTRAINT_TYPE_SPLINEIK, blender::deg::DEG_ID_LINKED_INDIRECTLY, depsgraph, blender::deg::EVAL_POSE, get_cow_datablock(), LISTBASE_FOREACH, blender::deg::PARAMETERS, blender::deg::PARAMETERS_EVAL, blender::deg::POSE_CLEANUP, POSE_CONSTRAINTS_NEED_UPDATE_FLAGS, blender::deg::POSE_DONE, blender::deg::POSE_INIT, blender::deg::POSE_INIT_IK, POSE_RECALC, scene_, blender::deg::OperationNode::set_as_entry(), and blender::deg::OperationNode::set_as_exit().

Referenced by build_object_data().

◆ build_rigidbody()

void blender::deg::DepsgraphNodeBuilder::build_rigidbody ( Scene * scene)
virtual

Rigidbody Simulation Nodes

There are 3 nodes related to Rigidbody Simulation: 1) "Initialize/Rebuild World" - this is called sparingly, only when the simulation needs to be rebuilt (mainly after file reload, or moving back to start frame) 2) "Do Simulation" - perform a simulation step - interleaved between the evaluation steps for clusters of objects (i.e. between those affected and/or not affected by the sim for instance).

3) "Pull Results" - grab the specific transforms applied for a specific object - performed as part of object's transform-stack building.

Definition at line 1482 of file deg_builder_nodes.cc.

References add_operation_node(), build_collection(), build_object(), RigidBodyWorld::constraints, blender::deg::DEG_ID_LINKED_INDIRECTLY, depsgraph, blender::deg::ComponentNode::entry_operation, FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN, FOREACH_COLLECTION_OBJECT_RECURSIVE_END, get_cow_datablock(), RigidBodyWorld::group, RigidBodyCon::ob1, RigidBodyCon::ob2, OB_MESH, blender::deg::OperationNode::owner, RBO_TYPE_PASSIVE, blender::deg::RIGIDBODY_REBUILD, blender::deg::RIGIDBODY_SIM, blender::deg::RIGIDBODY_TRANSFORM_COPY, blender::deg::OperationNode::set_as_entry(), blender::deg::OperationNode::set_as_exit(), and blender::deg::TRANSFORM.

Referenced by build_view_layer().

◆ build_scene_audio()

◆ build_scene_camera()

void blender::deg::DepsgraphNodeBuilder::build_scene_camera ( Scene * scene)
virtual

◆ build_scene_compositor()

void blender::deg::DepsgraphNodeBuilder::build_scene_compositor ( Scene * scene)
virtual

◆ build_scene_parameters()

◆ build_scene_render()

◆ build_scene_sequencer()

◆ build_scene_speakers()

◆ build_shapekeys()

◆ build_sound()

◆ build_speaker()

◆ build_splineik_pose()

void blender::deg::DepsgraphNodeBuilder::build_splineik_pose ( Object * object,
bPoseChannel * pchan,
bConstraint * con )
virtual

◆ build_texture()

◆ build_vfont()

◆ build_view_layer()

void blender::deg::DepsgraphNodeBuilder::build_view_layer ( Scene * scene,
ViewLayer * view_layer,
eDepsNode_LinkedState_Type linked_state )
virtual

◆ build_world()

void blender::deg::DepsgraphNodeBuilder::build_world ( World * world)
virtual

◆ constraint_walk()

void blender::deg::DepsgraphNodeBuilder::constraint_walk ( bConstraint * constraint,
ID ** idpoin,
bool is_reference,
void * user_data )
staticprotected

Definition at line 2337 of file deg_builder_nodes.cc.

References blender::deg::DEG_ID_LINKED_INDIRECTLY, GS, and ID_OB.

Referenced by build_object(), and build_pose_constraints().

◆ end_build()

◆ ensure_cow_id()

ID * blender::deg::DepsgraphNodeBuilder::ensure_cow_id ( ID * id_orig)

Definition at line 366 of file deg_builder_nodes.cc.

References add_id_node(), id_node, ID_TAG_COPIED_ON_EVAL, and ID::tag.

Referenced by build_mask(), and build_movieclip().

◆ ensure_operation_node() [1/2]

OperationNode * blender::deg::DepsgraphNodeBuilder::ensure_operation_node ( ID * id,
NodeType comp_type,
const char * comp_name,
OperationCode opcode,
const DepsEvalOperationCb & op = nullptr,
const char * name = "",
int name_tag = -1 )

Definition at line 289 of file deg_builder_nodes.cc.

References add_operation_node(), and find_operation_node().

Referenced by build_driver(), and build_driver_id_property().

◆ ensure_operation_node() [2/2]

OperationNode * blender::deg::DepsgraphNodeBuilder::ensure_operation_node ( ID * id,
NodeType comp_type,
OperationCode opcode,
const DepsEvalOperationCb & op = nullptr,
const char * name = "",
int name_tag = -1 )

Definition at line 304 of file deg_builder_nodes.cc.

References add_operation_node(), and find_operation_node().

◆ find_component_node()

ComponentNode * blender::deg::DepsgraphNodeBuilder::find_component_node ( const ID * id,
NodeType comp_type,
const char * comp_name = "" )

Definition at line 234 of file deg_builder_nodes.cc.

References find_id_node(), and id_node.

Referenced by find_operation_node().

◆ find_id_node()

◆ find_operation_node() [1/3]

OperationNode * blender::deg::DepsgraphNodeBuilder::find_operation_node ( const ID * id,
NodeType comp_type,
const char * comp_name,
OperationCode opcode,
const char * name = "",
int name_tag = -1 )

◆ find_operation_node() [2/3]

OperationNode * blender::deg::DepsgraphNodeBuilder::find_operation_node ( const ID * id,
NodeType comp_type,
OperationCode opcode,
const char * name = "",
int name_tag = -1 )

Definition at line 349 of file deg_builder_nodes.cc.

References find_operation_node().

◆ find_operation_node() [3/3]

◆ foreach_id_cow_detect_need_for_update_callback()

int blender::deg::DepsgraphNodeBuilder::foreach_id_cow_detect_need_for_update_callback ( ID * id_cow_self,
ID * id_pointer )

◆ get_cow_datablock()

◆ get_cow_id()

◆ get_orig_datablock()

template<typename T >
T * blender::deg::DepsgraphNodeBuilder::get_orig_datablock ( const T * cow) const
inline

Definition at line 84 of file deg_builder_nodes.h.

◆ has_operation_node() [1/2]

bool blender::deg::DepsgraphNodeBuilder::has_operation_node ( ID * id,
NodeType comp_type,
const char * comp_name,
OperationCode opcode,
const char * name = "",
int name_tag = -1 )

◆ has_operation_node() [2/2]

bool blender::deg::DepsgraphNodeBuilder::has_operation_node ( ID * id,
NodeType comp_type,
OperationCode opcode )

Definition at line 328 of file deg_builder_nodes.cc.

References find_operation_node().

◆ modifier_walk()

void blender::deg::DepsgraphNodeBuilder::modifier_walk ( void * user_data,
struct Object * object,
struct ID ** idpoin,
int cb_flag )
staticprotected

Definition at line 2317 of file deg_builder_nodes.cc.

References blender::deg::DEG_ID_LINKED_INDIRECTLY, GS, and ID_OB.

Referenced by build_object(), and build_object_modifiers().

◆ tag_previously_tagged_nodes()

◆ update_invalid_cow_pointers()

void blender::deg::DepsgraphNodeBuilder::update_invalid_cow_pointers ( )
protected

Check for IDs that need to be flushed (copy-on-eval-updated) because the depsgraph itself created or removed some of their evaluated dependencies.

Definition at line 484 of file deg_builder_nodes.cc.

References BKE_library_foreach_ID_link(), ELEM, blender::deg::foreach_id_cow_detect_need_for_update_callback(), blender::deg::DepsgraphBuilder::graph_, ID_FLAG_EMBEDDED_DATA, id_node, blender::deg::Depsgraph::id_nodes, ID_RECALC_SYNC_TO_EVAL, IDWALK_IGNORE_EMBEDDED_ID, and IDWALK_READONLY.

Referenced by end_build().

Member Data Documentation

◆ built_map_

◆ id_info_hash_

Map<uint, IDInfo *> blender::deg::DepsgraphNodeBuilder::id_info_hash_
protected

Definition at line 339 of file deg_builder_nodes.h.

Referenced by add_id_node(), begin_build(), and ~DepsgraphNodeBuilder().

◆ is_parent_collection_visible_

bool blender::deg::DepsgraphNodeBuilder::is_parent_collection_visible_
protected

◆ needs_update_operations_

Vector<PersistentOperationKey> blender::deg::DepsgraphNodeBuilder::needs_update_operations_
protected

Definition at line 306 of file deg_builder_nodes.h.

Referenced by begin_build(), and tag_previously_tagged_nodes().

◆ saved_entry_tags_

Vector<PersistentOperationKey> blender::deg::DepsgraphNodeBuilder::saved_entry_tags_
protected

Definition at line 305 of file deg_builder_nodes.h.

Referenced by begin_build(), and tag_previously_tagged_nodes().

◆ scene_

◆ view_layer_

ViewLayer* blender::deg::DepsgraphNodeBuilder::view_layer_
protected

Definition at line 329 of file deg_builder_nodes.h.

Referenced by build_scene_render(), and build_view_layer().

◆ view_layer_index_

int blender::deg::DepsgraphNodeBuilder::view_layer_index_
protected

Definition at line 330 of file deg_builder_nodes.h.

Referenced by build_object_flags(), and build_view_layer().


The documentation for this class was generated from the following files: