54 BKE_pose_constraints_evaluate(
55 depsgraph, scene_cow, object_cow, pchan_index);
65 if (rootchan ==
nullptr) {
86 BKE_pose_iktree_evaluate(depsgraph, scene_cow, object_cow, rootchan_index);
118 BKE_pose_splineik_evaluate(
119 depsgraph, scene_cow, object_cow, rootchan_index);
145 if (object->
pose !=
nullptr) {
176 BKE_pose_eval_init(depsgraph, scene_cow, object_cow);
184 BKE_pose_eval_init_ik(depsgraph, scene_cow, object_cow);
191 BKE_pose_eval_cleanup(depsgraph, scene_cow, object_cow);
213 BKE_pose_eval_bone(depsgraph, scene_cow, object_cow, pchan_index);
224 BKE_pose_bone_done(depsgraph, object_cow, pchan_index);
234 BKE_pose_eval_bbone_segments(
235 depsgraph, object_cow, pchan_index);
242 bool add_idprops_operation =
false;
243 if (pchan->prop !=
nullptr) {
245 add_idprops_operation =
true;
247 if (pchan->system_properties !=
nullptr) {
249 add_idprops_operation =
true;
251 if (add_idprops_operation) {
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)
int BLI_findindex(const ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
@ POSE_CONSTRAINTS_NEED_UPDATE_FLAGS
@ CONSTRAINT_TYPE_SPLINEIK
@ CONSTRAINT_TYPE_KINEMATIC
Object is a sort of wrapper for general info.
BMesh const char void * data
BPy_StructRNA * depsgraph
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)
@ DEG_ID_LINKED_INDIRECTLY