OSDN Git Service

PMD出力機能及びXML入出力機能のソースをマージ
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / RigidInfo.java
1 /*\r
2  * rigid information\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.pmd;\r
9 \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
14 \r
15 /**\r
16  * 個別の剛体の情報。\r
17  */\r
18 public class RigidInfo implements SerialNumbered {\r
19 \r
20     private final I18nText rigidName = new I18nText();\r
21 \r
22     private RigidBehaviorType behaviorType = RigidBehaviorType.FOLLOWBONE;\r
23 \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
27 \r
28     private BoneInfo linkedBone;\r
29 \r
30     private final DynamicsInfo dynamicsInfo = new DynamicsInfo();\r
31 \r
32     private final Collection<RigidGroup> throughGroupColl =\r
33             new ArrayList<RigidGroup>();\r
34 \r
35     private RigidGroup rigidGroup;\r
36 \r
37     private int serialNo = -1;\r
38 \r
39     /**\r
40      * コンストラクタ。\r
41      */\r
42     public RigidInfo(){\r
43         super();\r
44         return;\r
45     }\r
46 \r
47     /**\r
48      * 剛体名を返す。\r
49      * @return 剛体名\r
50      */\r
51     public I18nText getRigidName(){\r
52         return this.rigidName;\r
53     }\r
54 \r
55     /**\r
56      * 剛体の振る舞い種別を返す。\r
57      * @return 剛体の振る舞い種別\r
58      */\r
59     public RigidBehaviorType getBehaviorType(){\r
60         return this.behaviorType;\r
61     }\r
62 \r
63     /**\r
64      * 剛体の振る舞い種別を設定する。\r
65      * @param type 剛体の振る舞い種別。\r
66      * @throws NullPointerException 引数がnull\r
67      */\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
72         return;\r
73     }\r
74 \r
75     /**\r
76      * 剛体形状を返す。\r
77      * @return 剛体形状\r
78      */\r
79     public RigidShape getRigidShape(){\r
80         return this.rigidShape;\r
81     }\r
82 \r
83     /**\r
84      * 剛体位置を返す。\r
85      * @return 剛体位置\r
86      */\r
87     public Pos3d getPosition(){\r
88         return this.position;\r
89     }\r
90 \r
91     /**\r
92      * 剛体姿勢を返す。\r
93      * @return 剛体姿勢\r
94      */\r
95     public Rad3d getRotation(){\r
96         return this.rotation;\r
97     }\r
98 \r
99     /**\r
100      * 接続ボーンを返す。\r
101      * @return 接続ボーン\r
102      */\r
103     public BoneInfo getLinkedBone(){\r
104         return this.linkedBone;\r
105     }\r
106 \r
107     /**\r
108      * 接続ボーンを設定する。\r
109      * @param bone 接続ボーン\r
110      */\r
111     public void setLinkedBone(BoneInfo bone){\r
112         this.linkedBone = bone;\r
113         return;\r
114     }\r
115 \r
116     /**\r
117      * 剛体の力学パラメータを返す。\r
118      * @return 力学パラメータ\r
119      */\r
120     public DynamicsInfo getDynamicsInfo(){\r
121         return this.dynamicsInfo;\r
122     }\r
123 \r
124     /**\r
125      * 非衝突グループ集合を返す。\r
126      * @return 非衝突グループ集合\r
127      */\r
128     public Collection<RigidGroup> getThroughGroupColl(){\r
129         return this.throughGroupColl;\r
130     }\r
131 \r
132     /**\r
133      * 所属する剛体グループを返す。\r
134      * @return 所属する剛体グループ\r
135      */\r
136     public RigidGroup getRigidGroup(){\r
137         return this.rigidGroup;\r
138     }\r
139 \r
140     /**\r
141      * 所属する剛体グループを設定する。\r
142      * @param group 所属する剛体グループ\r
143      */\r
144     public void setRigidGroup(RigidGroup group){\r
145         this.rigidGroup = group;\r
146         return;\r
147     }\r
148 \r
149     /**\r
150      * {@inheritDoc}\r
151      * @param num {@inheritDoc}\r
152      */\r
153     public void setSerialNumber(int num){\r
154         this.serialNo = num;\r
155         return;\r
156     }\r
157 \r
158     /**\r
159      * {@inheritDoc}\r
160      * @return {@inheritDoc}\r
161      */\r
162     public int getSerialNumber(){\r
163         return this.serialNo;\r
164     }\r
165 \r
166     /**\r
167      * {@inheritDoc}\r
168      * @return {@inheritDoc}\r
169      */\r
170     @Override\r
171     public String toString(){\r
172         StringBuilder result = new StringBuilder();\r
173 \r
174         result.append("Rigid(").append(this.rigidName).append(") ");\r
175         result.append("[=>")\r
176               .append(this.linkedBone.getBoneName())\r
177               .append("bone]");\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
183 \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
189             dumped = true;\r
190         }\r
191         result.append("]");\r
192 \r
193         return result.toString();\r
194     }\r
195 \r
196 }\r