X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fjp%2Fsourceforge%2Fmikutoga%2Fpmd%2Fparser%2FPmdJointHandler.java;fp=src%2Fmain%2Fjava%2Fjp%2Fsourceforge%2Fmikutoga%2Fpmd%2Fparser%2FPmdJointHandler.java;h=64b139f0056fd543d205ec5802ddaebbc091fd37;hb=b8a721a08069c4f7d2b680fbb05746b42e113af9;hp=0000000000000000000000000000000000000000;hpb=2e74d5bab58efff35cf87efa12e8b6621eb408a9;p=mikutoga%2FTogaGem.git diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/parser/PmdJointHandler.java b/src/main/java/jp/sourceforge/mikutoga/pmd/parser/PmdJointHandler.java new file mode 100644 index 0000000..64b139f --- /dev/null +++ b/src/main/java/jp/sourceforge/mikutoga/pmd/parser/PmdJointHandler.java @@ -0,0 +1,131 @@ +/* + * PMD joint information handler + * + * License : The MIT License + * Copyright(c) 2010 MikuToga Partners + */ + +package jp.sourceforge.mikutoga.pmd.parser; + +import jp.sourceforge.mikutoga.parser.LoopHandler; +import jp.sourceforge.mikutoga.parser.MmdFormatException; +import jp.sourceforge.mikutoga.parser.ParseStage; + +/** + * PMDモデルの各種剛体間ジョイント情報の通知用ハンドラ。 + */ +public interface PmdJointHandler extends LoopHandler { + + /** ジョイント情報抽出ループ。 */ + ParseStage JOINT_LIST = new ParseStage(); + + /** + * ジョイント名の通知を受け取る。 + * {@link #JOINT_LIST}ループの構成要素。 + * @param jointName ジョイント名 + * @throws MmdFormatException 不正フォーマットによる + * パース処理の中断をパーサに指示。 + */ + void pmdJointName(String jointName) + throws MmdFormatException; + + /** + * ジョイントが繋ぐ接続剛体IDの通知を受け取る。 + * {@link #JOINT_LIST}ループの構成要素。 + * @param rigidIdA 接続剛体AのID + * @param rigidIdB 接続剛体BのID + * @throws MmdFormatException 不正フォーマットによる + * パース処理の中断をパーサに指示。 + */ + void pmdJointLink(int rigidIdA, int rigidIdB) + throws MmdFormatException; + + /** + * ジョイント位置の通知を受け取る。 + * {@link #JOINT_LIST}ループの構成要素。 + * @param posX X座標 + * @param posY Y座標 + * @param posZ Z座標 + * @throws MmdFormatException 不正フォーマットによる + * パース処理の中断をパーサに指示。 + */ + void pmdJointPosition(float posX, float posY, float posZ) + throws MmdFormatException; + + /** + * ジョイント回転姿勢の通知を受け取る。 + * {@link #JOINT_LIST}ループの構成要素。 + * @param radX X軸回転量(radian) + * @param radY Y軸回転量(radian) + * @param radZ Z軸回転量(radian) + * @throws MmdFormatException 不正フォーマットによる + * パース処理の中断をパーサに指示。 + */ + void pmdJointRotation(float radX, float radY, float radZ) + throws MmdFormatException; + + /** + * ジョイント移動制限の通知を受け取る。 + * {@link #JOINT_LIST}ループの構成要素。 + * ※(制限端その1<=その2)条件を満たす必要はあるか? + * @param posXlim1 X座標制限端その1 + * @param posXlim2 X座標制限端その2 + * @param posYlim1 Y座標制限端その1 + * @param posYlim2 Y座標制限端その2 + * @param posZlim1 Z座標制限端その1 + * @param posZlim2 Z座標制限端その2 + * @throws MmdFormatException 不正フォーマットによる + * パース処理の中断をパーサに指示。 + */ + void pmdPositionLimit(float posXlim1, float posXlim2, + float posYlim1, float posYlim2, + float posZlim1, float posZlim2 ) + throws MmdFormatException; + + /** + * ジョイント回転制限の通知を受け取る。 + * {@link #JOINT_LIST}ループの構成要素。 + * ※(制限端その1<=その2)条件を満たす必要はあるか? + * @param radXlim1 X軸制限端その1(radian) + * @param radXlim2 X軸制限端その2(radian) + * @param radYlim1 Y軸制限端その1(radian) + * @param radYlim2 Y軸制限端その2(radian) + * @param radZlim1 Z軸制限端その1(radian) + * @param radZlim2 Z軸制限端その2(radian) + * @throws MmdFormatException 不正フォーマットによる + * パース処理の中断をパーサに指示。 + */ + void pmdRotationLimit(float radXlim1, float radXlim2, + float radYlim1, float radYlim2, + float radZlim1, float radZlim2 ) + throws MmdFormatException; + + /** + * ジョイントのばね移動情報の通知を受け取る。 + * {@link #JOINT_LIST}ループの構成要素。 + * @param elasticPosX X座標 + * @param elasticPosY Y座標 + * @param elasticPosZ Z座標 + * @throws MmdFormatException 不正フォーマットによる + * パース処理の中断をパーサに指示。 + */ + void pmdElasticPosition(float elasticPosX, + float elasticPosY, + float elasticPosZ ) + throws MmdFormatException; + + /** + * ジョイントのばね回転情報の通知を受け取る。 + * {@link #JOINT_LIST}ループの構成要素。 + * @param elasticDegX X軸変量(degree) + * @param elasticDegY Y軸変量(degree) + * @param elasticDegZ Z軸変量(degree) + * @throws MmdFormatException 不正フォーマットによる + * パース処理の中断をパーサに指示。 + */ + void pmdElasticRotation(float elasticDegX, + float elasticDegY, + float elasticDegZ ) + throws MmdFormatException; + +}