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モデルファイルのパーサ基本部。
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;
}
/**
- * シェーディング用ファイル情報から
- * テクスチャファイル名とスフィアマップファイル名を分離する。
- * @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;
}
*/
public void setShapeHandler(PmdShapeHandler handler){
if(handler == null){
- this.shapeHandler = NullHandler.HANDLER;
+ this.shapeHandler = PmdUnifiedHandler.EMPTY;
}else{
this.shapeHandler = handler;
}
*/
public void setMaterialHandler(PmdMaterialHandler handler){
if(handler == null){
- this.materialHandler = NullHandler.HANDLER;
+ this.materialHandler = PmdUnifiedHandler.EMPTY;
}else{
this.materialHandler = handler;
}
*/
public void setBoneHandler(PmdBoneHandler handler){
if(handler == null){
- this.boneHandler = NullHandler.HANDLER;
+ this.boneHandler = PmdUnifiedHandler.EMPTY;
}else{
this.boneHandler = handler;
}
*/
public void setMorphHandler(PmdMorphHandler handler){
if(handler == null){
- this.morphHandler = NullHandler.HANDLER;
+ this.morphHandler = PmdUnifiedHandler.EMPTY;
}else{
this.morphHandler = handler;
}
String shadingFile =
parsePmdText(PmdLimits.MAXBYTES_TEXTUREFILENAME);
- String[] splitted = splitShadingFileInfo(shadingFile);
+ String[] splitted = ShadingUtil.splitShadingFileInfo(shadingFile);
String textureFile = splitted[0];
String sphereFile = splitted[1];