OSDN Git Service

1.6化に伴う@Overrideアノテーション対応
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / IKChain.java
1 /*\r
2  * IK chained bone\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 java.util.ArrayList;\r
11 import java.util.Iterator;\r
12 import java.util.List;\r
13 \r
14 /**\r
15  * IK連鎖ボーン群。\r
16  */\r
17 public class IKChain implements Iterable<BoneInfo> {\r
18 \r
19     private BoneInfo ikBone;\r
20 \r
21     private int ikDepth;\r
22     private float ikWeight;\r
23 \r
24     private final List<BoneInfo> chainList = new ArrayList<BoneInfo>();\r
25 \r
26     /**\r
27      * コンストラクタ。\r
28      */\r
29     public IKChain(){\r
30         super();\r
31         return;\r
32     }\r
33 \r
34     /**\r
35      * IKボーンを設定する。\r
36      * @param bone IKボーン\r
37      */\r
38     public void setIkBone(BoneInfo bone){\r
39         this.ikBone = bone;\r
40         return;\r
41     }\r
42 \r
43     /**\r
44      * IKボーンを返す。\r
45      * @return IKボーン\r
46      */\r
47     public BoneInfo getIkBone(){\r
48         return this.ikBone;\r
49     }\r
50 \r
51     /**\r
52      * IK演算再帰深度を設定する。\r
53      * @param depth IK演算再帰深度\r
54      */\r
55     public void setIKDepth(int depth){\r
56         this.ikDepth = depth;\r
57         return;\r
58     }\r
59 \r
60     /**\r
61      * IK演算再帰深度を返す。\r
62      * @return IK演算再帰深度\r
63      */\r
64     public int getIKDepth(){\r
65         return this.ikDepth;\r
66     }\r
67 \r
68     /**\r
69      * IKウェイトを設定する。\r
70      * @param weight IKウェイト\r
71      */\r
72     public void setIKWeight(float weight){\r
73         this.ikWeight = weight;\r
74         return;\r
75     }\r
76 \r
77     /**\r
78      * IKウェイトを返す。\r
79      * @return IKウェイト\r
80      */\r
81     public float getIKWeight(){\r
82         return this.ikWeight;\r
83     }\r
84 \r
85     /**\r
86      * IK連鎖ボーンリストを返す。\r
87      * 最初の要素は必ずIK接続先ボーン。それ以降はIK影響下ボーン。\r
88      * @return IK連鎖ボーンリスト\r
89      */\r
90     public List<BoneInfo> getChainedBoneList(){\r
91         return this.chainList;\r
92     }\r
93 \r
94     /**\r
95      * {@inheritDoc}\r
96      * @return {@inheritDoc}\r
97      */\r
98     @Override\r
99     public Iterator<BoneInfo> iterator(){\r
100         return this.chainList.iterator();\r
101     }\r
102 \r
103     /**\r
104      * {@inheritDoc}\r
105      * @return {@inheritDoc}\r
106      */\r
107     @Override\r
108     public String toString(){\r
109         StringBuilder result = new StringBuilder();\r
110 \r
111         result.append("IKChain");\r
112 \r
113         result.append(" depth:").append(this.ikDepth);\r
114         result.append(" weight:").append(this.ikWeight);\r
115 \r
116         result.append(" IKbone:").append(this.ikBone.getBoneName());\r
117 \r
118         result.append(" [");\r
119 \r
120         boolean chaindumped = false;\r
121         for(BoneInfo chain : this.chainList){\r
122             if(chaindumped) result.append(" => ");\r
123             result.append(chain.getBoneName());\r
124             chaindumped = true;\r
125         }\r
126 \r
127         result.append("]");\r
128 \r
129         return result.toString();\r
130     }\r
131 \r
132 }\r