T mInterp;
- Engine* mEngine;
-
public:
Transition(LayerP t, LayerP f, const T& interp) :
mTo(t),
mFrom(f),
- mInterp(interp),
- mEngine(0) {}
+ mInterp(interp) {}
typedef boost::shared_ptr<Transition> Ptr;
}
- void pushed(Engine& engine)
- {
- mEngine = &engine;
- }
-
void popped(Engine& engine)
{
if (mTo) engine.push(mTo);
}
- void update(Scalar t, Scalar dt)
+ void update(Engine& engine, Scalar t, Scalar dt)
{
mInterp.update(t, dt);
- if (mFrom) mFrom->update(t, dt);
- if (mTo) mTo->update(t, dt);
+ if (mFrom) mFrom->update(engine, t, dt);
+ if (mTo) mTo->update(engine, t, dt);
if (mInterp.isDone())
{
// to should /replace/ this
- mEngine->pop(this);
+ engine.pop(this);
}
}
glPopMatrix();
}
- void draw(Scalar alpha) const
+ void draw(Engine& engine, Scalar alpha) const
{
Scalar a = mInterp.getState(alpha);
- logInfo("draw state: %f", a);
+ logDebug("transition state: %f", a);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glPushMatrix();
glLoadIdentity();
glRotate(180.0 * a, 0.0, 1.0, 0.0);
- mFrom->draw(alpha);
+ mFrom->draw(engine, alpha);
glPopMatrix();
}
//drawFade(a);
glPushMatrix();
glLoadIdentity();
glRotate(180.0 * (1.0 - a), 0.0, 1.0, 0.0);
- mTo->draw(alpha);
+ mTo->draw(engine, alpha);
glPopMatrix();
}
//drawFade(1.0 - a);
}
- bool handleEvent(const Event& event)
+ bool handleEvent(Engine& engine, const Event& event)
{
if (mTo)
{
- return mTo->handleEvent(event);
+ return mTo->handleEvent(engine, event);
}
else if (mFrom)
{
- return mFrom->handleEvent(event);
+ return mFrom->handleEvent(engine, event);
}
return false;
}