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