diff --git a/src/animation/animationRules.cpp b/src/animation/animationRules.cpp index 52f2c2c..683e4ce 100644 --- a/src/animation/animationRules.cpp +++ b/src/animation/animationRules.cpp @@ -55,14 +55,17 @@ Shape getClosestShape(Shape reference, ShapeSet shapes) { } optional> getTween(Shape first, Shape second) { + // Note that most of the following rules work in one direction only. + // That's because in animation, the mouth should usually "pop" open without inbetweens, + // then close slowly. static const map, pair> lookup{ - {{A, D}, {C, TweenTiming::Late}}, {{D, A}, {C, TweenTiming::Early}}, - {{B, D}, {C, TweenTiming::Centered}}, {{D, B}, {C, TweenTiming::Centered}}, - {{G, D}, {C, TweenTiming::Late}}, {{D, G}, {C, TweenTiming::Early}}, - {{X, D}, {C, TweenTiming::Early}}, {{D, X}, {C, TweenTiming::Late}}, - {{C, F}, {E, TweenTiming::Centered}}, {{F, C}, {E, TweenTiming::Centered}}, - {{D, F}, {E, TweenTiming::Centered}}, {{F, D}, {E, TweenTiming::Centered}}, - {{H, F}, {E, TweenTiming::Late}}, {{F, H}, {E, TweenTiming::Early}}, + {{D, A}, {C, TweenTiming::Early}}, + {{D, B}, {C, TweenTiming::Centered}}, + {{D, G}, {C, TweenTiming::Early}}, + {{D, X}, {C, TweenTiming::Late}}, + {{C, F}, {E, TweenTiming::Centered}}, {{F, C}, {E, TweenTiming::Centered}}, + {{D, F}, {E, TweenTiming::Centered}}, + {{H, F}, {E, TweenTiming::Late}}, {{F, H}, {E, TweenTiming::Early}} }; auto it = lookup.find({first, second}); return it != lookup.end() ? it->second : optional>();