dm 7 years ago
parent
commit
7a23d5d0b4
3 changed files with 23 additions and 3 deletions
  1. 2 0
      src/flow/Scene.h
  2. 19 3
      src/flow/Transition.cpp
  3. 2 0
      src/flow/Transition.h

+ 2 - 0
src/flow/Scene.h

@@ -111,6 +111,8 @@ namespace oxygine
             bool            isInStackWide() const { return _instackWide; }
             bool            isVisibleWide() const { return _visibleWide; }
             bool            isFinished() const { return _done; }
+            spTransition    getTransitionIn() const { return _transitionIn; }
+            spTransition    getTransitionOut() const { return _transitionOut; }
 
             void setPassBlockedTouch(bool v) { _passBlockedTouch = v; }
 

+ 19 - 3
src/flow/Transition.cpp

@@ -93,7 +93,7 @@ namespace oxygine
             scene->setTransitionOut(t);
         }
 
-        TransitionMove::TransitionMove()
+        TransitionMove::TransitionMove():_moveIn(false)
         {
             _fade = new ColorRectSprite;
             _fade->setPosition(-10000, -10000);
@@ -104,6 +104,11 @@ namespace oxygine
             _tweenOpt._ease = Tween::ease_inOutBack;
         }
 
+        void TransitionMove::setMoveWhenIn(bool move)
+        {
+            _moveIn = move;
+        }
+
         void TransitionMove::_run(spScene current, spScene next, bool back)
         {
             Vector2 src = _src;
@@ -128,8 +133,19 @@ namespace oxygine
 
 
             holder->setPosition(src);
-            spTween tween = holder->addTween(Actor::TweenPosition(dest), _tweenOpt);
-            waitTween(tween);
+
+            if (_moveIn || back)
+            {
+                spTween tween = holder->addTween(Actor::TweenPosition(dest), _tweenOpt);
+                waitTween(tween);
+            }
+            else
+            {
+                holder->setPosition(dest);
+
+                spTween tween = holder->addTween(TweenDummy(), 1);
+                waitTween(tween);
+            }
         }
 
         void TransitionFade::assign(Scene* scene)

+ 2 - 0
src/flow/Transition.h

@@ -61,10 +61,12 @@ namespace oxygine
             */
             TransitionMove();
             void setSrcPosition(const Vector2& v) { _src = v; }
+            void setMoveWhenIn(bool move);
 
         protected:
             void _run(spScene current, spScene next, bool back) override;
             spColorRectSprite _fade;
+            bool _moveIn;
             Vector2 _src;
         };