コード例 #1
0
ファイル: Kn5.Save.cs プロジェクト: windygu/actools
        public void Save(string filename, IKn5TextureProvider textureProvider = null)
        {
            using (var writer = new Kn5Writer(File.Open(filename, FileMode.Create, FileAccess.ReadWrite))) {
                writer.Write(Header);

                writer.Write(Textures.Count);
                foreach (var texture in Textures.Values)
                {
                    if (TexturesData.TryGetValue(texture.Name, out var data) && data.Length > 0)
                    {
                        texture.Length = data.Length;
                        writer.Write(texture);
                        writer.Write(data);
                    }
                    else
                    {
                        textureProvider?.GetTexture(texture.Name, size => {
                            texture.Length = size;
                            writer.Write(texture);
                            writer.Flush();
                            return(writer.BaseStream);
                        });
                    }
                }

                writer.Write(Materials.Count);
                foreach (var material in Materials.Values)
                {
                    writer.Write(material);
                }

                Save_Node(writer, RootNode);
            }
        }
コード例 #2
0
ファイル: Kn5.Save.cs プロジェクト: windygu/actools
 public void SaveRecyclingOriginal(string filename, IKn5TextureProvider textureProvider = null)
 {
     using (var f = FileUtils.RecycleOriginal(filename)) {
         try {
             Save(f.Filename, textureProvider);
         } catch {
             FileUtils.TryToDelete(f.Filename);
             throw;
         }
     }
 }