4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sfjp.mikutoga.pmd.model;
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>();
40 public void setIkBone(BoneInfo bone){
49 public BoneInfo getIkBone(){
55 * @param depth IK演算再帰深度
57 public void setIKDepth(int depth){
66 public int getIKDepth(){
72 * @param weight IKウェイト
74 public void setIKWeight(float weight){
75 this.ikWeight = weight;
83 public float getIKWeight(){
89 * 最初の要素は必ずIK接続先ボーン。それ以降はIK影響下ボーン。
92 public List<BoneInfo> getChainedBoneList(){
93 return this.chainList;
98 * @return {@inheritDoc}
101 public Iterator<BoneInfo> iterator(){
102 return this.chainList.iterator();
107 * @return {@inheritDoc}
110 public String toString(){
111 StringBuilder result = new StringBuilder();
113 result.append("IKChain");
115 result.append(" depth:").append(this.ikDepth);
116 result.append(" weight:").append(this.ikWeight);
118 result.append(" IKbone:").append(this.ikBone.getBoneName());
122 boolean chaindumped = false;
123 for(BoneInfo chain : this.chainList){
124 if(chaindumped) result.append(" => ");
125 result.append(chain.getBoneName());
131 return result.toString();