예제 #1
0
        /// <summary>
        /// Loads Texture2D from DAT file
        /// </summary>
        /// <param name="AssetName"></param>
        /// <param name="table"></param>
        /// <returns></returns>
        public static Texture2D LoadTexture(string AssetName, DataTables table)
        {
            DataRow[] row   = table.Data.Tables[(int)Tables.Texture].Select("TEXTURENAME = '" + AssetName + "'");
            int       index = Int32.Parse((string)row[0].ItemArray.GetValue(0));


            int tStride     = Int32.Parse((string)table.Data.Tables[(int)Tables.Texture].Rows[index]["Stride"]);
            int tHeight     = Int32.Parse((string)table.Data.Tables[(int)Tables.Texture].Rows[index]["Height"]);
            int tbufferSize = (int)tStride * (int)tHeight;

            byte[] tBuffer = new byte[tbufferSize];
            using (BinaryReader reader = new BinaryReader(new FileStream(DirectoryManager.DATA_DIRECTORY + "Data1.otd", FileMode.Open)))
            {
                reader.BaseStream.Seek(Convert.ToInt64((string)table.Data.Tables[(int)Tables.Texture].Rows[(int)index]["DataLocation"]), SeekOrigin.Begin);
                reader.Read(tBuffer, 0, tbufferSize);
                reader.BaseStream.Close();
                reader.Close();
            }
            TextureData resultData = new TextureData
            {
                Buffer      = tBuffer,
                BufferSize  = tbufferSize,
                Stride      = tStride,
                Height      = tHeight,
                Width       = Int32.Parse((string)table.Data.Tables[(int)Tables.Texture].Rows[index]["Width"]),
                TextureName = (string)table.Data.Tables[(int)Tables.Texture].Rows[(int)index]["TEXTURENAME"]
            };

            Texture2D result = TextureGenerator.BufferToTexture(resultData);

            return(result);
        }