コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
 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;
         }
     }
 }
コード例 #3
0
 public static TextureEntry GetTextureByName(string textureName)
 {
     lock (Lock) {
         if (TexturesByName.ContainsKey(textureName))
         {
             return(TexturesByName[textureName].Dereference() as TextureEntry);
         }
         return(null);
     }
 }
コード例 #4
0
 public static string GetTexturePackageName(string textureName)
 {
     if (textureName == null)
     {
         return(null);
     }
     lock (Lock) {
         if (TexturesByName.ContainsKey(textureName))
         {
             return(TexturesByName[textureName].ContainingPackage.DisplayName);
         }
     }
     return(null);
 }