private static bool TryCreateExactNamespaceTexture(UpperString name, ResourceNamespace resourceNamespace, out Texture texture) { if (loadedImages.TryGetValue(name, resourceNamespace, out RgbaImage loadedImage)) { texture = CreateAndTrackTexture(name, resourceNamespace, loadedImage); return(true); } if (TextureDefinitionManager.TryGetExact(name, resourceNamespace, out TextureDefinition definition)) { RgbaImage compiledImage = TextureDefinitionToImage(definition); loadedImages.Add(name, resourceNamespace, compiledImage); texture = CreateAndTrackTexture(name, resourceNamespace, compiledImage); return(true); } if (Data.TryFindExact(name, resourceNamespace, out IEntry entry)) { if (TryReadImageEntry(entry, resourceNamespace, out RgbaImage newImage)) { loadedImages.Add(name, resourceNamespace, newImage); texture = CreateAndTrackTexture(name, resourceNamespace, newImage); return(true); } } texture = null; return(false); }
public static bool TryGetTexture(UpperString name, ResourceNamespace priorityNamespace, out Texture texture) { if (textures.TryGetValue(name, priorityNamespace, out texture)) { return(true); } // This is a heuristic to make failed lookups less expensive, as // there is a lot of work done to create the texture if it does // not exist after this. if (missingTextureNames.Contains(name)) { texture = NullTexture; return(false); } if (TryCreateExactNamespaceTexture(name, priorityNamespace, out texture)) { textures.Add(name, priorityNamespace, texture); return(true); } if (textures.TryGetAnyValue(name, out texture, out _)) { return(true); } if (TryCreateAnyNamespaceTexture(name, out texture, out ResourceNamespace newNamespace)) { textures.Add(name, newNamespace, texture); return(true); } missingTextureNames.Add(name); texture = NullTexture; return(false); }
public static bool TryGetExact(UpperString name, ResourceNamespace resourceNamespace, out TextureDefinition definition) { return(textureDefinitions.TryGetValue(name, resourceNamespace, out definition)); }