OSDN Git Service

166178bbe6d31461e1bb0af5c82a110684e73a72
[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     public static final ParseStage JOINT_LIST = new ParseStage();
21
22     /**
23      * ジョイント名の通知を受け取る。
24      *
25      * <p>{@link #JOINT_LIST}ループの構成要素。
26      *
27      * @param jointName ジョイント名
28      * @throws MmdFormatException 不正フォーマットによる
29      * パース処理の中断をパーサに指示。
30      */
31     public abstract void pmdJointName(String jointName)
32         throws MmdFormatException;
33
34     /**
35      * ジョイントが繋ぐ接続剛体IDの通知を受け取る。
36      *
37      * <p>{@link #JOINT_LIST}ループの構成要素。
38      *
39      * @param rigidIdA 接続剛体AのID
40      * @param rigidIdB 接続剛体BのID
41      * @throws MmdFormatException 不正フォーマットによる
42      * パース処理の中断をパーサに指示。
43      */
44     public abstract void pmdJointLink(int rigidIdA, int rigidIdB)
45         throws MmdFormatException;
46
47     /**
48      * ジョイント位置の通知を受け取る。
49      *
50      * <p>{@link #JOINT_LIST}ループの構成要素。
51      *
52      * @param posX X座標
53      * @param posY Y座標
54      * @param posZ Z座標
55      * @throws MmdFormatException 不正フォーマットによる
56      * パース処理の中断をパーサに指示。
57      */
58     public abstract void pmdJointPosition(float posX, float posY, float posZ)
59         throws MmdFormatException;
60
61     /**
62      * ジョイント回転姿勢の通知を受け取る。
63      *
64      * <p>{@link #JOINT_LIST}ループの構成要素。
65      *
66      * @param radX X軸回転量(radian)
67      * @param radY Y軸回転量(radian)
68      * @param radZ Z軸回転量(radian)
69      * @throws MmdFormatException 不正フォーマットによる
70      * パース処理の中断をパーサに指示。
71      */
72     public abstract void pmdJointRotation(float radX, float radY, float radZ)
73         throws MmdFormatException;
74
75     /**
76      * ジョイント移動制限の通知を受け取る。
77      *
78      * <p>{@link #JOINT_LIST}ループの構成要素。
79      *
80      * <p>※ [制限端 その1 &lt;= その2] 条件を満たす必要はあるか?
81      *
82      * @param posXlim1 X座標制限端その1
83      * @param posXlim2 X座標制限端その2
84      * @param posYlim1 Y座標制限端その1
85      * @param posYlim2 Y座標制限端その2
86      * @param posZlim1 Z座標制限端その1
87      * @param posZlim2 Z座標制限端その2
88      * @throws MmdFormatException 不正フォーマットによる
89      * パース処理の中断をパーサに指示。
90      */
91     public abstract void pmdPositionLimit(float posXlim1, float posXlim2,
92                             float posYlim1, float posYlim2,
93                             float posZlim1, float posZlim2 )
94         throws MmdFormatException;
95
96     /**
97      * ジョイント回転制限の通知を受け取る。
98      *
99      * <p>{@link #JOINT_LIST}ループの構成要素。
100      *
101      * <p>※ [制限端 その1 &lt;= その2] 条件を満たす必要はあるか?
102      *
103      * @param radXlim1 X軸制限端その1(radian)
104      * @param radXlim2 X軸制限端その2(radian)
105      * @param radYlim1 Y軸制限端その1(radian)
106      * @param radYlim2 Y軸制限端その2(radian)
107      * @param radZlim1 Z軸制限端その1(radian)
108      * @param radZlim2 Z軸制限端その2(radian)
109      * @throws MmdFormatException 不正フォーマットによる
110      * パース処理の中断をパーサに指示。
111      */
112     public abstract void pmdRotationLimit(float radXlim1, float radXlim2,
113                             float radYlim1, float radYlim2,
114                             float radZlim1, float radZlim2 )
115         throws MmdFormatException;
116
117     /**
118      * ジョイントのばね移動情報の通知を受け取る。
119      *
120      * <p>{@link #JOINT_LIST}ループの構成要素。
121      *
122      * @param elasticPosX X座標
123      * @param elasticPosY Y座標
124      * @param elasticPosZ Z座標
125      * @throws MmdFormatException 不正フォーマットによる
126      * パース処理の中断をパーサに指示。
127      */
128     public abstract void pmdElasticPosition(float elasticPosX,
129                                float elasticPosY,
130                                float elasticPosZ )
131         throws MmdFormatException;
132
133     /**
134      * ジョイントのばね回転情報の通知を受け取る。
135      *
136      * <p>{@link #JOINT_LIST}ループの構成要素。
137      *
138      * @param elasticDegX X軸変量(degree)
139      * @param elasticDegY Y軸変量(degree)
140      * @param elasticDegZ Z軸変量(degree)
141      * @throws MmdFormatException 不正フォーマットによる
142      * パース処理の中断をパーサに指示。
143      */
144     public abstract void pmdElasticRotation(float elasticDegX,
145                                float elasticDegY,
146                                float elasticDegZ )
147         throws MmdFormatException;
148
149 }