public byte[] ToArray(int pccExportDataOffset)
{
MemoryStream buffer = new MemoryStream();
buffer.Write(headerData, 0, headerData.Length);
foreach (KeyValuePair<string, PropertyReader.Property> kvp in properties)
{
PropertyReader.Property property = kvp.Value;
// this is the part when I get rid of the LODGroup property!!!!!!!!!!!!!!!
// the texture will use texturegroup_world as default texturegroup
//if (kvp.Key == "LODGroup")
// continue;
if (kvp.Key == "LODBias")
continue;
if (kvp.Key == "InternalFormatLODBias")
continue;
buffer.Write(property.raw, 0, property.raw.Length);
if (kvp.Key == "UnpackMin")
{
buffer.Write(property.raw, 0, property.raw.Length);
buffer.Write(property.raw, 0, property.raw.Length);
}
}
buffer.WriteValueU32(numMipMaps);
foreach (ImageInfo imgInfo in imgList)
{
buffer.WriteValueS32((int)imgInfo.storageType);
buffer.WriteValueS32(imgInfo.uncSize);
buffer.WriteValueS32(imgInfo.cprSize);
if (imgInfo.storageType == storage.pccSto)
{
buffer.WriteValueS32((int)(imgInfo.offset + pccExportDataOffset + dataOffset));
buffer.Write(imageData, imgInfo.offset, imgInfo.uncSize);
}
else
buffer.WriteValueS32(imgInfo.offset);
buffer.WriteValueU32(imgInfo.imgSize.width);
buffer.WriteValueU32(imgInfo.imgSize.height);
}
// Texture2D footer, 24 bytes size
buffer.Write(imageData, imageData.Length-24, 24);
return buffer.ToArray();
}