-/*\r
- * rigid information\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2010 MikuToga Partners\r
- */\r
-\r
-package jp.sourceforge.mikutoga.pmd;\r
-\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import jp.sourceforge.mikutoga.corelib.I18nText;\r
-import jp.sourceforge.mikutoga.corelib.SerialNumbered;\r
-\r
-/**\r
- * 個別の剛体の情報。\r
- */\r
-public class RigidInfo implements SerialNumbered {\r
-\r
- private final I18nText rigidName = new I18nText();\r
-\r
- private RigidBehaviorType behaviorType = RigidBehaviorType.FOLLOWBONE;\r
-\r
- private final RigidShape rigidShape = new RigidShape();\r
- private final Pos3d position = new Pos3d();\r
- private final Rad3d rotation = new Rad3d();\r
-\r
- private BoneInfo linkedBone;\r
-\r
- private final DynamicsInfo dynamicsInfo = new DynamicsInfo();\r
-\r
- private final Collection<RigidGroup> throughGroupColl =\r
- new ArrayList<RigidGroup>();\r
-\r
- private RigidGroup rigidGroup;\r
-\r
- private int serialNo = -1;\r
-\r
- /**\r
- * コンストラクタ。\r
- */\r
- public RigidInfo(){\r
- super();\r
- return;\r
- }\r
-\r
- /**\r
- * 剛体名を返す。\r
- * @return 剛体名\r
- */\r
- public I18nText getRigidName(){\r
- return this.rigidName;\r
- }\r
-\r
- /**\r
- * 剛体の振る舞い種別を返す。\r
- * @return 剛体の振る舞い種別\r
- */\r
- public RigidBehaviorType getBehaviorType(){\r
- return this.behaviorType;\r
- }\r
-\r
- /**\r
- * 剛体の振る舞い種別を設定する。\r
- * @param type 剛体の振る舞い種別。\r
- * @throws NullPointerException 引数がnull\r
- */\r
- public void setBehaviorType(RigidBehaviorType type)\r
- throws NullPointerException{\r
- if(type == null) throw new NullPointerException();\r
- this.behaviorType = type;\r
- return;\r
- }\r
-\r
- /**\r
- * 剛体形状を返す。\r
- * @return 剛体形状\r
- */\r
- public RigidShape getRigidShape(){\r
- return this.rigidShape;\r
- }\r
-\r
- /**\r
- * 剛体位置を返す。\r
- * @return 剛体位置\r
- */\r
- public Pos3d getPosition(){\r
- return this.position;\r
- }\r
-\r
- /**\r
- * 剛体姿勢を返す。\r
- * @return 剛体姿勢\r
- */\r
- public Rad3d getRotation(){\r
- return this.rotation;\r
- }\r
-\r
- /**\r
- * 接続ボーンを返す。\r
- * @return 接続ボーン\r
- */\r
- public BoneInfo getLinkedBone(){\r
- return this.linkedBone;\r
- }\r
-\r
- /**\r
- * 接続ボーンを設定する。\r
- * @param bone 接続ボーン\r
- */\r
- public void setLinkedBone(BoneInfo bone){\r
- this.linkedBone = bone;\r
- return;\r
- }\r
-\r
- /**\r
- * 剛体の力学パラメータを返す。\r
- * @return 力学パラメータ\r
- */\r
- public DynamicsInfo getDynamicsInfo(){\r
- return this.dynamicsInfo;\r
- }\r
-\r
- /**\r
- * 非衝突グループ集合を返す。\r
- * @return 非衝突グループ集合\r
- */\r
- public Collection<RigidGroup> getThroughGroupColl(){\r
- return this.throughGroupColl;\r
- }\r
-\r
- /**\r
- * 所属する剛体グループを返す。\r
- * @return 所属する剛体グループ\r
- */\r
- public RigidGroup getRigidGroup(){\r
- return this.rigidGroup;\r
- }\r
-\r
- /**\r
- * 所属する剛体グループを設定する。\r
- * @param group 所属する剛体グループ\r
- */\r
- public void setRigidGroup(RigidGroup group){\r
- this.rigidGroup = group;\r
- return;\r
- }\r
-\r
- /**\r
- * {@inheritDoc}\r
- * @param num {@inheritDoc}\r
- */\r
- public void setSerialNumber(int num){\r
- this.serialNo = num;\r
- return;\r
- }\r
-\r
- /**\r
- * {@inheritDoc}\r
- * @return {@inheritDoc}\r
- */\r
- public int getSerialNumber(){\r
- return this.serialNo;\r
- }\r
-\r
- /**\r
- * {@inheritDoc}\r
- * @return {@inheritDoc}\r
- */\r
- @Override\r
- public String toString(){\r
- StringBuilder result = new StringBuilder();\r
-\r
- result.append("Rigid(").append(this.rigidName).append(") ");\r
- result.append("[=>")\r
- .append(this.linkedBone.getBoneName())\r
- .append("bone]");\r
- result.append(" [").append(this.rigidShape).append("]");\r
- result.append(" ").append(this.position);\r
- result.append(" ").append(this.rotation);\r
- result.append(" [").append(this.dynamicsInfo).append("]");\r
- result.append(" [").append(this.behaviorType).append("]");\r
-\r
- result.append(" through[");\r
- boolean dumped = false;\r
- for(RigidGroup group : this.throughGroupColl){\r
- if(dumped) result.append(" ");\r
- result.append(group.getGroupNumber());\r
- dumped = true;\r
- }\r
- result.append("]");\r
-\r
- return result.toString();\r
- }\r
-\r
-}\r
+/*
+ * rigid information
+ *
+ * License : The MIT License
+ * Copyright(c) 2010 MikuToga Partners
+ */
+
+package jp.sourceforge.mikutoga.pmd;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import jp.sourceforge.mikutoga.corelib.I18nText;
+import jp.sourceforge.mikutoga.corelib.SerialNumbered;
+
+/**
+ * 個別の剛体の情報。
+ */
+public class RigidInfo implements SerialNumbered {
+
+ private final I18nText rigidName = new I18nText();
+
+ private RigidBehaviorType behaviorType = RigidBehaviorType.FOLLOWBONE;
+
+ private final RigidShape rigidShape = new RigidShape();
+ private final Pos3d position = new Pos3d();
+ private final Rad3d rotation = new Rad3d();
+
+ private BoneInfo linkedBone;
+
+ private final DynamicsInfo dynamicsInfo = new DynamicsInfo();
+
+ private final Collection<RigidGroup> throughGroupColl =
+ new ArrayList<RigidGroup>();
+
+ private RigidGroup rigidGroup;
+
+ private int serialNo = -1;
+
+ /**
+ * コンストラクタ。
+ */
+ public RigidInfo(){
+ super();
+ return;
+ }
+
+ /**
+ * 剛体名を返す。
+ * @return 剛体名
+ */
+ public I18nText getRigidName(){
+ return this.rigidName;
+ }
+
+ /**
+ * 剛体の振る舞い種別を返す。
+ * @return 剛体の振る舞い種別
+ */
+ public RigidBehaviorType getBehaviorType(){
+ return this.behaviorType;
+ }
+
+ /**
+ * 剛体の振る舞い種別を設定する。
+ * @param type 剛体の振る舞い種別。
+ * @throws NullPointerException 引数がnull
+ */
+ public void setBehaviorType(RigidBehaviorType type)
+ throws NullPointerException{
+ if(type == null) throw new NullPointerException();
+ this.behaviorType = type;
+ return;
+ }
+
+ /**
+ * 剛体形状を返す。
+ * @return 剛体形状
+ */
+ public RigidShape getRigidShape(){
+ return this.rigidShape;
+ }
+
+ /**
+ * 剛体位置を返す。
+ * @return 剛体位置
+ */
+ public Pos3d getPosition(){
+ return this.position;
+ }
+
+ /**
+ * 剛体姿勢を返す。
+ * @return 剛体姿勢
+ */
+ public Rad3d getRotation(){
+ return this.rotation;
+ }
+
+ /**
+ * 接続ボーンを返す。
+ * @return 接続ボーン
+ */
+ public BoneInfo getLinkedBone(){
+ return this.linkedBone;
+ }
+
+ /**
+ * 接続ボーンを設定する。
+ * @param bone 接続ボーン
+ */
+ public void setLinkedBone(BoneInfo bone){
+ this.linkedBone = bone;
+ return;
+ }
+
+ /**
+ * 剛体の力学パラメータを返す。
+ * @return 力学パラメータ
+ */
+ public DynamicsInfo getDynamicsInfo(){
+ return this.dynamicsInfo;
+ }
+
+ /**
+ * 非衝突グループ集合を返す。
+ * @return 非衝突グループ集合
+ */
+ public Collection<RigidGroup> getThroughGroupColl(){
+ return this.throughGroupColl;
+ }
+
+ /**
+ * 所属する剛体グループを返す。
+ * @return 所属する剛体グループ
+ */
+ public RigidGroup getRigidGroup(){
+ return this.rigidGroup;
+ }
+
+ /**
+ * 所属する剛体グループを設定する。
+ * @param group 所属する剛体グループ
+ */
+ public void setRigidGroup(RigidGroup group){
+ this.rigidGroup = group;
+ return;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @param num {@inheritDoc}
+ */
+ @Override
+ public void setSerialNumber(int num){
+ this.serialNo = num;
+ return;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @return {@inheritDoc}
+ */
+ @Override
+ public int getSerialNumber(){
+ return this.serialNo;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @return {@inheritDoc}
+ */
+ @Override
+ public String toString(){
+ StringBuilder result = new StringBuilder();
+
+ String boneName;
+ if(this.linkedBone == null){
+ boneName = "NOBONE";
+ }else{
+ boneName = this.linkedBone.getBoneName().toString();
+ }
+
+ result.append("Rigid(").append(this.rigidName).append(") ");
+ result.append("[=>")
+ .append(boneName)
+ .append("bone]");
+ result.append(" [").append(this.rigidShape).append("]");
+ result.append(" ").append(this.position);
+ result.append(" ").append(this.rotation);
+ result.append(" [").append(this.dynamicsInfo).append("]");
+ result.append(" [").append(this.behaviorType).append("]");
+
+ result.append(" through[");
+ boolean dumped = false;
+ for(RigidGroup group : this.throughGroupColl){
+ if(dumped) result.append(" ");
+ result.append(group.getGroupNumber());
+ dumped = true;
+ }
+ result.append("]");
+
+ return result.toString();
+ }
+
+}