4 * License : The MIT License
\r
5 * Copyright(c) 2010 MikuToga Partners
\r
8 package jp.sourceforge.mikutoga.pmd;
\r
10 import java.util.ArrayList;
\r
11 import java.util.Iterator;
\r
12 import java.util.List;
\r
17 public class IKChain implements Iterable<BoneInfo> {
\r
19 private BoneInfo ikBone;
\r
21 private int ikDepth;
\r
22 private float ikWeight;
\r
24 private final List<BoneInfo> chainList = new ArrayList<BoneInfo>();
\r
38 public void setIkBone(BoneInfo bone){
\r
47 public BoneInfo getIkBone(){
\r
53 * @param depth IK演算再帰深度
\r
55 public void setIKDepth(int depth){
\r
56 this.ikDepth = depth;
\r
64 public int getIKDepth(){
\r
65 return this.ikDepth;
\r
70 * @param weight IKウェイト
\r
72 public void setIKWeight(float weight){
\r
73 this.ikWeight = weight;
\r
81 public float getIKWeight(){
\r
82 return this.ikWeight;
\r
87 * 最初の要素は必ずIK接続先ボーン。それ以降はIK影響下ボーン。
\r
88 * @return IK連鎖ボーンリスト
\r
90 public List<BoneInfo> getChainedBoneList(){
\r
91 return this.chainList;
\r
96 * @return {@inheritDoc}
\r
98 public Iterator<BoneInfo> iterator(){
\r
99 return this.chainList.iterator();
\r
104 * @return {@inheritDoc}
\r
107 public String toString(){
\r
108 StringBuilder result = new StringBuilder();
\r
110 result.append("IKChain");
\r
112 result.append(" depth:").append(this.ikDepth);
\r
113 result.append(" weight:").append(this.ikWeight);
\r
115 result.append(" IKbone:").append(this.ikBone.getBoneName());
\r
117 result.append(" [");
\r
119 boolean chaindumped = false;
\r
120 for(BoneInfo chain : this.chainList){
\r
121 if(chaindumped) result.append(" => ");
\r
122 result.append(chain.getBoneName());
\r
123 chaindumped = true;
\r
126 result.append("]");
\r
128 return result.toString();
\r