public static void SetTransistorRoot(string rootDirectory) { lock (Lock) { TexturesByName.Clear(); AtlasesByTextureName.Clear(); RootDirectory = rootDirectory; Packages.Clear(); LoadedPackages.Clear(); var files = Directory.EnumerateFiles(rootDirectory); var packageFiles = files.Where(x => Path.GetExtension(x) == PKG_EXT) .Select(Path.GetFileNameWithoutExtension); var manifestFiles = files.Where(x => Path.GetExtension(x) == PKG_MANIFEST_EXT) .Select(Path.GetFileNameWithoutExtension); Packages = packageFiles.Union(manifestFiles).ToList(); Packages.Sort(); PackageSizes = new Dictionary <string, long>(); foreach (var name in Packages) { var package = Path.Combine(rootDirectory, name + PKG_EXT); var manifest = Path.Combine(rootDirectory, name + PKG_MANIFEST_EXT); PackageSizes[name] = (new FileInfo(package)).Length + (new FileInfo(manifest)).Length; } if (OnRootChanged != null) { OnRootChanged(); } } }
private static void UpdateLinkDicts(PackageReference pr, IList <Entry> contents) { for (int i = 0; i < contents.Count; i++) { TextureEntry te = contents[i] as TextureEntry; if (te != null) { if (TexturesByName.ContainsKey(te.Name)) { Console.WriteLine("Duplicate Texture entry: " + te.Name + " in " + pr.DisplayName + " and " + TexturesByName[te.Name].ContainingPackage.DisplayName); } else { TexturesByName.Add(te.Name, new EntryReference(i, pr)); } continue; } AtlasEntry ae = contents[i] as AtlasEntry; if (ae != null) { if (ae.IsReference) { AddTo(AtlasesByTextureName, ae.ReferencedTextureName, new EntryReference(i, pr)); } continue; } } }
public static TextureEntry GetTextureByName(string textureName) { lock (Lock) { if (TexturesByName.ContainsKey(textureName)) { return(TexturesByName[textureName].Dereference() as TextureEntry); } return(null); } }
public static string GetTexturePackageName(string textureName) { if (textureName == null) { return(null); } lock (Lock) { if (TexturesByName.ContainsKey(textureName)) { return(TexturesByName[textureName].ContainingPackage.DisplayName); } } return(null); }