/// <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); }
private VMDFormat.SkinData ReadSkinData() { VMDFormat.SkinData result = new VMDFormat.SkinData(); result.skin_name = ConvertByteToString(binary_reader_.ReadBytes(15), ""); result.frame_no = binary_reader_.ReadUInt32(); result.weight = binary_reader_.ReadSingle(); return(result); }
private VMDFormat.SkinData ReadSkinData() { VMDFormat.SkinData result = new VMDFormat.SkinData(); result.skin_name = ConvertByteToString(binary_reader_.ReadBytes(15), ""); result.flame_no = binary_reader_.ReadUInt32(); result.weight = binary_reader_.ReadSingle(); 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; }