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 jp.sfjp.mikutoga.xml.SaxAttr;
18 import org.xml.sax.Attributes;
21 * 照明・シャドウ関連のXML要素出現イベントを受信する。
23 class SaxLightingListener extends SaxVmdListener{
25 private LuminousMotion currentLuminous = null;
31 SaxLightingListener(){
39 * @param tag {@inheritDoc}
40 * @param attr {@inheritDoc}
43 void openTag(VmdTag tag, Attributes attr){
52 openLumiDirection(attr);
66 * @param tag {@inheritDoc}
69 void closeTag(VmdTag tag){
70 if(tag == VmdTag.LUMINOUS_ACT){
80 private void openLumiAct(Attributes attr){
81 this.currentLuminous = new LuminousMotion();
83 int frameNo = SaxAttr.getIntAttr(attr, XmlAttr.ATTR_FRAME);
84 this.currentLuminous.setFrameNumber(frameNo);
92 private void closeLumiAct(){
93 VmdMotion motion = getVmdMotion();
94 List<LuminousMotion> lumiList = motion.getLuminousMotionList();
95 lumiList.add(this.currentLuminous);
97 this.currentLuminous = null;
106 private void openLumiColor(Attributes attr){
107 LuminousColor color = this.currentLuminous.getColor();
109 float rCol = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_R_COL);
110 float gCol = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_G_COL);
111 float bCol = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_B_COL);
121 * lumiDirection要素開始の通知。
124 private void openLumiDirection(Attributes attr){
125 MkVec3D vec = this.currentLuminous.getDirection();
127 float xVec = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_X_VEC);
128 float yVec = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_Y_VEC);
129 float zVec = SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_Z_VEC);
142 private void openShadowAct(Attributes attr){
143 ShadowMotion shadowMotion = new ShadowMotion();
145 int frameNo = SaxAttr.getIntAttr(attr, XmlAttr.ATTR_FRAME);
146 shadowMotion.setFrameNumber(frameNo);
149 SaxAttr.getFloatAttr(attr, XmlAttr.ATTR_RAW_PARAM);
150 shadowMotion.setRawScopeParam(rawParam);
153 SaxAttr.getStringAttr(attr, XmlAttr.ATTR_MODE);
154 ShadowMode mode = ShadowMode.valueOf(modeAttr);
155 shadowMotion.setShadowMode(mode);
157 VmdMotion motion = getVmdMotion();
158 List<ShadowMotion> shadowList = motion.getShadowMotionList();
159 shadowList.add(shadowMotion);