Exemplo n.º 1
0
        public CANM(EndianBinaryReader er)
        {
            Signature = er.ReadString(Encoding.ASCII, 4);
            if (Signature != "CANM")
            {
                throw new SignatureNotCorrectException(Signature, "CANM", er.BaseStream.Position);
            }
            Revision   = er.ReadUInt32();
            NameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32();
            TargetAnimationGroupNameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32();
            LoopMode                  = er.ReadUInt32();
            FrameSize                 = er.ReadSingle();
            NrMemberAnimations        = er.ReadUInt32();
            MemberAnimationDictOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32();
            NrUserDataEntries         = er.ReadUInt32();
            UserDataOffset            = er.ReadUInt32();

            long curpos = er.BaseStream.Position;

            er.BaseStream.Position = NameOffset;
            Name = er.ReadStringNT(Encoding.ASCII);
            er.BaseStream.Position    = TargetAnimationGroupNameOffset;
            TargetAnimationGroupName  = er.ReadStringNT(Encoding.ASCII);
            er.BaseStream.Position    = MemberAnimationDictOffset;
            MemberAnimationDictionary = new DICT(er);

            MemberAnimations = new MemberAnimationData[NrMemberAnimations];
            for (int i = 0; i < NrMemberAnimations; i++)
            {
                er.BaseStream.Position = MemberAnimationDictionary[i].DataOffset;
                MemberAnimations[i]    = new MemberAnimationData(er);
            }

            er.BaseStream.Position = curpos;
        }
Exemplo n.º 2
0
        public CANM(EndianBinaryReader er)
        {
            Signature = er.ReadString(Encoding.ASCII, 4);
            if (Signature != "CANM") throw new SignatureNotCorrectException(Signature, "CANM", er.BaseStream.Position);
            Revision = er.ReadUInt32();
            NameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32();
            TargetAnimationGroupNameOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32();
            LoopMode = er.ReadUInt32();
            FrameSize = er.ReadSingle();
            NrMemberAnimations = er.ReadUInt32();
            MemberAnimationDictOffset = (UInt32)er.BaseStream.Position + er.ReadUInt32();
            NrUserDataEntries = er.ReadUInt32();
            UserDataOffset = er.ReadUInt32();

            long curpos = er.BaseStream.Position;
            er.BaseStream.Position = NameOffset;
            Name = er.ReadStringNT(Encoding.ASCII);
            er.BaseStream.Position = TargetAnimationGroupNameOffset;
            TargetAnimationGroupName = er.ReadStringNT(Encoding.ASCII);
            er.BaseStream.Position = MemberAnimationDictOffset;
            MemberAnimationDictionary = new DICT(er);

            MemberAnimations = new MemberAnimationData[NrMemberAnimations];
            for (int i = 0; i < NrMemberAnimations; i++)
            {
                er.BaseStream.Position = MemberAnimationDictionary[i].DataOffset;
                MemberAnimations[i] = new MemberAnimationData(er);
            }

            er.BaseStream.Position = curpos;
        }