OSDN Git Service

update v0.37 for mqx BoneDeformer.
[tdcgexplorer/tso2mqo.git] / MqoGenerator.cs
1 using System;\r
2 using System.Collections.Generic;\r
3 using System.Text;\r
4 using System.IO;\r
5 \r
6 namespace Tso2MqoGui\r
7 {\r
8     public class MqoGenerator\r
9     {\r
10         public TSOFile LoadTSO(string file)\r
11         {\r
12             TSOFile tso = new TSOFile(file);\r
13             tso.ReadAll();\r
14             return tso;\r
15         }\r
16 \r
17         public void Generate(string tso_file, string out_path, MqoBoneMode bone_mode)\r
18         {\r
19             string tso_filename = Path.GetFileName(tso_file);\r
20             string mqo_file = Path.Combine(out_path, Path.ChangeExtension(tso_filename, ".mqo"));\r
21             string xml_file = Path.Combine(out_path, Path.ChangeExtension(tso_filename, ".xml"));\r
22 \r
23             // モデル、テクスチャの作成\r
24             using (MqoWriter mqo = new MqoWriter(mqo_file))\r
25             {\r
26                 TSOFile tso = LoadTSO(tso_file);\r
27                 tso.SwitchBoneIndicesOnMesh();\r
28 \r
29                 mqo.BoneMode = bone_mode;\r
30 \r
31                 mqo.Write(tso);\r
32                 mqo.Close();\r
33 \r
34                 ImportInfo ii = new ImportInfo();\r
35 \r
36                 // テクスチャ情報\r
37                 foreach (TSOTex tex in tso.textures)\r
38                     ii.textures.Add(new ImportTextureInfo(tex));\r
39 \r
40                 // エフェクトの作成\r
41                 foreach (TSOEffect effect in tso.effects)\r
42                 {\r
43                     ii.effects.Add(new ImportEffectInfo(effect));\r
44                     File.WriteAllText(Path.Combine(out_path, effect.Name), effect.code, Encoding.Default);\r
45                 }\r
46 \r
47                 // マテリアルの作成\r
48                 foreach (TSOMaterial mat in tso.materials)\r
49                 {\r
50                     ii.materials.Add(new ImportMaterialInfo(mat));\r
51                     File.WriteAllText(Path.Combine(out_path, mat.Name), mat.code, Encoding.Default);\r
52                 }\r
53 \r
54                 ImportInfo.Save(xml_file, ii);\r
55             }\r
56         }\r
57     }\r
58 }\r