4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sourceforge.mikutoga.pmd.model;
10 import jp.sourceforge.mikutoga.pmd.model.BoneInfo;
11 import java.util.ArrayList;
12 import java.util.Iterator;
13 import java.util.List;
18 public class IKChain implements Iterable<BoneInfo> {
20 private BoneInfo ikBone;
23 private float ikWeight;
25 private final List<BoneInfo> chainList = new ArrayList<BoneInfo>();
39 public void setIkBone(BoneInfo bone){
48 public BoneInfo getIkBone(){
54 * @param depth IK演算再帰深度
56 public void setIKDepth(int depth){
65 public int getIKDepth(){
71 * @param weight IKウェイト
73 public void setIKWeight(float weight){
74 this.ikWeight = weight;
82 public float getIKWeight(){
88 * 最初の要素は必ずIK接続先ボーン。それ以降はIK影響下ボーン。
91 public List<BoneInfo> getChainedBoneList(){
92 return this.chainList;
97 * @return {@inheritDoc}
100 public Iterator<BoneInfo> iterator(){
101 return this.chainList.iterator();
106 * @return {@inheritDoc}
109 public String toString(){
110 StringBuilder result = new StringBuilder();
112 result.append("IKChain");
114 result.append(" depth:").append(this.ikDepth);
115 result.append(" weight:").append(this.ikWeight);
117 result.append(" IKbone:").append(this.ikBone.getBoneName());
121 boolean chaindumped = false;
122 for(BoneInfo chain : this.chainList){
123 if(chaindumped) result.append(" => ");
124 result.append(chain.getBoneName());
130 return result.toString();