2 * lighting listener from XML
4 * License : The MIT License
5 * Copyright(c) 2013 MikuToga Partners
8 package jp.sfjp.mikutoga.vmd.model.xml;
10 import java.util.List;
11 import jp.sfjp.mikutoga.math.MkVec3D;
12 import jp.sfjp.mikutoga.vmd.model.LuminousColor;
13 import jp.sfjp.mikutoga.vmd.model.LuminousMotion;
14 import jp.sfjp.mikutoga.vmd.model.ShadowMode;
15 import jp.sfjp.mikutoga.vmd.model.ShadowMotion;
16 import jp.sfjp.mikutoga.vmd.model.VmdMotion;
17 import org.xml.sax.Attributes;
20 * 照明・シャドウ関連のXML要素出現イベントを受信する。
22 class SaxLightingListener extends SaxVmdListener{
24 private LuminousMotion currentLuminous = null;
30 SaxLightingListener(){
38 * @param tag {@inheritDoc}
39 * @param attr {@inheritDoc}
42 void openTag(VmdTag tag, Attributes attr){
51 openLumiDirection(attr);
65 * @param tag {@inheritDoc}
68 void closeTag(VmdTag tag){
69 if(tag == VmdTag.LUMINOUS_ACT){
79 private void openLumiAct(Attributes attr){
80 this.currentLuminous = new LuminousMotion();
82 int frameNo = SaxAttr.getIntAttr(attr, XmlAttr.ATTR_FRAME);
83 this.currentLuminous.setFrameNumber(frameNo);
91 private void closeLumiAct(){
92 VmdMotion motion = getVmdMotion();
93 List<LuminousMotion> lumiList = motion.getLuminousMotionList();
94 lumiList.add(this.currentLuminous);
96 this.currentLuminous = null;
105 private void openLumiColor(Attributes attr){
106 LuminousColor color = this.currentLuminous.getColor();
108 float rCol = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_R_COL);
109 float gCol = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_G_COL);
110 float bCol = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_B_COL);
120 * lumiDirection要素開始の通知。
123 private void openLumiDirection(Attributes attr){
124 MkVec3D vec = this.currentLuminous.getDirection();
126 float xVec = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_X_VEC);
127 float yVec = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_Y_VEC);
128 float zVec = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_Z_VEC);
141 private void openShadowAct(Attributes attr){
142 ShadowMotion shadowMotion = new ShadowMotion();
144 int frameNo = SaxAttr.getIntAttr(attr, XmlAttr.ATTR_FRAME);
145 shadowMotion.setFrameNumber(frameNo);
148 SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_RAW_PARAM);
149 shadowMotion.setRawScopeParam(rawParam);
152 SaxAttr.getStringAttr(attr, XmlAttr.ATTR_MODE);
153 ShadowMode mode = ShadowMode.valueOf(modeAttr);
154 shadowMotion.setShadowMode(mode);
156 VmdMotion motion = getVmdMotion();
157 List<ShadowMotion> shadowList = motion.getShadowMotionList();
158 shadowList.add(shadowMotion);