Ejemplo n.º 1
0
        protected override void Parse(Stream s)
        {
            var br = new BinaryReader(s);

            if (FOURCC(br.ReadUInt32()) != Tag)
            {
                throw new InvalidDataException("Invalid Tag, Expected " + Tag);
            }
            mVersion = br.ReadUInt32();
            if (mVersion < 0x201)
            {
                mUnused = br.ReadBytes(48);
            }
            else
            {
                mRigKey = new TGIBlock(requestedApiVersion, handler, kRigKeyOrder, s);
                mVertexAnimBlendWeight = br.ReadSingle();
                mUnused = br.ReadBytes(28);
            }
            mTrackMasks = new TrackMaskList(handler, s);
            if (s.Position != s.Length)
            {
                throw new InvalidDataException("Unexpected End of File");
            }
        }
Ejemplo n.º 2
0
 public TrackMask(int APIversion, EventHandler handler, uint version, byte[] unused, TrackMaskList trackMasks)
     : base(APIversion, handler, null)
 {
     mVersion    = version;
     mRigKey     = new TGIBlock(APIversion, handler, kRigKeyOrder);
     mUnused     = unused ?? (version < 0x201 ? new byte[48] : new byte[28]);
     mTrackMasks = trackMasks ?? new TrackMaskList(handler);
 }
Ejemplo n.º 3
0
 public TrackMask(int APIversion, EventHandler handler, uint version,
                  IResourceKey rigKey, float vertexAnimBlendWeight, byte[] unused, TrackMaskList trackMasks)
     : base(APIversion, handler, null)
 {
     mVersion = version;
     mRigKey  = rigKey == null ? new TGIBlock(APIversion, handler, kRigKeyOrder)
         : new TGIBlock(APIversion, handler, kRigKeyOrder, rigKey);
     mVertexAnimBlendWeight = vertexAnimBlendWeight;
     mUnused     = unused ?? (version < 0x201 ? new byte[48] : new byte[28]);
     mTrackMasks = trackMasks ?? new TrackMaskList(handler);
 }
Ejemplo n.º 4
0
        public override Stream UnParse()
        {
            var s  = new MemoryStream();
            var bw = new BinaryWriter(s);

            bw.Write((uint)FOURCC(Tag));
            bw.Write(mVersion);
            if (mVersion < 0x201)
            {
                if (mUnused == null)
                {
                    mUnused = new byte[48];
                }
                if (mUnused.Length != 48)
                {
                    byte[] unused = mUnused;
                    mUnused = new byte[48];
                    Array.Copy(unused, 0, mUnused, 0, unused.Length < 48 ? unused.Length : 48);
                }
                bw.Write(mUnused);
            }
            else
            {
                if (mRigKey == null)
                {
                    mRigKey = new TGIBlock(requestedApiVersion, handler, kRigKeyOrder);
                }
                mRigKey.UnParse(s);
                bw.Write(mVertexAnimBlendWeight);
                if (mUnused == null)
                {
                    mUnused = new byte[28];
                }
                if (mUnused.Length != 28)
                {
                    byte[] unused = mUnused;
                    mUnused = new byte[28];
                    Array.Copy(unused, 0, mUnused, 0, unused.Length < 28 ? unused.Length : 28);
                }
                bw.Write(mUnused);
            }
            if (mTrackMasks == null)
            {
                mTrackMasks = new TrackMaskList(handler);
            }
            mTrackMasks.UnParse(s);
            return(s);
        }