diff options
Diffstat (limited to 'gui/src/chainImage.cpp')
| -rw-r--r-- | gui/src/chainImage.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/gui/src/chainImage.cpp b/gui/src/chainImage.cpp index d362b0c..9ff4fc5 100644 --- a/gui/src/chainImage.cpp +++ b/gui/src/chainImage.cpp @@ -253,7 +253,29 @@ float chainImage::getRotation(){ return getLinkRot()+(transitionInterpolated*link->getLinkRot()); */ - return ofxeasing::map_clamp(transition, 0, 1, getLinkRot(), getLinkRot()+link->getLinkRot(), ofxeasing::cubic::easeInOut); + ofxeasing::function easing; + + bool start_turning=(sgn(getLinkRot()-linked->getLinkRot())!=sgn(link->getLinkRot()-getLinkRot())); + bool end_turning=(sgn(link->getLinkRot()-getLinkRot())!=sgn(link->link->getLinkRot()-link->getLinkRot())); + + if (start_turning){ + if (end_turning){ + easing=ofxeasing::cubic::easeInOut; + } + else { + easing=ofxeasing::cubic::easeIn; + } + } + else { + if (end_turning){ + easing=ofxeasing::cubic::easeOut; + } + else { + easing=ofxeasing::linear::easeOut; + } + } + + return ofxeasing::map_clamp(transition, 0, 1, getLinkRot(), getLinkRot()+link->getLinkRot(), easing); }; |
