"Popping" mouth open without inbetweens
This commit is contained in:
parent
727b1d1261
commit
2eb0948c49
|
@ -55,14 +55,17 @@ Shape getClosestShape(Shape reference, ShapeSet shapes) {
|
||||||
}
|
}
|
||||||
|
|
||||||
optional<pair<Shape, TweenTiming>> getTween(Shape first, Shape second) {
|
optional<pair<Shape, TweenTiming>> 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<Shape, Shape>, pair<Shape, TweenTiming>> lookup{
|
static const map<pair<Shape, Shape>, pair<Shape, TweenTiming>> lookup{
|
||||||
{{A, D}, {C, TweenTiming::Late}}, {{D, A}, {C, TweenTiming::Early}},
|
{{D, A}, {C, TweenTiming::Early}},
|
||||||
{{B, D}, {C, TweenTiming::Centered}}, {{D, B}, {C, TweenTiming::Centered}},
|
{{D, B}, {C, TweenTiming::Centered}},
|
||||||
{{G, D}, {C, TweenTiming::Late}}, {{D, G}, {C, TweenTiming::Early}},
|
{{D, G}, {C, TweenTiming::Early}},
|
||||||
{{X, D}, {C, TweenTiming::Early}}, {{D, X}, {C, TweenTiming::Late}},
|
{{D, X}, {C, TweenTiming::Late}},
|
||||||
{{C, F}, {E, TweenTiming::Centered}}, {{F, C}, {E, TweenTiming::Centered}},
|
{{C, F}, {E, TweenTiming::Centered}}, {{F, C}, {E, TweenTiming::Centered}},
|
||||||
{{D, F}, {E, TweenTiming::Centered}}, {{F, D}, {E, TweenTiming::Centered}},
|
{{D, F}, {E, TweenTiming::Centered}},
|
||||||
{{H, F}, {E, TweenTiming::Late}}, {{F, H}, {E, TweenTiming::Early}},
|
{{H, F}, {E, TweenTiming::Late}}, {{F, H}, {E, TweenTiming::Early}}
|
||||||
};
|
};
|
||||||
auto it = lookup.find({first, second});
|
auto it = lookup.find({first, second});
|
||||||
return it != lookup.end() ? it->second : optional<pair<Shape, TweenTiming>>();
|
return it != lookup.end() ? it->second : optional<pair<Shape, TweenTiming>>();
|
||||||
|
|
Loading…
Reference in New Issue