OSDN Git Service

[no commit message]
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / pmdloader / MorphBuilder.java
index 7656d45..e2b57cf 100644 (file)
-/*\r
- * building morph information\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2010 MikuToga Partners\r
- */\r
-\r
-package jp.sourceforge.mikutoga.pmd.pmdloader;\r
-\r
-import jp.sourceforge.mikutoga.corelib.ListUtil;\r
-import java.util.ArrayList;\r
-import java.util.Iterator;\r
-import java.util.LinkedList;\r
-import java.util.List;\r
-import java.util.Map;\r
-import jp.sourceforge.mikutoga.parser.ParseStage;\r
-import jp.sourceforge.mikutoga.parser.pmd.PmdMorphHandler;\r
-import jp.sourceforge.mikutoga.pmd.MorphPart;\r
-import jp.sourceforge.mikutoga.pmd.MorphType;\r
-import jp.sourceforge.mikutoga.pmd.MorphVertex;\r
-import jp.sourceforge.mikutoga.pmd.PmdModel;\r
-import jp.sourceforge.mikutoga.pmd.Pos3d;\r
-import jp.sourceforge.mikutoga.pmd.Vertex;\r
-\r
-/**\r
- * モーフ関係の通知をパーサから受け取る。\r
- */\r
-class MorphBuilder implements PmdMorphHandler {\r
-\r
-    private final Map<MorphType, List<MorphPart>> morphMap;\r
-\r
-    private List<MorphPart> morphPartList;\r
-    private Iterator<MorphPart> morphPartIt;\r
-    private MorphPart currentMorphPart;\r
-    private final List<Vertex> vertexList;\r
-\r
-    private final List<Vertex> morphVertexList = new ArrayList<Vertex>();\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param model モデル\r
-     */\r
-    MorphBuilder(PmdModel model){\r
-        super();\r
-        this.vertexList = model.getVertexList();\r
-        this.morphMap = model.getMorphMap();\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * PMDファイル中の出現順で各モーフを格納するためのリストを設定する。\r
-     * 主な用途はモーフ英名との突き合わせ作業。\r
-     * @param list モーフ格納リスト\r
-     */\r
-    void setMorphPartList(List<MorphPart> list){\r
-        this.morphPartList = list;\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param stage {@inheritDoc}\r
-     * @param loops {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void loopStart(ParseStage stage, int loops){\r
-        assert stage instanceof PmdMorphStage;\r
-\r
-        if(stage == PmdMorphHandler.MORPH_LIST){\r
-            ListUtil.prepareDefConsList(this.morphPartList,\r
-                                        MorphPart.class,\r
-                                        loops );\r
-            ListUtil.assignIndexedSerial(this.morphPartList);\r
-\r
-            this.morphPartIt = this.morphPartList.iterator();\r
-            if(this.morphPartIt.hasNext()){\r
-                this.currentMorphPart = this.morphPartIt.next();\r
-            }\r
-        }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){\r
-            // NOTHING\r
-        }else if(stage == PmdMorphHandler.MORPHORDER_LIST){\r
-            // NOTHING\r
-        }\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param stage {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void loopNext(ParseStage stage){\r
-        assert stage instanceof PmdMorphStage;\r
-\r
-        if(stage == PmdMorphHandler.MORPH_LIST){\r
-            if(this.morphPartIt.hasNext()){\r
-                this.currentMorphPart = this.morphPartIt.next();\r
-            }\r
-        }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){\r
-            // NOTHING\r
-        }else if(stage == PmdMorphHandler.MORPHORDER_LIST){\r
-            // NOTHING\r
-        }\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param stage {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void loopEnd(ParseStage stage){\r
-        assert stage instanceof PmdMorphStage;\r
-        if(stage == PmdMorphHandler.MORPH_LIST){\r
-            // NOTHING\r
-        }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){\r
-            // NOTHING\r
-        }else if(stage == PmdMorphHandler.MORPHORDER_LIST){\r
-            // NOTHING\r
-        }\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param morphName {@inheritDoc}\r
-     * @param morphType {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdMorphInfo(String morphName, byte morphType){\r
-        this.currentMorphPart.getMorphName().setPrimaryText(morphName);\r
-        MorphType type = MorphType.decode(morphType);\r
-        this.currentMorphPart.setMorphType(type);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param serialId {@inheritDoc}\r
-     * @param xPos {@inheritDoc}\r
-     * @param yPos {@inheritDoc}\r
-     * @param zPos {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdMorphVertexInfo(int serialId,\r
-                                   float xPos, float yPos, float zPos){\r
-        MorphVertex morphVertex;\r
-        morphVertex = new MorphVertex();\r
-        Pos3d position = morphVertex.getOffset();\r
-        position.setXPos(xPos);\r
-        position.setYPos(yPos);\r
-        position.setZPos(zPos);\r
-\r
-        Vertex vertex;\r
-        if(this.currentMorphPart.getMorphType().isBase()){\r
-            vertex = this.vertexList.get(serialId);\r
-            this.morphVertexList.add(vertex);\r
-        }else{\r
-            vertex = this.morphVertexList.get(serialId);\r
-        }\r
-        morphVertex.setBaseVertex(vertex);\r
-\r
-        this.currentMorphPart.getMorphVertexList().add(morphVertex);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param morphId {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdMorphOrderInfo(int morphId){\r
-        MorphPart part = this.morphPartList.get(morphId);\r
-        MorphType type = part.getMorphType();\r
-\r
-        List<MorphPart> partList = this.morphMap.get(type);\r
-        if(partList == null){\r
-            partList = new LinkedList<MorphPart>();\r
-            this.morphMap.put(type, partList);\r
-        }\r
-        partList.add(part);\r
-\r
-        return;\r
-    }\r
-\r
-}\r
+/*
+ * building morph information
+ *
+ * License : The MIT License
+ * Copyright(c) 2010 MikuToga Partners
+ */
+
+package jp.sourceforge.mikutoga.pmd.pmdloader;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import jp.sourceforge.mikutoga.corelib.ListUtil;
+import jp.sourceforge.mikutoga.parser.ParseStage;
+import jp.sourceforge.mikutoga.pmd.MorphType;
+import jp.sourceforge.mikutoga.pmd.Pos3d;
+import jp.sourceforge.mikutoga.pmd.model.MorphPart;
+import jp.sourceforge.mikutoga.pmd.model.MorphVertex;
+import jp.sourceforge.mikutoga.pmd.model.PmdModel;
+import jp.sourceforge.mikutoga.pmd.model.Vertex;
+import jp.sourceforge.mikutoga.pmd.parser.PmdMorphHandler;
+
+/**
+ * モーフ関係の通知をパーサから受け取る。
+ */
+class MorphBuilder implements PmdMorphHandler {
+
+    private final Map<MorphType, List<MorphPart>> morphMap;
+
+    private List<MorphPart> morphPartList;
+    private Iterator<MorphPart> morphPartIt;
+    private MorphPart currentMorphPart;
+    private final List<Vertex> vertexList;
+
+    private final List<Vertex> morphVertexList = new ArrayList<Vertex>();
+
+    /**
+     * コンストラクタ。
+     * @param model モデル
+     */
+    MorphBuilder(PmdModel model){
+        super();
+        this.vertexList = model.getVertexList();
+        this.morphMap = model.getMorphMap();
+        return;
+    }
+
+    /**
+     * PMDファイル中の出現順で各モーフを格納するためのリストを設定する。
+     * 主な用途はモーフ英名との突き合わせ作業。
+     * @param list モーフ格納リスト
+     */
+    void setMorphPartList(List<MorphPart> list){
+        this.morphPartList = list;
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param stage {@inheritDoc}
+     * @param loops {@inheritDoc}
+     */
+    @Override
+    public void loopStart(ParseStage stage, int loops){
+        if(stage == PmdMorphHandler.MORPH_LIST){
+            ListUtil.prepareDefConsList(this.morphPartList,
+                                        MorphPart.class,
+                                        loops );
+            ListUtil.assignIndexedSerial(this.morphPartList);
+
+            this.morphPartIt = this.morphPartList.iterator();
+            if(this.morphPartIt.hasNext()){
+                this.currentMorphPart = this.morphPartIt.next();
+            }
+        }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
+            // NOTHING
+        }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
+            // NOTHING
+        }else{
+            assert false;
+            throw new AssertionError();
+        }
+
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param stage {@inheritDoc}
+     */
+    @Override
+    public void loopNext(ParseStage stage){
+        if(stage == PmdMorphHandler.MORPH_LIST){
+            if(this.morphPartIt.hasNext()){
+                this.currentMorphPart = this.morphPartIt.next();
+            }
+        }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
+            // NOTHING
+        }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
+            // NOTHING
+        }else{
+            assert false;
+            throw new AssertionError();
+        }
+
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param stage {@inheritDoc}
+     */
+    @Override
+    public void loopEnd(ParseStage stage){
+        if(stage == PmdMorphHandler.MORPH_LIST){
+            // NOTHING
+        }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
+            // NOTHING
+        }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
+            // NOTHING
+        }else{
+            assert false;
+            throw new AssertionError();
+        }
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param morphName {@inheritDoc}
+     * @param morphType {@inheritDoc}
+     */
+    @Override
+    public void pmdMorphInfo(String morphName, byte morphType){
+        this.currentMorphPart.getMorphName().setPrimaryText(morphName);
+        MorphType type = MorphType.decode(morphType);
+        this.currentMorphPart.setMorphType(type);
+
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param serialId {@inheritDoc}
+     * @param xPos {@inheritDoc}
+     * @param yPos {@inheritDoc}
+     * @param zPos {@inheritDoc}
+     */
+    @Override
+    public void pmdMorphVertexInfo(int serialId,
+                                   float xPos, float yPos, float zPos){
+        MorphVertex morphVertex;
+        morphVertex = new MorphVertex();
+        Pos3d position = morphVertex.getOffset();
+        position.setXPos(xPos);
+        position.setYPos(yPos);
+        position.setZPos(zPos);
+
+        Vertex vertex;
+        if(this.currentMorphPart.getMorphType().isBase()){
+            vertex = this.vertexList.get(serialId);
+            this.morphVertexList.add(vertex);
+        }else{
+            vertex = this.morphVertexList.get(serialId);
+        }
+        morphVertex.setBaseVertex(vertex);
+
+        this.currentMorphPart.getMorphVertexList().add(morphVertex);
+
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param morphId {@inheritDoc}
+     */
+    @Override
+    public void pmdMorphOrderInfo(int morphId){
+        MorphPart part = this.morphPartList.get(morphId);
+        MorphType type = part.getMorphType();
+
+        List<MorphPart> partList = this.morphMap.get(type);
+        if(partList == null){
+            partList = new LinkedList<MorphPart>();
+            this.morphMap.put(type, partList);
+        }
+        partList.add(part);
+
+        return;
+    }
+
+}