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.DynamicsInfo;
11 import jp.sourceforge.mikutoga.pmd.model.BoneInfo;
12 import java.util.ArrayList;
13 import java.util.Collection;
14 import jp.sourceforge.mikutoga.corelib.I18nText;
15 import jp.sourceforge.mikutoga.corelib.SerialNumbered;
16 import jp.sourceforge.mikutoga.pmd.Pos3d;
17 import jp.sourceforge.mikutoga.pmd.Rad3d;
18 import jp.sourceforge.mikutoga.pmd.RigidBehaviorType;
23 public class RigidInfo implements SerialNumbered {
25 private final I18nText rigidName = new I18nText();
27 private RigidBehaviorType behaviorType = RigidBehaviorType.FOLLOWBONE;
29 private final RigidShape rigidShape = new RigidShape();
30 private final Pos3d position = new Pos3d();
31 private final Rad3d rotation = new Rad3d();
33 private BoneInfo linkedBone;
35 private final DynamicsInfo dynamicsInfo = new DynamicsInfo();
37 private final Collection<RigidGroup> throughGroupColl =
38 new ArrayList<RigidGroup>();
40 private RigidGroup rigidGroup;
42 private int serialNo = -1;
56 public I18nText getRigidName(){
57 return this.rigidName;
64 public RigidBehaviorType getBehaviorType(){
65 return this.behaviorType;
70 * @param type 剛体の振る舞い種別。
71 * @throws NullPointerException 引数がnull
73 public void setBehaviorType(RigidBehaviorType type)
74 throws NullPointerException{
75 if(type == null) throw new NullPointerException();
76 this.behaviorType = type;
84 public RigidShape getRigidShape(){
85 return this.rigidShape;
92 public Pos3d getPosition(){
100 public Rad3d getRotation(){
101 return this.rotation;
108 public BoneInfo getLinkedBone(){
109 return this.linkedBone;
116 public void setLinkedBone(BoneInfo bone){
117 this.linkedBone = bone;
125 public DynamicsInfo getDynamicsInfo(){
126 return this.dynamicsInfo;
133 public Collection<RigidGroup> getThroughGroupColl(){
134 return this.throughGroupColl;
141 public RigidGroup getRigidGroup(){
142 return this.rigidGroup;
147 * @param group 所属する剛体グループ
149 public void setRigidGroup(RigidGroup group){
150 this.rigidGroup = group;
156 * @param num {@inheritDoc}
159 public void setSerialNumber(int num){
166 * @return {@inheritDoc}
169 public int getSerialNumber(){
170 return this.serialNo;
175 * @return {@inheritDoc}
178 public String toString(){
179 StringBuilder result = new StringBuilder();
182 if(this.linkedBone == null){
185 boneName = this.linkedBone.getBoneName().toString();
188 result.append("Rigid(").append(this.rigidName).append(") ");
192 result.append(" [").append(this.rigidShape).append("]");
193 result.append(" ").append(this.position);
194 result.append(" ").append(this.rotation);
195 result.append(" [").append(this.dynamicsInfo).append("]");
196 result.append(" [").append(this.behaviorType).append("]");
198 result.append(" through[");
199 boolean dumped = false;
200 for(RigidGroup group : this.throughGroupColl){
201 if(dumped) result.append(" ");
202 result.append(group.getGroupNumber());
207 return result.toString();