2 * lighting xml exporter
4 * License : The MIT License
5 * Copyright(c) 2013 MikuToga Partners
8 package jp.sourceforge.mikutoga.vmd.model.xml;
10 import java.io.IOException;
11 import java.util.List;
12 import jp.sfjp.mikutoga.math.MkVec3D;
13 import jp.sfjp.mikutoga.vmd.model.LuminousColor;
14 import jp.sfjp.mikutoga.vmd.model.LuminousMotion;
15 import jp.sfjp.mikutoga.vmd.model.ShadowMode;
16 import jp.sfjp.mikutoga.vmd.model.ShadowMotion;
17 import jp.sfjp.mikutoga.vmd.model.VmdMotion;
18 import jp.sourceforge.mikutoga.xml.ProxyXmlExporter;
19 import jp.sourceforge.mikutoga.xml.XmlExporter;
22 * ライティング情報のXMLエクスポーター。
24 class LightingXmlExpoter extends ProxyXmlExporter {
30 LightingXmlExpoter(XmlExporter proxy) {
37 * @param vmdMotion 演出データ
38 * @throws IOException 出力エラー
40 void putLuminousSequence(VmdMotion vmdMotion)
42 ind().putSimpleSTag(XmlSyms.TAG_LUMI_SEQUENCE).ln();
45 List<LuminousMotion> list = vmdMotion.getLuminousMotionList();
46 if( ! list.isEmpty() ) ln();
47 for(LuminousMotion luminous : list){
48 putLuminousMotion(luminous);
52 ind().putETag(XmlSyms.TAG_LUMI_SEQUENCE).ln(2);
59 * @param luminousMotion 照明モーション
60 * @throws IOException 出力エラー
62 private void putLuminousMotion(LuminousMotion luminousMotion)
64 ind().putOpenSTag(XmlSyms.TAG_LUMINOUS_ACT).sp();
65 int frameNo = luminousMotion.getFrameNumber();
66 putIntAttr(XmlSyms.ATTR_FRAME, frameNo).sp();
69 LuminousColor color = luminousMotion.getColor();
70 MkVec3D vector = luminousMotion.getDirection();
73 putLuminousColor(color);
74 putLuminousDirection(vector);
77 ind().putETag(XmlSyms.TAG_LUMINOUS_ACT).ln(2);
85 * @throws IOException 出力エラー
87 private void putLuminousColor(LuminousColor color)
89 ind().putOpenSTag(XmlSyms.TAG_LUMI_COLOR).sp();
90 putFloatAttr(XmlSyms.ATTR_R_COL, color.getColR()).sp();
91 putFloatAttr(XmlSyms.ATTR_G_COL, color.getColG()).sp();
92 putFloatAttr(XmlSyms.ATTR_B_COL, color.getColB()).sp();
101 * @throws IOException 出力エラー
103 private void putLuminousDirection(MkVec3D vector)
105 ind().putOpenSTag(XmlSyms.TAG_LUMI_DIRECTION).sp();
106 putFloatAttr(XmlSyms.ATTR_X_VEC, (float) vector.getXVal()).sp();
107 putFloatAttr(XmlSyms.ATTR_Y_VEC, (float) vector.getYVal()).sp();
108 putFloatAttr(XmlSyms.ATTR_Z_VEC, (float) vector.getZVal()).sp();
109 putCloseEmpty().ln();
116 * @param vmdMotion 演出データ
117 * @throws IOException 出力エラー
119 void putShadowSequence(VmdMotion vmdMotion)
121 List<ShadowMotion> list = vmdMotion.getShadowMotionList();
122 if( ! list.isEmpty() ){
123 ind().putBlockComment(XmlSyms.SHADOW_COMMENT);
126 ind().putSimpleSTag(XmlSyms.TAG_SHADOW_SEQUENCE).ln();
129 for(ShadowMotion shadow : list){
130 putShadowMotion(shadow);
134 ind().putETag(XmlSyms.TAG_SHADOW_SEQUENCE).ln(2);
141 * @param shadowMotion シャドウモーション
142 * @throws IOException 出力エラー
144 private void putShadowMotion(ShadowMotion shadowMotion)
146 ind().putOpenSTag(XmlSyms.TAG_SHADOW_ACT).sp();
148 int frameNo = shadowMotion.getFrameNumber();
149 ShadowMode mode = shadowMotion.getShadowMode();
150 float rawParam = (float) shadowMotion.getRawScopeParam();
152 putIntAttr(XmlSyms.ATTR_FRAME, frameNo).sp();
153 putAttr(XmlSyms.ATTR_MODE, mode.name()).sp();
154 putFloatAttr(XmlSyms.ATTR_RAW_PARAM, rawParam).sp();
158 double uiVal = ShadowMotion.rawParamToScope(rawParam);
159 long lVal = Math.round(uiVal);
160 sp().putLineComment("UI:" + lVal).ln();