public override void Read(EndianBinaryReader reader, ISection section = null)
        {
            int  version               = reader.ReadInt32();
            uint motionSetsOffset      = reader.ReadUInt32();
            uint motionSetIdsOffset    = reader.ReadUInt32();
            int  motionSetCount        = reader.ReadInt32();
            uint boneNameOffsetsOffset = reader.ReadUInt32();
            int  boneNameCount         = reader.ReadInt32();

            reader.ReadAtOffset(motionSetsOffset, () =>
            {
                MotionSets.Capacity = motionSetCount;

                for (int i = 0; i < motionSetCount; i++)
                {
                    var motionSetInfo = new MotionSetInfo();
                    motionSetInfo.Read(reader);
                    MotionSets.Add(motionSetInfo);
                }
            });

            reader.ReadAtOffset(motionSetIdsOffset, () =>
            {
                foreach (var motionSetInfo in MotionSets)
                {
                    motionSetInfo.Id = reader.ReadUInt32();
                }
            });

            reader.ReadAtOffset(boneNameOffsetsOffset, () =>
            {
                BoneNames.Capacity = boneNameCount;

                for (int i = 0; i < boneNameCount; i++)
                {
                    BoneNames.Add(reader.ReadStringOffset(StringBinaryFormat.NullTerminated));
                }
            });
        }
Пример #2
0
 public MotionSetEntry GetMotionSet(string name) =>
 MotionSets.FirstOrDefault(x => x.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
Пример #3
0
 public MotionSetInfo GetMotionSetInfo(string name)
 {
     return(MotionSets.FirstOrDefault(x => x.Name.Equals(name, StringComparison.OrdinalIgnoreCase)));
 }