OSDN Git Service

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