public override byte[] GetAsBytes()
{
byte[] bytes = base.GetAsBytes();
if (IsCompressed)
return bytes;
Array.Copy(LevelHeader.GetAsBytes(), 0, bytes, _levelHeaderOffset, LevelHeader.Size);
int levelObjectOffset = _levelInfoOffset;
for(int i = 0; i < LevelObjects.Count; i++)
{
ByteHelper.WriteFloat(LevelObjects[i].LvlPos, bytes, levelObjectOffset);
ByteHelper.WriteShort(LevelObjects[i].Z, bytes, levelObjectOffset + 0x4);
ByteHelper.WriteShort(LevelObjects[i].X, bytes, levelObjectOffset + 0x6);
ByteHelper.WriteShort(LevelObjects[i].Y, bytes, levelObjectOffset + 0x8);
ByteHelper.WriteShort(LevelObjects[i].XRot, bytes, levelObjectOffset + 0xA);
ByteHelper.WriteShort(LevelObjects[i].YRot, bytes, levelObjectOffset + 0xC);
ByteHelper.WriteShort(LevelObjects[i].ZRot, bytes, levelObjectOffset + 0xE);
ByteHelper.WriteUShort(LevelObjects[i].ID, bytes, levelObjectOffset + 0x10);
ByteHelper.WriteUShort(LevelObjects[i].Unk, bytes, levelObjectOffset + 0x12);
levelObjectOffset += SFLevelObject.Size;
}
//Make the final level ending entry
ByteHelper.WriteUShort(0xFFFF, bytes, levelObjectOffset + 0x10);
return bytes;
}