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)); } }); }
public MotionSetEntry GetMotionSet(string name) => MotionSets.FirstOrDefault(x => x.Name.Equals(name, StringComparison.OrdinalIgnoreCase));
public MotionSetInfo GetMotionSetInfo(string name) { return(MotionSets.FirstOrDefault(x => x.Name.Equals(name, StringComparison.OrdinalIgnoreCase))); }