This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

🍱 Continue schedule hell

+14 -35
+13 -34
examples/schedule-hell/src/scenes/intro.rs
··· 1 1 use crate::State; 2 - use itertools::Itertools; 3 2 use shapemaker::*; 4 3 5 4 pub fn intro() -> Scene<State> { 6 5 Scene::<State>::new("intro") 7 6 .init(&|canvas, _| { 8 7 canvas.clear(); 8 + canvas.set_grid_size(16, 9); 9 9 canvas.set_background(Color::Black); 10 10 11 11 let mut kicks = Layer::new("anchor kick"); 12 - 13 - let circle_at = |x: usize, y: usize| Object::SmallCircle(Point(x, y)); 14 - 15 - let (end_x, end_y) = { 16 - let Point(x, y) = canvas.world_region.end; 17 - (x - 2, y - 2) 18 - }; 19 - kicks.set("top left", circle_at(1, 1)); 20 - kicks.set("top right", circle_at(end_x, 1)); 21 - kicks.set("bottom left", circle_at(1, end_y)); 22 - kicks.set("bottom right", circle_at(end_x, end_y)); 12 + let kicks_in = canvas.world_region.resized(-2, -2); 13 + kicks.set("top left", SmallCircle(kicks_in.topleft())); 14 + kicks.set("top right", SmallCircle(kicks_in.topright())); 15 + kicks.set("bottom left", SmallCircle(kicks_in.bottomleft())); 16 + kicks.set("bottom right", SmallCircle(kicks_in.bottomright())); 23 17 canvas.add_or_replace_layer(kicks); 24 18 25 19 let mut ch = Layer::new("ch"); ··· 142 136 Ok(()) 143 137 }) 144 138 .on_note("ch", &|canvas, ctx| { 145 - let world = canvas.world_region.clone(); 139 + let kicks_in = canvas.world_region.resized(-2, -2); 146 140 147 - // keep only the last 2 dots 148 - let dots_to_keep = canvas 149 - .layer("ch") 150 - .objects 151 - .iter() 152 - .sorted_by_key(|(name, _)| name.parse::<usize>().unwrap()) 153 - .rev() 154 - .take(2) 155 - .map(|(name, _)| name.clone()) 156 - .collect::<Vec<_>>(); 141 + let ch = canvas.layer_or_empty("ch"); 157 142 158 - let layer = canvas.layer("ch"); 159 - layer.object_sizes.empty_shape_stroke_width = 2.0; 160 - layer.objects.retain(|name, _| dots_to_keep.contains(name)); 143 + let ch_position = kicks_in 144 + .outline() 145 + .nth(ctx.stem("ch").playcount % kicks_in.outline().count()) 146 + .unwrap_or(kicks_in.start); 161 147 162 - let object_name = format!("{}", ctx.ms); 163 - layer.set( 164 - &object_name, 165 - Object::Dot( 166 - world.resized(-1, -1).random_point(&mut ctx.extra.rng), 167 - ) 168 - .colored(Color::Cyan), 169 - ); 148 + ch.set("hihat", Dot(ch_position).colored(Red)); 170 149 171 150 canvas.put_layer_on_top("ch"); 172 151 Ok(())
+1 -1
examples/schedule-hell/src/scenes/starry_sky.rs
··· 14 14 ctx.extra.kick_counter += 1; 15 15 sky(ctx.extra.kick_counter, canvas) 16 16 }) 17 - .each_n_frame(3, &|canvas, ctx| { 17 + .each_n_frame(1, &|canvas, ctx| { 18 18 // Keep spacecraft alive, by animating on threes 19 19 sky(ctx.extra.kick_counter, canvas) 20 20 })