private VMDFormat.MotionList ReadMotionList() { VMDFormat.MotionList result = new VMDFormat.MotionList(); result.motion_count = binary_reader_.ReadUInt32(); result.motion = new Dictionary <string, List <VMDFormat.Motion> >(); // 一度バッファに貯めてソートする VMDFormat.Motion[] buf = new VMDFormat.Motion[result.motion_count]; for (int i = 0; i < result.motion_count; i++) { buf[i] = ReadMotion(); } Array.Sort(buf, (x, y) => ((int)x.frame_no - (int)y.frame_no)); try { // モーションの数だけnewされないよね? for (int i = 0; i < result.motion_count; i++) { result.motion.Add(buf[i].bone_name, new List <VMDFormat.Motion>()); } } catch { } // dictionaryにどんどん登録 for (int i = 0; i < result.motion_count; i++) { result.motion[buf[i].bone_name].Add(buf[i]); } return(result); }
private VMDFormat.MotionList ReadMotionList() { VMDFormat.MotionList result = new VMDFormat.MotionList(); result.motion_count = binary_reader_.ReadUInt32(); result.motion = new Dictionary<string, List<VMDFormat.Motion>>(); // 一度バッファに貯めてソートする VMDFormat.Motion[] buf = new VMDFormat.Motion[result.motion_count]; for (int i = 0; i < result.motion_count; i++) { buf[i] = ReadMotion(); } Array.Sort(buf, (x,y)=>((int)x.flame_no-(int)y.flame_no)); // モーションの数だけnewされないよね? for (int i = 0; i < result.motion_count; i++) { try { result.motion.Add(buf[i].bone_name, new List<VMDFormat.Motion>()); } catch {} } // dictionaryにどんどん登録 for (int i = 0; i < result.motion_count; i++) { result.motion[buf[i].bone_name].Add(buf[i]); } return result; }