NewSF64Toolkit.DataStructures.DMA.LevelDMAFile.GetAsBytes C# (CSharp) Method

GetAsBytes() public method

public GetAsBytes ( ) : byte[]
return byte[]
        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;
        }