Beispiel #1
0
        public static System.IO.MemoryStream WriteBCA(BCA.Binarys.BinaryFile file)
        {
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            System.IO.BinaryWriter bw = new System.IO.BinaryWriter(ms);

            #region File Header
            bw.Write(file.FHeader.fType);
            bw.Write(file.FHeader.fSize);
            bw.Write(file.FHeader.fReserved);
            bw.Write(file.FHeader.fBcaOffset);
            #endregion
            #region BCA Header
            bw.Write(file.BHeader.hSize);
            bw.Write(file.BHeader.hVersion);
            bw.Write(file.BHeader.hFrameOffset);
            bw.Write(file.BHeader.hFPS);
            bw.Write(file.BHeader.hFrameCount);
            bw.Write(file.BHeader.hReserved);
            #endregion
            #region Frames
            for (int f = 0; f < file.FrameList.Count; f++)
            {
                #region Frame Header
                bw.Write(file.FrameList[f].FrameHeader.fhSize);
                bw.Write((ushort)file.FrameList[f].FrameHeader.fhDeviceCount);
                bw.Write(file.FrameList[f].FrameHeader.fhDataSize);
                #endregion
                #region Frame Data
                for (int i = 0; i < file.FrameList[f].DeviceList.Count; i++)
                {
                    #region Device Header
                    bw.Write(file.FrameList[f].DeviceList[i].DeviceHeader.dhSize);
                    bw.Write((byte)file.FrameList[f].DeviceList[i].DeviceHeader.dhDataType);
                    bw.Write((ushort)file.FrameList[f].DeviceList[i].DeviceHeader.dhDevice);
                    bw.Write(file.FrameList[f].DeviceList[i].DeviceHeader.dhDataSize);
                    #endregion
                    #region Device Data
                    for (int d = 0; d < file.FrameList[f].DeviceList[i].DeviceDataList.Count; d++)
                    {
                        bw.Write(file.FrameList[f].DeviceList[i].DeviceDataList[d].dRow);
                        bw.Write(file.FrameList[f].DeviceList[i].DeviceDataList[d].dCol);
                        bw.Write(file.FrameList[f].DeviceList[i].DeviceDataList[d].dABGR);
                    }
                    #endregion
                }
                #endregion
            }
            #endregion

            return(ms);
        }
Beispiel #2
0
        /// <summary>
        /// Creates a playable animation from a binary file
        /// </summary>
        /// <param name="bca">BCA file</param>
        /// <returns></returns>
        public static Animation FromBCA(BCA.Binarys.BinaryFile bca)
        {
            Animation animation = new Animation();

            animation.FPS = bca.BHeader.hFPS;

            for (int i = 0; i < bca.BHeader.hFrameCount; i++)
            {
                Frame lastFrame = null;
                if (i != 0)
                {
                    lastFrame = animation.Frames[i - 1];
                }
                animation.Frames.Add(AFrameFromBFrame(bca.FrameList[i], lastFrame));
            }

            return(animation);
        }