PSSGManager.Main.writeDDS C# (CSharp) Méthode

writeDDS() private méthode

private writeDDS ( string ddsPath, CNode node ) : void
ddsPath string
node CNode
Résultat void
        private void writeDDS(string ddsPath, CNode node)
        {
            byte[] ddh;
            if (node == null) {
                node = ((CNode)treeViewTextures.SelectedNode.Tag);
            }
            using (BinaryReader b = new BinaryReader(File.Open(Application.StartupPath + "\\dxt.ddh", FileMode.Open))) {
                ddh = b.ReadBytes(128);
            }
            using (BinaryWriter b = new BinaryWriter(File.Open(ddsPath, FileMode.Create))) {
                b.Write(ddh);
                b.Write(node.subNodes[0].subNodes[0].data);
            }
            using (Stream outStream = File.Open(ddsPath, FileMode.Open)) {
                outStream.Seek(12, SeekOrigin.Begin);
                // Change Height and Width
                outStream.Write(BitConverter.GetBytes((int)node.attributes["height"].data), 0, 4);
                outStream.Write(BitConverter.GetBytes((int)node.attributes["width"].data), 0, 4);
                // Change size
                switch ((string)node.attributes["texelFormat"].data) {
                    case "dxt1":
                        outStream.Write(BitConverter.GetBytes(((int)node.attributes["width"].data) * ((int)node.attributes["height"].data) / 2), 0, 4);
                        break;
                    default:
                        outStream.Write(BitConverter.GetBytes(((int)node.attributes["width"].data) * ((int)node.attributes["height"].data)), 0, 4);
                        break;
                }
                // Skip 4
                outStream.Seek(4, SeekOrigin.Current);
                // Change numberMipMapLevels + 1
                outStream.Write(BitConverter.GetBytes((int)node.attributes["numberMipMapLevels"].data + 1), 0, 4);
                // Skip 52
                outStream.Seek(52, SeekOrigin.Current);
                // Change Format
                outStream.Write(Encoding.UTF8.GetBytes(((string)node.attributes["texelFormat"].data).ToUpper()), 0, 4);
            }
        }