-/*\r
- * PMD file loader\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2010 MikuToga Partners\r
- */\r
-\r
-package jp.sourceforge.mikutoga.pmd.pmdloader;\r
-\r
-import java.io.IOException;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import jp.sourceforge.mikutoga.parser.MmdFormatException;\r
-import jp.sourceforge.mikutoga.parser.MmdSource;\r
-import jp.sourceforge.mikutoga.parser.pmd.PmdParser;\r
-import jp.sourceforge.mikutoga.pmd.MorphPart;\r
-import jp.sourceforge.mikutoga.pmd.PmdModel;\r
-\r
-/**\r
- * PMDモデルファイルを読み込むためのローダ。\r
- */\r
-public class PmdLoader {\r
-\r
- private PmdModel model;\r
- private PmdParser parser;\r
- private TextBuilder textBuilder;\r
-\r
- private boolean loaded = false;\r
- private boolean hasMoreData = false;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param source PMDファイル入力ソース\r
- */\r
- public PmdLoader(MmdSource source){\r
- super();\r
-\r
- this.model = new PmdModel();\r
- this.parser = new PmdParser(source);\r
- this.textBuilder = new TextBuilder(this.model);\r
-\r
- setHandler();\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * パーサに各種ハンドラの設定を行う。\r
- */\r
- private void setHandler(){\r
- ShapeBuilder shapeBuilder = new ShapeBuilder(this.model);\r
- MaterialBuilder materialBuilder = new MaterialBuilder(this.model);\r
- BoneBuilder boneBuilder = new BoneBuilder(this.model);\r
- MorphBuilder morphBuilder = new MorphBuilder(this.model);\r
- ToonBuilder toonBuilder = new ToonBuilder(this.model);\r
- RigidBuilder rigidBuilder = new RigidBuilder(this.model);\r
- JointBuilder jointBuilder = new JointBuilder(this.model);\r
-\r
- this.parser.setBasicHandler(this.textBuilder);\r
- this.parser.setShapeHandler(shapeBuilder);\r
- this.parser.setMaterialHandler(materialBuilder);\r
- this.parser.setBoneHandler(boneBuilder);\r
- this.parser.setMorphHandler(morphBuilder);\r
- this.parser.setEngHandler(this.textBuilder);\r
- this.parser.setToonHandler(toonBuilder);\r
- this.parser.setRigidHandler(rigidBuilder);\r
- this.parser.setJointHandler(jointBuilder);\r
-\r
- List<MorphPart> morphPartList = new ArrayList<MorphPart>();\r
- morphBuilder.setMorphPartList(morphPartList);\r
- this.textBuilder.setMorphPartList(morphPartList);\r
- morphPartList.clear();\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * PMDファイルの読み込みを行いモデル情報を返す。\r
- * 1インスタンスにつき一度しかロードできない。\r
- * @return モデル情報\r
- * @throws IOException 入力エラー\r
- * @throws MmdFormatException PMDファイルフォーマットの異常を検出\r
- * @throws IllegalStateException このインスタンスで再度のロードを試みた。\r
- */\r
- public PmdModel load()\r
- throws IOException,\r
- MmdFormatException,\r
- IllegalStateException {\r
- if(this.loaded) throw new IllegalStateException();\r
-\r
- PmdModel result;\r
- try{\r
- this.parser.parsePmd();\r
- }finally{\r
- this.loaded = true;\r
-\r
- result = this.model;\r
- this.hasMoreData = this.textBuilder.hasMoreData();\r
-\r
- this.model = null;\r
- this.parser = null;\r
- this.textBuilder = null;\r
- }\r
-\r
- return result;\r
- }\r
-\r
- /**\r
- * ロード処理が正常終了したのにまだ読み込んでいない部分が放置されているか判定する。\r
- * MMDでの仕様拡張によるPMDファイルフォーマットの拡張が行われた場合を想定。\r
- * @return 読み込んでいない部分があればtrue\r
- */\r
- public boolean hasMoreData(){\r
- return this.hasMoreData;\r
- }\r
-\r
-}\r
+/*
+ * PMD file loader
+ *
+ * License : The MIT License
+ * Copyright(c) 2010 MikuToga Partners
+ */
+
+package jp.sourceforge.mikutoga.pmd.pmdloader;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import jp.sourceforge.mikutoga.parser.MmdFormatException;
+import jp.sourceforge.mikutoga.parser.MmdSource;
+import jp.sourceforge.mikutoga.pmd.model.MorphPart;
+import jp.sourceforge.mikutoga.pmd.model.PmdModel;
+import jp.sourceforge.mikutoga.pmd.parser.PmdParser;
+
+/**
+ * PMDモデルファイルを読み込むためのローダ。
+ */
+public class PmdLoader {
+
+ private PmdModel model;
+ private PmdParser parser;
+ private TextBuilder textBuilder;
+
+ private boolean loaded = false;
+ private boolean hasMoreData = false;
+
+ /**
+ * コンストラクタ。
+ * @param source PMDファイル入力ソース
+ */
+ public PmdLoader(MmdSource source){
+ super();
+
+ this.model = new PmdModel();
+ this.parser = new PmdParser(source);
+ this.textBuilder = new TextBuilder(this.model);
+
+ setHandler();
+
+ return;
+ }
+
+ /**
+ * パーサに各種ハンドラの設定を行う。
+ */
+ private void setHandler(){
+ ShapeBuilder shapeBuilder = new ShapeBuilder(this.model);
+ MaterialBuilder materialBuilder = new MaterialBuilder(this.model);
+ BoneBuilder boneBuilder = new BoneBuilder(this.model);
+ MorphBuilder morphBuilder = new MorphBuilder(this.model);
+ ToonBuilder toonBuilder = new ToonBuilder(this.model);
+ RigidBuilder rigidBuilder = new RigidBuilder(this.model);
+ JointBuilder jointBuilder = new JointBuilder(this.model);
+
+ this.parser.setBasicHandler(this.textBuilder);
+ this.parser.setShapeHandler(shapeBuilder);
+ this.parser.setMaterialHandler(materialBuilder);
+ this.parser.setBoneHandler(boneBuilder);
+ this.parser.setMorphHandler(morphBuilder);
+ this.parser.setEngHandler(this.textBuilder);
+ this.parser.setToonHandler(toonBuilder);
+ this.parser.setRigidHandler(rigidBuilder);
+ this.parser.setJointHandler(jointBuilder);
+
+ List<MorphPart> morphPartList = new ArrayList<MorphPart>();
+ morphBuilder.setMorphPartList(morphPartList);
+ this.textBuilder.setMorphPartList(morphPartList);
+ morphPartList.clear();
+
+ return;
+ }
+
+ /**
+ * PMDファイルの読み込みを行いモデル情報を返す。
+ * 1インスタンスにつき一度しかロードできない。
+ * @return モデル情報
+ * @throws IOException 入力エラー
+ * @throws MmdFormatException PMDファイルフォーマットの異常を検出
+ * @throws IllegalStateException このインスタンスで再度のロードを試みた。
+ */
+ public PmdModel load()
+ throws IOException,
+ MmdFormatException,
+ IllegalStateException {
+ if(this.loaded) throw new IllegalStateException();
+
+ PmdModel result;
+ try{
+ this.parser.parsePmd();
+ }finally{
+ this.loaded = true;
+
+ result = this.model;
+ this.hasMoreData = this.textBuilder.hasMoreData();
+
+ this.model = null;
+ this.parser = null;
+ this.textBuilder = null;
+ }
+
+ return result;
+ }
+
+ /**
+ * ロード処理が正常終了したのにまだ読み込んでいない部分が放置されているか判定する。
+ * MMDでの仕様拡張によるPMDファイルフォーマットの拡張が行われた場合を想定。
+ * @return 読み込んでいない部分があればtrue
+ */
+ public boolean hasMoreData(){
+ return this.hasMoreData;
+ }
+
+}