void doExport() { // メニューファイル作成 menuFile.basePath = basePath; menuFile.outputPath = outputPath; menuFile.allowOverwrite = allowOverride; menuFile.allowSamename = allowSamename; // アイテム削除の反映 menuFile.items = new List <string>(); foreach (var key in delItems.Keys) { if (delItems[key]) { menuFile.items.Add(Params.GetDelMenu(key)); } } // ノード消去・表示の反映 menuFile.delNodes = new List <string>(); menuFile.showNodes = new List <string>(); foreach (var key in nodes.Keys) { switch (nodes[key]) { case 1: //消去 menuFile.delNodes.Add(key); break; case 2: //表示 menuFile.showNodes.Add(key); break; } } menuFile.maskItems = new List <string>(); foreach (var key in masks.Keys) { if (masks[key]) { menuFile.maskItems.Add(key); } } menuFile.materials = new List <string[]>(); menuFile.addItems = new List <string[]>(); if (filenameType == 1) { // プリフィクスからファイル名を設定 menuFile.filename = Params.GetFilename(Params.FileType.menu, filenamePrefix); menuFile.icons = Params.GetFilename(Params.FileType.icon, filenamePrefix); if (mateFiles != null) { foreach (var mate in mateFiles) { if (mate.export) { if (mateFiles.Count() == 1) { mate.filename = Params.GetFilename(Params.FileType.mate, filenamePrefix); } else { mate.filename = Params.GetFilename(Params.FileType.mate, filenamePrefix, mate.matno); } } menuFile.materials.Add(new string[] { mate.slotname, mate.matno.ToString(), mate.FilenameWithExtension }); } } foreach (var resource in menuFile.resources) { switch (resource[0]) { case MenuFile.ResourceMekureString: resource[1] = Params.GetFilename(Params.FileType.mekureMenu, filenamePrefix); break; case MenuFile.ResourceMekureBackString: resource[1] = Params.GetFilename(Params.FileType.mekureBackMenu, filenamePrefix); break; case MenuFile.ResourceZurashiString: resource[1] = Params.GetFilename(Params.FileType.zurashiMenu, filenamePrefix); break; } } if (addItems != null) { for (int i = 0; i < addItems.Count(); i++) { var model = addItems[i]; if (model.export) { if (addItems.Count() == 1) { model.filename = Params.GetFilename(Params.FileType.model, filenamePrefix); } else { model.filename = Params.GetFilename(Params.FileType.model, filenamePrefix, i); } } string[] item; switch (model.addItemType) { case ModelFile.AddItemType.attach: item = new string[] { model.FilenameWithExtension, model.slotname, MenuFile.AttachString, model.attachSlot, model.attachName }; break; case ModelFile.AddItemType.attachBone: item = new string[] { model.FilenameWithExtension, model.slotname, MenuFile.AttachBoneString, model.attachName }; break; default: item = new string[] { model.FilenameWithExtension, model.slotname }; break; } menuFile.addItems.Add(item); } } } else { // 指定したファイル名を使用する // マテリアル if (mateFiles != null) { foreach (var mate in mateFiles) { menuFile.materials.Add(new string[] { mate.category, mate.matno.ToString(), mate.FilenameWithExtension }); } } // additem(モデル) if (addItems != null) { foreach (var model in addItems) { menuFile.addItems.Add(new string[] { model.FilenameWithExtension, model.category }); } } } // menu書き出し menuFile.WriteMenu(); // アイコン if (menuFile.iconFile != null) { menuFile.iconFile.basePath = basePath; menuFile.iconFile.outputPath = menuFile.outputPath; menuFile.iconFile.category = menuFile.category; menuFile.iconFile.basename = menuFile.basename; menuFile.iconFile.filename = menuFile.icons; menuFile.iconFile.allowOverwrite = allowOverride; menuFile.iconFile.allowSamename = allowSamename; menuFile.iconFile.WriteTex(); } // マテリアル if (mateFiles != null) { foreach (var mate in mateFiles) { if (!mate.export) { continue; } mate.basePath = basePath; mate.outputPath = menuFile.outputPath; mate.name = mate.FilenameWithoutExtension; mate.allowOverwrite = allowOverride; mate.allowSamename = allowSamename; int count = 0; foreach (var key in mate.texs.Keys) { var tex = mate.texs[key]; if (!tex.export || tex.texFile == null || tex.type != TexParams.TexTypeTex2d) { continue; } tex.texFile.basePath = basePath; tex.texFile.outputPath = menuFile.outputPath; tex.texFile.allowOverwrite = allowOverride; tex.texFile.allowSamename = allowSamename; if (filenameType == 1) { if (mate.texs.Count() == 1) { tex.texFile.filename = Params.GetFilename(Params.FileType.tex, filenamePrefix + key); } else { tex.texFile.filename = Params.GetFilename(Params.FileType.tex, filenamePrefix + key, count); } } tex.filename = tex.texFile.FilenameWithoutExtension; tex.texFile.category = mate.category; tex.texFile.basename = mate.basename; tex.texFile.WriteTex(); count++; } if (mate.pmatFile != null && mate.pmatFile.export) { if (filenameType == 1) { mate.pmatFile.basePath = basePath; mate.pmatFile.outputPath = menuFile.outputPath; mate.pmatFile.allowOverwrite = allowOverride; mate.pmatFile.allowSamename = allowSamename; mate.pmatFile.filename = Params.GetFilename(Params.FileType.pmat, mate.FilenameWithoutExtension); } mate.pmatFile.name = mate.pmatFile.filename; mate.pmatFile.WritePmat(); } // mate書き出し mate.WriteMate(); } } // モデル if (addItems != null) { foreach (var model in addItems) { if (model.export) { // 対象のもののみ書き出し model.basePath = basePath; model.outputPath = menuFile.outputPath; model.allowOverwrite = allowOverride; model.allowSamename = allowSamename; model.WriteModel(); } } } NDebug.MessageBox("エクスポート", "エクスポート完了しました。"); }