2 * morph vertex information
4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sfjp.mikutoga.pmd.model;
10 import java.util.Comparator;
11 import jp.sfjp.mikutoga.math.MkPos3D;
14 * モーフアニメーションを構成する個別の頂点移動の情報。
16 public class MorphVertex implements SerialNumbered{
18 /** 頂点IDを昇順に順序づけるComaparator。 */
19 public static final Comparator<MorphVertex> VIDCOMPARATOR =
20 new VertexIdComparator();
22 private Vertex baseVertex = null;
23 private final MkPos3D offset = new MkPos3D();
25 private int morphVertexSerialNo = -1;
41 public Vertex getBaseVertex(){
42 return this.baseVertex;
48 * @throws NullPointerException 引数がnull
50 public void setBaseVertex(Vertex vertex) throws NullPointerException{
51 if(vertex == null) throw new NullPointerException();
52 this.baseVertex = vertex;
60 public MkPos3D getOffset(){
66 * @param num {@inheritDoc}
69 public void setSerialNumber(int num){
70 this.morphVertexSerialNo = num;
76 * @return {@inheritDoc}
79 public int getSerialNumber(){
80 return this.morphVertexSerialNo;
85 * @return {@inheritDoc}
88 public String toString(){
89 StringBuilder result = new StringBuilder();
92 .append(this.baseVertex.getSerialNumber())
94 result.append(this.baseVertex.getPosition());
95 result.append(" >> ");
96 result.append(this.offset);
98 return result.toString();
103 * 頂点IDによる比較子Comparator。
105 @SuppressWarnings("serial")
106 private static final class VertexIdComparator
107 implements Comparator<MorphVertex> {
112 VertexIdComparator(){
119 * @param o1 {@inheritDoc}
120 * @param o2 {@inheritDoc}
121 * @return {@inheritDoc}
124 public int compare(MorphVertex o1, MorphVertex o2){
125 if(o1 == o2) return 0;
126 if(o1 == null) return -1;
127 if(o2 == null) return +1;
129 int ser1 = o1.getBaseVertex().getSerialNumber();
130 int ser2 = o2.getBaseVertex().getSerialNumber();