115 if (pose_bone ==
NULL) {
117 if (pose_bone ==
NULL) {
182 static void validate_pyconstraint_cb(
Main *bmain,
void *arg1,
void *arg2)
186 int index = *((
int *)arg2);
192 for (text = bmain->
texts.
first, i = 1; text && index != i; i++, text = text->
id.
next) {
200 static char *buildmenu_pyconstraints(
Main *bmain,
Text *con_text,
int *pyconindex)
209 sprintf(buf,
"Scripts: %%t|[None]%%x0|");
213 if (con_text ==
NULL) {
220 if (text == con_text) {
228 sprintf(buf,
"%%x%d", i);
247 static void update_pyconstraint_cb(
void *arg1,
void *arg2)
271 const char subtarget[],
284 if (
abs(index) < num_targets) {
285 index = num_targets -
abs(index);
288 index = num_targets - 1;
291 else if (index >= num_targets) {
292 index = num_targets - 1;
295 for (ct = targets.
first, i = 0; ct; ct = ct->
next, i++) {
321 bool check_targets =
true;
338 else if (
data->tar == owner) {
349 else if (
data->poletar == owner) {
358 check_targets =
false;
368 else if (
data->tar == owner) {
375 check_targets =
false;
393 check_targets =
false;
400 if (
data->upflag ==
data->trackflag) {
403 if (
data->upflag + 3 ==
data->trackflag) {
411 if (
data->reserved2 ==
data->reserved1) {
414 if (
data->reserved2 + 3 ==
data->reserved1) {
421 if (
data->lockflag ==
data->trackflag) {
424 if (
data->lockflag + 3 ==
data->trackflag) {
450 if (
data->object[0]) {
457 if (!tracking_object) {
488 if ((
data->cache_file ==
NULL) || (
data->object_path[0] ==
'\0')) {
503 for (ct = targets.
first; ct; ct = ct->
next) {
510 else if (ct->
tar == owner) {
583 switch (owner->
type) {
625 for (curcon = conlist->
first; curcon; curcon = curcon->
next) {
675 #define EDIT_CONSTRAINT_OWNER_OBJECT 0
676 #define EDIT_CONSTRAINT_OWNER_BONE 1
683 "Edit a constraint on the active object"},
690 const bool is_liboverride_allowed)
708 C,
"Cannot edit constraints coming from linked data in a library override");
731 ot->
srna,
"constraint",
NULL,
MAX_NAME,
"Constraint",
"Name of the constraint to edit");
741 ot->
srna,
"report",
false,
"Report",
"Create a notification after the operation");
782 con = panel_ptr->
data;
794 if (r_retval !=
NULL) {
823 printf(
"constraint found = %p, %s\n", (
void *)con, (con) ? con->
name :
"<Not found>");
855 data->orglength = 0.0f;
873 ot->
name =
"Reset Original Length";
874 ot->
idname =
"CONSTRAINT_OT_stretchto_reset";
875 ot->
description =
"Reset original length of bone for Stretch To Constraint";
928 ot->
name =
"Reset Distance";
929 ot->
idname =
"CONSTRAINT_OT_limitdistance_reset";
930 ot->
description =
"Reset limiting distance for Limit Distance Constraint";
962 short flag_backup = con->
flag;
965 con->
flag = flag_backup;
978 printf(
"DEBUG: Child-Of Set Inverse - object = '%s'\n", (ob) ? ob->
id.
name + 2 :
"<None>");
1006 ot->
name =
"Set Inverse";
1007 ot->
idname =
"CONSTRAINT_OT_childof_set_inverse";
1008 ot->
description =
"Set inverse correction for Child Of constraint";
1055 ot->
name =
"Clear Inverse";
1056 ot->
idname =
"CONSTRAINT_OT_childof_clear_inverse";
1057 ot->
description =
"Clear inverse correction for Child Of constraint";
1088 float standardRange = 1.0;
1107 standardRange = 100.0f;
1132 standardRange = 1.0f;
1180 ot->
name =
"Auto Animate Path";
1181 ot->
idname =
"CONSTRAINT_OT_followpath_path_animate";
1183 "Add default animation for path used by constraint if it isn't animated already";
1201 "First frame of path animation",
1210 "Number of frames that path animation should take",
1230 printf(
"DEBUG: ObjectSolver Set Inverse - object = '%s'\n", (ob) ? ob->
id.
name + 2 :
"<None>");
1232 op->
reports,
RPT_ERROR,
"Could not find constraint data for ObjectSolver Set Inverse");
1261 ot->
name =
"Set Inverse";
1262 ot->
idname =
"CONSTRAINT_OT_objectsolver_set_inverse";
1263 ot->
description =
"Set inverse correction for Object Solver constraint";
1317 ot->
name =
"Clear Inverse";
1318 ot->
idname =
"CONSTRAINT_OT_objectsolver_clear_inverse";
1319 ot->
description =
"Clear inverse correction for Object Solver constraint";
1483 strcpy(name, con->
name);
1520 ot->
name =
"Delete Constraint";
1521 ot->
idname =
"CONSTRAINT_OT_delete";
1522 ot->
description =
"Remove constraint from constraint stack";
1546 if (con && con->
next) {
1574 ot->
name =
"Move Constraint Down";
1575 ot->
idname =
"CONSTRAINT_OT_move_down";
1576 ot->
description =
"Move constraint down in constraint stack";
1601 if (con && con->
prev) {
1629 ot->
name =
"Move Constraint Up";
1630 ot->
idname =
"CONSTRAINT_OT_move_up";
1655 if (new_index < 0) {
1680 ot->
name =
"Move Constraint to Index";
1681 ot->
idname =
"CONSTRAINT_OT_move_to_index";
1683 "Change the constraint's position in the list so it evaluates after the set number of "
1700 "The index to move the constraint to",
1721 if (prev_ob != ob) {
1740 ot->
name =
"Clear Pose Constraints";
1741 ot->
idname =
"POSE_OT_constraints_clear";
1742 ot->
description =
"Clear all the constraints for the selected bones";
1779 ot->
name =
"Clear Object Constraints";
1780 ot->
idname =
"OBJECT_OT_constraints_clear";
1781 ot->
description =
"Clear all the constraints for the active object only";
1810 if (pchan != chan) {
1815 if (prev_ob != ob) {
1835 ot->
name =
"Copy Constraints to Selected Bones";
1836 ot->
idname =
"POSE_OT_constraints_copy";
1837 ot->
description =
"Copy constraints to other selected bones";
1880 ot->
name =
"Copy Constraints to Selected Objects";
1881 ot->
idname =
"OBJECT_OT_constraints_copy";
1882 ot->
description =
"Copy constraints to other selected objects";
1904 bool only_curve =
false, only_mesh =
false, only_ob =
false;
1952 if (pchan != pchanact) {
1964 if (found ==
false) {
1975 (!only_curve && !only_mesh)) {
1980 if (pchan !=
NULL) {
1988 if (((!only_curve) || (ob->type ==
OB_CURVE)) && ((!only_mesh) || (ob->type ==
OB_MESH))) {
2009 if ((found ==
false) && (
add)) {
2034 BASACT(view_layer) = base;
2061 if (pchan ==
NULL) {
2109 menustr = buildmenu_pyconstraints(bmain,
NULL, &scriptint);
2116 validate_pyconstraint_cb(bmain, con->
data, &scriptint);
2166 short with_targets = 0;
2176 if (strstr(op->
idname,
"with_targets")) {
2188 short with_targets = 0;
2198 if (strstr(op->
idname,
"with_targets")) {
2227 return object_constraint_items;
2235 ot->
name =
"Add Constraint";
2237 ot->
idname =
"OBJECT_OT_constraint_add";
2264 ot->
name =
"Add Constraint (with Targets)";
2266 "Add a constraint to the active object, with target (where applicable) set to the "
2267 "selected objects/bones";
2268 ot->
idname =
"OBJECT_OT_constraint_add_with_targets";
2287 ot->
name =
"Add Constraint";
2289 ot->
idname =
"POSE_OT_constraint_add";
2306 ot->
name =
"Add Constraint (with Targets)";
2308 "Add a constraint to the active bone, with target (where applicable) set to the selected "
2310 ot->
idname =
"POSE_OT_constraint_add_with_targets";
2374 layout,
IFACE_(
"To Active Bone"), ICON_NONE,
"POSE_OT_ik_add",
"with_targets", 1);
2378 layout,
IFACE_(
"To Active Object"), ICON_NONE,
"POSE_OT_ik_add",
"with_targets", 1);
2384 layout,
IFACE_(
"To New Empty Object"), ICON_NONE,
"POSE_OT_ik_add",
"with_targets", 1);
2386 layout,
IFACE_(
"Without Targets"), ICON_NONE,
"POSE_OT_ik_add",
"with_targets", 0);
2410 ot->
name =
"Add IK to Bone";
2427 "Assign IK Constraint with targets derived from the select bones/objects");
2448 for (con = pchan->constraints.first; con; con =
next) {
2456 if (prev_ob != ob) {
2475 ot->
description =
"Remove all IK Constraints from selected bones";
typedef float(TangentPoint)[2]
void BIK_test_constraint(struct Object *ob, struct bConstraint *cons)
Blender kernel action and pose functionality.
void BKE_pose_tag_recalc(struct Main *bmain, struct bPose *pose)
struct bPoseChannel * BKE_pose_channel_active_or_first_selected(struct Object *ob)
struct bPoseChannel * BKE_pose_channel_active(struct Object *ob)
void BKE_pose_tag_update_constraint_flags(struct bPose *pose)
void BKE_pose_update_constraint_flags(struct bPose *pose)
struct Bone * BKE_armature_find_bone_name(struct bArmature *arm, const char *name)
struct bArmature * BKE_armature_from_object(struct Object *ob)
bool BKE_constraint_remove(ListBase *list, struct bConstraint *con)
struct bConstraint * BKE_constraint_copy_for_object(struct Object *ob, struct bConstraint *src)
void BKE_constraints_free(struct ListBase *list)
struct bConstraint * BKE_constraint_add_for_object(struct Object *ob, const char *name, short type)
struct bConstraint * BKE_constraints_find_name(struct ListBase *list, const char *name)
void BKE_constraints_copy(struct ListBase *dst, const struct ListBase *src, bool do_extern)
bool BKE_constraint_remove_ex(ListBase *list, struct Object *ob, struct bConstraint *con, bool clear_dep)
bool BKE_constraint_is_nonlocal_in_liboverride(const struct Object *ob, const struct bConstraint *con)
struct bConstraint * BKE_constraints_active_get(struct ListBase *list)
bool BKE_constraints_proxylocked_owner(struct Object *ob, struct bPoseChannel *pchan)
const bConstraintTypeInfo * BKE_constraint_typeinfo_get(struct bConstraint *con)
struct bConstraint * BKE_constraint_copy_for_pose(struct Object *ob, struct bPoseChannel *pchan, struct bConstraint *src)
void BKE_constraints_active_set(ListBase *list, struct bConstraint *con)
struct bConstraint * BKE_constraint_add_for_pose(struct Object *ob, struct bPoseChannel *pchan, const char *name, short type)
#define CTX_DATA_BEGIN_WITH_ID(C, Type, instance, member, Type_id, instance_id)
PointerRNA CTX_data_pointer_get(const bContext *C, const char *member)
#define CTX_DATA_BEGIN(C, Type, instance, member)
PointerRNA CTX_data_pointer_get_type(const bContext *C, const char *member, StructRNA *type)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
void CTX_wm_operator_poll_msg_set(struct bContext *C, const char *msg)
struct Main * CTX_data_main(const bContext *C)
struct bPoseChannel * CTX_data_active_pose_bone(const bContext *C)
struct FCurve * BKE_fcurve_find(ListBase *list, const char rna_path[], const int array_index)
struct FModifier * add_fmodifier(ListBase *modifiers, int type, struct FCurve *owner_fcu)
General operations, lookup, etc. for blender objects.
void BKE_object_eval_constraints(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
struct Object * BKE_object_pose_armature_get(struct Object *ob)
struct Object * BKE_object_add(struct Main *bmain, struct ViewLayer *view_layer, int type, const char *name) ATTR_NONNULL(1
bool BKE_object_exists_check(struct Main *bmain, const struct Object *obtest)
void BKE_report(ReportList *reports, ReportType type, const char *message)
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
struct MovieTrackingTrack * BKE_tracking_track_get_named(struct MovieTracking *tracking, struct MovieTrackingObject *object, const char *name)
struct MovieTrackingObject * BKE_tracking_object_get_named(struct MovieTracking *tracking, const char *name)
struct MovieTrackingObject * BKE_tracking_object_get_camera(struct MovieTracking *tracking)
A dynamically sized string ADT.
DynStr * BLI_dynstr_new(void) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_dynstr_free(DynStr *ds) ATTR_NONNULL()
char * BLI_dynstr_get_cstring(DynStr *ds) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr) ATTR_NONNULL()
#define LISTBASE_FOREACH(type, var, list)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void bool BLI_listbase_link_move(ListBase *listbase, void *vlink, int step) ATTR_NONNULL()
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void unit_m4(float m[4][4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
int BPY_is_pyconstraint(struct Text *text)
void BPY_pyconstraint_update(struct Object *owner, struct bConstraint *con)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
@ ID_RECALC_COPY_ON_WRITE
#define ID_IS_LINKED(_id)
@ FMODIFIER_TYPE_GENERATOR
@ CONSTRAINT_TYPE_TRACKTO
@ CONSTRAINT_TYPE_CHILDOF
@ CONSTRAINT_TYPE_FOLLOWTRACK
@ CONSTRAINT_TYPE_OBJECTSOLVER
@ CONSTRAINT_TYPE_ARMATURE
@ CONSTRAINT_TYPE_SHRINKWRAP
@ CONSTRAINT_TYPE_ROTLIMIT
@ CONSTRAINT_TYPE_CAMERASOLVER
@ CONSTRAINT_TYPE_SPLINEIK
@ CONSTRAINT_TYPE_KINEMATIC
@ CONSTRAINT_TYPE_DISTLIMIT
@ CONSTRAINT_TYPE_LOCLIMIT
@ CONSTRAINT_TYPE_CLAMPTO
@ CONSTRAINT_TYPE_LOCKTRACK
@ CONSTRAINT_TYPE_SIZELIMIT
@ CONSTRAINT_TYPE_FOLLOWPATH
@ CONSTRAINT_TYPE_STRETCHTO
@ CONSTRAINT_TYPE_SAMEVOL
@ CONSTRAINT_TYPE_TRANSFORM_CACHE
@ CONSTRAINT_OBTYPE_OBJECT
@ CAMERASOLVER_ACTIVECLIP
@ CONSTRAINT_SPLINEIK_BOUND
@ OBJECTSOLVER_SET_INVERSE
Object is a sort of wrapper for general info.
#define BASACT(_view_layer)
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode)
struct Object * ED_object_active_context(const struct bContext *C)
bool ED_operator_object_active_local_editable(struct bContext *C)
bool ED_operator_object_active_editable(struct bContext *C)
bool ED_operator_posemode_exclusive(struct bContext *C)
check for pose mode (no mixed modes)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
StructRNA RNA_FollowPathConstraint
void uiItemBooleanO(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value)
struct uiLayout * UI_popup_menu_layout(uiPopupMenu *pup)
struct PointerRNA * UI_region_panel_custom_data_under_cursor(const struct bContext *C, const struct wmEvent *event)
void UI_popup_menu_end(struct bContext *C, struct uiPopupMenu *pup)
uiPopupMenu * UI_popup_menu_begin(struct bContext *C, const char *title, int icon) ATTR_NONNULL()
const Depsgraph * depsgraph
bAction * ED_id_action_ensure(Main *bmain, ID *id)
FCurve * ED_action_fcurve_ensure(struct Main *bmain, struct bAction *act, const char group[], struct PointerRNA *ptr, const char rna_path[], const int array_index)
void(* MEM_freeN)(void *vmemh)
static void add(GHash *messages, MemArena *memarena, const Message *msg)
void CONSTRAINT_OT_move_to_index(wmOperatorType *ot)
static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase *list, int type, const bool setTarget)
static int followpath_path_animate_exec(bContext *C, wmOperator *op)
static int followpath_path_animate_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static const EnumPropertyItem constraint_owner_items[]
static bool edit_constraint_invoke_properties(bContext *C, wmOperator *op, const wmEvent *event, int *r_retval)
static int stretchto_reset_exec(bContext *C, wmOperator *op)
void ED_object_constraint_active_set(Object *ob, bConstraint *con)
void ED_object_constraint_update(Main *bmain, Object *ob)
static void set_constraint_nth_target(bConstraint *con, Object *target, const char subtarget[], int index)
void OBJECT_OT_constraints_copy(wmOperatorType *ot)
void ED_object_constraint_tag_update(Main *bmain, Object *ob, bConstraint *con)
void ED_object_constraint_copy_for_pose(Main *bmain, Object *ob_dst, bPoseChannel *pchan, bConstraint *con)
static int constraint_move_to_index_exec(bContext *C, wmOperator *op)
static int object_constraints_clear_exec(bContext *C, wmOperator *UNUSED(op))
void ED_object_constraint_copy_for_object(Main *bmain, Object *ob_dst, bConstraint *con)
static void force_evaluation_if_constraint_disabled(bContext *C, Object *ob, bConstraint *con)
void OBJECT_OT_constraint_add_with_targets(wmOperatorType *ot)
static int childof_clear_inverse_exec(bContext *C, wmOperator *op)
static bool edit_constraint_liboverride_allowed_poll(bContext *C)
static int object_constraint_add_exec(bContext *C, wmOperator *op)
void CONSTRAINT_OT_delete(wmOperatorType *ot)
void CONSTRAINT_OT_stretchto_reset(wmOperatorType *ot)
static int stretchto_reset_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static bool edit_constraint_poll_generic(bContext *C, StructRNA *rna_type, const bool is_liboverride_allowed)
static void object_test_constraint(Main *bmain, Object *ob, bConstraint *con)
bool ED_object_constraint_move_to_index(Object *ob, bConstraint *con, const int index)
void POSE_OT_constraints_copy(wmOperatorType *ot)
#define EDIT_CONSTRAINT_OWNER_BONE
static int constraint_move_up_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int objectsolver_set_inverse_exec(bContext *C, wmOperator *op)
#define EDIT_CONSTRAINT_OWNER_OBJECT
static int constraint_move_down_exec(bContext *C, wmOperator *op)
void CONSTRAINT_OT_objectsolver_set_inverse(wmOperatorType *ot)
void OBJECT_OT_constraints_clear(wmOperatorType *ot)
void CONSTRAINT_OT_limitdistance_reset(wmOperatorType *ot)
static int objectsolver_set_inverse_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void CONSTRAINT_OT_move_down(wmOperatorType *ot)
static int childof_set_inverse_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static const EnumPropertyItem * object_constraint_add_itemf(bContext *UNUSED(C), PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
bConstraint * ED_object_constraint_active_get(Object *ob)
static void object_pose_tag_update(Main *bmain, Object *ob)
void POSE_OT_constraints_clear(wmOperatorType *ot)
static int pose_constraint_add_exec(bContext *C, wmOperator *op)
static int objectsolver_clear_inverse_exec(bContext *C, wmOperator *op)
void OBJECT_OT_constraint_add(wmOperatorType *ot)
static int constraint_move_to_index_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void ED_object_constraint_dependency_update(Main *bmain, Object *ob)
static void edit_constraint_report_property(wmOperatorType *ot)
static int pose_ik_clear_exec(bContext *C, wmOperator *UNUSED(op))
void ED_object_constraint_link(Main *bmain, Object *ob_dst, ListBase *dst, ListBase *src)
static int limitdistance_reset_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static void test_constraint(Main *bmain, Object *owner, bPoseChannel *pchan, bConstraint *con, int type)
void CONSTRAINT_OT_move_up(wmOperatorType *ot)
static int object_constraint_copy_exec(bContext *C, wmOperator *UNUSED(op))
static bool edit_constraint_poll(bContext *C)
static void test_constraints(Main *bmain, Object *ob, bPoseChannel *pchan)
void POSE_OT_constraint_add_with_targets(wmOperatorType *ot)
static int pose_ik_add_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void ED_object_constraint_dependency_tag_update(Main *bmain, Object *ob, bConstraint *con)
static int limitdistance_reset_exec(bContext *C, wmOperator *op)
static int pose_constraints_clear_exec(bContext *C, wmOperator *UNUSED(op))
static int objectsolver_clear_inverse_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static bool get_new_constraint_target(bContext *C, int con_type, Object **tar_ob, bPoseChannel **tar_pchan, bool add)
static int constraint_delete_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int childof_clear_inverse_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int childof_set_inverse_exec(bContext *C, wmOperator *op)
static int pose_constraint_copy_exec(bContext *C, wmOperator *op)
static int pose_ik_add_exec(bContext *C, wmOperator *op)
void POSE_OT_constraint_add(wmOperatorType *ot)
void POSE_OT_ik_add(wmOperatorType *ot)
static int constraint_move_down_invoke(bContext *C, wmOperator *op, const wmEvent *event)
ListBase * ED_object_constraint_active_list(Object *ob)
ListBase * ED_object_constraint_list_from_constraint(Object *ob, bConstraint *con, bPoseChannel **r_pchan)
static void edit_constraint_properties(wmOperatorType *ot)
void POSE_OT_ik_clear(wmOperatorType *ot)
ListBase * ED_object_pose_constraint_list(const bContext *C)
static int constraint_move_up_exec(bContext *C, wmOperator *op)
void object_test_constraints(Main *bmain, Object *ob)
static int constraint_delete_exec(bContext *C, wmOperator *op)
void CONSTRAINT_OT_followpath_path_animate(wmOperatorType *ot)
void CONSTRAINT_OT_childof_set_inverse(wmOperatorType *ot)
static int constraint_type_get(Object *owner, bPoseChannel *pchan)
void CONSTRAINT_OT_objectsolver_clear_inverse(wmOperatorType *ot)
static bConstraint * edit_constraint_property_get(bContext *C, wmOperator *op, Object *ob, int type)
void CONSTRAINT_OT_childof_clear_inverse(wmOperatorType *ot)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
char * RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
bool RNA_pointer_is_null(const PointerRNA *ptr)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
int RNA_enum_get(PointerRNA *ptr, const char *name)
const EnumPropertyItem rna_enum_constraint_type_items[]
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
const EnumPropertyItem DummyRNA_NULL_items[]
struct bConstraintTarget * next
int(* get_constraint_targets)(struct bConstraint *con, struct ListBase *list)
void(* flush_constraint_targets)(struct bConstraint *con, struct ListBase *list, bool no_copy)
struct bConstraint * prev
struct bConstraint * next
struct bPoseChannel * next
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
__forceinline const avxi abs(const avxi &a)
void WM_main_add_notifier(unsigned int type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))