Beispiel #1
0
    /// <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);
    }
Beispiel #2
0
 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;
	}