Revision: 18949
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18949
Author:   aligorith
Date:     2009-02-13 02:51:33 +0100 (Fri, 13 Feb 2009)

Log Message:
-----------
Keying Sets: Wrapped KeyingSets in RNA 

* The settings of KeyingSets can now be viewed/modified through RNA. 
* Shuffled RNA wrapping for AnimData over to its own file 
* Moved insert-key flags to DNA_anim_types.h, as they're now used for 
KeyingSets.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_animsys.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/anim_sys.c
    branches/blender2.5/blender/source/blender/editors/animation/keyframing.c
    branches/blender2.5/blender/source/blender/editors/include/ED_keyframing.h
    branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_anim_types.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_action.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_animation.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_animsys.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_animsys.h 
2009-02-12 23:25:36 UTC (rev 18948)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_animsys.h 
2009-02-13 01:51:33 UTC (rev 18949)
@@ -33,7 +33,7 @@
 struct KeyingSet *BKE_keyingset_add(struct ListBase *list, const char name[], 
short flag, short keyingflag);
 
 /* Add a destination to a KeyingSet */
-void BKE_keyingset_add_destination(struct KeyingSet *ks, struct ID *id, const 
char group_name[], const char rna_path[], int array_index, int flag);
+void BKE_keyingset_add_destination(struct KeyingSet *ks, struct ID *id, const 
char group_name[], const char rna_path[], int array_index, short flag, short 
groupmode);
 
 /* Free data for KeyingSet but not set itself */
 void BKE_keyingset_free(struct KeyingSet *ks);

Modified: 
branches/blender2.5/blender/source/blender/blenkernel/intern/anim_sys.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/anim_sys.c     
2009-02-12 23:25:36 UTC (rev 18948)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/anim_sys.c     
2009-02-13 01:51:33 UTC (rev 18949)
@@ -195,7 +195,7 @@
 /* Add a destination to a KeyingSet. Nothing is returned for now...
  * Checks are performed to ensure that destination is appropriate for the 
KeyingSet in question
  */
