X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FScene.cc;h=a45b1fba55f939bf031038e0e1c4f3ecd13daaa4;hp=fce451799db5e4d56a9649e79f7d9ce7fd38453a;hb=7f3984f3f9524f5b6813e01ceb2fe576dadff94e;hpb=99ac607f489023a7aa17bfb046113b0e4a65dab6 diff --git a/src/Scene.cc b/src/Scene.cc index fce4517..a45b1fb 100644 --- a/src/Scene.cc +++ b/src/Scene.cc @@ -75,8 +75,8 @@ struct Scene::Impl : public Mf::Library if (!mTilemap.getTileCoords(tileIndex, mTexCoords)) { - Mf::logWarning("no index %d in texture %s", tileIndex, - texture.c_str()); + Mf::logWarning << "no index " << tileIndex << + " in texture " << texture << std::endl; mTexCoords[0] = mTexCoords[1] = mTexCoords[3] = mTexCoords[6] = 0.0; @@ -211,7 +211,7 @@ struct Scene::Impl : public Mf::Library } - Mf::Script::Status load(Mf::Script& script) + Mf::Script::Result load(Mf::Script& script) { std::string filePath = Scene::getPath(getName()); if (filePath == "") @@ -227,18 +227,15 @@ struct Scene::Impl : public Mf::Library static int loadBox(Mf::Script& script, Mf::Aabb<3>& aabb) { - Mf::Script::Value table[] = - { - script[1].requireTable(), - script[2].requireTable() - }; + script[1].requireTable(); + script[2].requireTable(); + script.setSize(2); - for (int i = 0; i <= 1; ++i) + for (int i = 1; i <= 2; ++i) { for (int j = 1; j <= 3; ++j) { - script.push(j); - table[i].pushField(); + script[i].pushField(j); } } @@ -267,14 +264,11 @@ struct Scene::Impl : public Mf::Library int translate(Mf::Script& script) { - Mf::Script::Value x = script[1].requireNumber(); - Mf::Script::Value y = script[2].requireNumber(); - Mf::Script::Value z = script[3].requireNumber(); - Mf::Vector3 vec; - x.get(vec[0]); - y.get(vec[1]); - z.get(vec[2]); + + script[1].requireNumber().get(vec[0]); + script[2].requireNumber().get(vec[1]); + script[3].requireNumber().get(vec[2]); Mf::Matrix4 translation; cml::matrix_translation(translation, vec); @@ -315,14 +309,11 @@ struct Scene::Impl : public Mf::Library int rotate(Mf::Script& script) { - Mf::Script::Value axis = script[1].requireNumber(); - Mf::Script::Value angle = script[2].requireNumber(); - size_t index = 0; - axis.get(index); + script[1].requireNumber().get(index); Mf::Scalar value; - angle.get(value); + script[2].requireNumber().get(value); cml::matrix_rotate_about_world_axis(mTransform, index, cml::rad(value)); @@ -337,8 +328,8 @@ struct Scene::Impl : public Mf::Library int drawTilemap(Mf::Script& script) { - Mf::Script::Value table = script[1].requireTable(); - Mf::Script::Value top = script[-1]; + Mf::Script::Slot table = script[1].requireTable(); + Mf::Script::Slot top = script[-1]; int width = 1; int height = 1; @@ -359,7 +350,7 @@ struct Scene::Impl : public Mf::Library // the indices are stored upside-down in the scene file so that they are // easier to edit as text, so we'll need to load them last row first - // do first row and first column of vertices + // do first row and first column of vertices for (int w = 0; w <= width; ++w) { @@ -420,25 +411,11 @@ struct Scene::Impl : public Mf::Library // scene is built, simply demoting the vector again should // project the points to the xy-plane - //Mf::Vector2 tr = Mf::demote(vertices[height+1][width+1]); - //Mf::Vector2 bl = Mf::demote(vertices[0][0]); - Mf::Vector2 bl = Mf::demote(vertices[0][0]); Mf::Vector2 tr = Mf::demote(vertices[height][width]); - //Mf::logInfo("pt1: %f, %f", bl[0], bl[1]); - //Mf::logInfo("pt2: %f, %f", tr[0], tr[1]); mLines.push_back(Mf::Line<2>(bl, tr)); - Mf::logInfo("new line"); - - //if (tl == tr) - //{ - //mLines.push_back(Mf::Line<2>(bl, tl)); - //} - //else - //{ - //mLines.push_back(Mf::Line<2>(bl, tl)); - //} + Mf::logDebug("new line"); } return 0; @@ -446,8 +423,8 @@ struct Scene::Impl : public Mf::Library int drawTile(Mf::Script& script) { - Mf::Script::Value param = script[1]; - Mf::Script::Value top = script[-1]; + Mf::Script::Slot param = script[1]; + Mf::Script::Slot top = script[-1]; Tilemap::Index index = 0; int width = 1; @@ -518,7 +495,7 @@ Scene::Scene(const std::string& name) : mImpl(Scene::Impl::getInstance(name)) {} -Mf::Script::Status Scene::load(Mf::Script& script) +Mf::Script::Result Scene::load(Mf::Script& script) { // pass through return mImpl->load(script); @@ -573,11 +550,13 @@ bool Scene::castRay(const Mf::Ray<2>& ray, if (d > 0.0) { hits.push_back(hit); - return true; + //return true; } } - return false; + hits.sort(); + return !hits.empty(); + //return false; } bool Scene::checkForCollision(Character& character) @@ -635,7 +614,7 @@ bool Scene::checkForCollision(Character& character) if (collisions > 0) { - Mf::logInfo("collisions: %d", collisions); + Mf::logInfo << "collisions: " << collisions << std::endl; } return false;