+#include "part.h"
#include "partcache.h"
+using namespace std;
+
namespace Msp {
namespace GLtk {
CachedPart::CachedPart():
+ part(0),
texture(0),
mesh(0)
{ }
delete mesh;
}
-void CachedPart::clear_mesh()
+
+void PartCache::clear()
+{
+ parts.clear();
+}
+
+void PartCache::insert_special(const Part &part)
{
- if(!mesh)
- mesh = new GL::Mesh((GL::TEXCOORD2, GL::COLOR4_UBYTE, GL::VERTEX2));
- else
- mesh->clear();
+ if(part.get_name().empty())
+ throw invalid_argument("PartCache::insert_special");
+
+ parts.push_back(CachedPart());
+ parts.back().part = ∂
+}
+
+GL::Mesh &PartCache::create_mesh(const Part &part, const GL::Texture2D &tex)
+{
+ if(!parts.empty() && parts.back().texture==&tex)
+ return *parts.back().mesh;
+
+ parts.push_back(CachedPart());
+ CachedPart &cpart = parts.back();
+ cpart.part = ∂
+ cpart.texture = &tex;
+ cpart.mesh = new GL::Mesh((GL::TEXCOORD2, GL::COLOR4_UBYTE, GL::VERTEX2));
+ return *cpart.mesh;
}
} // namespace GLtk