]> Dogcows Code - chaz/yoink/blobdiff - src/Scene.cc
new convenient script methods
[chaz/yoink] / src / Scene.cc
index afbfa440f9f915f949feda5e459b7c4fa1d80c2e..918ff5250b843c8c8b0020b3935ab848e07cf4ae 100644 (file)
@@ -140,7 +140,7 @@ struct Scene::Impl : public Mf::Manager<Impl>
 
        //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;
 
@@ -261,24 +261,26 @@ struct Scene::Impl : public Mf::Manager<Impl>
 
        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<Impl>
 
        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<Impl>
                                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<Impl>
                }
 
                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<Impl>
                        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<Impl>
 
                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<Impl>
                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)
                {
This page took 0.020041 seconds and 4 git commands to generate.