X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fjp%2Fsfjp%2Fmikutoga%2Fpmd%2Fparser%2FPmdParserBase.java;h=e991ad0bb960815fe6009f5e8192de75ecc4fede;hb=a66827c2872c53a9541549da063fdb3c229ac6cc;hp=720114cd5b11a064e531bac5ed5cda09ec1062b7;hpb=73b94c2d12f9a2d12d3e9b831b15620883ab2681;p=mikutoga%2FTogaGem.git diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java index 720114c..e991ad0 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/parser/PmdParserBase.java @@ -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];