X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2Fmoof%2Fmesh.hh;h=5c9c34399f6be0bfd1223da75539463495851fb6;hp=0fbc3cc5b303a526f6aa99f0b19ec075fadeb6e8;hb=HEAD;hpb=6f1b787a10d8ab1a3117a4b8c004dd2d90599608 diff --git a/src/moof/mesh.hh b/src/moof/mesh.hh index 0fbc3cc..5c9c343 100644 --- a/src/moof/mesh.hh +++ b/src/moof/mesh.hh @@ -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 #include #include @@ -31,12 +24,17 @@ #include +/** + * \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 triangles_uv; }; - class object; typedef boost::shared_ptr object_ptr; typedef boost::weak_ptr 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 verts; - std::vector faces; + std::vector verts; + std::vector faces; - std::vector kids; - std::map kids_byname; - object_weakptr parent; + std::vector kids; + std::map 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 materials_; std::vector objects_;