OSDN Git Service

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