X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FScene.cc;h=918ff5250b843c8c8b0020b3935ab848e07cf4ae;hp=afbfa440f9f915f949feda5e459b7c4fa1d80c2e;hb=58c1f9a499d3bb80ea2869b29c714f61e656d48d;hpb=751d631f20a2ba523c011b9059d6fc07d83077eb diff --git a/src/Scene.cc b/src/Scene.cc index afbfa44..918ff52 100644 --- a/src/Scene.cc +++ b/src/Scene.cc @@ -140,7 +140,7 @@ struct Scene::Impl : public Mf::Manager //Mf::Octree::Ptr mOctree; std::list< boost::shared_ptr > mObjects; - std::list< Mf::Line<2> > mLines; + std::list mLines; Mf::Aabb<3> mBounds; @@ -261,24 +261,26 @@ struct Scene::Impl : public Mf::Manager 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 @@ -311,16 +313,13 @@ struct Scene::Impl : public Mf::Manager 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) @@ -358,12 +357,8 @@ struct Scene::Impl : public Mf::Manager 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)); @@ -386,10 +381,7 @@ struct Scene::Impl : public Mf::Manager } Quad::Surface surface = Quad::NONE; - - table.pushField("surface"); - top.get(surface); - script.pop(); + table.get(surface, "surface"); if (surface != Quad::NONE) { @@ -402,7 +394,6 @@ struct Scene::Impl : public Mf::Manager Mf::Vector2 tr = Mf::demote(vertices[height][width]); mLines.push_back(Mf::Line<2>(bl, tr)); - Mf::logInfo("new line"); } return 0; @@ -420,18 +411,10 @@ struct Scene::Impl : public Mf::Manager 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()) { @@ -441,7 +424,7 @@ struct Scene::Impl : public Mf::Manager 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) {