OSDN Git Service

TogaGem1.103.2版より移行。
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / parser / pmd / PmdRigidHandler.java
1 /*\r
2  * PMD rigid information handler\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.parser.pmd;\r
9 \r
10 import jp.sourceforge.mikutoga.parser.LoopHandler;\r
11 import jp.sourceforge.mikutoga.parser.MmdFormatException;\r
12 import jp.sourceforge.mikutoga.parser.ParseStage;\r
13 \r
14 /**\r
15  * PMDモデルの各種剛体情報の通知用ハンドラ。\r
16  */\r
17 public interface PmdRigidHandler extends LoopHandler {\r
18 \r
19     /**\r
20      * 剛体情報パースステージ。\r
21      */\r
22     class PmdRigidStage extends ParseStage{\r
23         /** コンストラクタ。 */\r
24         PmdRigidStage(){ super(); return; }\r
25     }\r
26 \r
27     /** 剛体情報抽出ループ。 */\r
28     PmdRigidStage RIGID_LIST = new PmdRigidStage();\r
29 \r
30     /**\r
31      * 剛体名の通知を受け取る。\r
32      * {@link #RIGID_LIST}ループの構成要素。\r
33      * @param rigidName 剛体名\r
34      * @throws MmdFormatException 不正フォーマットによる\r
35      * パース処理の中断をパーサに指示\r
36      */\r
37     void pmdRigidName(String rigidName)\r
38         throws MmdFormatException;\r
39 \r
40     /**\r
41      * 剛体基本情報の通知を受け取る。\r
42      * {@link #RIGID_LIST}ループの構成要素。\r
43      * @param rigidGroupId 剛体グループ番号から1引いた数。(0-15)\r
44      * @param linkedBoneId 接続先ボーンID\r
45      * @throws MmdFormatException 不正フォーマットによる\r
46      * パース処理の中断をパーサに指示\r
47      */\r
48     void pmdRigidInfo(int rigidGroupId,\r
49                         int linkedBoneId)\r
50         throws MmdFormatException;\r
51 \r
52     /**\r
53      * 剛体形状の通知を受け取る。\r
54      * {@link #RIGID_LIST}ループの構成要素。\r
55      * @param shapeType 形状種別。\r
56      * <ul>\r
57      * <li>0x00:球\r
58      * <li>0x01:箱\r
59      * <li>0x02:カプセル\r
60      * </ul>\r
61      * @param width 球orカプセル半径。箱の幅。\r
62      * @param height 箱orカプセルの高さ\r
63      * @param depth 箱の奥行き\r
64      * @throws MmdFormatException 不正フォーマットによる\r
65      * パース処理の中断をパーサに指示\r
66      */\r
67     void pmdRigidShape(byte shapeType,\r
68                          float width, float height, float depth)\r
69         throws MmdFormatException;\r
70 \r
71     /**\r
72      * 剛体位置の通知を受け取る。\r
73      * {@link #RIGID_LIST}ループの構成要素。\r
74      * @param posX X座標\r
75      * @param posY Y座標\r
76      * @param posZ Z座標\r
77      * @throws MmdFormatException 不正フォーマットによる\r
78      * パース処理の中断をパーサに指示\r
79      */\r
80     void pmdRigidPosition(float posX, float posY, float posZ)\r
81         throws MmdFormatException;\r
82 \r
83     /**\r
84      * 剛体姿勢の通知を受け取る。\r
85      * {@link #RIGID_LIST}ループの構成要素。\r
86      * @param radX X軸回転量(radian)\r
87      * @param radY Y軸回転量(radian)\r
88      * @param radZ Z軸回転量(radian)\r
89      * @throws MmdFormatException 不正フォーマットによる\r
90      * パース処理の中断をパーサに指示\r
91      */\r
92     void pmdRigidRotation(float radX, float radY, float radZ)\r
93         throws MmdFormatException;\r
94 \r
95     /**\r
96      * 剛体物理系数の通知を受け取る。\r
97      * {@link #RIGID_LIST}ループの構成要素。\r
98      * @param mass 質量\r
99      * @param dampingPos 移動減衰率\r
100      * @param dampingRot 回転減衰率\r
101      * @param restitution 反発力\r
102      * @param friction 摩擦力\r
103      * @throws MmdFormatException 不正フォーマットによる\r
104      * パース処理の中断をパーサに指示\r
105      */\r
106     void pmdRigidPhysics(float mass,\r
107                            float dampingPos, float dampingRot,\r
108                            float restitution, float friction )\r
109         throws MmdFormatException;\r
110 \r
111     /**\r
112      * 剛体の振る舞い情報の通知を受け取る。\r
113      * {@link #RIGID_LIST}ループの構成要素。\r
114      * @param behaveType 剛体タイプ。\r
115      * <ul>\r
116      * <li>0:ボーン追従\r
117      * <li>1:物理演算\r
118      * <li>2:物理演算+ボーン位置合わせ\r
119      * </ul>\r
120      * @param collisionMap 非衝突剛体グループビットマップ。\r
121      * (衝突グループ番号-1)位置のビット位置は1に、\r
122      * (非衝突グループ番号-1)位置のビット位置は0になる。\r
123      * 例)グループ1と8のみが非衝突指定の場合、0xff7eになる。\r
124      * @throws MmdFormatException 不正フォーマットによる\r
125      * パース処理の中断をパーサに指示\r
126      */\r
127     void pmdRigidBehavior(byte behaveType, short collisionMap)\r
128         throws MmdFormatException;\r
129 \r
130 }\r