4 * License : The MIT License
5 * Copyright(c) 2011 MikuToga Partners
8 package jp.sourceforge.mikutoga.vmd.model.xml;
10 import java.util.List;
11 import jp.sourceforge.mikutoga.vmd.model.LuminousColor;
12 import jp.sourceforge.mikutoga.vmd.model.LuminousMotion;
13 import jp.sourceforge.mikutoga.vmd.model.LuminousVector;
14 import jp.sourceforge.mikutoga.vmd.model.ShadowMode;
15 import jp.sourceforge.mikutoga.vmd.model.ShadowMotion;
16 import jp.sourceforge.mikutoga.vmd.model.VmdMotion;
17 import jp.sourceforge.mikutoga.xml.TogaXmlException;
18 import org.w3c.dom.Element;
21 * XMLによるカメラ制御データを読み取る。
23 final class XmlLightingLoader {
28 private XmlLightingLoader(){
30 throw new AssertionError();
36 * @param vmdMotionElem vmdMotion要素
37 * @param vmdMotion モーション
38 * @throws TogaXmlException 構文エラー
40 static void buildLuminousSeq(Element vmdMotionElem, VmdMotion vmdMotion)
41 throws TogaXmlException{
42 List<LuminousMotion> luminousList =
43 vmdMotion.getLuminousMotionList();
45 Element luminousSeqElem =
46 Xml.getChild(vmdMotionElem, "luminousSequence");
48 Iterable<Element> childs =
49 Xml.eachChild(luminousSeqElem, "luminousAct");
50 for(Element luminousActElem : childs){
51 buildLuminousAct(luminousActElem, luminousList);
59 * @param luminousActElem luminousAct要素
60 * @param luminousList 照明モーションリスト
61 * @throws TogaXmlException 構文エラー
63 private static void buildLuminousAct(Element luminousActElem,
64 List<LuminousMotion> luminousList)
65 throws TogaXmlException{
66 LuminousMotion luminousMotion = new LuminousMotion();
68 int frameNo = Xml.getIntegerAttr(luminousActElem, "frame");
69 luminousMotion.setFrameNumber(frameNo);
71 Element lumiColorElem = Xml.getChild(luminousActElem, "lumiColor");
72 LuminousColor color = luminousMotion.getColor();
73 float rCol = Xml.getFloatAttr(lumiColorElem, "rCol");
74 float gCol = Xml.getFloatAttr(lumiColorElem, "gCol");
75 float bCol = Xml.getFloatAttr(lumiColorElem, "bCol");
80 Element lumiDirectionElem =
81 Xml.getChild(luminousActElem, "lumiDirection");
82 LuminousVector vec = luminousMotion.getDirection();
83 float xVec = Xml.getFloatAttr(lumiDirectionElem, "xVec");
84 float yVec = Xml.getFloatAttr(lumiDirectionElem, "yVec");
85 float zVec = Xml.getFloatAttr(lumiDirectionElem, "zVec");
90 luminousList.add(luminousMotion);
97 * @param vmdMotionElem vmdMotion要素
98 * @param vmdMotion モーション
99 * @throws TogaXmlException 構文エラー
101 static void buildShadowSeq(Element vmdMotionElem,
103 throws TogaXmlException{
104 List<ShadowMotion> shadowMotionList =
105 vmdMotion.getShadowMotionList();
107 Element shadowSeqElem =
108 Xml.getChild(vmdMotionElem, "shadowSequence");
110 for(Element shadowActElem :
111 Xml.eachChild(shadowSeqElem, "shadowAct")){
112 buildShadowAct(shadowActElem, shadowMotionList);
120 * @param shadowActElem shadowAct要素
121 * @param shadowMotionList シャドウモーションリスト
122 * @throws TogaXmlException 構文エラー
124 private static void buildShadowAct(Element shadowActElem,
125 List<ShadowMotion> shadowMotionList)
126 throws TogaXmlException{
127 ShadowMotion shadowMotion = new ShadowMotion();
129 int frameNo = Xml.getIntegerAttr(shadowActElem, "frame");
130 shadowMotion.setFrameNumber(frameNo);
132 float rawParam = Xml.getFloatAttr(shadowActElem, "rawParam");
133 shadowMotion.setRawScopeParam(rawParam);
135 String modeAttr = Xml.getStringAttr(shadowActElem, "mode");
136 ShadowMode mode = ShadowMode.valueOf(modeAttr);
137 shadowMotion.setShadowMode(mode);
139 shadowMotionList.add(shadowMotion);