OSDN Git Service

[no commit message]
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / model / BoneGroup.java
1 /*
2  * bone group
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package jp.sourceforge.mikutoga.pmd.model;
9
10 import java.util.ArrayList;
11 import java.util.Iterator;
12 import java.util.List;
13 import jp.sourceforge.mikutoga.corelib.I18nText;
14 import jp.sourceforge.mikutoga.corelib.SerialNumbered;
15
16 /**
17  * ボーングループ。
18  * ボーングループ名と0個以上のボーンを配下に持つ。
19  * 通し番号0のボーングループは、暗黙に用意される「デフォルトボーングループ」とする。
20  */
21 public class BoneGroup implements SerialNumbered , Iterable<BoneInfo> {
22
23     private final I18nText groupName = new I18nText();
24
25     private final List<BoneInfo> boneList = new ArrayList<BoneInfo>();
26
27     private int serialNo = -1;
28
29     /**
30      * コンストラクタ。
31      */
32     public BoneGroup(){
33         super();
34         return;
35     }
36
37     /**
38      * ボーングループ名を返す。
39      * @return ボーングループ名
40      */
41     public I18nText getGroupName(){
42         return this.groupName;
43     }
44
45     /**
46      * ボーンリストを取得する。
47      * @return ボーンリスト
48      */
49     public List<BoneInfo> getBoneList(){
50         return this.boneList;
51     }
52
53     /**
54      * デフォルトボーングループか否か判定する。
55      * 通し番号が0ならデフォルトボーングループ。
56      * @return デフォルトボーングループならtrue
57      */
58     public boolean isDefaultBoneGroup(){
59         if(this.serialNo == 0) return true;
60         return false;
61     }
62
63     /**
64      * {@inheritDoc}
65      * @return {@inheritDoc}
66      */
67     @Override
68     public Iterator<BoneInfo> iterator(){
69         return this.boneList.iterator();
70     }
71
72     /**
73      * {@inheritDoc}
74      * @param num {@inheritDoc}
75      */
76     @Override
77     public void setSerialNumber(int num){
78         this.serialNo = num;
79         return;
80     }
81
82     /**
83      * {@inheritDoc}
84      * @return {@inheritDoc}
85      */
86     @Override
87     public int getSerialNumber(){
88         return this.serialNo;
89     }
90
91     /**
92      * ボーングループ番号(ボーン枠番号)を返す。
93      * 常に通し番号より1少ない値となる。
94      * デフォルトボーングループは-1となる。
95      * @return ボーングループ番号
96      */
97     public int getBoneGroupNumber(){
98         return this.serialNo - 1;
99     }
100
101     /**
102      * {@inheritDoc}
103      * @return {@inheritDoc}
104      */
105     @Override
106     public String toString(){
107         StringBuilder result = new StringBuilder();
108
109         result.append("BoneGroup(")
110               .append(this.groupName)
111               .append(") [");
112
113         boolean dumped = false;
114         for(BoneInfo bone : this){
115             if(dumped) result.append(", ");
116             result.append(bone.getBoneName());
117             dumped = true;
118         }
119
120         result.append(']');
121
122         return result.toString();
123     }
124
125 }