OSDN Git Service

PMD出力機能及びXML入出力機能のソースをマージ
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / MorphVertex.java
1 /*\r
2  * morph vertex information\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.pmd;\r
9 \r
10 import java.util.Comparator;\r
11 import jp.sourceforge.mikutoga.corelib.SerialNumbered;\r
12 \r
13 /**\r
14  * モーフアニメーションを構成する個別の頂点移動の情報。\r
15  */\r
16 public class MorphVertex implements SerialNumbered{\r
17 \r
18     /** 頂点IDを昇順に順序づけるComaparator。 */\r
19     public static final Comparator<MorphVertex> VIDCOMPARATOR =\r
20             new VertexIdComparator();\r
21 \r
22     private Vertex baseVertex;\r
23     private final Pos3d offset = new Pos3d();\r
24 \r
25     private int serialNo = -1;\r
26 \r
27     /**\r
28      * コンストラクタ。\r
29      */\r
30     public MorphVertex(){\r
31         super();\r
32         return;\r
33     }\r
34 \r
35     /**\r
36      * 移動元頂点情報を返す。\r
37      * @return 移動元頂点\r
38      */\r
39     public Vertex getBaseVertex(){\r
40         return this.baseVertex;\r
41     }\r
42 \r
43     /**\r
44      * 移動元頂点情報を設定する。\r
45      * @param vertex 移動元頂点\r
46      * @throws NullPointerException 引数がnull\r
47      */\r
48     public void setBaseVertex(Vertex vertex) throws NullPointerException{\r
49         if(vertex == null) throw new NullPointerException();\r
50         this.baseVertex = vertex;\r
51         return;\r
52     }\r
53 \r
54     /**\r
55      * 頂点移動量を返す。\r
56      * @return 頂点移動量\r
57      */\r
58     public Pos3d getOffset(){\r
59         return this.offset;\r
60     }\r
61 \r
62     /**\r
63      * {@inheritDoc}\r
64      * @param num {@inheritDoc}\r
65      */\r
66     public void setSerialNumber(int num){\r
67         this.serialNo = num;\r
68         return;\r
69     }\r
70 \r
71     /**\r
72      * {@inheritDoc}\r
73      * @return {@inheritDoc}\r
74      */\r
75     public int getSerialNumber(){\r
76         return this.serialNo;\r
77     }\r
78 \r
79     /**\r
80      * {@inheritDoc}\r
81      * @return {@inheritDoc}\r
82      */\r
83     @Override\r
84     public String toString(){\r
85         StringBuilder result = new StringBuilder();\r
86 \r
87         result.append("vid(")\r
88               .append(this.baseVertex.getSerialNumber())\r
89               .append(") ");\r
90         result.append(this.baseVertex.getPosition());\r
91         result.append(" >> ");\r
92         result.append(this.offset);\r
93 \r
94         return result.toString();\r
95     }\r
96 \r
97     /**\r
98      * 頂点IDによる比較子Comparator。\r
99      */\r
100     private static final class VertexIdComparator\r
101             implements Comparator<MorphVertex> {\r
102 \r
103         /**\r
104          * コンストラクタ。\r
105          */\r
106         private VertexIdComparator(){\r
107             super();\r
108             return;\r
109         }\r
110 \r
111         /**\r
112          * {@inheritDoc}\r
113          * @param o1 {@inheritDoc}\r
114          * @param o2 {@inheritDoc}\r
115          * @return {@inheritDoc}\r
116          */\r
117         public int compare(MorphVertex o1, MorphVertex o2){\r
118             if(o1 == o2) return 0;\r
119             if(o1 == null) return -1;\r
120             if(o2 == null) return +1;\r
121 \r
122             int ser1 = o1.getBaseVertex().getSerialNumber();\r
123             int ser2 = o2.getBaseVertex().getSerialNumber();\r
124 \r
125             return ser1 - ser2;\r
126         }\r
127 \r
128     }\r
129 \r
130 }\r