+ engine.push(Hud::alloc(mState));
+
+ mRay.direction.set(1.0, 0.0);
+
+ mLine.a.set(20, 10);
+ mLine.b.set(19, 14);
+
+ mSphere.point.set(22, 5);
+ mSphere.radius = 2;
+
+ mRayTimer.init(boost::bind(&GameLayer::rayTimer, this), 1.0, Mf::Timer::REPEAT);
+}
+
+
+void GameLayer::update(Mf::Engine& engine, Mf::Scalar t, Mf::Scalar dt)
+{
+ mState.camera.update(t, dt);
+ mState.heroine->update(t, dt);
+
+ mState.scene->checkForCollision(*mState.heroine);
+
+ mState.camera.setPosition(Mf::Vector3(-mState.heroine->getState().position[0],
+ -mState.heroine->getState().position[1], -6));
+ //mState.camera.lookAt(Mf::promote(mState.heroine->getState().position));
+
+ mRay.point = mState.heroine->getState().position;
+}
+
+void GameLayer::thinkTimer()
+{
+ mState.script.getRegistryTable().pushField("Think");
+ if (mState.script[-1].isFunction()) mState.script.call();
+ else mState.script.pop();