if (settings.get("rngseed", randomSeed)) setSeed(randomSeed);
else setSeed();
- settings.get("timestep", timestep);
+ Scalar timeStep = 80.0;
+ settings.get("timestep", timeStep);
+ timestep = 1.0 / timeStep;
- long maxFps = 40;
+ Scalar maxFps = 40.0;
settings.get("maxfps", maxFps);
- drawRate = 1.0 / Scalar(maxFps);
+ drawRate = 1.0 / maxFps;
settings.get("printfps", printFps);
}
- void pushLayer(LayerP layer)
+ void push(LayerP layer)
{
ASSERT(layer && "cannot push null layer");
stack.push_front(layer);
+ logInfo(" push: %d", stack.size());
layer->pushed(interface);
}
- void popLayer()
+ LayerP pop()
{
bool fixIt = false;
if (stack.begin() == stackIt) fixIt = true;
LayerP popped = stack.front();
stack.pop_front();
+ logInfo(" pop: %d", stack.size());
popped->popped(interface);
if (fixIt) stackIt = --stack.begin();
+
+ return popped;
}
- void popLayer(Layer* layer)
+ LayerP pop(Layer* layer)
{
bool fixIt = false;
+ std::list<LayerP> popped;
+
std::list<LayerP>::iterator it;
for (it = stack.begin(); it != stack.end(); ++it)
{
+ popped.push_back(*it);
+
if (it == stackIt) fixIt = true;
if ((*it).get() == layer)
{
++it;
- do
+ stack.erase(stack.begin(), it);
+
+ for (it = popped.begin(); it != popped.end(); ++it)
{
- LayerP popped = stack.front();
- stack.pop_front();
- popped->popped(interface);
+ (*it)->popped(interface);
}
- while (stack.begin() != it);
if (fixIt) stackIt = --stack.begin();
- return;
+
+ return popped.back();
}
}
+
+ return LayerP();
}
- void clearLayers()
+ void clear()
{
stack.clear();
stackIt = stack.begin();
+ logInfo("clear: %d", stack.size());
}
{
ASSERT(instance && "dereferencing null pointer");
return *instance;
+ //static Engine engine;
+ //return engine;
}
}
-void Engine::pushLayer(LayerP layer)
+void Engine::push(LayerP layer)
{
// pass through
- impl_->pushLayer(layer);
+ impl_->push(layer);
}
-void Engine::popLayer()
+LayerP Engine::pop()
{
// pass through
- impl_->popLayer();
+ return impl_->pop();
}
-void Engine::popLayer(Layer* layer)
+LayerP Engine::pop(Layer* layer)
{
// pass through
- impl_->popLayer(layer);
+ return impl_->pop(layer);
}
-void Engine::clearLayers()
+void Engine::clear()
{
// pass through
- impl_->clearLayers();
+ impl_->clear();
}