summaryrefslogtreecommitdiff
path: root/gui/src/chainImage.cpp
diff options
context:
space:
mode:
authorTim Redfern <tim@getdrop.com>2018-01-11 23:45:52 +0000
committerTim Redfern <tim@getdrop.com>2018-01-11 23:45:52 +0000
commit532f8719ab63be9f5e9d98e15bc5fb2d081b98b3 (patch)
tree54d35f440c9f4d5d78b4d3662f9dbbe404cc1282 /gui/src/chainImage.cpp
parent9f1fdb2fa8fa09dbd990b33379db98762f3856ce (diff)
easing
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);
};