]> git.tdb.fi Git - libs/demoscene.git/blobdiff - source/sequencer.cpp
Add a repeat statement
[libs/demoscene.git] / source / sequencer.cpp
index 19c4041ab2f1d954a8ff7720d739019c6811a460..b4969bb30337182b35500b7ec378797bd8c1e86c 100644 (file)
@@ -147,6 +147,7 @@ Sequencer::Loader::Loader(Sequencer &s, Demo &d):
        add("base", &Loader::base);
        add("define_action", &Loader::define_action);
        add("instant", &Loader::instant);
+       add("repeat", &Loader::repeat);
        add("segment", &Loader::segment);
 }
 
@@ -168,6 +169,15 @@ void Sequencer::Loader::instant(float beat)
        segment(beat, beat);
 }
 
+void Sequencer::Loader::repeat(float b, float d, unsigned n)
+{
+       for(unsigned i=0; i<n; ++i)
+       {
+               SetForScope<float> set_base(base_beat, base_beat+b+i*d);
+               load_sub_with(*this);
+       }
+}
+
 void Sequencer::Loader::segment(float start, float end)
 {
        SegmentLoader ldr(obj, base_beat+start, base_beat+end, demo);