OSDN Git Service

空インタフェース対応
authorOlyutorskii <olyutorskii@users.osdn.me>
Thu, 25 Apr 2013 13:59:20 +0000 (22:59 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Thu, 25 Apr 2013 13:59:20 +0000 (22:59 +0900)
src/main/java/jp/sourceforge/mikutoga/vmd/VmdConst.java
src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdBasicParser.java
src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdCameraParser.java
src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdLightingParser.java
src/main/java/jp/sourceforge/mikutoga/vmd/parser/VmdParser.java

index e2a10c4..a114f0c 100644 (file)
@@ -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;
index 969d9f0..c65f109 100644 (file)
@@ -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);
 
index 2bf60a5..119d599 100644 (file)
@@ -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;
index dddb629..2ef64aa 100644 (file)
@@ -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);
 
index 968c74c..264e787 100644 (file)
@@ -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;
     }