4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sourceforge.mikutoga.pmd.model;
10 import java.util.ArrayList;
11 import java.util.Collection;
12 import jp.sourceforge.mikutoga.corelib.I18nText;
13 import jp.sourceforge.mikutoga.math.MkPos3D;
14 import jp.sourceforge.mikutoga.pmd.Rad3d;
15 import jp.sourceforge.mikutoga.pmd.RigidBehaviorType;
20 public class RigidInfo implements SerialNumbered {
22 private final I18nText rigidName = new I18nText();
24 private RigidBehaviorType behaviorType = RigidBehaviorType.FOLLOWBONE;
26 private final RigidShape rigidShape = new RigidShape();
27 private final MkPos3D position = new MkPos3D();
28 private final Rad3d rotation = new Rad3d();
30 private BoneInfo linkedBone;
32 private final DynamicsInfo dynamicsInfo = new DynamicsInfo();
34 private final Collection<RigidGroup> throughGroupColl =
35 new ArrayList<RigidGroup>();
37 private RigidGroup rigidGroup;
39 private int serialNo = -1;
53 public I18nText getRigidName(){
54 return this.rigidName;
61 public RigidBehaviorType getBehaviorType(){
62 return this.behaviorType;
67 * @param type 剛体の振る舞い種別。
68 * @throws NullPointerException 引数がnull
70 public void setBehaviorType(RigidBehaviorType type)
71 throws NullPointerException{
72 if(type == null) throw new NullPointerException();
73 this.behaviorType = type;
81 public RigidShape getRigidShape(){
82 return this.rigidShape;
89 public MkPos3D getPosition(){
97 public Rad3d getRotation(){
105 public BoneInfo getLinkedBone(){
106 return this.linkedBone;
113 public void setLinkedBone(BoneInfo bone){
114 this.linkedBone = bone;
122 public DynamicsInfo getDynamicsInfo(){
123 return this.dynamicsInfo;
130 public Collection<RigidGroup> getThroughGroupColl(){
131 return this.throughGroupColl;
138 public RigidGroup getRigidGroup(){
139 return this.rigidGroup;
144 * @param group 所属する剛体グループ
146 public void setRigidGroup(RigidGroup group){
147 this.rigidGroup = group;
153 * @param num {@inheritDoc}
156 public void setSerialNumber(int num){
163 * @return {@inheritDoc}
166 public int getSerialNumber(){
167 return this.serialNo;
172 * @return {@inheritDoc}
175 public String toString(){
176 StringBuilder result = new StringBuilder();
179 if(this.linkedBone == null){
182 boneName = this.linkedBone.getBoneName().toString();
185 result.append("Rigid(").append(this.rigidName).append(") ");
189 result.append(" [").append(this.rigidShape).append("]");
190 result.append(" ").append(this.position);
191 result.append(" ").append(this.rotation);
192 result.append(" [").append(this.dynamicsInfo).append("]");
193 result.append(" [").append(this.behaviorType).append("]");
195 result.append(" through[");
196 boolean dumped = false;
197 for(RigidGroup group : this.throughGroupColl){
198 if(dumped) result.append(" ");
199 result.append(group.getGroupNumber());
204 return result.toString();