int AssetManagerGlue::readAssetChar(Asset& asset) { uint8_t b; ssize_t res = asset.read(&b, 1); return res == 1 ? b : -1; }
int AssetManagerGlue::readAsset(Asset& asset, NativeArray<uint8_t>& array, size_t off, size_t len) { if (len == 0) return 0; return asset.read(array.ptr(off, len), len); }
Texture::Texture(Asset file, GLenum textureTarget, GLfloat filter) { std::map<std::string, TextureData *>::const_iterator it = m_textureCache.find(file.getIOStream()->getFileName().c_str()); if(it != m_textureCache.end()) { m_textureData = it->second; m_textureData->incrementReference(); } else { int x, y, bytesPerPixel; unsigned char* data = stbi_load_from_memory(reinterpret_cast<const unsigned char *>(file.read()), file.getIOStream()->fileSize(), &x, &y, &bytesPerPixel, 4); if(data == NULL) { log_err("Unable to load texture: %s", file.getIOStream()->getFileName().c_str()); } else { m_textureData = m_textureCache[file.getIOStream()->getFileName().c_str()] = new TextureData(x, y, data, textureTarget, filter); stbi_image_free(data); m_textureData->incrementReference(); } } }
std::string getMachineName() { Asset *a = (Asset *)Info::Factory(Info::Asset); a->read(); return a->machineName(); }