template <typename T>
class Transition : public Layer
{
- LayerP to;
- LayerP from;
+ LayerP mTo;
+ LayerP mFrom;
- T interpolator;
-
- Engine* engine;
+ T mInterp;
public:
Transition(LayerP t, LayerP f, const T& interp) :
- to(t),
- from(f),
- interpolator(interp),
- engine(0) {}
+ mTo(t),
+ mFrom(f),
+ mInterp(interp) {}
typedef boost::shared_ptr<Transition> Ptr;
}
- void pushed(Engine& e)
- {
- engine = &e;
- }
-
- void popped(Engine& e)
+ void popped(Engine& engine)
{
- if (to) e.push(to);
+ if (mTo) engine.push(mTo);
}
- void update(Scalar t, Scalar dt)
+ void update(Engine& engine, Scalar t, Scalar dt)
{
- interpolator.update(t, dt);
+ mInterp.update(t, dt);
- if (from) from->update(t, dt);
- if (to) to->update(t, dt);
+ if (mFrom) mFrom->update(engine, t, dt);
+ if (mTo) mTo->update(engine, t, dt);
- if (interpolator.isDone())
+ if (mInterp.isDone())
{
// to should /replace/ this
- engine->pop(this);
+ engine.pop(this);
}
}
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
- glColor4(1.0, 1.0, 1.0, alpha);
+ glColor(1.0, 1.0, 1.0, alpha);
Mf::Texture::resetBind();
//glRectf(-1.0f, -1.0f, 1.0f, 1.0f);
glBegin(GL_QUADS);
- glVertex3f(-1.0, -1.0, -0.1);
- glVertex3f(1.0, -1.0, -0.1);
- glVertex3f(1.0, 1.0, -0.1);
- glVertex3f(-1.0, 1.0, -0.1);
+ glVertex(-1.0, -1.0, -0.1);
+ glVertex(1.0, -1.0, -0.1);
+ glVertex(1.0, 1.0, -0.1);
+ glVertex(-1.0, 1.0, -0.1);
glEnd();
glDisable(GL_BLEND);
glPopMatrix();
}
- void draw(Scalar alpha) const
+ void draw(Engine& engine, Scalar alpha) const
{
- Scalar a = interpolator.getState(alpha);
- logInfo("draw state: %f", a);
+ Scalar a = mInterp.getState(alpha);
+ logInfo << "transition state: " << a << std::endl;
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- if (from)
+ if (mFrom)
{
glPushMatrix();
glLoadIdentity();
glRotate(180.0 * a, 0.0, 1.0, 0.0);
- from->draw(alpha);
+ mFrom->draw(engine, alpha);
glPopMatrix();
}
//drawFade(a);
- if (to)
+ if (mTo)
{
glPushMatrix();
glLoadIdentity();
glRotate(180.0 * (1.0 - a), 0.0, 1.0, 0.0);
- to->draw(alpha);
+ mTo->draw(engine, alpha);
glPopMatrix();
}
//drawFade(1.0 - a);
}
- bool handleEvent(const Event& event)
+ bool handleEvent(Engine& engine, const Event& event)
{
- if (to)
+ if (mTo)
{
- return to->handleEvent(event);
+ return mTo->handleEvent(engine, event);
}
- else if (from)
+ else if (mFrom)
{
- return from->handleEvent(event);
+ return mFrom->handleEvent(engine, event);
}
return false;
}