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モーションファイルのライティング情報パーサ。
*/
class VmdLightingParser extends CommonParser {
- private VmdLightingHandler handler = null;
+ private VmdLightingHandler handler = VmdUnifiedHandler.EMPTY;
/**
* コンストラクタ。
* @param source 入力ソース
*/
- VmdLightingParser(MmdSource source){
+ VmdLightingParser(InputStream source){
super(source);
return;
}
* @param lightingHandler ハンドラ
*/
void setLightingHandler(VmdLightingHandler lightingHandler){
- this.handler = lightingHandler;
+ if(lightingHandler == null){
+ this.handler = VmdUnifiedHandler.EMPTY;
+ }else{
+ this.handler = lightingHandler;
+ }
+
return;
}
* @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);
* @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);