示例#1
0
 public 材質モーフデータ(MMDFileParser.PMXModelParser.モーフ morph)
 {
     foreach (モーフオフセット morphOffsetBase in morph.モーフオフセットリスト)
     {
         Morphoffsets.Add((材質モーフオフセット)morphOffsetBase);
     }
 }
示例#2
0
 public 頂点モーフデータ(MMDFileParser.PMXModelParser.モーフ morphData)
 {
     foreach (モーフオフセット morphOffsetBase in morphData.モーフオフセットリスト)
     {
         MorphOffsets.Add((頂点モーフオフセット)morphOffsetBase);
     }
 }
示例#3
0
 public ボーンモーフデータ(MMDFileParser.PMXModelParser.モーフ morphData)
 {
     foreach (モーフオフセット morphOffsetBase in morphData.モーフオフセットリスト)
     {
         BoneMorphs.Add((ボーンモーフオフセット)morphOffsetBase);
     }
 }
示例#4
0
 public GroupMorphData(MMDFileParser.PMXModelParser.モーフ data)
 {
     foreach (モーフオフセット morphOffsetBase in data.モーフオフセットリスト)
     {
         MorphOffsets.Add((グループモーフオフセット)morphOffsetBase);
     }
 }
示例#5
0
        /// <summary>
        ///     指定されたストリームから読み込む。
        /// </summary>
        internal static モーフ 読み込む(FileStream fs, PMXヘッダ header)
        {
            var morph = new モーフ();

            morph.モーフオフセットリスト = new List <モーフオフセット>();
            morph.モーフ名        = ParserHelper.get_TextBuf(fs, header.エンコード方式);
            morph.モーフ名_英      = ParserHelper.get_TextBuf(fs, header.エンコード方式);
            morph.操作パネル       = ParserHelper.get_Byte(fs);
            byte Morphtype = ParserHelper.get_Byte(fs);

            morph.モーフオフセット数 = ParserHelper.get_Int(fs);

            for (int i = 0; i < morph.モーフオフセット数; i++)
            {
                switch (Morphtype)
                {
                case 0:
                    //Group Morph
                    morph.モーフ種類 = モーフ種類.グループ;
                    morph.モーフオフセットリスト.Add(グループモーフオフセット.読み込む(fs, header));
                    break;

                case 1:
                    //Vertex Morph
                    morph.モーフ種類 = モーフ種類.頂点;
                    morph.モーフオフセットリスト.Add(頂点モーフオフセット.読み込む(fs, header));
                    break;

                case 2:
                    morph.モーフ種類 = モーフ種類.ボーン;
                    morph.モーフオフセットリスト.Add(ボーンモーフオフセット.読み込む(fs, header));
                    break;

                //3~7はすべてUVMorph
                case 3:
                    morph.モーフ種類 = モーフ種類.UV;
                    morph.モーフオフセットリスト.Add(UVモーフオフセット.読み込む(fs, header, モーフ種類.UV));
                    break;

                case 4:
                    morph.モーフ種類 = モーフ種類.追加UV1;
                    morph.モーフオフセットリスト.Add(UVモーフオフセット.読み込む(fs, header, モーフ種類.追加UV1));
                    break;

                case 5:
                    morph.モーフ種類 = モーフ種類.追加UV2;
                    morph.モーフオフセットリスト.Add(UVモーフオフセット.読み込む(fs, header, モーフ種類.追加UV2));
                    break;

                case 6:
                    morph.モーフ種類 = モーフ種類.追加UV3;
                    morph.モーフオフセットリスト.Add(UVモーフオフセット.読み込む(fs, header, モーフ種類.追加UV3));
                    break;

                case 7:
                    morph.モーフ種類 = モーフ種類.追加UV4;
                    morph.モーフオフセットリスト.Add(UVモーフオフセット.読み込む(fs, header, モーフ種類.追加UV4));
                    break;

                case 8:
                    //Material Morph
                    morph.モーフ種類 = モーフ種類.材質;
                    morph.モーフオフセットリスト.Add(材質モーフオフセット.読み込む(fs, header));
                    break;

                case 9:
                    if (header.PMXバージョン < 2.1)
                    {
                        throw new InvalidDataException("FlipモーフはPMX2.1以降でサポートされています。");
                    }
                    morph.モーフ種類 = モーフ種類.フリップ;
                    morph.モーフオフセットリスト.Add(フリップモーフオフセット.読み込む(fs, header));
                    break;

                case 10:
                    if (header.PMXバージョン < 2.1)
                    {
                        throw new InvalidDataException("ImpulseモーフはPMX2.1以降でサポートされています。");
                    }
                    morph.モーフ種類 = モーフ種類.インパルス;
                    morph.モーフオフセットリスト.Add(インパルスモーフオフセット.読み込む(fs, header));
                    break;
                }
            }
            return(morph);
        }