-void BKE_keyingset_add_destination (KeyingSet *ks, ID *id, const char 
group_name[], const char rna_path[], int array_index, int flag)
+void BKE_keyingset_add_destination (KeyingSet *ks, ID *id, const char 
group_name[], const char rna_path[], int array_index, short flag, short 
groupmode)
 {
        KS_Path *ksp;
        
@@ -229,6 +229,7 @@
        
        /* store flags */
        ksp->flag= flag;
+       ksp->groupmode= groupmode;
        
        /* add KeyingSet path to KeyingSet */
        BLI_addtail(&ks->paths, ksp);

Modified: 
branches/blender2.5/blender/source/blender/editors/animation/keyframing.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/animation/keyframing.c   
2009-02-12 23:25:36 UTC (rev 18948)
+++ branches/blender2.5/blender/source/blender/editors/animation/keyframing.c   
2009-02-13 01:51:33 UTC (rev 18949)
@@ -2031,9 +2031,9 @@
                        int arraylen, i;
                        
                        /* get pointer to name of group to add channels to */
-                       if (ksp->flag & KSP_FLAG_GROUP_NONE)
+                       if (ksp->groupmode == KSP_GROUP_NONE)
                                groupname= NULL;
-                       else if (ksp->flag & KSP_FLAG_GROUP_KSNAME)
+                       else if (ksp->groupmode == KSP_GROUP_KSNAME)
                                groupname= ks->name;
                        else
                                groupname= ksp->group;

Modified: 
branches/blender2.5/blender/source/blender/editors/include/ED_keyframing.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_keyframing.h  
2009-02-12 23:25:36 UTC (rev 18948)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_keyframing.h  
2009-02-13 01:51:33 UTC (rev 18949)
@@ -52,23 +52,6 @@
  */
 void insert_vert_fcurve(struct FCurve *fcu, float x, float y, short flag);
 
-
-/* flags for use by keyframe creation/deletion calls */
-enum {
-               /* used by isnertkey() and insert_vert_icu() */
-       INSERTKEY_NEEDED        = (1<<0),       /* only insert keyframes where 
they're needed */
-       INSERTKEY_MATRIX        = (1<<1),       /* insert 'visual' keyframes 
where possible/needed */
-       INSERTKEY_FAST          = (1<<2),       /* don't recalculate 
handles,etc. after adding key */
-       INSERTKEY_FASTR         = (1<<3),       /* don't realloc mem (or 
increase count, as array has already been set out) */
-       INSERTKEY_REPLACE       = (1<<4),       /* only replace an existing 
keyframe (this overrides INSERTKEY_NEEDED) */
-       
-               /* used by common_*key() functions - Note: these are generally 
mutually exclusive (only one will work at a time) */
-       COMMONKEY_ADDMAP        = (1<<10),      /* common key: add texture-slot 
offset bitflag to adrcode before use */
-       COMMONKEY_PCHANROT      = (1<<11),      /* common key: extend channel 
list using relevant pchan-rotations */
-               /* all possible items for common_*key() functions */
-       COMMONKEY_MODES         = (COMMONKEY_ADDMAP|COMMONKEY_PCHANROT)
-} eInsertKeyFlags;
-
 /* -------- */
 
 /* Main Keyframing API calls: 

Modified: 
branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c    
    2009-02-12 23:25:36 UTC (rev 18948)
+++ 
branches/blender2.5/blender/source/blender/editors/space_outliner/outliner.c    
    2009-02-13 01:51:33 UTC (rev 18949)
@@ -3151,7 +3151,8 @@
        ID *id = NULL;
        char *path=NULL, *newpath=NULL;
        int array_index= 0;
-       int flag= KSP_FLAG_GROUP_KSNAME;
+       short flag = 0;
+       short groupmode= KSP_GROUP_KSNAME;
        
        /* optimise tricks:
         *      - Don't do anything if the selected item is a 'struct', but 
arrays are allowed
@@ -3159,7 +3160,7 @@
        if (tselem->type == TSE_RNA_STRUCT)
                return;
        
-       //printf("ks_editop_add_cb() \n");
+       printf("ks_editop_add_cb() \n");
        
        /* Overview of Algorithm:
         *      1. Go up the chain of parents until we find the 'root', taking 
note of the 
@@ -3188,11 +3189,20 @@
                
                /* check if we're looking for first ID, or appending to path */
                if (id) {
+                       if (tse->type == TSE_RNA_STRUCT)
+                               printf("\t tem = RNA Struct '%s' \n", 
tem->name);
+                       else if (tse->type == TSE_RNA_ARRAY_ELEM)
+                               printf("\t tem = RNA Array Elem '%s' \n", 
tem->name);
+                       else if (tse->type == TSE_RNA_PROPERTY)
+                               printf("\t tem = RNA Property '%s' \n", 
tem->name);
+                       else
+                               printf("\t tem = WTF? \n");
+                       
                        /* just 'append' property to path 
                         *      - to prevent memory leaks, we must write to 
newpath not path, then free old path + swap them
                         */
-                       // TODO: how to do this? we must use 'string' 
identifiers for collections so that these don't break if data is added/removed
-                       //newpath= RNA_path_append(path, NULL, prop, index, 
NULL);
+                       // TODO: how should this be done?
+                       //newpath= RNA_path_append(path, ptr, prop, tem->index, 
/*RNA_property_identifier(ptr, prop)*/0);
                        
                        if (path) MEM_freeN(path);
                        path= newpath;
@@ -3234,7 +3244,7 @@
                /* add a new path with the information obtained (only if valid) 
*/
                // TODO: what do we do with group name? for now, we don't 
supply one, and just let this use the KeyingSet name
                if (path)
-                       BKE_keyingset_add_destination(ks, id, NULL, path, 
array_index, flag);
+                       BKE_keyingset_add_destination(ks, id, NULL, path, 
array_index, flag, groupmode);
        }
        
        /* free temp data */

