Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-04-04 21:42:40 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-04-04 21:42:40 +0400
commit415a6f6015e4ea48bd6a4e4a880cdaee2db26abe (patch)
tree752e559511e4b12f790bf48b7010e5c3dee90f52 /source
parent670d499c8b5bd08c3e3e22d6f1712f0fb2040b4f (diff)
make keying set path functions members of the paths collection
Diffstat (limited to 'source')
-rw-r--r--source/blender/makesrna/intern/rna_animation.c118
-rw-r--r--source/blender/makesrna/intern/rna_animation_api.c93
2 files changed, 118 insertions, 93 deletions
diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c
index 75cf06b5b2d..fedba105a69 100644
--- a/source/blender/makesrna/intern/rna_animation.c
+++ b/source/blender/makesrna/intern/rna_animation.c
@@ -47,6 +47,8 @@ EnumPropertyItem keyingset_path_grouping_items[] = {
#ifdef RNA_RUNTIME
+#include "BKE_animsys.h"
+
static int rna_AnimData_action_editable(PointerRNA *ptr)
{
AnimData *adt= (AnimData *)ptr->data;
@@ -322,6 +324,70 @@ static PointerRNA rna_KeyingSet_typeinfo_get(PointerRNA *ptr)
return rna_pointer_inherit_refine(ptr, &RNA_KeyingSetInfo, ksi);
}
+
+
+static KS_Path *rna_KeyingSet_paths_add(KeyingSet *keyingset, ReportList *reports,
+ ID *id, char rna_path[], int index, int grouping_method, char group_name[])
+{
+ KS_Path *ksp = NULL;
+ short flag = 0;
+
+ /* special case when index = -1, we key the whole array (as with other places where index is used) */
+ if (index == -1) {
+ flag |= KSP_FLAG_WHOLE_ARRAY;
+ index = 0;
+ }
+
+ /* if data is valid, call the API function for this */
+ if (keyingset) {
+ ksp= BKE_keyingset_add_path(keyingset, id, group_name, rna_path, index, flag, grouping_method);
+ keyingset->active_path= BLI_countlist(&keyingset->paths);
+ }
+ else {
+ BKE_report(reports, RPT_ERROR, "Keying Set Path could not be added.");
+ }
+
+ /* return added path */
+ return ksp;
+}
+
+static void rna_KeyingSet_paths_remove(KeyingSet *keyingset, ReportList *reports, KS_Path *ksp)
+{
+ /* if data is valid, call the API function for this */
+ if (keyingset && ksp) {
+ /* remove the active path from the KeyingSet */
+ BKE_keyingset_free_path(keyingset, ksp);
+
+ /* the active path number will most likely have changed */
+ // TODO: we should get more fancy and actually check if it was removed, but this will do for now
+ keyingset->active_path = 0;
+ }
+ else {
+ BKE_report(reports, RPT_ERROR, "Keying Set Path could not be removed.");
+ }
+}
+
+static void rna_KeyingSet_paths_clear(KeyingSet *keyingset, ReportList *reports)
+{
+ /* if data is valid, call the API function for this */
+ if (keyingset) {
+ KS_Path *ksp, *kspn;
+
+ /* free each path as we go to avoid looping twice */
+ for (ksp= keyingset->paths.first; ksp; ksp= kspn) {
+ kspn= ksp->next;
+ BKE_keyingset_free_path(keyingset, ksp);
+ }
+
+ /* reset the active path, since there aren't any left */
+ keyingset->active_path = 0;
+ }
+ else {
+ BKE_report(reports, RPT_ERROR, "Keying Set Paths could not be removed.");
+ }
+}
+
+
#else
/* helper function for Keying Set -> keying settings */
@@ -461,6 +527,57 @@ static void rna_def_keyingset_path(BlenderRNA *brna)
rna_def_common_keying_flags(srna, 0);
}
+
+
+/* keyingset.paths */
+static void rna_def_keyingset_paths(BlenderRNA *brna, PropertyRNA *cprop)
+{
+ StructRNA *srna;
+
+ FunctionRNA *func;
+ PropertyRNA *parm;
+
+ RNA_def_property_srna(cprop, "KeyingSetPaths");
+ srna= RNA_def_struct(brna, "KeyingSetPaths", NULL);
+ RNA_def_struct_sdna(srna, "KeyingSet");
+ RNA_def_struct_ui_text(srna, "Keying set paths", "Collection of keying set paths");
+
+
+ /* Add Path */
+ func= RNA_def_function(srna, "add", "rna_KeyingSet_paths_add");
+ RNA_def_function_ui_description(func, "Add a new path for the Keying Set.");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ /* return arg */
+ parm= RNA_def_pointer(func, "ksp", "KeyingSetPath", "New Path", "Path created and added to the Keying Set");
+ RNA_def_function_return(func, parm);
+ /* ID-block for target */
+ parm= RNA_def_pointer(func, "target_id", "ID", "Target ID", "ID-Datablock for the destination.");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ /* rna-path */
+ parm= RNA_def_string(func, "data_path", "", 256, "Data-Path", "RNA-Path to destination property."); // xxx hopefully this is long enough
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+ /* index (defaults to -1 for entire array) */
+ parm=RNA_def_int(func, "index", -1, 0, INT_MAX, "Index", "The index of the destination property (i.e. axis of Location/Rotation/etc.), or -1 for the entire array.", 0, INT_MAX);
+ /* grouping */
+ parm=RNA_def_enum(func, "grouping_method", keyingset_path_grouping_items, KSP_GROUP_KSNAME, "Grouping Method", "Method used to define which Group-name to use.");
+ parm=RNA_def_string(func, "group_name", "", 64, "Group Name", "Name of Action Group to assign destination to (only if grouping mode is to use this name).");
+
+
+ /* Remove Path */
+ func= RNA_def_function(srna, "remove", "rna_KeyingSet_paths_remove");
+ RNA_def_function_ui_description(func, "Remove the given path from the Keying Set.");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+ /* path to remove */
+ parm= RNA_def_pointer(func, "path", "KeyingSetPath", "Path", "");
+ RNA_def_property_flag(parm, PROP_REQUIRED);
+
+
+ /* Remove All Paths */
+ func= RNA_def_function(srna, "clear", "rna_KeyingSet_paths_clear");
+ RNA_def_function_ui_description(func, "Remove all the paths from the Keying Set.");
+ RNA_def_function_flag(func, FUNC_USE_REPORTS);
+}
+
static void rna_def_keyingset(BlenderRNA *brna)
{
StructRNA *srna;
@@ -486,6 +603,7 @@ static void rna_def_keyingset(BlenderRNA *brna)
RNA_def_property_collection_sdna(prop, NULL, "paths", NULL);
RNA_def_property_struct_type(prop, "KeyingSetPath");
RNA_def_property_ui_text(prop, "Paths", "Keying Set Paths to define settings that get keyframed together");
+ rna_def_keyingset_paths(brna, prop);
prop= RNA_def_property(srna, "active_path", PROP_POINTER, PROP_NONE);
RNA_def_property_struct_type(prop, "KeyingSetPath");
diff --git a/source/blender/makesrna/intern/rna_animation_api.c b/source/blender/makesrna/intern/rna_animation_api.c
index ba06697f9e9..5c745eac59f 100644
--- a/source/blender/makesrna/intern/rna_animation_api.c
+++ b/source/blender/makesrna/intern/rna_animation_api.c
@@ -40,105 +40,12 @@
#include "BKE_animsys.h"
-static KS_Path *rna_KeyingSet_add_path(KeyingSet *keyingset, ReportList *reports,
- ID *id, char rna_path[], int index, int grouping_method, char group_name[])
-{
- KS_Path *ksp = NULL;
- short flag = 0;
-
- /* special case when index = -1, we key the whole array (as with other places where index is used) */
- if (index == -1) {
- flag |= KSP_FLAG_WHOLE_ARRAY;
- index = 0;
- }
-
- /* if data is valid, call the API function for this */
- if (keyingset) {
- ksp= BKE_keyingset_add_path(keyingset, id, group_name, rna_path, index, flag, grouping_method);
- keyingset->active_path= BLI_countlist(&keyingset->paths);
- }
- else {
- BKE_report(reports, RPT_ERROR, "Keying Set Path could not be added.");
- }
-
- /* return added path */
- return ksp;
-}
-
-static void rna_KeyingSet_remove_path(KeyingSet *keyingset, ReportList *reports, KS_Path *ksp)
-{
- /* if data is valid, call the API function for this */
- if (keyingset && ksp) {
- /* remove the active path from the KeyingSet */
- BKE_keyingset_free_path(keyingset, ksp);
-
- /* the active path number will most likely have changed */
- // TODO: we should get more fancy and actually check if it was removed, but this will do for now
- keyingset->active_path = 0;
- }
- else {
- BKE_report(reports, RPT_ERROR, "Keying Set Path could not be removed.");
- }
-}
-
-static void rna_KeyingSet_remove_all_paths(KeyingSet *keyingset, ReportList *reports)
-{
- /* if data is valid, call the API function for this */
- if (keyingset) {
- KS_Path *ksp, *kspn;
-
- /* free each path as we go to avoid looping twice */
- for (ksp= keyingset->paths.first; ksp; ksp= kspn) {
- kspn= ksp->next;
- BKE_keyingset_free_path(keyingset, ksp);
- }
-
- /* reset the active path, since there aren't any left */
- keyingset->active_path = 0;
- }
- else {
- BKE_report(reports, RPT_ERROR, "Keying Set Paths could not be removed.");
- }
-}
-
#else
void RNA_api_keyingset(StructRNA *srna)
{
FunctionRNA *func;
PropertyRNA *parm;
-
- /* Add Path */
- func= RNA_def_function(srna, "add_path", "rna_KeyingSet_add_path");
- RNA_def_function_ui_description(func, "Add a new path for the Keying Set.");
- RNA_def_function_flag(func, FUNC_USE_REPORTS);
- /* return arg */
- parm= RNA_def_pointer(func, "ksp", "KeyingSetPath", "New Path", "Path created and added to the Keying Set");
- RNA_def_function_return(func, parm);
- /* ID-block for target */
- parm= RNA_def_pointer(func, "target_id", "ID", "Target ID", "ID-Datablock for the destination.");
- RNA_def_property_flag(parm, PROP_REQUIRED);
- /* rna-path */
- parm= RNA_def_string(func, "data_path", "", 256, "Data-Path", "RNA-Path to destination property."); // xxx hopefully this is long enough
- RNA_def_property_flag(parm, PROP_REQUIRED);
- /* index (defaults to -1 for entire array) */
- parm=RNA_def_int(func, "index", -1, 0, INT_MAX, "Index", "The index of the destination property (i.e. axis of Location/Rotation/etc.), or -1 for the entire array.", 0, INT_MAX);
- /* grouping */
- parm=RNA_def_enum(func, "grouping_method", keyingset_path_grouping_items, KSP_GROUP_KSNAME, "Grouping Method", "Method used to define which Group-name to use.");
- parm=RNA_def_string(func, "group_name", "", 64, "Group Name", "Name of Action Group to assign destination to (only if grouping mode is to use this name).");
-
- /* Remove Path */
- func= RNA_def_function(srna, "remove_path", "rna_KeyingSet_remove_path");
- RNA_def_function_ui_description(func, "Remove the given path from the Keying Set.");
- RNA_def_function_flag(func, FUNC_USE_REPORTS);
- /* path to remove */
- parm= RNA_def_pointer(func, "path", "KeyingSetPath", "Path", "");
- RNA_def_property_flag(parm, PROP_REQUIRED);
-
- /* Remove All Paths */
- func= RNA_def_function(srna, "remove_all_paths", "rna_KeyingSet_remove_all_paths");
- RNA_def_function_ui_description(func, "Remove all the paths from the Keying Set.");
- RNA_def_function_flag(func, FUNC_USE_REPORTS);
}
#endif