dmuratshin 9 years ago
parent
commit
68800cdabc
3 changed files with 17 additions and 7 deletions
  1. 15 5
      src/flow/Scene.cpp
  2. 1 1
      src/flow/Scene.h
  3. 1 1
      src/flow/flow.cpp

+ 15 - 5
src/flow/Scene.cpp

@@ -46,7 +46,7 @@ namespace oxygine
         extern bool _wasTouchBlocked;
         extern bool _wasTouchBlocked;
         extern spTransition _defaultTransition;
         extern spTransition _defaultTransition;
 
 
-        Scene::Scene(): _done(false), _remove(false), _dialog(false), _inloop(false), _inloop2(false), _visible(false), _allowDialogsOnTop(true)
+        Scene::Scene(): _done(false), _remove(false), _dialog(false), _inloop(false), _inloopWide(false), _visible(false), _allowDialogsOnTop(true)
         {
         {
             setName("Scene");
             setName("Scene");
             _holder = new Actor;
             _holder = new Actor;
@@ -144,7 +144,7 @@ namespace oxygine
         void Scene::preEntering()
         void Scene::preEntering()
         {
         {
             LOGD("%-20s '%s'", "preEntering", getName().c_str());
             LOGD("%-20s '%s'", "preEntering", getName().c_str());
-            _inloop2 = true;
+            _inloopWide = true;
             Event ev2(EVENT_PRE_ENTERING);
             Event ev2(EVENT_PRE_ENTERING);
             dispatchEvent(&ev2);
             dispatchEvent(&ev2);
         }
         }
@@ -169,7 +169,7 @@ namespace oxygine
         void Scene::postLeaving()
         void Scene::postLeaving()
         {
         {
             LOGD("%-20s '%s'", "postLeaving", getName().c_str());
             LOGD("%-20s '%s'", "postLeaving", getName().c_str());
-            _inloop2 = false;
+            _inloopWide = false;
             Event ev2(EVENT_POST_LEAVING);
             Event ev2(EVENT_POST_LEAVING);
             dispatchEvent(&ev2);
             dispatchEvent(&ev2);
         }
         }
@@ -244,11 +244,21 @@ namespace oxygine
 
 
         void Scene::remove()
         void Scene::remove()
         {
         {
-            _remove = true;
+            LOGD("%-20s '%s'", "remove", getName().c_str());
             _resultCB = resultCallback();
             _resultCB = resultCallback();
             OX_ASSERT(_dialog == false);
             OX_ASSERT(_dialog == false);
-            if (!_holder->getParent())
+            if (_visible)
             {
             {
+                _remove = true;
+            }
+            else
+            {
+
+                //_flowPreLeaving();
+                //_flowPostLeaving();
+                preLeaving();
+                postLeaving();
+
                 flow::get().removeFromStack(this);
                 flow::get().removeFromStack(this);
             }
             }
         }
         }

+ 1 - 1
src/flow/Scene.h

@@ -133,7 +133,7 @@ namespace oxygine
 
 
             spActor _holder;
             spActor _holder;
             bool _inloop;
             bool _inloop;
-            bool _inloop2;
+            bool _inloopWide;
             bool _visible;
             bool _visible;
 
 
             void _flowPreLeaving();
             void _flowPreLeaving();

+ 1 - 1
src/flow/flow.cpp

@@ -124,7 +124,7 @@ namespace oxygine
 
 
         void Flow::removeFromStack(spScene scene)
         void Flow::removeFromStack(spScene scene)
         {
         {
-            OX_ASSERT(scene->_inloop == false);
+            //OX_ASSERT(scene->_inloop == false);
             auto it = std::find(scenes.begin(), scenes.end(), scene);
             auto it = std::find(scenes.begin(), scenes.end(), scene);
             if (it != scenes.end())
             if (it != scenes.end())
             {
             {