61 [scene_cow, object_cow, pchan_index](::Depsgraph *
depsgraph) {
62 BKE_pose_constraints_evaluate(
63 depsgraph, scene_cow, object_cow, pchan_index);
73 if (rootchan ==
nullptr) {
83 int rootchan_index =
BLI_findindex(&object->pose->chanbase, rootchan);
93 [scene_cow, object_cow, rootchan_index](::Depsgraph *
depsgraph) {
94 BKE_pose_iktree_evaluate(depsgraph, scene_cow, object_cow, rootchan_index);
116 int rootchan_index =
BLI_findindex(&object->pose->chanbase, rootchan);
125 [scene_cow, object_cow, rootchan_index](::Depsgraph *
depsgraph) {
126 BKE_pose_splineik_evaluate(
127 depsgraph, scene_cow, object_cow, rootchan_index);
148 if (object->pose ==
nullptr || (object->pose->flag &
POSE_RECALC)) {
153 if (object->pose !=
nullptr) {
183 [scene_cow, object_cow](::Depsgraph *
depsgraph) {
184 BKE_pose_eval_init(depsgraph, scene_cow, object_cow);
191 [scene_cow, object_cow](::Depsgraph *
depsgraph) {
192 BKE_pose_eval_init_ik(depsgraph, scene_cow, object_cow);
198 [scene_cow, object_cow](::Depsgraph *
depsgraph) {
199 BKE_pose_eval_cleanup(depsgraph, scene_cow, object_cow);
206 [object_cow](::Depsgraph *
depsgraph) { BKE_pose_eval_done(depsgraph, object_cow); });
220 [scene_cow, object_cow, pchan_index](::Depsgraph *
depsgraph) {
221 BKE_pose_eval_bone(depsgraph, scene_cow, object_cow, pchan_index);
231 [object_cow, pchan_index](::Depsgraph *
depsgraph) {
232 BKE_pose_bone_done(depsgraph, object_cow, pchan_index);
241 [object_cow, pchan_index](::Depsgraph *
depsgraph) {
242 BKE_pose_eval_bbone_segments(
243 depsgraph, object_cow, pchan_index);
250 if (pchan->prop !=
nullptr) {
256 if (pchan->constraints.first !=
nullptr) {
285 if (pchan->custom !=
nullptr) {
Blender kernel action and pose functionality.
void BKE_pose_update_constraint_flags(bPose *pose) ATTR_NONNULL(1)
void BKE_pose_channels_hash_ensure(bPose *pose) ATTR_NONNULL(1)
void BKE_pose_rebuild(Main *bmain, Object *ob, bArmature *arm, bool do_id_user)
bPoseChannel * BKE_armature_ik_solver_find_root(bPoseChannel *pchan, bKinematicConstraint *data)
bPoseChannel * BKE_armature_splineik_solver_find_root(bPoseChannel *pchan, bSplineIKConstraint *data)
void BKE_constraints_id_loop(struct ListBase *list, ConstraintIDFunc func, const int flag, void *userdata)
#define LISTBASE_FOREACH(type, var, list)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
@ POSE_CONSTRAINTS_NEED_UPDATE_FLAGS
@ CONSTRAINT_TYPE_SPLINEIK
@ CONSTRAINT_TYPE_KINEMATIC
Object is a sort of wrapper for general info.
Read Guarded memory(de)allocation.
virtual bool check_pchan_has_bbone(const Object *object, const bPoseChannel *pchan)
virtual void build_pose_constraints(Object *object, bPoseChannel *pchan, int pchan_index)
virtual void build_object(int base_index, Object *object, eDepsNode_LinkedState_Type linked_state, bool is_visible)
OperationNode * add_operation_node(ComponentNode *comp_node, OperationCode opcode, const DepsEvalOperationCb &op=nullptr, const char *name="", int name_tag=-1)
static void constraint_walk(bConstraint *constraint, ID **idpoin, bool is_reference, void *user_data)
virtual void build_armature(bArmature *armature)
T * get_cow_datablock(const T *orig) const
virtual void build_ik_pose(Object *object, bPoseChannel *pchan, bConstraint *con)
virtual void build_rig(Object *object)
virtual void build_splineik_pose(Object *object, bPoseChannel *pchan, bConstraint *con)
virtual void build_idproperties(IDProperty *id_property)
bool has_operation_node(ID *id, NodeType comp_type, const char *comp_name, OperationCode opcode, const char *name="", int name_tag=-1)
const Depsgraph * depsgraph
@ DEG_ID_LINKED_INDIRECTLY
DepsgraphNodeBuilder * builder