OSDN Git Service

空インタフェース対応
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / vmd / parser / VmdLightingParser.java
index 3786c71..2ef64aa 100644 (file)
@@ -8,10 +8,9 @@
 package jp.sourceforge.mikutoga.vmd.parser;
 
 import java.io.IOException;
-import jp.sourceforge.mikutoga.parser.CommonParser;
-import jp.sourceforge.mikutoga.parser.MmdFormatException;
-import jp.sourceforge.mikutoga.parser.MmdSource;
-import jp.sourceforge.mikutoga.vmd.VmdConst;
+import java.io.InputStream;
+import jp.sfjp.mikutoga.bin.parser.CommonParser;
+import jp.sfjp.mikutoga.bin.parser.MmdFormatException;
 
 /**
  * VMDモーションファイルのライティング情報パーサ。
@@ -20,14 +19,14 @@ import jp.sourceforge.mikutoga.vmd.VmdConst;
  */
 class VmdLightingParser extends CommonParser {
 
-    private VmdLightingHandler handler = null;
+    private VmdLightingHandler handler = VmdUnifiedHandler.EMPTY;
 
 
     /**
      * コンストラクタ。
      * @param source 入力ソース
      */
-    VmdLightingParser(MmdSource source){
+    VmdLightingParser(InputStream source){
         super(source);
         return;
     }
@@ -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;
     }
 
@@ -62,28 +66,23 @@ class VmdLightingParser extends CommonParser {
      * @throws MmdFormatException フォーマットエラー
      */
     private void parseVmdLighting() throws IOException, MmdFormatException{
-        int lightMotionNo = parseInteger();
-
-        if(this.handler == null){
-            skip(VmdConst.LUMINOUS_DATA_SZ * lightMotionNo);
-            return;
-        }
+        int lightMotionNo = parseLeInt();
 
         this.handler.loopStart(VmdLightingHandler.LUMINOUS_LIST,
                 lightMotionNo);
 
         for(int ct = 0; ct < lightMotionNo; ct++){
-            int keyFrameNo = parseInteger();
+            int keyFrameNo = parseLeInt();
             this.handler.vmdLuminousMotion(keyFrameNo);
 
-            float rVal = parseFloat();
-            float gVal = parseFloat();
-            float bVal = parseFloat();
+            float rVal = parseLeFloat();
+            float gVal = parseLeFloat();
+            float bVal = parseLeFloat();
             this.handler.vmdLuminousColor(rVal, gVal, bVal);
 
-            float xVec = parseFloat();
-            float yVec = parseFloat();
-            float zVec = parseFloat();
+            float xVec = parseLeFloat();
+            float yVec = parseLeFloat();
+            float zVec = parseLeFloat();
             this.handler.vmdLuminousDirection(xVec, yVec, zVec);
 
             this.handler.loopNext(VmdLightingHandler.LUMINOUS_LIST);
@@ -100,24 +99,19 @@ class VmdLightingParser extends CommonParser {
      * @throws MmdFormatException フォーマットエラー
      */
     private void parseVmdShadow() throws IOException, MmdFormatException{
-        int shadowMotionNo = parseInteger();
-
-        if(this.handler == null){
-            skip(VmdConst.SHADOW_DATA_SZ * shadowMotionNo);
-            return;
-        }
+        int shadowMotionNo = parseLeInt();
 
         this.handler.loopStart(VmdLightingHandler.SHADOW_LIST,
                 shadowMotionNo);
 
         for(int ct = 0; ct < shadowMotionNo; ct++){
-            int keyFrameNo = parseInteger();
+            int keyFrameNo = parseLeInt();
             this.handler.vmdShadowMotion(keyFrameNo);
 
             byte shadowMode = parseByte();
             this.handler.vmdShadowMode(shadowMode);
 
-            float shadowScope = parseFloat();
+            float shadowScope = parseLeFloat();
             this.handler.vmdShadowScopeRaw(shadowScope);
 
             this.handler.loopNext(VmdLightingHandler.SHADOW_LIST);