Fix LoopingMode::AUTO_REVERSE behavior when LoopCount is 1 68/154268/5
authorEunki Hong <eunkiki.hong@samsung.com>
Tue, 10 Oct 2017 02:41:13 +0000 (11:41 +0900)
committerEunki Hong <eunkiki.hong@samsung.com>
Wed, 11 Oct 2017 11:05:39 +0000 (20:05 +0900)
commitc65103acd0b02b22bdb6ad629c9b498def523bc8
tree7d74bf4a96ec540d2fcfe17622e090d6704ab206
parent6f5e542dfe306f91b6a3094cde65dba1eb478967
Fix LoopingMode::AUTO_REVERSE behavior when LoopCount is 1

Let's think some animation s.t. start = 0, target = 2, duration = 2.
if LoopingMode is RESTART, animation will works like

RESTART       +---------------------------------> t
LoopCount = 0 | 0 - 1 - 2`- 1 - 2`- 1 - 2`- 1 - ...
LoopCount = 3 | 0 - 1 - 2`- 1 - 2`- 1 - 2 - 2 - ...
LoopCount = 2 | 0 - 1 - 2`- 1 - 2 - 2 - 2 - 2 - ...
LoopCount = 1 | 0 - 1 - 2 - 2 - 2 - 2 - 2 - 2 - ...
(2` mean value become 0 after value become 2)

But if Looping Mode is AUTO_REVERSE, animation will works like

AUTO_REVERSE  +---------------------------------> t
LoopCount = 0 | 0 - 2 - 0 - 2 - 0 - 2 - 0 - 2 - ...
LoopCount = 3 | 0 - 2 - 0 - 2 - 0 - 2 - 0 - 0 - ...
LoopCount = 2 | 0 - 2 - 0 - 2 - 0 - 0 - 0 - 0 - ...
LoopCount = 1 | 0 - 1 - 2 - 2 - 2 - 2 - 2 - 2 - ...

Previous code think that LoopCount == 1 is not looping mode.
But "ONLY IF LoopCount == 1, We don't auto reversing your animation" is non-sense

This patch change animation works like

AUTO_REVERSE  +---------------------------------> t
LoopCount = 1 | 0 - 2 - 0 - 0 - 0 - 0 - 0 - 0 - ...

Note : Patch set 4 is previous code. so, Fail at UtcDaliAnimationSetLoopingModeP3

Change-Id: Ie938864ba17c1b923021f87c29859f98f7241a43
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali/utc-Dali-Animation.cpp
dali/internal/update/animation/scene-graph-animator.h