summaryrefslogtreecommitdiff
path: root/gui/src/chainImage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/src/chainImage.cpp')
-rw-r--r--gui/src/chainImage.cpp24
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);
};