2 * PMD joint information handler
4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sourceforge.mikutoga.parser.pmd;
10 import jp.sourceforge.mikutoga.parser.LoopHandler;
11 import jp.sourceforge.mikutoga.parser.MmdFormatException;
12 import jp.sourceforge.mikutoga.parser.ParseStage;
15 * PMDモデルの各種剛体間ジョイント情報の通知用ハンドラ。
17 public interface PmdJointHandler extends LoopHandler {
22 class PmdJointStage extends ParseStage{
24 PmdJointStage(){ super(); return; }
28 PmdJointStage JOINT_LIST = new PmdJointStage();
32 * {@link #JOINT_LIST}ループの構成要素。
33 * @param jointName ジョイント名
34 * @throws MmdFormatException 不正フォーマットによる
37 void pmdJointName(String jointName)
38 throws MmdFormatException;
41 * ジョイントが繋ぐ接続剛体IDの通知を受け取る。
42 * {@link #JOINT_LIST}ループの構成要素。
43 * @param rigidIdA 接続剛体AのID
44 * @param rigidIdB 接続剛体BのID
45 * @throws MmdFormatException 不正フォーマットによる
48 void pmdJointLink(int rigidIdA, int rigidIdB)
49 throws MmdFormatException;
53 * {@link #JOINT_LIST}ループの構成要素。
57 * @throws MmdFormatException 不正フォーマットによる
60 void pmdJointPosition(float posX, float posY, float posZ)
61 throws MmdFormatException;
65 * {@link #JOINT_LIST}ループの構成要素。
66 * @param radX X軸回転量(radian)
67 * @param radY Y軸回転量(radian)
68 * @param radZ Z軸回転量(radian)
69 * @throws MmdFormatException 不正フォーマットによる
72 void pmdJointRotation(float radX, float radY, float radZ)
73 throws MmdFormatException;
77 * {@link #JOINT_LIST}ループの構成要素。
78 * ※(制限端その1<=その2)条件を満たす必要はあるか?
79 * @param posXlim1 X座標制限端その1
80 * @param posXlim2 X座標制限端その2
81 * @param posYlim1 Y座標制限端その1
82 * @param posYlim2 Y座標制限端その2
83 * @param posZlim1 Z座標制限端その1
84 * @param posZlim2 Z座標制限端その2
85 * @throws MmdFormatException 不正フォーマットによる
88 void pmdPositionLimit(float posXlim1, float posXlim2,
89 float posYlim1, float posYlim2,
90 float posZlim1, float posZlim2 )
91 throws MmdFormatException;
95 * {@link #JOINT_LIST}ループの構成要素。
96 * ※(制限端その1<=その2)条件を満たす必要はあるか?
97 * @param radXlim1 X軸制限端その1(radian)
98 * @param radXlim2 X軸制限端その2(radian)
99 * @param radYlim1 Y軸制限端その1(radian)
100 * @param radYlim2 Y軸制限端その2(radian)
101 * @param radZlim1 Z軸制限端その1(radian)
102 * @param radZlim2 Z軸制限端その2(radian)
103 * @throws MmdFormatException 不正フォーマットによる
106 void pmdRotationLimit(float radXlim1, float radXlim2,
107 float radYlim1, float radYlim2,
108 float radZlim1, float radZlim2 )
109 throws MmdFormatException;
112 * ジョイントのばね移動情報の通知を受け取る。
113 * {@link #JOINT_LIST}ループの構成要素。
114 * @param elasticPosX X座標
115 * @param elasticPosY Y座標
116 * @param elasticPosZ Z座標
117 * @throws MmdFormatException 不正フォーマットによる
120 void pmdElasticPosition(float elasticPosX,
123 throws MmdFormatException;
126 * ジョイントのばね回転情報の通知を受け取る。
127 * {@link #JOINT_LIST}ループの構成要素。
128 * @param elasticDegX X軸変量(degree)
129 * @param elasticDegY Y軸変量(degree)
130 * @param elasticDegZ Z軸変量(degree)
131 * @throws MmdFormatException 不正フォーマットによる
134 void pmdElasticRotation(float elasticDegX,
137 throws MmdFormatException;