use bool for rna funcs.
[blender.git] / source / blender / makesrna / intern / rna_constraint.c
index 7c981149acab6f3de96c9b087a8e5c40d9daf431..0bb3a8bbcffb1b045455a8b8dc0511dacc10ed0d 100644 (file)
  *  \ingroup RNA
  */
 
-
 #include <stdlib.h>
 
-#include "RNA_define.h"
-
-#include "rna_internal.h"
-
 #include "BLI_math.h"
 
 #include "BLF_translation.h"
 #include "DNA_object_types.h"
 #include "DNA_scene_types.h"
 
-#include "ED_object.h"
+#include "RNA_define.h"
+
+#include "rna_internal.h"
+
 #include "WM_types.h"
 
+#include "ED_object.h"
+
+/* please keep the names in sync with constraint.c */
 EnumPropertyItem constraint_type_items[] = {
        {0, "", 0, N_("Motion Tracking"), ""},
        {CONSTRAINT_TYPE_CAMERASOLVER, "CAMERA_SOLVER", ICON_CONSTRAINT_DATA, "Camera Solver", ""},
@@ -108,7 +109,7 @@ static EnumPropertyItem owner_space_pchan_items[] = {
                                    "The constraint is applied relative to the local coordinate system of the object, "
                                    "with the parent transformation added"},
        {CONSTRAINT_SPACE_LOCAL,    "LOCAL", 0, "Local Space",
-                                   "The constraint is applied relative to the local coordinate sytem of the object"},
+                                   "The constraint is applied relative to the local coordinate system of the object"},
        {0, NULL, 0, NULL, NULL}
 };
 
@@ -213,7 +214,7 @@ static void rna_Constraint_name_set(PointerRNA *ptr, const char *value)
                
                /* if we have the list, check for unique name, otherwise give up */
                if (list)
-                       unique_constraint_name(con, list);
+                       BKE_unique_constraint_name(con, list);
        }
        
        /* fix all the animation data which may link to this */
@@ -243,9 +244,9 @@ static void rna_Constraint_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Poi
        ED_object_constraint_update(ptr->id.data);
 }
 
-static void rna_Constraint_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_Constraint_dependency_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
 {
-       ED_object_constraint_dependency_update(bmain, scene, ptr->id.data);
+       ED_object_constraint_dependency_update(bmain, ptr->id.data);
 }
 
 static void rna_Constraint_influence_update(Main *bmain, Scene *scene, PointerRNA *ptr)
@@ -292,7 +293,7 @@ static EnumPropertyItem *rna_Constraint_target_space_itemf(bContext *UNUSED(C),
                                                            PropertyRNA *UNUSED(prop), int *UNUSED(free))
 {
        bConstraint *con = (bConstraint *)ptr->data;
-       bConstraintTypeInfo *cti = constraint_get_typeinfo(con);
+       bConstraintTypeInfo *cti = BKE_constraint_get_typeinfo(con);
        ListBase targets = {NULL, NULL};
        bConstraintTarget *ct;
        
@@ -613,7 +614,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_dependency_update");
 
        prop = RNA_def_property(srna, "iterations", PROP_INT, PROP_NONE);
-       RNA_def_property_range(prop, 1, 10000);
+       RNA_def_property_range(prop, 0, 10000);
        RNA_def_property_ui_text(prop, "Iterations", "Maximum number of solving iterations");
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_update");
 
@@ -702,11 +703,6 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Lock Z Rot", "Constraint rotation along Z axis");
        RNA_def_property_update(prop, NC_OBJECT | ND_POSE, "rna_Constraint_dependency_update");
 
-       prop = RNA_def_property(srna, "use_target", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_AUTO);
-       RNA_def_property_ui_text(prop, "Target", "Disable for targetless IK");
-       RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_dependency_update");
-
        prop = RNA_def_property(srna, "use_stretch", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_STRETCH);
        RNA_def_property_ui_text(prop, "Stretch", "Enable IK Stretching");
@@ -1105,10 +1101,18 @@ static void rna_def_constraint_action(BlenderRNA *brna)
 
        prop = RNA_def_property(srna, "action", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "act");
+       RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Action_id_poll");
        RNA_def_property_ui_text(prop, "Action", "The constraining action");
        RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_REFCOUNT);
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_update");
 
+       prop = RNA_def_property(srna, "use_bone_object_action", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", ACTCON_BONE_USE_OBJECT_ACTION);
+       RNA_def_property_ui_text(prop, "Object Action",
+                                "Bones only: apply the object's transformation channels of the action "
+                                "to the constrained bone, instead of bone's channels");
+       RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_update");
+
        prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_TIME);
        RNA_def_property_int_sdna(prop, NULL, "start");
        RNA_def_property_range(prop, MINAFRAME, MAXFRAME);
