OSDN Git Service

PMD出力機能及びXML入出力機能のソースをマージ
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / BoneInfo.java
1 /*\r
2  * bone 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 jp.sourceforge.mikutoga.corelib.I18nText;\r
11 import jp.sourceforge.mikutoga.corelib.SerialNumbered;\r
12 \r
13 /**\r
14  * ボーン情報。\r
15  */\r
16 public class BoneInfo implements SerialNumbered {\r
17 \r
18     private final I18nText boneName = new I18nText();\r
19     private BoneType boneType;\r
20 \r
21     private BoneInfo prevBone;\r
22     private BoneInfo nextBone;\r
23     private BoneInfo ikBone;\r
24 \r
25     private final Pos3d position = new Pos3d();\r
26 \r
27     private int rotationRatio;\r
28 \r
29     private int serialNo = -1;\r
30 \r
31     /**\r
32      * コンストラクタ。\r
33      */\r
34     public BoneInfo(){\r
35         super();\r
36         return;\r
37     }\r
38 \r
39     /**\r
40      * ボーン名を返す。\r
41      * @return ボーン名\r
42      */\r
43     public I18nText getBoneName(){\r
44         return this.boneName;\r
45     }\r
46 \r
47     /**\r
48      * ボーン種別を設定する。\r
49      * @param type ボーン種別\r
50      * @throws NullPointerException 引数がnull\r
51      */\r
52     public void setBoneType(BoneType type) throws NullPointerException{\r
53         if(type == null) throw new NullPointerException();\r
54         this.boneType = type;\r
55         return;\r
56     }\r
57 \r
58     /**\r
59      * ボーン種別を返す。\r
60      * @return ボーン種別\r
61      */\r
62     public BoneType getBoneType(){\r
63         return this.boneType;\r
64     }\r
65 \r
66     /**\r
67      * 親(前)ボーンを設定する。\r
68      * @param prevBone 前ボーン。ない場合はnullを指定。\r
69      */\r
70     public void setPrevBone(BoneInfo prevBone){\r
71         this.prevBone = prevBone;\r
72         return;\r
73     }\r
74 \r
75     /**\r
76      * 親(前)ボーンを返す。\r
77      * @return 前ボーン。ない場合はnullを返す。\r
78      */\r
79     public BoneInfo getPrevBone(){\r
80         return this.prevBone;\r
81     }\r
82 \r
83     /**\r
84      * 子(次)ボーンを設定する。\r
85      * 捩りボーンでは軸方向に位置するボーン、\r
86      * 回転連動ボーンでは影響元ボーン。\r
87      * @param nextBone 次ボーン。ない場合はnullを指定。\r
88      */\r
89     public void setNextBone(BoneInfo nextBone){\r
90         this.nextBone = nextBone;\r
91         return;\r
92     }\r
93 \r
94     /**\r
95      * 子(次)ボーンを返す。\r
96      * 捩りボーンでは軸方向に位置するボーン、\r
97      * 回転連動ボーンでは影響元ボーン。\r
98      * @return 次ボーン。ない場合はnullを返す。\r
99      */\r
100     public BoneInfo getNextBone(){\r
101         return this.nextBone;\r
102     }\r
103 \r
104     /**\r
105      * このボーンが影響を受けるIKボーンを設定する。\r
106      * @param ikBoneArg IKボーン。ない場合はnullを指定。\r
107      */\r
108     public void setIKBone(BoneInfo ikBoneArg){\r
109         this.ikBone = ikBoneArg;\r
110         return;\r
111     }\r
112 \r
113     /**\r
114      * このボーンが影響を受けるIKボーンを返す。\r
115      * @return IKボーン。ない場合はnull\r
116      */\r
117     public BoneInfo getIKBone(){\r
118         return this.ikBone;\r
119     }\r
120 \r
121     /**\r
122      * ボーン位置を返す。\r
123      * @return ボーン位置\r
124      */\r
125     public Pos3d getPosition(){\r
126         return this.position;\r
127     }\r
128 \r
129     /**\r
130      * 回転連動の影響度を返す。\r
131      * 回転連動ボーンの場合のみ有効。\r
132      * @return 回転連動の影響度\r
133      */\r
134     public int getRotationRatio(){\r
135         return this.rotationRatio;\r
136     }\r
137 \r
138     /**\r
139      * 回転連動の影響度を設定する。\r
140      * 回転連動ボーンの場合のみ有効。\r
141      * @param ratio 回転連動の影響度\r
142      */\r
143     public void setRotationRatio(int ratio){\r
144         this.rotationRatio = ratio;\r
145     }\r
146 \r
147     /**\r
148      * {@inheritDoc}\r
149      * @param num {@inheritDoc}\r
150      */\r
151     public void setSerialNumber(int num){\r
152         this.serialNo = num;\r
153         return;\r
154     }\r
155 \r
156     /**\r
157      * {@inheritDoc}\r
158      * @return {@inheritDoc}\r
159      */\r
160     public int getSerialNumber(){\r
161         return this.serialNo;\r
162     }\r
163 \r
164     /**\r
165      * {@inheritDoc}\r
166      * @return {@inheritDoc}\r
167      */\r
168     @Override\r
169     public String toString(){\r
170         StringBuilder result = new StringBuilder();\r
171 \r
172         result.append("Bone")\r
173               .append(this.serialNo)\r
174               .append("(")\r
175               .append(this.boneName.getPrimaryText())\r
176               .append(")");\r
177 \r
178         result.append(" type=")\r
179               .append(this.boneType);\r
180 \r
181         result.append(" prev=");\r
182         if(this.prevBone != null) result.append(this.prevBone.getBoneName());\r
183         else                      result.append("NONE");\r
184 \r
185         result.append(" next=");\r
186         if(this.nextBone != null) result.append(this.nextBone.getBoneName());\r
187         else                      result.append("NONE");\r
188 \r
189         if(this.boneType == BoneType.LINKEDROT){\r
190             result.append(" rotraio=").append(this.rotationRatio);\r
191         }else{\r
192             result.append(" ik=");\r
193             if(this.ikBone != null) result.append(this.ikBone.getBoneName());\r
194             else                    result.append("NONE");\r
195         }\r
196 \r
197         result.append(" ").append(this.position);\r
198 \r
199         return result.toString();\r
200     }\r
201 \r
202 }\r