//Mf::Octree<Quad>::Ptr mOctree;
std::list< boost::shared_ptr<Impl::Quad> > mObjects;
- std::list< Mf::Line<2> > mLines;
+ std::list<Mf::Line2> mLines;
Mf::Aabb<3> mBounds;
void init(const std::string& name) {}
- void importSceneBindings(Mf::Script& script)
+ void importSceneBindings(Mf::Settings& settings, Mf::Script& script)
{
script.importFunction("SetBounds",
boost::bind(&Impl::setBounds, this, _1));
boost::bind(&Impl::drawTile, this, _1));
int detail = 3;
- Mf::settings.get("detail", detail);
+ settings.get("detail", detail);
script.push(detail); script.set("detail");
script.push(1); script.set("LOW");
}
- Mf::Script::Result load(Mf::Script& script)
+ Mf::Script::Result load(Mf::Settings& settings, Mf::Script& script)
{
- std::string filePath = Scene::getPath(getName());
- if (filePath == "")
+ std::string path(getName());
+ if (!Scene::getPath(path))
{
script.push("the scene file could not be found");
return Mf::Script::FILE_ERROR;
}
- importSceneBindings(script);
- return script.doFile(filePath);
+ importSceneBindings(settings, script);
+ return script.doFile(path);
}
int scale(Mf::Script& script)
{
- if (script.getSize() == 3)
+ int size = script.getSize();
+
+ if (size == 1)
{
- Mf::Vector3 vec;
- script[1].requireNumber().get(vec[0]);
- script[2].requireNumber().get(vec[1]);
- script[3].requireNumber().get(vec[2]);
+ Mf::Scalar value = 1.0;
+ script[1].requireNumber().get(value);
Mf::Matrix4 scaling;
- cml::matrix_scale(scaling, vec);
+ cml::matrix_uniform_scale(scaling, value);
mTransform = scaling * mTransform;
}
- else if (script.getSize() == 1)
+ else if (size == 3)
{
- Mf::Scalar value = 1.0;
- script[1].requireNumber().get(value);
+ Mf::Vector3 vec;
+ script[1].requireNumber().get(vec[0]);
+ script[2].requireNumber().get(vec[1]);
+ script[3].requireNumber().get(vec[2]);
Mf::Matrix4 scaling;
- cml::matrix_uniform_scale(scaling, value);
+ cml::matrix_scale(scaling, vec);
mTransform = scaling * mTransform;
}
else
int drawTilemap(Mf::Script& script)
{
- Mf::Script::Slot table = script[1].requireTable();
- Mf::Script::Slot top = script[-1];
+ Mf::Script::Slot table = script[1].requireTable();
- int width = 1;
- int height = 1;
- int nTiles = 0;
+ int width = 1;
+ int height = 1;
+ int nTiles = 0;
- table.pushField("width");
- top.get(width);
- script.pop();
+ table.get(width, "width");
nTiles = table.getLength();
if (nTiles % width != 0)
int wPlus1 = w + 1;
int hPlus1 = h + 1;
- table.pushField(i);
-
Mf::Texture::TileIndex index;
- top.get(index);
-
- script.pop();
+ table.get(index, i);
vertices[h][wPlus1] = Mf::demote(mTransform *
Mf::Vector4(wPlus1, h, 0.0, 1.0));
}
Quad::Surface surface = Quad::NONE;
-
- table.pushField("surface");
- top.get(surface);
- script.pop();
+ table.get(surface, "surface");
if (surface != Quad::NONE)
{
Mf::Vector2 tr = Mf::demote(vertices[height][width]);
mLines.push_back(Mf::Line<2>(bl, tr));
- Mf::logInfo("new line");
}
return 0;
if (param.isTable())
{
- script.push(1);
- param.pushField();
- top.get(index);
-
- param.pushField("u_scale");
- top.get(width);
-
- param.pushField("blend");
- top.get(blending);
-
- param.pushField("fog");
- top.get(fog);
+ param.get(index, 1);
+ param.get(width, "u_scale");
+ param.get(blending, "blend");
+ param.get(fog, "fog");
}
else if (param.isNumber())
{
Mf::Vector3 vertices[2][width+1];
Mf::Scalar xf;
- Mf::Scalar increment = 1.0 / Mf::Scalar(width);
+ Mf::Scalar increment = SCALAR(1.0) / Mf::Scalar(width);
for (int h = 0; h <= 1; ++h)
{
mImpl(Scene::Impl::getInstance(name)) {}
-Mf::Script::Result Scene::load(Mf::Script& script)
+Mf::Script::Result Scene::load(Mf::Settings& settings, Mf::Script& script)
{
// pass through
- return mImpl->load(script);
+ return mImpl->load(settings, script);
}
}
-std::string Scene::getPath(const std::string& name)
+bool Scene::getPath(std::string& name)
{
- return Mf::Resource::getPath("scenes/" + name + ".lua");
+ return Mf::Resource::getPath(name, "scenes/", "lua");
}