private static PMXFormat.MorphList ConvertMorphList(PMDFormat pmd) { PMXFormat.MorphList result = new PMXFormat.MorphList(); //頂点インデックス用辞書の作成 PMDFormat.SkinData pmd_skin_data_base = pmd.skin_list.skin_data.Where(x => 0 == x.skin_type).First(); Dictionary <uint, uint> morph_vertex_index_dictionary = new Dictionary <uint, uint>(pmd_skin_data_base.skin_vert_data.Length); for (uint i = 0, i_max = (uint)pmd_skin_data_base.skin_vert_data.Length; i < i_max; ++i) { morph_vertex_index_dictionary.Add(i, pmd_skin_data_base.skin_vert_data[i].skin_vert_index); } //base以外の変換 result.morph_data = new PMXFormat.MorphData[pmd.skin_list.skin_data.Where(x => 0 != x.skin_type).Count()]; //base分を除外 int morph_data_count = 0; for (int i = 0, i_max = pmd.skin_list.skin_data.Length; i < i_max; ++i) { if (0 != pmd.skin_list.skin_data[i].skin_type) { //base以外なら string eg_skin_name = (((null != pmd.eg_skin_name_list) && (1 <= i))? pmd.eg_skin_name_list.skin_name_eg[i - 1]: null); result.morph_data[morph_data_count++] = ConvertMorphData(pmd.skin_list.skin_data[i], eg_skin_name, morph_vertex_index_dictionary); } } return(result); }
private PMXFormat.MorphList ReadMorphList() { PMXFormat.MorphList result = new PMXFormat.MorphList(); uint morph_count = binary_reader_.ReadUInt32(); result.morph_data = new PMXFormat.MorphData[morph_count]; for (uint i = 0, i_max = (uint)result.morph_data.Length; i < i_max; ++i) { result.morph_data[i] = ReadMorphData(); } return(result); }
private PMXFormat.MorphList ReadMorphList() { PMXFormat.MorphList result = new PMXFormat.MorphList(); uint morph_count = binary_reader_.ReadUInt32(); result.morph_data = new PMXFormat.MorphData[morph_count]; for (uint i = 0, i_max = (uint)result.morph_data.Length; i < i_max; ++i) { result.morph_data[i] = ReadMorphData(); } return result; }
private static PMXFormat.MorphList ConvertMorphList(PMDFormat pmd) { PMXFormat.MorphList result = new PMXFormat.MorphList(); //頂点インデックス用辞書の作成 PMDFormat.SkinData pmd_skin_data_base = pmd.skin_list.skin_data.Where(x=>0==x.skin_type).First(); Dictionary<uint, uint> morph_vertex_index_dictionary = new Dictionary<uint, uint>(pmd_skin_data_base.skin_vert_data.Length); for (uint i = 0, i_max = (uint)pmd_skin_data_base.skin_vert_data.Length; i < i_max; ++i) { morph_vertex_index_dictionary.Add(i, pmd_skin_data_base.skin_vert_data[i].skin_vert_index); } //base以外の変換 result.morph_data = new PMXFormat.MorphData[pmd.skin_list.skin_data.Where(x=>0!=x.skin_type).Count()]; //base分を除外 int morph_data_count = 0; for (int i = 0, i_max = pmd.skin_list.skin_data.Length; i < i_max; ++i) { if (0 != pmd.skin_list.skin_data[i].skin_type) { //base以外なら string eg_skin_name = (((null != pmd.eg_skin_name_list) && (1 <= i))? pmd.eg_skin_name_list.skin_name_eg[i - 1]: null); result.morph_data[morph_data_count++] = ConvertMorphData(pmd.skin_list.skin_data[i], eg_skin_name, morph_vertex_index_dictionary); } } return result; }