OSDN Git Service

モデルデータ不備の異常系を別パッケージに
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / vmd / model / binio / VmdLoader.java
1 /*
2  * VMD loader
3  *
4  * License : The MIT License
5  * Copyright(c) 2011 MikuToga Partners
6  */
7
8 package jp.sourceforge.mikutoga.vmd.model.binio;
9
10 import java.io.IOException;
11 import jp.sourceforge.mikutoga.parser.MmdFormatException;
12 import jp.sourceforge.mikutoga.parser.MmdSource;
13 import jp.sourceforge.mikutoga.vmd.model.VmdMotion;
14 import jp.sourceforge.mikutoga.vmd.parser.VmdParser;
15
16 /**
17  * VMDモーションファイルを読み込むためのバイナリローダ。
18  */
19 public final class VmdLoader {
20
21     /**
22      * コンストラクタ。
23      */
24     private VmdLoader(){
25         super();
26         assert false;
27         throw new AssertionError();
28     }
29
30
31     /**
32      * VMDファイルの読み込みを行いモーション情報を返す。
33      * @param source 入力ソース
34      * @return モーション情報
35      * @throws IOException 入力エラー
36      * @throws MmdFormatException VMDファイルフォーマットの異常を検出
37      */
38     public static VmdMotion load(MmdSource source)
39             throws IOException,
40                    MmdFormatException {
41         VmdParser parser = new VmdParser(source);
42
43         VmdMotion result = new VmdMotion();
44
45         BasicLoader basicBuilder       = new BasicLoader(result);
46         CameraLoader cameraBuilder     = new CameraLoader(result);
47         LightingLoader lightingBuilder = new LightingLoader(result);
48
49         parser.setBasicHandler(basicBuilder);
50         parser.setCameraHandler(cameraBuilder);
51         parser.setLightingHandler(lightingBuilder);
52
53         parser.parseVmd();
54
55         return result;
56     }
57
58 }