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;
23 private final MkPos3D offset = new MkPos3D();
25 private int serialNo = -1;
39 public Vertex getBaseVertex(){
40 return this.baseVertex;
46 * @throws NullPointerException 引数がnull
48 public void setBaseVertex(Vertex vertex) throws NullPointerException{
49 if(vertex == null) throw new NullPointerException();
50 this.baseVertex = vertex;
58 public MkPos3D getOffset(){
64 * @param num {@inheritDoc}
67 public void setSerialNumber(int num){
74 * @return {@inheritDoc}
77 public int getSerialNumber(){
83 * @return {@inheritDoc}
86 public String toString(){
87 StringBuilder result = new StringBuilder();
90 .append(this.baseVertex.getSerialNumber())
92 result.append(this.baseVertex.getPosition());
93 result.append(" >> ");
94 result.append(this.offset);
96 return result.toString();
100 * 頂点IDによる比較子Comparator。
102 private static final class VertexIdComparator
103 implements Comparator<MorphVertex> {
108 private VertexIdComparator(){
115 * @param o1 {@inheritDoc}
116 * @param o2 {@inheritDoc}
117 * @return {@inheritDoc}
120 public int compare(MorphVertex o1, MorphVertex o2){
121 if(o1 == o2) return 0;
122 if(o1 == null) return -1;
123 if(o2 == null) return +1;
125 int ser1 = o1.getBaseVertex().getSerialNumber();
126 int ser2 = o2.getBaseVertex().getSerialNumber();