OSDN Git Service

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