Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
	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;
	}