2 * PMD joint information handler
4 * License : The MIT License
5 * Copyright(c) 2010 MikuToga Partners
8 package jp.sfjp.mikutoga.pmd.parser;
10 import jp.sfjp.mikutoga.bin.parser.LoopHandler;
11 import jp.sfjp.mikutoga.bin.parser.MmdFormatException;
12 import jp.sfjp.mikutoga.bin.parser.ParseStage;
15 * PMDモデルの各種剛体間ジョイント情報の通知用ハンドラ。
17 public interface PmdJointHandler extends LoopHandler {
20 public static final ParseStage JOINT_LIST = new ParseStage();
25 * <p>{@link #JOINT_LIST}ループの構成要素。
27 * @param jointName ジョイント名
28 * @throws MmdFormatException
29 * 不正フォーマットによるパース処理の中断をパーサに指示。
31 public abstract void pmdJointName(String jointName)
32 throws MmdFormatException;
35 * ジョイントが繋ぐ接続剛体IDの通知を受け取る。
37 * <p>{@link #JOINT_LIST}ループの構成要素。
39 * @param rigidIdA 接続剛体AのID
40 * @param rigidIdB 接続剛体BのID
41 * @throws MmdFormatException
42 * 不正フォーマットによるパース処理の中断をパーサに指示。
44 public abstract void pmdJointLink(int rigidIdA, int rigidIdB)
45 throws MmdFormatException;
50 * <p>{@link #JOINT_LIST}ループの構成要素。
55 * @throws MmdFormatException
56 * 不正フォーマットによるパース処理の中断をパーサに指示。
58 public abstract void pmdJointPosition(float posX, float posY, float posZ)
59 throws MmdFormatException;
64 * <p>{@link #JOINT_LIST}ループの構成要素。
66 * @param radX X軸回転量(radian)
67 * @param radY Y軸回転量(radian)
68 * @param radZ Z軸回転量(radian)
69 * @throws MmdFormatException
70 * 不正フォーマットによるパース処理の中断をパーサに指示。
72 public abstract void pmdJointRotation(float radX, float radY, float radZ)
73 throws MmdFormatException;
78 * <p>{@link #JOINT_LIST}ループの構成要素。
80 * <p>※ [制限端 その1 <= その2] 条件を満たす必要はあるか?
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 * 不正フォーマットによるパース処理の中断をパーサに指示。
91 public abstract void pmdPositionLimit(float posXlim1, float posXlim2,
92 float posYlim1, float posYlim2,
93 float posZlim1, float posZlim2 )
94 throws MmdFormatException;
99 * <p>{@link #JOINT_LIST}ループの構成要素。
101 * <p>※ [制限端 その1 <= その2] 条件を満たす必要はあるか?
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 * 不正フォーマットによるパース処理の中断をパーサに指示。
112 public abstract void pmdRotationLimit(float radXlim1, float radXlim2,
113 float radYlim1, float radYlim2,
114 float radZlim1, float radZlim2 )
115 throws MmdFormatException;
118 * ジョイントのばね移動情報の通知を受け取る。
120 * <p>{@link #JOINT_LIST}ループの構成要素。
122 * @param elasticPosX X座標
123 * @param elasticPosY Y座標
124 * @param elasticPosZ Z座標
125 * @throws MmdFormatException
126 * 不正フォーマットによるパース処理の中断をパーサに指示。
128 public abstract void pmdElasticPosition(float elasticPosX,
131 throws MmdFormatException;
134 * ジョイントのばね回転情報の通知を受け取る。
136 * <p>{@link #JOINT_LIST}ループの構成要素。
138 * @param elasticDegX X軸変量(degree)
139 * @param elasticDegY Y軸変量(degree)
140 * @param elasticDegZ Z軸変量(degree)
141 * @throws MmdFormatException
142 * 不正フォーマットによるパース処理の中断をパーサに指示。
144 public abstract void pmdElasticRotation(float elasticDegX,
147 throws MmdFormatException;