#include "resource_texture.h" #include "substring.h" #include "multi_type.h" #include "debug.h" ResourceTexture::ResourceTexture(const std::string& imageName, GLenum target) : Resource(&ResourceTexture::type) { Resources::StorePointer* ptr = this->acquireResource(imageName + ',' + MultiType((int)target).getString()); if (ptr) { PRINTF(5)("FOUND TEXTURE: %s\n", imageName.c_str()); this->acquireData(static_cast(ptr)->ptr()); } else { PRINTF(5)("NOT FOUND TEXTURE: %s\n", imageName.c_str()); std::string fileName = this->Resource::locateFile(imageName); this->Texture::loadImage(fileName, target); this->Resource::addResource(new ResourceTexture::TextureResourcePointer(imageName + ',' + MultiType((int)target).getString(), Resources::KeepLevel(0), this->Texture::dataPointer())); } } ResourceTexture ResourceTexture::createFromString(const std::string& loadString) { SubString loadValues(loadString, ','); std::string imageName; GLenum target = GL_TEXTURE_2D; if (loadValues.size() > 0) imageName = loadValues[0]; if (loadValues.size() > 1) target = (GLenum)MultiType(loadValues[2]).getInt(); return ResourceTexture(imageName, target); } Resources::tType ResourceTexture::type("Texture"); ResourceTexture::TextureResourcePointer::TextureResourcePointer(const std::string& loadString, const Resources::KeepLevel& keepLevel, const TextureData::Pointer& data) : Resources::StorePointer(loadString, keepLevel) , pointer(data) {}