From ec5a8c010c8100a1709786f81d5b9b501383287a Mon Sep 17 00:00:00 2001 From: Joshua Leung Date: Fri, 4 Sep 2009 22:50:15 +0000 Subject: 2.5 - Animation Tweaks * Sequencer data is now animateable. Was missing a 'path' setting. For now, sequencer data is animated under scene, since SequenceEditor is not an ID block. * Fixed some buggy insert-keyframe code. --- source/blender/editors/animation/keyframing.c | 18 +++++------------- source/blender/makesrna/intern/rna_sequence.c | 11 +++++++++++ 2 files changed, 16 insertions(+), 13 deletions(-) (limited to 'source/blender') diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index d731ec6f148..7135f8802bc 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -292,14 +292,8 @@ int insert_bezt_fcurve (FCurve *fcu, BezTriple *bezt, short flag) } } else if ((flag & INSERTKEY_REPLACE) == 0) { - /* add new - if we're not restricted to replacing keyframes only */ - BezTriple *newb; - - /* allocate a new array only if we have to */ - if ((flag & INSERTKEY_FASTR) == 0) - newb= MEM_callocN((fcu->totvert+1)*sizeof(BezTriple), "beztriple"); - else - newb= fcu->bezt; + /* insert new - if we're not restricted to replacing keyframes only */ + BezTriple *newb= MEM_callocN((fcu->totvert+1)*sizeof(BezTriple), "beztriple"); /* add the beztriples that should occur before the beztriple to be pasted (originally in ei->icu) */ if (i > 0) @@ -313,11 +307,9 @@ int insert_bezt_fcurve (FCurve *fcu, BezTriple *bezt, short flag) memcpy(newb+i+1, fcu->bezt+i, (fcu->totvert-i)*sizeof(BezTriple)); /* replace (+ free) old with new, only if necessary to do so */ - if ((flag & INSERTKEY_FASTR) == 0) { - MEM_freeN(fcu->bezt); - fcu->bezt= newb; - } - + MEM_freeN(fcu->bezt); + fcu->bezt= newb; + fcu->totvert++; } } diff --git a/source/blender/makesrna/intern/rna_sequence.c b/source/blender/makesrna/intern/rna_sequence.c index 5d275f7a87c..9f016f73694 100644 --- a/source/blender/makesrna/intern/rna_sequence.c +++ b/source/blender/makesrna/intern/rna_sequence.c @@ -221,6 +221,16 @@ static StructRNA* rna_Sequence_refine(struct PointerRNA *ptr) } } +static char *rna_Sequence_path(PointerRNA *ptr) +{ + Sequence *seq= (Sequence*)ptr->data; + + /* sequencer data comes from scene... + * TODO: would be nice to make SequenceEditor data a datablock of its own (for shorter paths) + */ + return BLI_sprintfN("sequence_editor.sequences[\"%s\"]", seq->name+2); +} + static PointerRNA rna_SequenceEdtior_meta_stack_get(CollectionPropertyIterator *iter) { ListBaseIterator *internal= iter->internal; @@ -393,6 +403,7 @@ static void rna_def_sequence(BlenderRNA *brna) srna = RNA_def_struct(brna, "Sequence", NULL); RNA_def_struct_ui_text(srna, "Sequence", "Sequence strip in the sequence editor."); RNA_def_struct_refine_func(srna, "rna_Sequence_refine"); + RNA_def_struct_path_func(srna, "rna_Sequence_path"); prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); RNA_def_property_string_funcs(prop, "rna_Sequence_name_get", "rna_Sequence_name_length", "rna_Sequence_name_set"); -- cgit v1.2.3