X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpartcache.h;h=137bce4c37539a8c032f27b36cff0c35afc89f58;hb=81c4024fb6acf37df702a803dc4efdf82a81525a;hp=969912431271d501b68267f9f09bb7b05f0427b6;hpb=caa04d76bc031dd0c4a4157732deb340d934ceeb;p=libs%2Fgltk.git diff --git a/source/partcache.h b/source/partcache.h index 9699124..137bce4 100644 --- a/source/partcache.h +++ b/source/partcache.h @@ -3,6 +3,7 @@ #include #include +#include "mspgltk_api.h" namespace Msp { namespace GLtk { @@ -11,28 +12,35 @@ class Part; struct CachedPart { - const Part *part; - const GL::Texture2D *texture; - GL::Mesh *mesh; + const Part *part = nullptr; + const GL::Texture2D *texture = nullptr; + GL::Mesh *mesh = nullptr; - CachedPart(); ~CachedPart(); }; -class PartCache +class MSPGLTK_API PartCache { public: + class Rebuild + { + private: + PartCache &cache; + + public: + Rebuild(PartCache &c): cache(c) { cache.begin_rebuild(); } + ~Rebuild() { cache.end_rebuild(); } + }; + typedef std::list PartList; private: - bool rebuilding; + bool rebuilding = false; PartList parts; PartList::iterator next; PartList::iterator current; public: - PartCache(); - void begin_rebuild(); void insert_special(const Part &); GL::Mesh &create_mesh(const Part &, const GL::Texture2D &);