From 90d9e42204acd76cdea8f6fa1ed8712b7c398beb Mon Sep 17 00:00:00 2001 From: Olyutorskii Date: Thu, 25 Apr 2013 22:59:20 +0900 Subject: [PATCH] =?utf8?q?=E7=A9=BA=E3=82=A4=E3=83=B3=E3=82=BF=E3=83=95?= =?utf8?q?=E3=82=A7=E3=83=BC=E3=82=B9=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../java/jp/sourceforge/mikutoga/vmd/VmdConst.java | 25 ----------------- .../mikutoga/vmd/parser/VmdBasicParser.java | 32 ++++++---------------- .../mikutoga/vmd/parser/VmdCameraParser.java | 25 +++++------------ .../mikutoga/vmd/parser/VmdLightingParser.java | 20 +++++--------- .../sourceforge/mikutoga/vmd/parser/VmdParser.java | 18 ++++++------ 5 files changed, 33 insertions(+), 87 deletions(-) diff --git a/src/main/java/jp/sourceforge/mikutoga/vmd/VmdConst.java b/src/main/java/jp/sourceforge/mikutoga/vmd/VmdConst.java index e2a10c4..a114f0c 100644 --- a/src/main/java/jp/sourceforge/mikutoga/vmd/VmdConst.java +++ b/src/main/java/jp/sourceforge/mikutoga/vmd/VmdConst.java @@ -50,31 +50,6 @@ public final class VmdConst { */ public static final String MORPHNAME_BASE = "base"; - /** - * ボーンモーションデータの個別サイズ。バイト単位。 - */ - public static final int BONEMOTION_DATA_SZ = 111; - - /** - * モーフデータの個別サイズ。バイト単位。 - */ - public static final int MORPH_DATA_SZ = 23; - - /** - * カメラデータの個別サイズ。バイト単位。 - */ - public static final int CAMERA_DATA_SZ = 61; - - /** - * 光源データの個別サイズ。バイト単位。 - */ - public static final int LUMINOUS_DATA_SZ = 28; - - /** - * 影演出データの個別サイズ。バイト単位。 - */ - public static final int SHADOW_DATA_SZ = 9; - private static final Charset CS_ASCII = Charset.forName("US-ASCII"); private static final byte[] MAGIC_BYTES; diff --git a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdBasicParser.java b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdBasicParser.java index 969d9f0..c65f109 100644 --- a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdBasicParser.java +++ b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdBasicParser.java @@ -43,7 +43,7 @@ class VmdBasicParser extends CommonParser{ private final byte[] motionIntplt = new byte[BZTOTAL_SIZE]; - private VmdBasicHandler handler = null; + private VmdBasicHandler handler = VmdUnifiedHandler.EMPTY; private boolean hasStageActName = false; private boolean strictMode = true; @@ -73,7 +73,12 @@ class VmdBasicParser extends CommonParser{ * @param basicHandler ハンドラ */ void setBasicHandler(VmdBasicHandler basicHandler){ - this.handler = basicHandler; + if(basicHandler == null){ + this.handler = VmdUnifiedHandler.EMPTY; + }else{ + this.handler = basicHandler; + } + return; } @@ -139,9 +144,7 @@ class VmdBasicParser extends CommonParser{ throw new MmdFormatException("unknown VMD-header type"); } - if(this.handler != null){ - this.handler.vmdHeaderInfo(header); - } + this.handler.vmdHeaderInfo(header); return; } @@ -158,9 +161,7 @@ class VmdBasicParser extends CommonParser{ this.hasStageActName = true; } - if(this.handler != null){ - this.handler.vmdModelName(modelName); - } + this.handler.vmdModelName(modelName); return; } @@ -174,11 +175,6 @@ class VmdBasicParser extends CommonParser{ throws IOException, MmdFormatException{ int boneMotionNo = parseLeInt(); - if(this.handler == null){ - skip(VmdConst.BONEMOTION_DATA_SZ * boneMotionNo); - return; - } - this.handler.loopStart( VmdBasicHandler.BONEMOTION_LIST, boneMotionNo); @@ -215,11 +211,6 @@ class VmdBasicParser extends CommonParser{ */ private void parseVmdMotionInterpolation() throws IOException, MmdFormatException{ - if(this.handler == null){ - skip(this.motionIntplt.length); - return; - } - parseByteArray(this.motionIntplt); if(this.strictMode){ @@ -306,11 +297,6 @@ class VmdBasicParser extends CommonParser{ private void parseVmdMorph() throws IOException, MmdFormatException{ int morphMotionNo = parseLeInt(); - if(this.handler == null){ - skip(VmdConst.MORPH_DATA_SZ * morphMotionNo); - return; - } - this.handler.loopStart( VmdBasicHandler.MORPH_LIST, morphMotionNo); diff --git a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdCameraParser.java b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdCameraParser.java index 2bf60a5..119d599 100644 --- a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdCameraParser.java +++ b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdCameraParser.java @@ -11,7 +11,6 @@ import java.io.IOException; import java.io.InputStream; import jp.sfjp.mikutoga.bin.parser.CommonParser; import jp.sfjp.mikutoga.bin.parser.MmdFormatException; -import jp.sourceforge.mikutoga.vmd.VmdConst; /** * VMDモーションファイルのカメラモーションパーサ。 @@ -26,7 +25,7 @@ class VmdCameraParser extends CommonParser{ private final byte[] xyzIntplt = new byte[BZXYZ_SIZE]; private final byte[] etcIntplt = new byte[BZETC_SIZE]; - private VmdCameraHandler handler = null; + private VmdCameraHandler handler = VmdUnifiedHandler.EMPTY; /** @@ -44,7 +43,12 @@ class VmdCameraParser extends CommonParser{ * @param cameraHandler ハンドラ */ void setCameraHandler(VmdCameraHandler cameraHandler){ - this.handler = cameraHandler; + if(cameraHandler == null){ + this.handler = VmdUnifiedHandler.EMPTY; + }else{ + this.handler = cameraHandler; + } + return; } @@ -56,11 +60,6 @@ class VmdCameraParser extends CommonParser{ void parse() throws IOException, MmdFormatException { int cameraMotionNo = parseLeInt(); - if(this.handler == null){ - skip(VmdConst.CAMERA_DATA_SZ * cameraMotionNo); - return; - } - this.handler.loopStart(VmdCameraHandler.CAMERA_LIST, cameraMotionNo); for(int ct = 0; ct < cameraMotionNo; ct++){ @@ -102,11 +101,6 @@ class VmdCameraParser extends CommonParser{ */ private void parseCameraXyzInterpolation() throws IOException, MmdFormatException{ - if(this.handler == null){ - skip(this.xyzIntplt.length); - return; - } - parseByteArray(this.xyzIntplt); int idx = 0; @@ -142,11 +136,6 @@ class VmdCameraParser extends CommonParser{ */ private void parseCameraEtcInterpolation() throws IOException, MmdFormatException{ - if(this.handler == null){ - skip(this.etcIntplt.length); - return; - } - parseByteArray(this.etcIntplt); int idx = 0; diff --git a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdLightingParser.java b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdLightingParser.java index dddb629..2ef64aa 100644 --- a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdLightingParser.java +++ b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdLightingParser.java @@ -11,7 +11,6 @@ import java.io.IOException; import java.io.InputStream; import jp.sfjp.mikutoga.bin.parser.CommonParser; import jp.sfjp.mikutoga.bin.parser.MmdFormatException; -import jp.sourceforge.mikutoga.vmd.VmdConst; /** * VMDモーションファイルのライティング情報パーサ。 @@ -20,7 +19,7 @@ import jp.sourceforge.mikutoga.vmd.VmdConst; */ class VmdLightingParser extends CommonParser { - private VmdLightingHandler handler = null; + private VmdLightingHandler handler = VmdUnifiedHandler.EMPTY; /** @@ -38,7 +37,12 @@ class VmdLightingParser extends CommonParser { * @param lightingHandler ハンドラ */ void setLightingHandler(VmdLightingHandler lightingHandler){ - this.handler = lightingHandler; + if(lightingHandler == null){ + this.handler = VmdUnifiedHandler.EMPTY; + }else{ + this.handler = lightingHandler; + } + return; } @@ -64,11 +68,6 @@ class VmdLightingParser extends CommonParser { private void parseVmdLighting() throws IOException, MmdFormatException{ int lightMotionNo = parseLeInt(); - if(this.handler == null){ - skip(VmdConst.LUMINOUS_DATA_SZ * lightMotionNo); - return; - } - this.handler.loopStart(VmdLightingHandler.LUMINOUS_LIST, lightMotionNo); @@ -102,11 +101,6 @@ class VmdLightingParser extends CommonParser { private void parseVmdShadow() throws IOException, MmdFormatException{ int shadowMotionNo = parseLeInt(); - if(this.handler == null){ - skip(VmdConst.SHADOW_DATA_SZ * shadowMotionNo); - return; - } - this.handler.loopStart(VmdLightingHandler.SHADOW_LIST, shadowMotionNo); diff --git a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdParser.java b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdParser.java index 968c74c..264e787 100644 --- a/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdParser.java +++ b/src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdParser.java @@ -22,7 +22,7 @@ public class VmdParser { private final VmdCameraParser cameraParser; private final VmdLightingParser lightingParser; - private VmdBasicHandler basicHandler = null; + private VmdBasicHandler basicHandler = VmdUnifiedHandler.EMPTY; private boolean strictMode = true; @@ -59,7 +59,13 @@ public class VmdParser { */ public void setBasicHandler(VmdBasicHandler handler){ this.basicParser.setBasicHandler(handler); - this.basicHandler = handler; + + if(handler == null){ + this.basicHandler = VmdUnifiedHandler.EMPTY; + }else{ + this.basicHandler = handler; + } + return; } @@ -103,16 +109,12 @@ public class VmdParser { * @throws MmdFormatException フォーマットエラー */ public void parseVmd() throws IOException, MmdFormatException { - if(this.basicHandler != null){ - this.basicHandler.vmdParseStart(); - } + this.basicHandler.vmdParseStart(); parseBody(); boolean hasMoreData = this.lightingParser.hasMore(); - if(this.basicHandler != null){ - this.basicHandler.vmdParseEnd(hasMoreData); - } + this.basicHandler.vmdParseEnd(hasMoreData); return; } -- 2.11.0