X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ftexture.cc;h=dae0c7c46653491535bdca725aa4f255c59c2609;hb=26c1717925471539b9745cce6275b218a47147cd;hp=cbbd11dc455c7a0ca87ac8d579e128382293a8a8;hpb=017ce4cb4c27802eb620227fd822f5e4e03efa3b;p=laserbrain_demo diff --git a/src/texture.cc b/src/texture.cc index cbbd11d..dae0c7c 100644 --- a/src/texture.cc +++ b/src/texture.cc @@ -1,6 +1,7 @@ #include #include #include "texture.h" +#include "datamap.h" #include "image.h" #include "opengl.h" #include "imago2.h" @@ -201,7 +202,6 @@ void Texture::create_default(TextureType type) pixels += 4; } } - default_img->save("/tmp/foo.png"); } switch(type) { @@ -468,17 +468,28 @@ TextureSet::TextureSet() { } -Texture *TextureSet::get_texture(const char *name, TextureType type) const +Texture *TextureSet::get_texture(const char *name, TextureType type, const DataMap *dmap) const { - std::map::const_iterator iter = data.find(name); + char *fname; + int nsize = dmap ? dmap->path_size(name) : 0; + if(nsize) { + fname = (char*)alloca(nsize); + dmap->lookup(name, fname, nsize); + //debug_log("texture lookup: %s -> %s\n", name, fname); + } else { + fname = (char*)name; + //debug_log("texture lookup failed, using: %s\n", fname); + } + + std::map::const_iterator iter = data.find(fname); if(iter != data.end()) { return iter->second; } Texture *res = create(); - data[name] = res; + data[fname] = res; res->create_default(type); - resman_lookup(rman, name, res); + resman_lookup(rman, fname, res); return res; } @@ -492,6 +503,7 @@ Texture *TextureSet::create_tex() bool TextureSet::load_tex(Texture *tex, const char *fname) { Image *img = new Image; + img->name = fname; if(!img->load(fname)) { delete img; return false; @@ -505,6 +517,7 @@ bool TextureSet::load_tex(Texture *tex, const char *fname) bool TextureSet::done_tex(Texture *tex) { + //debug_log("TextureSet::done_tex [%s]\n", tex->img->name.c_str()); if(!tex->img) { return false; }