/// <summary> /// 表情リスト /// </summary> private VMDFormat.SkinList ReadSkinList() { VMDFormat.SkinList result = new VMDFormat.SkinList(); result.skin_count = binary_reader_.ReadUInt32(); result.skin = new Dictionary <string, List <VMDFormat.SkinData> >(); // 一度バッファに貯めてソートする VMDFormat.SkinData[] buf = new VMDFormat.SkinData[result.skin_count]; for (int i = 0; i < result.skin_count; i++) { buf[i] = ReadSkinData(); } Array.Sort(buf, (x, y) => ((int)x.frame_no - (int)y.frame_no)); try { // 全てのモーションを探索し、利用されているボーンを特定する for (int i = 0; i < result.skin_count; i++) { result.skin.Add(buf[i].skin_name, new List <VMDFormat.SkinData>()); } } catch { //重複している場合はこの処理に入る } // 辞書に登録する作業 for (int i = 0; i < result.skin_count; i++) { result.skin[buf[i].skin_name].Add(buf[i]); } return(result); }
/// <summary> /// 表情リスト /// </summary> private VMDFormat.SkinList ReadSkinList() { VMDFormat.SkinList result = new VMDFormat.SkinList(); result.skin_count = binary_reader_.ReadUInt32(); result.skin = new Dictionary<string, List<VMDFormat.SkinData>>(); // 一度バッファに貯めてソートする VMDFormat.SkinData[] buf = new VMDFormat.SkinData[result.skin_count]; for (int i = 0; i < result.skin_count; i++) { buf[i] = ReadSkinData(); } Array.Sort(buf, (x,y)=>((int)x.flame_no-(int)y.flame_no)); // 全てのモーションを探索し、利用されているボーンを特定する for (int i = 0; i < result.skin_count; i++) { try { result.skin.Add(buf[i].skin_name, new List<VMDFormat.SkinData>()); } catch { //重複している場合はこの処理に入る } } // 辞書に登録する作業 for (int i = 0; i < result.skin_count; i++) { result.skin[buf[i].skin_name].Add(buf[i]); } return result; }