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); }
internal static void CompileAnyNewVanillaDefinitions() { foreach (TextureDefinition definition in vanillaTextureTracker.CompileDefinitions()) { textureDefinitions.Add(definition.Name, definition.Namespace, definition); } }
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 string ScriptInclude(this AjaxHelper helper, params string[] url) { var tracker = new ResourceTracker(helper.ViewContext.HttpContext); var sb = new StringBuilder(); foreach (var item in url) { if (!tracker.Contains(item)) { tracker.Add(item); sb.AppendFormat("<script type='text/javascript' src='{0}'></script>", item); sb.AppendLine(); } } return sb.ToString(); }