-/*******************************************************************************
-
- Copyright (c) 2009, Charles McGarvey
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-*******************************************************************************/
+/*] Copyright (c) 2009-2010, Charles McGarvey [**************************
+**] All rights reserved.
+*
+* vi:ts=4 sw=4 tw=75
+*
+* Distributable under the terms and conditions of the 2-clause BSD license;
+* see the file COPYING for a complete text of the license.
+*
+**************************************************************************/
+#define _MOOF_TRANSITION_HH_
#ifndef _MOOF_TRANSITION_HH_
#define _MOOF_TRANSITION_HH_
#include <boost/shared_ptr.hpp>
-#include <Moof/Engine.hh>
+#include <Moof/Core.hh>
#include <Moof/Interpolator.hh>
#include <Moof/Layer.hh>
#include <Moof/Log.hh>
namespace Mf {
-template <typename T>
+template <class T>
class Transition : public Layer
{
- LayerP to;
- LayerP from;
-
- T interpolator;
+ LayerP mTo;
+ LayerP mFrom;
- 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 removedFromCore(Core& core)
{
- if (to) e.push(to);
+ if (mTo) core.push(mTo);
}
- void update(Scalar t, Scalar dt)
+ void update(Core& core, 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(core, t, dt);
+ if (mTo) mTo->update(core, t, dt);
- if (interpolator.isDone())
+ if (mInterp.isDone())
{
// to should /replace/ this
- engine->pop(this);
+ core.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(Core& core, 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(core, 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(core, alpha);
glPopMatrix();
}
//drawFade(1.0 - a);
}
- bool handleEvent(const Event& event)
+ bool handleEvent(Core& core, const Event& event)
{
- if (to)
+ if (mTo)
{
- return to->handleEvent(event);
+ return mTo->handleEvent(core, event);
}
- else if (from)
+ else if (mFrom)
{
- return from->handleEvent(event);
+ return mFrom->handleEvent(core, event);
}
return false;
}
#endif // _MOOF_TRANSITION_HH_
-/** vim: set ts=4 sw=4 tw=80: *************************************************/
-