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.Collection;
\r
12 import jp.sourceforge.mikutoga.corelib.I18nText;
\r
13 import jp.sourceforge.mikutoga.corelib.SerialNumbered;
\r
18 public class RigidInfo implements SerialNumbered {
\r
20 private final I18nText rigidName = new I18nText();
\r
22 private RigidBehaviorType behaviorType = RigidBehaviorType.FOLLOWBONE;
\r
24 private final RigidShape rigidShape = new RigidShape();
\r
25 private final Pos3d position = new Pos3d();
\r
26 private final Rad3d rotation = new Rad3d();
\r
28 private BoneInfo linkedBone;
\r
30 private final DynamicsInfo dynamicsInfo = new DynamicsInfo();
\r
32 private final Collection<RigidGroup> throughGroupColl =
\r
33 new ArrayList<RigidGroup>();
\r
35 private RigidGroup rigidGroup;
\r
37 private int serialNo = -1;
\r
51 public I18nText getRigidName(){
\r
52 return this.rigidName;
\r
59 public RigidBehaviorType getBehaviorType(){
\r
60 return this.behaviorType;
\r
65 * @param type 剛体の振る舞い種別。
\r
66 * @throws NullPointerException 引数がnull
\r
68 public void setBehaviorType(RigidBehaviorType type)
\r
69 throws NullPointerException{
\r
70 if(type == null) throw new NullPointerException();
\r
71 this.behaviorType = type;
\r
79 public RigidShape getRigidShape(){
\r
80 return this.rigidShape;
\r
87 public Pos3d getPosition(){
\r
88 return this.position;
\r
95 public Rad3d getRotation(){
\r
96 return this.rotation;
\r
103 public BoneInfo getLinkedBone(){
\r
104 return this.linkedBone;
\r
109 * @param bone 接続ボーン
\r
111 public void setLinkedBone(BoneInfo bone){
\r
112 this.linkedBone = bone;
\r
120 public DynamicsInfo getDynamicsInfo(){
\r
121 return this.dynamicsInfo;
\r
126 * @return 非衝突グループ集合
\r
128 public Collection<RigidGroup> getThroughGroupColl(){
\r
129 return this.throughGroupColl;
\r
134 * @return 所属する剛体グループ
\r
136 public RigidGroup getRigidGroup(){
\r
137 return this.rigidGroup;
\r
142 * @param group 所属する剛体グループ
\r
144 public void setRigidGroup(RigidGroup group){
\r
145 this.rigidGroup = group;
\r
151 * @param num {@inheritDoc}
\r
153 public void setSerialNumber(int num){
\r
154 this.serialNo = num;
\r
160 * @return {@inheritDoc}
\r
162 public int getSerialNumber(){
\r
163 return this.serialNo;
\r
168 * @return {@inheritDoc}
\r
171 public String toString(){
\r
172 StringBuilder result = new StringBuilder();
\r
174 result.append("Rigid(").append(this.rigidName).append(") ");
\r
175 result.append("[=>")
\r
176 .append(this.linkedBone.getBoneName())
\r
178 result.append(" [").append(this.rigidShape).append("]");
\r
179 result.append(" ").append(this.position);
\r
180 result.append(" ").append(this.rotation);
\r
181 result.append(" [").append(this.dynamicsInfo).append("]");
\r
182 result.append(" [").append(this.behaviorType).append("]");
\r
184 result.append(" through[");
\r
185 boolean dumped = false;
\r
186 for(RigidGroup group : this.throughGroupColl){
\r
187 if(dumped) result.append(" ");
\r
188 result.append(group.getGroupNumber());
\r
191 result.append("]");
\r
193 return result.toString();
\r