OSDN Git Service

0fca5bfda7f9fef945e09cf6f8dc608c753de951
[mikutoga/TogaGem.git] / src / main / java / jp / sfjp / mikutoga / pmd / parser / PmdJointHandler.java
1 /*
2  * PMD joint information handler
3  *
4  * License : The MIT License
5  * Copyright(c) 2010 MikuToga Partners
6  */
7
8 package jp.sfjp.mikutoga.pmd.parser;
9
10 import jp.sfjp.mikutoga.bin.parser.LoopHandler;
11 import jp.sfjp.mikutoga.bin.parser.MmdFormatException;
12 import jp.sfjp.mikutoga.bin.parser.ParseStage;
13
14 /**
15  * PMDモデルの各種剛体間ジョイント情報の通知用ハンドラ。
16  */
17 public interface PmdJointHandler extends LoopHandler {
18
19     /** ジョイント情報抽出ループ。 */
20     ParseStage JOINT_LIST = new ParseStage();
21
22     /**
23      * ジョイント名の通知を受け取る。
24      * <p>{@link #JOINT_LIST}ループの構成要素。
25      * @param jointName ジョイント名
26      * @throws MmdFormatException 不正フォーマットによる
27      * パース処理の中断をパーサに指示。
28      */
29     void pmdJointName(String jointName)
30         throws MmdFormatException;
31
32     /**
33      * ジョイントが繋ぐ接続剛体IDの通知を受け取る。
34      * <p>{@link #JOINT_LIST}ループの構成要素。
35      * @param rigidIdA 接続剛体AのID
36      * @param rigidIdB 接続剛体BのID
37      * @throws MmdFormatException 不正フォーマットによる
38      * パース処理の中断をパーサに指示。
39      */
40     void pmdJointLink(int rigidIdA, int rigidIdB)
41         throws MmdFormatException;
42
43     /**
44      * ジョイント位置の通知を受け取る。
45      * <p>{@link #JOINT_LIST}ループの構成要素。
46      * @param posX X座標
47      * @param posY Y座標
48      * @param posZ Z座標
49      * @throws MmdFormatException 不正フォーマットによる
50      * パース処理の中断をパーサに指示。
51      */
52     void pmdJointPosition(float posX, float posY, float posZ)
53         throws MmdFormatException;
54
55     /**
56      * ジョイント回転姿勢の通知を受け取る。
57      * <p>{@link #JOINT_LIST}ループの構成要素。
58      * @param radX X軸回転量(radian)
59      * @param radY Y軸回転量(radian)
60      * @param radZ Z軸回転量(radian)
61      * @throws MmdFormatException 不正フォーマットによる
62      * パース処理の中断をパーサに指示。
63      */
64     void pmdJointRotation(float radX, float radY, float radZ)
65         throws MmdFormatException;
66
67     /**
68      * ジョイント移動制限の通知を受け取る。
69      * <p>{@link #JOINT_LIST}ループの構成要素。
70      * <p>※ [制限端 その1 &lt;= その2] 条件を満たす必要はあるか?
71      * @param posXlim1 X座標制限端その1
72      * @param posXlim2 X座標制限端その2
73      * @param posYlim1 Y座標制限端その1
74      * @param posYlim2 Y座標制限端その2
75      * @param posZlim1 Z座標制限端その1
76      * @param posZlim2 Z座標制限端その2
77      * @throws MmdFormatException 不正フォーマットによる
78      * パース処理の中断をパーサに指示。
79      */
80     void pmdPositionLimit(float posXlim1, float posXlim2,
81                             float posYlim1, float posYlim2,
82                             float posZlim1, float posZlim2 )
83         throws MmdFormatException;
84
85     /**
86      * ジョイント回転制限の通知を受け取る。
87      * <p>{@link #JOINT_LIST}ループの構成要素。
88      * <p>※ [制限端 その1 &lt;= その2] 条件を満たす必要はあるか?
89      * @param radXlim1 X軸制限端その1(radian)
90      * @param radXlim2 X軸制限端その2(radian)
91      * @param radYlim1 Y軸制限端その1(radian)
92      * @param radYlim2 Y軸制限端その2(radian)
93      * @param radZlim1 Z軸制限端その1(radian)
94      * @param radZlim2 Z軸制限端その2(radian)
95      * @throws MmdFormatException 不正フォーマットによる
96      * パース処理の中断をパーサに指示。
97      */
98     void pmdRotationLimit(float radXlim1, float radXlim2,
99                             float radYlim1, float radYlim2,
100                             float radZlim1, float radZlim2 )
101         throws MmdFormatException;
102
103     /**
104      * ジョイントのばね移動情報の通知を受け取る。
105      * <p>{@link #JOINT_LIST}ループの構成要素。
106      * @param elasticPosX X座標
107      * @param elasticPosY Y座標
108      * @param elasticPosZ Z座標
109      * @throws MmdFormatException 不正フォーマットによる
110      * パース処理の中断をパーサに指示。
111      */
112     void pmdElasticPosition(float elasticPosX,
113                                float elasticPosY,
114                                float elasticPosZ )
115         throws MmdFormatException;
116
117     /**
118      * ジョイントのばね回転情報の通知を受け取る。
119      * <p>{@link #JOINT_LIST}ループの構成要素。
120      * @param elasticDegX X軸変量(degree)
121      * @param elasticDegY Y軸変量(degree)
122      * @param elasticDegZ Z軸変量(degree)
123      * @throws MmdFormatException 不正フォーマットによる
124      * パース処理の中断をパーサに指示。
125      */
126     void pmdElasticRotation(float elasticDegX,
127                                float elasticDegY,
128                                float elasticDegZ )
129         throws MmdFormatException;
130
131 }