@@ -1234,7 +1238,7 @@ static void rna_def_constraint_follow_path(BlenderRNA *brna)
        prop = RNA_def_property(srna, "offset_factor", PROP_FLOAT, PROP_FACTOR);
        RNA_def_property_float_sdna(prop, NULL, "offset_fac");
        RNA_def_property_range(prop, 0.0f, 1.0f);
-       RNA_def_property_ui_text(prop, "Offset Factor", "Percentage value defining target position along length of bone");
+       RNA_def_property_ui_text(prop, "Offset Factor", "Percentage value defining target position along length of curve");
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_update");
 
        prop = RNA_def_property(srna, "forward_axis", PROP_ENUM, PROP_NONE);
@@ -1388,19 +1392,19 @@ static void rna_def_constraint_rigid_body_joint(BlenderRNA *brna)
        prop = RNA_def_property(srna, "axis_x", PROP_FLOAT, PROP_ANGLE);
        RNA_def_property_float_sdna(prop, NULL, "axX");
        RNA_def_property_range(prop, -M_PI * 2, M_PI * 2);
-       RNA_def_property_ui_text(prop, "Axis X", "Rotate pivot on X axis in degrees");
+       RNA_def_property_ui_text(prop, "Axis X", "Rotate pivot on X axis");
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_update");
 
        prop = RNA_def_property(srna, "axis_y", PROP_FLOAT, PROP_ANGLE);
        RNA_def_property_float_sdna(prop, NULL, "axY");
        RNA_def_property_range(prop, -M_PI * 2, M_PI * 2);
-       RNA_def_property_ui_text(prop, "Axis Y", "Rotate pivot on Y axis in degrees");
+       RNA_def_property_ui_text(prop, "Axis Y", "Rotate pivot on Y axis");
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_update");
 
        prop = RNA_def_property(srna, "axis_z", PROP_FLOAT, PROP_ANGLE);
        RNA_def_property_float_sdna(prop, NULL, "axZ");
        RNA_def_property_range(prop, -M_PI * 2, M_PI * 2);
-       RNA_def_property_ui_text(prop, "Axis Z", "Rotate pivot on Z axis in degrees");
+       RNA_def_property_ui_text(prop, "Axis Z", "Rotate pivot on Z axis");
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_update");
 
        prop = RNA_def_property(srna, "use_linked_collision", PROP_BOOLEAN, PROP_NONE);
@@ -1524,7 +1528,7 @@ static void rna_def_constraint_clamp_to(BlenderRNA *brna)
        prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "tar");
        RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Curve_object_poll");
-       RNA_def_property_ui_text(prop, "Target", "Target Object");
+       RNA_def_property_ui_text(prop, "Target", "Target Object (Curves only)");
        RNA_def_property_flag(prop, PROP_EDITABLE);
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_dependency_update");
 
@@ -2198,6 +2202,13 @@ static void rna_def_constraint_follow_track(BlenderRNA *brna)
        StructRNA *srna;
        PropertyRNA *prop;
 
+       static const EnumPropertyItem frame_method_items[] = {
+               {FOLLOWTRACK_FRAME_STRETCH, "STRETCH", 0, "Stretch", ""},
+               {FOLLOWTRACK_FRAME_FIT, "FIT", 0, "Fit", ""},
+               {FOLLOWTRACK_FRAME_CROP, "CROP", 0, "Crop", ""},
+               {0, NULL, 0, NULL, NULL}
+       };
+
        srna = RNA_def_struct(brna, "FollowTrackConstraint", "Constraint");
        RNA_def_struct_ui_text(srna, "Follow Track Constraint", "Lock motion to the target motion track");
        RNA_def_struct_sdna_from(srna, "bFollowTrackConstraint", "data");
@@ -2252,6 +2263,13 @@ static void rna_def_constraint_follow_track(BlenderRNA *brna)
        RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_dependency_update");
        RNA_def_property_pointer_funcs(prop, NULL, "rna_Constraint_followTrack_depthObject_set", NULL,
                                       "rna_Constraint_followTrack_depthObject_poll");
+
+       /* frame method */
+       prop = RNA_def_property(srna, "frame_method", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_bitflag_sdna(prop, NULL, "frame_method");
+       RNA_def_property_enum_items(prop, frame_method_items);
+       RNA_def_property_ui_text(prop, "Frame Method", "How the footage fits in the camera frame");
+       RNA_def_property_update(prop, NC_OBJECT | ND_CONSTRAINT, "rna_Constraint_dependency_update");
 }
 
 static void rna_def_constraint_camera_solver(BlenderRNA *brna)
@@ -2399,7 +2417,7 @@ void RNA_def_constraint(BlenderRNA *brna)
        RNA_def_property_float_sdna(prop, NULL, "rot_error");
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "Rot error",
-                                "Amount of residual error in radiant for constraints that work on orientation");
+                                "Amount of residual error in radians for constraints that work on orientation");
 
        /* pointers */
        rna_def_constrainttarget(brna);