OSDN Git Service

インタフェース空実装対応
[mikutoga/TogaGem.git] / src / main / java / jp / sfjp / mikutoga / pmd / parser / PmdParserBase.java
index 720114c..e991ad0 100644 (file)
@@ -15,6 +15,8 @@ import jp.sfjp.mikutoga.bin.parser.CommonParser;
 import jp.sfjp.mikutoga.bin.parser.MmdEofException;
 import jp.sfjp.mikutoga.bin.parser.MmdFormatException;
 import jp.sfjp.mikutoga.bin.parser.TextDecoder;
+import jp.sfjp.mikutoga.pmd.PmdLimits;
+import jp.sfjp.mikutoga.pmd.ShadingUtil;
 
 /**
  * PMDモデルファイルのパーサ基本部。
@@ -52,11 +54,11 @@ public class PmdParserBase extends CommonParser {
 
     private final TextDecoder decoderWin31j  = new TextDecoder(CS_WIN31J);
 
-    private PmdBasicHandler basicHandler =       NullHandler.HANDLER;
-    private PmdShapeHandler shapeHandler =       NullHandler.HANDLER;
-    private PmdMaterialHandler materialHandler = NullHandler.HANDLER;
-    private PmdBoneHandler boneHandler =         NullHandler.HANDLER;
-    private PmdMorphHandler morphHandler =       NullHandler.HANDLER;
+    private PmdBasicHandler basicHandler =       PmdUnifiedHandler.EMPTY;
+    private PmdShapeHandler shapeHandler =       PmdUnifiedHandler.EMPTY;
+    private PmdMaterialHandler materialHandler = PmdUnifiedHandler.EMPTY;
+    private PmdBoneHandler boneHandler =         PmdUnifiedHandler.EMPTY;
+    private PmdMorphHandler morphHandler =       PmdUnifiedHandler.EMPTY;
 
     private int boneCount      = -1;
     private int morphCount     = -1;
@@ -93,42 +95,12 @@ public class PmdParserBase extends CommonParser {
     }
 
     /**
-     * シェーディング用ファイル情報から
-     * テクスチャファイル名とスフィアマップファイル名を分離する。
-     * @param shadingFile シェーディング用ファイル情報
-     * @return [0]:テクスチャファイル名 [1]:スフィアマップファイル名。
-     * 該当ファイル名が無い場合は空文字列。
-     */
-    public static String[] splitShadingFileInfo(String shadingFile){
-        String[] result;
-
-        result = shadingFile.split('\\'+"*", 2);
-        assert result.length == 1 || result.length == 2;
-
-        if(result.length == 1){
-            String onlyFile = result[0];
-            result = new String[2];
-            result[0] = "";
-            result[1] = "";
-            if(onlyFile.endsWith(".sph") || onlyFile.endsWith(".spa")){
-                result[1] = onlyFile;
-            }else{
-                result[0] = onlyFile;
-            }
-        }
-
-        assert result.length == 2;
-
-        return result;
-    }
-
-    /**
      * 基本情報通知ハンドラを登録する。
      * @param handler ハンドラ
      */
     public void setBasicHandler(PmdBasicHandler handler){
         if(handler == null){
-            this.basicHandler = NullHandler.HANDLER;
+            this.basicHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.basicHandler = handler;
         }
@@ -141,7 +113,7 @@ public class PmdParserBase extends CommonParser {
      */
     public void setShapeHandler(PmdShapeHandler handler){
         if(handler == null){
-            this.shapeHandler = NullHandler.HANDLER;
+            this.shapeHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.shapeHandler = handler;
         }
@@ -154,7 +126,7 @@ public class PmdParserBase extends CommonParser {
      */
     public void setMaterialHandler(PmdMaterialHandler handler){
         if(handler == null){
-            this.materialHandler = NullHandler.HANDLER;
+            this.materialHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.materialHandler = handler;
         }
@@ -167,7 +139,7 @@ public class PmdParserBase extends CommonParser {
      */
     public void setBoneHandler(PmdBoneHandler handler){
         if(handler == null){
-            this.boneHandler = NullHandler.HANDLER;
+            this.boneHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.boneHandler = handler;
         }
@@ -180,7 +152,7 @@ public class PmdParserBase extends CommonParser {
      */
     public void setMorphHandler(PmdMorphHandler handler){
         if(handler == null){
-            this.morphHandler = NullHandler.HANDLER;
+            this.morphHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.morphHandler = handler;
         }
@@ -384,7 +356,7 @@ public class PmdParserBase extends CommonParser {
 
             String shadingFile =
                     parsePmdText(PmdLimits.MAXBYTES_TEXTUREFILENAME);
-            String[] splitted = splitShadingFileInfo(shadingFile);
+            String[] splitted = ShadingUtil.splitShadingFileInfo(shadingFile);
             String textureFile = splitted[0];
             String sphereFile  = splitted[1];