#include <moof/log.hh>
#include <moof/manager.hh>
#include <moof/math.hh>
+#include <moof/resource.hh>
#include <moof/script.hh>
#include <moof/settings.hh>
-#include <moof/texture.hh>
+#include <moof/sprite.hh>
#include "Character.hh"
#include "Scene.hh"
};
Quad(const moof::vector3* vertices[4],
- const std::string& texture,
+ const moof::image_handle& texture,
int tileIndex) :
- mTilemap(texture),
+ mTilemap(texture, tileIndex),
mBlending(false),
mFog(false),
mSurface(NONE)
//}
}
- if (!mTilemap.tile_coordinates(tileIndex, mTexCoords))
- {
- moof::log_warning << "no index " << tileIndex <<
- " in texture " << texture << std::endl;
-
- mTexCoords[0] = mTexCoords[1] =
- mTexCoords[3] = mTexCoords[6] = 0.0;
- mTexCoords[2] = mTexCoords[4] =
- mTexCoords[5] = mTexCoords[7] = 1.0;
- }
-
aabb_.enclose_vertices(mVertices, 4);
sphere_.point = aabb_.center();
sphere_.radius = (aabb_.min - sphere_.point).length();
}
//glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
- mTilemap.bind();
-
- glVertexPointer(3, GL_SCALAR, 0, mVertices[0].data());
- glTexCoordPointer(2, GL_SCALAR, 0, mTexCoords);
-
- glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
+ mTilemap.draw(mVertices);
glDisable(GL_BLEND);
glDisable(GL_FOG);
}
- moof::vector3 mVertices[4];
- moof::scalar mTexCoords[8];
+ moof::vector3 mVertices[4];
- moof::texture mTilemap;
+ moof::sprite mTilemap;
bool mBlending;
bool mFog;
- moof::matrix4 mTransform;
- std::string mTexture;
+ moof::matrix4 mTransform;
+ moof::image_handle mTexture;
std::list< boost::shared_ptr<impl::Quad> > mObjects;
std::list<moof::line2> mLines;
moof::script::status load(moof::settings& settings, moof::script& script)
{
- std::string path(name());
- if (!Scene::find_path(path))
+ std::string path = moof::resource::find_file("scenes/"+name(), "lua");
+ if (path.empty())
{
script.push("the scene file could not be found");
return moof::script::file_error;
static int loadBox(moof::script& script, moof::aabb3& aabb)
{
- script[1].require_table();
- script[2].require_table();
+ script[1].require_table("point");
+ script[2].require_table("point");
script[1].push_field(1).get(aabb.min[0]);
script[1].push_field(2).get(aabb.min[1]);
int setBounds(moof::script& script)
{
- int ret = loadBox(script, mBounds);
- return ret;
+ return loadBox(script, mBounds);
}
int resetTransform(moof::script& script)
int rotate(moof::script& script)
{
- size_t index = 0;
- script[1].require_number().get(index);
+ size_t index = 0;
+ moof::scalar value;
- moof::scalar value;
+ script[1].require_number().get(index);
script[2].require_number().get(value);
moof::matrix_rotate_about_world_axis(mTransform, index,
int setTexture(moof::script& script)
{
- script[1].require_string().get(mTexture);
+ std::string texture_name;
+ script[1].require_string().get(texture_name);
+ mTexture = moof::resource::load(texture_name, "png");
return 0;
}
vertices[h][wPlus1] = moof::demote(mTransform *
moof::vector4(wPlus1, h, 0.0, 1.0));
- if (index == moof::texture::no_tile) continue;
+ if (index == moof::image::no_tile) continue;
const moof::vector3* corners[4] = {
&vertices[h][w],
}
-bool Scene::find_path(std::string& name)
-{
- return moof::resource::find_path(name, "scenes/", "lua");
-}
-