]> Dogcows Code - chaz/yoink/blobdiff - src/moof/mesh.hh
fixed documentation about where to find licenses
[chaz/yoink] / src / moof / mesh.hh
index 0fbc3cc5b303a526f6aa99f0b19ec075fadeb6e8..5c9c34399f6be0bfd1223da75539463495851fb6 100644 (file)
@@ -1,22 +1,15 @@
 
-/*]  Copyright (c) 2009-2010, Charles McGarvey  [**************************
+/*]  Copyright (c) 2009-2011, Charles McGarvey  [*****************************
 **]  All rights reserved.
 *
-* vi:ts=4 sw=4 tw=75
-*
 * Distributable under the terms and conditions of the 2-clause BSD license;
 * see the file COPYING for a complete text of the license.
 *
-**************************************************************************/
+*****************************************************************************/
 
 #ifndef _MOOF_MESH_HH_
 #define _MOOF_MESH_HH_
 
-/**
- * \file mesh.hh
- * Defines classes for loading and manipulating meshes.
- */
-
 #include <iostream>
 #include <map>
 #include <vector>
 #include <moof/resource.hh>
 
 
+/**
+ * \file mesh.hh
+ * Defines classes for loading and manipulating meshes.
+ */
+
 namespace moof {
 
 
+// forward declarations
 class script;
 
-
 class mesh : public boost::noncopyable, public entity
 {
 public:
@@ -45,23 +43,19 @@ public:
 
        void draw(scalar alpha = SCALAR(0.0)) const;
 
-
        struct material
        {
                material(const std::string& id) :
                        name(id) {}
 
-
+               scalar          shininess;
                std::string     name;
-
-               vector4         diffuse;
                vector4         ambient;
+               vector4         diffuse;
                vector4         emissive;
                vector4         specular;
-               scalar          shininess;
        };
 
-
        void set_material(int index) const;
        void set_material(const material& material) const;
 
@@ -71,7 +65,6 @@ public:
                std::vector<vector2>    triangles_uv;
        };
 
-
        class object;
        typedef boost::shared_ptr<object> object_ptr;
        typedef boost::weak_ptr<object>   object_weakptr;
@@ -87,33 +80,31 @@ public:
                        return object_ptr(new object(m));
                }
 
-               void draw(scalar alpha = SCALAR(0.0), bool recurse = true) const;
-
+               void
+               draw(scalar alpha = SCALAR(0.0), bool recurse = true) const;
 
-               const moof::mesh&                       mesh;
+               const moof::mesh&       mesh;
 
-               std::string                                     name;
-               std::string                                     data;
-               std::string                                     url;
+               std::string             name;
+               std::string             data;
+               std::string             url;
 
-               image_handle                            texture;
-               vector2                                         texrep;
+               image_handle            texture;
+               vector2                 texrep;
 
-               std::vector<vector3>            verts;
-               std::vector<material_group>     faces;
+               std::vector<vector3>                    verts;
+               std::vector<material_group>             faces;
 
-               std::vector<object_ptr>         kids;
-               std::map<std::string,object_ptr>                kids_byname;
-               object_weakptr                                  parent;
+               std::vector<object_ptr>                 kids;
+               std::map<std::string,object_ptr>        kids_byname;
+               object_weakptr                          parent;
        };
 
-
        object_ptr operator [] (unsigned index) const
        {
                return objects_[index];
        }
 
-
        /**
         * Import script bindings for the mesh class.
         * \param The script.
@@ -121,10 +112,13 @@ public:
         */
        static void import(script& script, const std::string& nspace = "");
 
-
 private:
 
-       void import(std::istream& stream);
+       void load(std::istream& stream);
+
+       void load_material(std::istream& stream);
+       object_ptr load_object(std::istream& stream, object_ptr parent);
+       void load_surface(std::istream& stream, object_ptr obj);
        
        std::vector<material>   materials_;
        std::vector<object_ptr> objects_;
This page took 0.02387 seconds and 4 git commands to generate.