Modified: branches/blender2.5/blender/source/blender/makesdna/DNA_anim_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_anim_types.h        
2009-02-12 23:25:36 UTC (rev 18948)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_anim_types.h        
2009-02-13 01:51:33 UTC (rev 18949)
@@ -445,19 +445,25 @@
        char *rna_path;                 /* dynamically (or statically in the 
case of predefined sets) path */
        int array_index;                /* index that path affects */
        
-       int flag;                               /* various settings, etc. */
+       short flag;                             /* various settings, etc. */
+       short groupmode;                /* group naming (eKSP_Grouping) */
 } KS_Path;
 
 /* KS_Path->flag */
 enum {
                /* entire array (not just the specified index) gets keyframed */
        KSP_FLAG_WHOLE_ARRAY    = (1<<0),
-       
+} eKSP_Settings;
+
+/* KS_Path->groupmode */
+enum {
+               /* path should be grouped using its own group-name */
+       KSP_GROUP_NAMED = 0,
                /* path should not be grouped at all */
-       KSP_FLAG_GROUP_NONE             = (1<<10),
+       KSP_GROUP_NONE,
                /* path should be grouped under an ActionGroup KeyingSet's name 
*/
-       KSP_FLAG_GROUP_KSNAME   = (1<<11),
-} eKSP_Settings;
+       KSP_GROUP_KSNAME,
+} eKSP_Grouping;
 
 /* ---------------- */
  
@@ -486,12 +492,19 @@
 enum {
                /* keyingset cannot be removed (and doesn't need to be freed) */
        KEYINGSET_BUILTIN               = (1<<0),
-               /* keyingset is the one currently in use */
-       KEYINGSET_ACTIVE                = (1<<1),
                /* keyingset does not depend on context info (i.e. paths are 
absolute) */
-       KEYINGSET_ABSOLUTE              = (1<<2),
+       KEYINGSET_ABSOLUTE              = (1<<1),
 } eKS_Settings;
 
+/* Flags for use by keyframe creation/deletion calls */
+enum {
+       INSERTKEY_NEEDED        = (1<<0),       /* only insert keyframes where 
they're needed */
+       INSERTKEY_MATRIX        = (1<<1),       /* insert 'visual' keyframes 
where possible/needed */
+       INSERTKEY_FAST          = (1<<2),       /* don't recalculate 
handles,etc. after adding key */
+       INSERTKEY_FASTR         = (1<<3),       /* don't realloc mem (or 
increase count, as array has already been set out) */
+       INSERTKEY_REPLACE       = (1<<4),       /* only replace an existing 
keyframe (this overrides INSERTKEY_NEEDED) */
+} eInsertKeyFlags;
+
 /* ************************************************ */
 /* Animation Data */
 

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h    
2009-02-12 23:25:36 UTC (rev 18948)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h    
2009-02-13 01:51:33 UTC (rev 18949)
@@ -117,6 +117,8 @@
 extern StructRNA RNA_JoystickSensor;
 extern StructRNA RNA_Key;
 extern StructRNA RNA_KeyboardSensor;
+extern StructRNA RNA_KeyingSet;
+extern StructRNA RNA_KeyingSetPath;
 extern StructRNA RNA_Lamp;
 extern StructRNA RNA_LampSkySettings;
 extern StructRNA RNA_LampTextureSlot;

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c       
2009-02-12 23:25:36 UTC (rev 18948)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c       
2009-02-13 01:51:33 UTC (rev 18949)
@@ -1246,7 +1246,8 @@
 RNAProcessItem PROCESS_ITEMS[]= {
        {"rna_ID.c", RNA_def_ID},
        {"rna_texture.c", RNA_def_texture},
-       {"rna_action.c", RNA_def_animation},
+       {"rna_action.c", RNA_def_action},
+       {"rna_animation.c", RNA_def_animation},
        {"rna_actuator.c", RNA_def_actuator},
        {"rna_armature.c", RNA_def_armature},
        {"rna_brush.c", RNA_def_brush},

Modified: 
branches/blender2.5/blender/source/blender/makesrna/intern/rna_action.c
===================================================================

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to