2 * morph vertex information
\r
4 * License : The MIT License
\r
5 * Copyright(c) 2010 MikuToga Partners
\r
8 package jp.sourceforge.mikutoga.pmd;
\r
10 import java.util.Comparator;
\r
11 import jp.sourceforge.mikutoga.corelib.SerialNumbered;
\r
14 * モーフアニメーションを構成する個別の頂点移動の情報。
\r
16 public class MorphVertex implements SerialNumbered{
\r
18 /** 頂点IDを昇順に順序づけるComaparator。 */
\r
19 public static final Comparator<MorphVertex> VIDCOMPARATOR =
\r
20 new VertexIdComparator();
\r
22 private Vertex baseVertex;
\r
23 private final Pos3d offset = new Pos3d();
\r
25 private int serialNo = -1;
\r
30 public MorphVertex(){
\r
39 public Vertex getBaseVertex(){
\r
40 return this.baseVertex;
\r
45 * @param vertex 移動元頂点
\r
46 * @throws NullPointerException 引数がnull
\r
48 public void setBaseVertex(Vertex vertex) throws NullPointerException{
\r
49 if(vertex == null) throw new NullPointerException();
\r
50 this.baseVertex = vertex;
\r
58 public Pos3d getOffset(){
\r
64 * @param num {@inheritDoc}
\r
66 public void setSerialNumber(int num){
\r
67 this.serialNo = num;
\r
73 * @return {@inheritDoc}
\r
75 public int getSerialNumber(){
\r
76 return this.serialNo;
\r
81 * @return {@inheritDoc}
\r
84 public String toString(){
\r
85 StringBuilder result = new StringBuilder();
\r
87 result.append("vid(")
\r
88 .append(this.baseVertex.getSerialNumber())
\r
90 result.append(this.baseVertex.getPosition());
\r
91 result.append(" >> ");
\r
92 result.append(this.offset);
\r
94 return result.toString();
\r
98 * 頂点IDによる比較子Comparator。
\r
100 private static final class VertexIdComparator
\r
101 implements Comparator<MorphVertex> {
\r
106 private VertexIdComparator(){
\r
113 * @param o1 {@inheritDoc}
\r
114 * @param o2 {@inheritDoc}
\r
115 * @return {@inheritDoc}
\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
122 int ser1 = o1.getBaseVertex().getSerialNumber();
\r
123 int ser2 = o2.getBaseVertex().getSerialNumber();
\r
125 return ser1 - ser2;
\r