From: Olyutorskii Date: Tue, 26 Nov 2013 22:17:16 +0000 (+0900) Subject: checkstyle対応 X-Git-Tag: fromMercurial~4 X-Git-Url: http://git.osdn.net/view?p=mikutoga%2FPmd2XML.git;a=commitdiff_plain;h=9b83b2ab88046245489726207bf9fe2dd5db4453;ds=sidebyside checkstyle対応 --- diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java index 0c6eae5..564eff7 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java @@ -26,6 +26,7 @@ public class BoneGroup implements SerialNumbered , Iterable { private int serialNo = -1; + /** * コンストラクタ。 */ @@ -34,6 +35,7 @@ public class BoneGroup implements SerialNumbered , Iterable { return; } + /** * ボーングループ名を返す。 * @return ボーングループ名 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneInfo.java index 9c1f879..e227e60 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneInfo.java @@ -16,6 +16,8 @@ import jp.sfjp.mikutoga.pmd.BoneType; */ public class BoneInfo implements SerialNumbered { + private static final String NO_BONE = "NONE"; + private final I18nText boneName = new I18nText(); private BoneType boneType; @@ -27,7 +29,8 @@ public class BoneInfo implements SerialNumbered { private int rotationRatio; - private int serialNo = -1; + private int boneSerialNo = -1; + /** * コンストラクタ。 @@ -37,6 +40,7 @@ public class BoneInfo implements SerialNumbered { return; } + /** * ボーン名を返す。 * @return ボーン名 @@ -151,7 +155,7 @@ public class BoneInfo implements SerialNumbered { */ @Override public void setSerialNumber(int num){ - this.serialNo = num; + this.boneSerialNo = num; return; } @@ -161,7 +165,7 @@ public class BoneInfo implements SerialNumbered { */ @Override public int getSerialNumber(){ - return this.serialNo; + return this.boneSerialNo; } /** @@ -173,7 +177,7 @@ public class BoneInfo implements SerialNumbered { StringBuilder result = new StringBuilder(); result.append("Bone") - .append(this.serialNo) + .append(this.boneSerialNo) .append("(") .append(this.boneName.getPrimaryText()) .append(")"); @@ -183,11 +187,11 @@ public class BoneInfo implements SerialNumbered { result.append(" prev="); if(this.prevBone != null) result.append(this.prevBone.getBoneName()); - else result.append("NONE"); + else result.append(NO_BONE); result.append(" next="); if(this.nextBone != null) result.append(this.nextBone.getBoneName()); - else result.append("NONE"); + else result.append(NO_BONE); if(this.boneType == BoneType.LINKEDROT){ result.append(" rotraio=").append(this.rotationRatio); @@ -196,7 +200,7 @@ public class BoneInfo implements SerialNumbered { if(this.srcBone != null){ result.append(this.srcBone.getBoneName()); }else{ - result.append("NONE"); + result.append(NO_BONE); } } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/DynamicsInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/DynamicsInfo.java index 7c98761..77e457f 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/DynamicsInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/DynamicsInfo.java @@ -25,6 +25,7 @@ public class DynamicsInfo { /** 摩擦力。 */ private float friction; + /** * コンストラクタ。 */ @@ -33,6 +34,7 @@ public class DynamicsInfo { return; } + /** * 質量を返す。 * @return 質量 @@ -125,11 +127,12 @@ public class DynamicsInfo { @Override public String toString(){ StringBuilder result = new StringBuilder(); + final String delim = ", "; - result.append("mass=").append(this.mass).append(", "); - result.append("damping(Pos)=").append(this.dampingPos).append(", "); - result.append("damping(Rot)=").append(this.dampingRot).append(", "); - result.append("restitution=").append(this.restitution).append(", "); + result.append("mass=").append(this.mass).append(delim); + result.append("damping(Pos)=").append(this.dampingPos).append(delim); + result.append("damping(Rot)=").append(this.dampingRot).append(delim); + result.append("restitution=").append(this.restitution).append(delim); result.append("friction=").append(this.friction); return result.toString(); diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java index 3fd1749..58134d1 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java @@ -23,6 +23,7 @@ public class IKChain implements Iterable { private final List chainList = new ArrayList(); + /** * コンストラクタ。 */ @@ -31,6 +32,7 @@ public class IKChain implements Iterable { return; } + /** * IKボーンを設定する。 * @param bone IKボーン diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/JointInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/JointInfo.java index 89daa6e..f965e63 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/JointInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/JointInfo.java @@ -32,6 +32,7 @@ public class JointInfo { private final TripletRange posRange = new TripletRange(); private final TripletRange rotRange = new TripletRange(); + /** * コンストラクタ。 */ @@ -40,6 +41,7 @@ public class JointInfo { return; } + /** * ジョイント名を返す。 * @return ジョイント名 @@ -66,12 +68,12 @@ public class JointInfo { /** * 連結する剛体を設定する。 - * @param rigidA 連結剛体A - * @param rigidB 連結剛体B + * @param rigidAArg 連結剛体A + * @param rigidBArg 連結剛体B */ - public void setRigidPair(RigidInfo rigidA, RigidInfo rigidB){ - this.rigidA = rigidA; - this.rigidB = rigidB; + public void setRigidPair(RigidInfo rigidAArg, RigidInfo rigidBArg){ + this.rigidA = rigidAArg; + this.rigidB = rigidBArg; return; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/ListUtil.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/ListUtil.java index 1a43fbb..7d8090c 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/ListUtil.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/ListUtil.java @@ -24,6 +24,7 @@ public final class ListUtil { throw new AssertionError(); } + /** * リストの出現順にシリアルナンバーを割り振る。 * シリアルナンバー先頭は0。 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java index 6131327..e17a6bc 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java @@ -19,6 +19,13 @@ import jp.sfjp.mikutoga.corelib.I18nText; */ public class Material implements Iterable { + // sRGBカラー情報配列インデックス + private static final int IDX_RED = 0; + private static final int IDX_GREEN = 1; + private static final int IDX_BLUE = 2; + private static final int IDX_ALPHA = 3; + + private final I18nText materialName = new I18nText(); private Color diffuseColor; @@ -34,6 +41,7 @@ public class Material implements Iterable { private final List surfaceList = new ArrayList(); + /** * コンストラクタ。 */ @@ -42,6 +50,7 @@ public class Material implements Iterable { return; } + /** * 色を不透明化する。 * @param color 色 @@ -52,14 +61,18 @@ public class Material implements Iterable { return color; } - float[] rgba = new float[4]; - color.getRGBColorComponents(rgba); + float[] rgba = null; + rgba = color.getRGBColorComponents(rgba); - Color result = new Color(rgba[0], rgba[1], rgba[2], 1.0f); + Color result = new Color(rgba[IDX_RED], + rgba[IDX_GREEN], + rgba[IDX_BLUE], + 1.0f ); return result; } + /** * マテリアル名を返す。 * PMDEditorのみでのサポート? @@ -200,33 +213,34 @@ public class Material implements Iterable { @Override public String toString(){ StringBuilder result = new StringBuilder(); + final String delim = ", "; result.append("Material "); - float[] rgba = new float[4]; + float[] rgba = null; - this.diffuseColor.getRGBComponents(rgba); + rgba = this.diffuseColor.getRGBComponents(rgba); result.append("diffuse=[") - .append(rgba[0]).append(", ") - .append(rgba[1]).append(", ") - .append(rgba[2]).append(", ") - .append(rgba[3]).append(']') + .append(rgba[IDX_RED]).append(delim) + .append(rgba[IDX_GREEN]).append(delim) + .append(rgba[IDX_BLUE]).append(delim) + .append(rgba[IDX_ALPHA]).append(']') .append(' '); this.specularColor.getRGBComponents(rgba); result.append("specular=[") - .append(rgba[0]).append(", ") - .append(rgba[1]).append(", ") - .append(rgba[2]).append(", ") - .append(rgba[3]).append(']') + .append(rgba[IDX_RED]).append(delim) + .append(rgba[IDX_GREEN]).append(delim) + .append(rgba[IDX_BLUE]).append(delim) + .append(rgba[IDX_ALPHA]).append(']') .append(' '); this.ambientColor.getRGBComponents(rgba); result.append("ambient=[") - .append(rgba[0]).append(", ") - .append(rgba[1]).append(", ") - .append(rgba[2]).append(", ") - .append(rgba[3]).append(']') + .append(rgba[IDX_RED]).append(delim) + .append(rgba[IDX_GREEN]).append(delim) + .append(rgba[IDX_BLUE]).append(delim) + .append(rgba[IDX_ALPHA]).append(']') .append(' '); result.append("shininess=") diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java index 386b55c..e9a7463 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java @@ -25,7 +25,8 @@ public class MorphPart implements SerialNumbered, Iterable { private final List morphVertexList = new ArrayList(); - private int serialNo = -1; + private int morphSerialNo = -1; + /** * コンストラクタ。 @@ -35,6 +36,7 @@ public class MorphPart implements SerialNumbered, Iterable { return; } + /** * モーフ名を返す。 * @return モーフ名 @@ -85,7 +87,7 @@ public class MorphPart implements SerialNumbered, Iterable { */ @Override public void setSerialNumber(int num){ - this.serialNo = num; + this.morphSerialNo = num; return; } @@ -95,7 +97,7 @@ public class MorphPart implements SerialNumbered, Iterable { */ @Override public int getSerialNumber(){ - return this.serialNo; + return this.morphSerialNo; } @Override diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphVertex.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphVertex.java index 155304e..733e4c6 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphVertex.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphVertex.java @@ -19,10 +19,11 @@ public class MorphVertex implements SerialNumbered{ public static final Comparator VIDCOMPARATOR = new VertexIdComparator(); - private Vertex baseVertex; + private Vertex baseVertex = null; private final MkPos3D offset = new MkPos3D(); - private int serialNo = -1; + private int morphVertexSerialNo = -1; + /** * コンストラクタ。 @@ -32,6 +33,7 @@ public class MorphVertex implements SerialNumbered{ return; } + /** * 移動元頂点情報を返す。 * @return 移動元頂点 @@ -65,7 +67,7 @@ public class MorphVertex implements SerialNumbered{ */ @Override public void setSerialNumber(int num){ - this.serialNo = num; + this.morphVertexSerialNo = num; return; } @@ -75,7 +77,7 @@ public class MorphVertex implements SerialNumbered{ */ @Override public int getSerialNumber(){ - return this.serialNo; + return this.morphVertexSerialNo; } /** @@ -96,16 +98,18 @@ public class MorphVertex implements SerialNumbered{ return result.toString(); } + /** * 頂点IDによる比較子Comparator。 */ + @SuppressWarnings("serial") private static final class VertexIdComparator implements Comparator { /** * コンストラクタ。 */ - private VertexIdComparator(){ + VertexIdComparator(){ super(); return; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java index cbd0695..d44c89c 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java @@ -49,6 +49,7 @@ public class PmdModel { private ToonMap toonMap = new ToonMap(); + /** * コンストラクタ。 */ @@ -66,6 +67,7 @@ public class PmdModel { return; } + /** * モデル名を返す。 * @return モデル名 @@ -198,10 +200,7 @@ public class PmdModel { if(bone.getBoneName().hasGlobalText()) return true; } - List typeList = new ArrayList(); - typeList.addAll(this.morphMap.keySet()); - for(MorphType type : typeList){ - List partList = this.morphMap.get(type); + for(List partList : this.morphMap.values()){ for(MorphPart part : partList){ if(part.getMorphName().hasGlobalText()) return true; } @@ -215,6 +214,53 @@ public class PmdModel { } /** + * 全モーフが使う全モーフ頂点の出現順リストを返す。 + * モーフ種別毎に固まっている事が保証される。 + * @return モーフ頂点リスト + */ + private List getAllMorphVertexList(){ + List allList = new ArrayList(); + + for(MorphType type : this.morphMap.keySet()){ + if(type.isBase()) continue; + + List partList = this.morphMap.get(type); + if(partList == null) continue; + + for(MorphPart part : partList){ + List morphVertexList = + part.getMorphVertexList(); + allList.addAll(morphVertexList); + } + } + + return allList; + } + + /** + * 重複する頂点参照を除いたモーフ頂点リストを返す。 + * @param allList モーフ頂点リスト + * @return 重複が除かれたモーフ頂点リスト + */ + private List getUniqueMorphVertexList( + List allList ){ + List result = new ArrayList(); + + Set mergedVertexSet = new HashSet(); + + for(MorphVertex morphVertex : allList){ + Vertex vertex = morphVertex.getBaseVertex(); + + if(mergedVertexSet.contains(vertex)) continue; + + mergedVertexSet.add(vertex); + result.add(morphVertex); + } + + return result; + } + + /** * モーフで使われる全てのモーフ頂点のリストを返す。 * モーフ間で重複する頂点はマージされる。 * 頂点IDでソートされる。 @@ -224,47 +270,29 @@ public class PmdModel { * @return モーフに使われるモーフ頂点のリスト */ public List mergeMorphVertex(){ - List result = new ArrayList(); + List result; - Set mergedVertexSet = new HashSet(); - for(MorphType type : this.morphMap.keySet()){ - if(type.isBase()) continue; - List partList = this.morphMap.get(type); - if(partList == null) continue; - for(MorphPart part : partList){ - for(MorphVertex morphVertex : part){ - Vertex vertex = morphVertex.getBaseVertex(); - if(mergedVertexSet.contains(vertex)) continue; - mergedVertexSet.add(vertex); - result.add(morphVertex); - } - } - } + List allList = getAllMorphVertexList(); + result = getUniqueMorphVertexList(allList); Collections.sort(result, MorphVertex.VIDCOMPARATOR); - for(int idx = 0; idx < result.size(); idx++){ - MorphVertex morphVertex = result.get(idx); - morphVertex.setSerialNumber(idx); - } + ListUtil.assignIndexedSerial(result); Map numberedMap = new HashMap(); for(MorphVertex morphVertex : result){ - numberedMap.put(morphVertex.getBaseVertex(), morphVertex); + Vertex vertex = morphVertex.getBaseVertex(); + numberedMap.put(vertex, morphVertex); } - for(MorphType type : this.morphMap.keySet()){ - if(type.isBase()) continue; - List partList = this.morphMap.get(type); - if(partList == null) continue; - for(MorphPart part : partList){ - for(MorphVertex morphVertex : part){ - Vertex vertex = morphVertex.getBaseVertex(); - MorphVertex numbered = numberedMap.get(vertex); - assert numbered != null; - morphVertex.setSerialNumber(numbered.getSerialNumber()); - } - } + for(MorphVertex morphVertex : allList){ + Vertex vertex = morphVertex.getBaseVertex(); + + MorphVertex numbered = numberedMap.get(vertex); + assert numbered != null; + + int serialNo = numbered.getSerialNumber(); + morphVertex.setSerialNumber(serialNo); } return result; diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java index 0aaee86..a28eea7 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java @@ -17,12 +17,14 @@ import java.util.List; */ public class RigidGroup implements SerialNumbered, Iterable { + /** 剛体グループ総数。 */ public static final int MAX_RIGID_GROUP = 16; private final List rigidList = new ArrayList(); - private int serialNo = -1; + private int rigidGroupSerialNo = -1; + /** * コンストラクタ。 @@ -32,6 +34,7 @@ public class RigidGroup implements SerialNumbered, Iterable { return; } + /** * 所属する剛体のリストを返す。 * @return 剛体リスト @@ -55,7 +58,7 @@ public class RigidGroup implements SerialNumbered, Iterable { */ @Override public void setSerialNumber(int num){ - this.serialNo = num; + this.rigidGroupSerialNo = num; return; } @@ -65,7 +68,7 @@ public class RigidGroup implements SerialNumbered, Iterable { */ @Override public int getSerialNumber(){ - return this.serialNo; + return this.rigidGroupSerialNo; } /** @@ -75,7 +78,7 @@ public class RigidGroup implements SerialNumbered, Iterable { * @return グループ番号 */ public int getGroupNumber(){ - return this.serialNo + 1; + return this.rigidGroupSerialNo + 1; } /** diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java index 08a5481..95adef8 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java @@ -36,7 +36,8 @@ public class RigidInfo implements SerialNumbered { private RigidGroup rigidGroup; - private int serialNo = -1; + private int rigidSerialNo = -1; + /** * コンストラクタ。 @@ -46,6 +47,7 @@ public class RigidInfo implements SerialNumbered { return; } + /** * 剛体名を返す。 * @return 剛体名 @@ -154,7 +156,7 @@ public class RigidInfo implements SerialNumbered { */ @Override public void setSerialNumber(int num){ - this.serialNo = num; + this.rigidSerialNo = num; return; } @@ -164,7 +166,7 @@ public class RigidInfo implements SerialNumbered { */ @Override public int getSerialNumber(){ - return this.serialNo; + return this.rigidSerialNo; } /** diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidShape.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidShape.java index 591bc3d..8279a90 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidShape.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidShape.java @@ -15,10 +15,14 @@ import jp.sfjp.mikutoga.pmd.RigidShapeType; */ public class RigidShape { + private static final float DEF_DIM = 0.1f; + private RigidShapeType type = RigidShapeType.BOX; - private float width = 0.1f; - private float height = 0.1f; - private float depth = 0.1f; + + private float width = DEF_DIM; + private float height = DEF_DIM; + private float depth = DEF_DIM; + /** * コンストラクタ。 @@ -28,6 +32,7 @@ public class RigidShape { return; } + /** * 剛体形状種別を返す。 * @return 剛体形状種別 diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java index 7c73317..b8df4be 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java @@ -17,6 +17,7 @@ public interface SerialNumbered { /** 昇順での比較子。 */ Comparator COMPARATOR = new SerialComparator(); + /** * 通し番号を設定する。 * @param num 通し番号 @@ -29,10 +30,12 @@ public interface SerialNumbered { */ int getSerialNumber(); + /** * 通し番号による比較子Comparator。 * 通し番号の昇順を定義づける。 */ + @SuppressWarnings("serial") class SerialComparator implements Comparator { @@ -44,6 +47,7 @@ public interface SerialNumbered { return; } + /** * {@inheritDoc} * @param o1 {@inheritDoc} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/ShadeInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/ShadeInfo.java index aa61c9f..c468a90 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/ShadeInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/ShadeInfo.java @@ -18,6 +18,7 @@ public class ShadeInfo { private String textureFileName = null; private String spheremapFileName = null; + /** * コンストラクタ。 */ @@ -26,6 +27,7 @@ public class ShadeInfo { return; } + /** * トゥーンマップを設定する。 * @param map トゥーンマップ @@ -66,8 +68,10 @@ public class ShadeInfo { * @return 有効ならtrue */ public boolean isValidToonIndex(){ - if(0 <= this.toonIdx && this.toonIdx <= 9) return true; - return false; + boolean result; + result = (0 <= this.toonIdx) + && (this.toonIdx < ToonMap.MAX_CUSTOM_TOON); + return result; } /** diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java index 2d594e5..f3e9ab5 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java @@ -16,11 +16,15 @@ import java.util.List; */ public class Surface implements SerialNumbered, Iterable { + private static final int TRIANGLE = 3; + + private Vertex vertex1; private Vertex vertex2; private Vertex vertex3; - private int serialNo = -1; + private int surfaceSerialNo = -1; + /** * コンストラクタ。 @@ -31,25 +35,26 @@ public class Surface implements SerialNumbered, Iterable { return; } + /** * 3頂点を設定する。 - * @param vertex1 頂点1 - * @param vertex2 頂点2 - * @param vertex3 頂点3 + * @param vtx1 頂点1 + * @param vtx2 頂点2 + * @param vtx3 頂点3 * @throws IllegalArgumentException 重複する頂点が引数に含まれた */ - public void setTriangle(Vertex vertex1, Vertex vertex2, Vertex vertex3) + public void setTriangle(Vertex vtx1, Vertex vtx2, Vertex vtx3) throws IllegalArgumentException{ - if(vertex1 != null && (vertex1 == vertex2 || vertex1 == vertex3)){ + if(vtx1 != null && (vtx1 == vtx2 || vtx1 == vtx3)){ throw new IllegalArgumentException(); } - if(vertex2 != null && vertex2 == vertex3){ + if(vtx2 != null && vtx2 == vtx3){ throw new IllegalArgumentException(); } - this.vertex1 = vertex1; - this.vertex2 = vertex2; - this.vertex3 = vertex3; + this.vertex1 = vtx1; + this.vertex2 = vtx2; + this.vertex3 = vtx3; return; } @@ -63,10 +68,10 @@ public class Surface implements SerialNumbered, Iterable { */ public Vertex[] getTriangle(Vertex[] store){ Vertex[] result; - if(store == null || store.length < 3){ - result = new Vertex[3]; - }else{ + if(store != null && store.length >= TRIANGLE){ result = store; + }else{ + result = new Vertex[TRIANGLE]; } result[0] = this.vertex1; @@ -108,7 +113,7 @@ public class Surface implements SerialNumbered, Iterable { */ @Override public Iterator iterator(){ - List list = new ArrayList(3); + List list = new ArrayList(TRIANGLE); list.add(this.vertex1); list.add(this.vertex2); @@ -122,12 +127,11 @@ public class Surface implements SerialNumbered, Iterable { * @return 3頂点とも非nullが設定されていればtrue */ public boolean isCompleted(){ - if( this.vertex1 != null - && this.vertex2 != null - && this.vertex3 != null ){ - return true; - } - return false; + boolean result; + result = this.vertex1 != null + && this.vertex2 != null + && this.vertex3 != null; + return result; } /** @@ -136,7 +140,7 @@ public class Surface implements SerialNumbered, Iterable { */ @Override public void setSerialNumber(int num){ - this.serialNo = num; + this.surfaceSerialNo = num; return; } @@ -146,7 +150,7 @@ public class Surface implements SerialNumbered, Iterable { */ @Override public int getSerialNumber(){ - return this.serialNo; + return this.surfaceSerialNo; } /** diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java index 37f928a..a7a29e0 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java @@ -25,32 +25,41 @@ import java.util.TreeMap; */ public class ToonMap { + /** カスタムトゥーンファイルの総数。 */ public static final int MAX_CUSTOM_TOON = 10; + private static final Map DEF_TOONMAP; + private static final int IDX_SP = 0xff; // 特殊トゥーンのインデックス + static{ Map map = new TreeMap(); - map.put(0x00, "toon01.bmp"); - map.put(0x01, "toon02.bmp"); - map.put(0x02, "toon03.bmp"); - map.put(0x03, "toon04.bmp"); - map.put(0x04, "toon05.bmp"); - map.put(0x05, "toon06.bmp"); - map.put(0x06, "toon07.bmp"); - map.put(0x07, "toon08.bmp"); - map.put(0x08, "toon09.bmp"); - map.put(0x09, "toon10.bmp"); - map.put(0xff, "toon0.bmp"); + int idx = 0x00; + map.put(idx++, "toon01.bmp"); + map.put(idx++, "toon02.bmp"); + map.put(idx++, "toon03.bmp"); + map.put(idx++, "toon04.bmp"); + map.put(idx++, "toon05.bmp"); + map.put(idx++, "toon06.bmp"); + map.put(idx++, "toon07.bmp"); + map.put(idx++, "toon08.bmp"); + map.put(idx++, "toon09.bmp"); + map.put(idx++, "toon10.bmp"); + map.put(IDX_SP, "toon0.bmp"); + + assert idx == MAX_CUSTOM_TOON; DEF_TOONMAP = Collections.unmodifiableMap(map); assert DEF_TOONMAP.size() == MAX_CUSTOM_TOON + 1; } - private final Map toonMap = + + private final Map toonDefMap = new TreeMap(DEF_TOONMAP); + /** * コンストラクタ。 */ @@ -59,13 +68,14 @@ public class ToonMap { return; } + /** * 指定したインデックス値に対応したトゥーンファイル名を返す。 * @param idx インデックス値 * @return トゥーンファイル名。該当するものがなければnull */ public String getIndexedToon(int idx){ - String result = this.toonMap.get(idx); + String result = this.toonDefMap.get(idx); return result; } @@ -78,7 +88,7 @@ public class ToonMap { public void setIndexedToon(int idx, String toonFileName) throws NullPointerException{ if(toonFileName == null) throw new NullPointerException(); - this.toonMap.put(idx, toonFileName); + this.toonDefMap.put(idx, toonFileName); return; } @@ -88,7 +98,7 @@ public class ToonMap { * @return 等しければtrue */ public boolean isDefaultMap(){ - boolean result = this.toonMap.equals(DEF_TOONMAP); + boolean result = this.toonDefMap.equals(DEF_TOONMAP); return result; } @@ -98,7 +108,7 @@ public class ToonMap { * @return デフォルトと等しければtrue。 */ public boolean isDefaultToon(int idx){ - String thisToon = this.toonMap.get(idx); + String thisToon = this.toonDefMap.get(idx); if(thisToon == null) return false; String defToon = DEF_TOONMAP.get(idx); @@ -112,8 +122,8 @@ public class ToonMap { * このトゥーンファイル構成をデフォルト構成内容でリセットする。 */ public void resetDefaultMap(){ - this.toonMap.clear(); - this.toonMap.putAll(DEF_TOONMAP); + this.toonDefMap.clear(); + this.toonDefMap.putAll(DEF_TOONMAP); return; } @@ -124,7 +134,7 @@ public class ToonMap { */ public void resetIndexedToon(int idx){ String toonFile = DEF_TOONMAP.get(idx); - this.toonMap.put(idx, toonFile); + this.toonDefMap.put(idx, toonFile); return; } @@ -137,7 +147,7 @@ public class ToonMap { StringBuilder result = new StringBuilder(); boolean dumped = false; - for(Map.Entry entry : this.toonMap.entrySet()){ + for(Map.Entry entry : this.toonDefMap.entrySet()){ Integer idx = entry.getKey(); String toonFile = entry.getValue(); diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java index 82f603b..b037d88 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java @@ -18,6 +18,8 @@ public class Vertex implements SerialNumbered { private static final int MIN_WEIGHT = 0; private static final int MAX_WEIGHT = 100; + private static final int BALANCED = 50; + private final MkPos3D position = new MkPos3D(); private final MkVec3D normal = new MkVec3D(); @@ -27,11 +29,12 @@ public class Vertex implements SerialNumbered { private BoneInfo boneA = null; private BoneInfo boneB = null; - private int boneWeight = 50; + private int boneWeight = BALANCED; private boolean edgeAppearance = true; - private int serialNo = -1; + private int vertexSerialNo = -1; + /** * コンストラクタ。 @@ -41,6 +44,7 @@ public class Vertex implements SerialNumbered { return; } + /** * 頂点位置座標を返す。 * @return 頂点の位置座標 @@ -67,15 +71,18 @@ public class Vertex implements SerialNumbered { /** * 頂点の属するボーンを設定する。 - * @param boneA ボーンA - * @param boneB ボーンB + * @param boneAArg ボーンA + * @param boneBArg ボーンB * @throws NullPointerException 引数がnull */ - public void setBonePair(BoneInfo boneA, BoneInfo boneB) + public void setBonePair(BoneInfo boneAArg, BoneInfo boneBArg) throws NullPointerException{ - if(boneA == null || boneB == null) throw new NullPointerException(); - this.boneA = boneA; - this.boneB = boneB; + if(boneAArg == null || boneBArg == null) + throw new NullPointerException(); + + this.boneA = boneAArg; + this.boneB = boneBArg; + return; } @@ -178,7 +185,7 @@ public class Vertex implements SerialNumbered { */ @Override public void setSerialNumber(int num){ - this.serialNo = num; + this.vertexSerialNo = num; return; } @@ -188,7 +195,7 @@ public class Vertex implements SerialNumbered { */ @Override public int getSerialNumber(){ - return this.serialNo; + return this.vertexSerialNo; } /** @@ -199,7 +206,7 @@ public class Vertex implements SerialNumbered { public String toString(){ StringBuilder result = new StringBuilder(); - result.append("Vertex(").append(this.serialNo).append(") "); + result.append("Vertex(").append(this.vertexSerialNo).append(") "); result.append(this.position).append(' '); result.append(this.normal).append(' '); result.append("UV").append(this.uvPosition).append(' '); diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/BoneBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/BoneBuilder.java index 07d3b03..391d4f0 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/BoneBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/BoneBuilder.java @@ -77,7 +77,7 @@ class BoneBuilder implements PmdBoneHandler { this.currentIkChain = this.ikChainIt.next(); } }else if(stage == PmdBoneHandler.IKCHAIN_LIST){ - //NOTHING + assert true; // NOTHING }else if(stage == PmdBoneHandler.BONEGROUP_LIST){ ListUtil.prepareDefConsList(this.boneGroupList, BoneGroup.class, @@ -93,7 +93,7 @@ class BoneBuilder implements PmdBoneHandler { this.currentBoneGroup = this.boneGroupIt.next(); } }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){ - //NOTHING + assert true; // NOTHING }else{ assert false; throw new AssertionError(); @@ -117,13 +117,13 @@ class BoneBuilder implements PmdBoneHandler { this.currentIkChain = this.ikChainIt.next(); } }else if(stage == PmdBoneHandler.IKCHAIN_LIST){ - //NOTHING + assert true; // NOTHING }else if(stage == PmdBoneHandler.BONEGROUP_LIST){ if(this.boneGroupIt.hasNext()){ this.currentBoneGroup = this.boneGroupIt.next(); } }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){ - //NOTHING + assert true; // NOTHING }else{ assert false; throw new AssertionError(); @@ -138,13 +138,13 @@ class BoneBuilder implements PmdBoneHandler { @Override public void loopEnd(ParseStage stage){ if(stage == PmdBoneHandler.BONE_LIST){ - //NOTHING + assert true; // NOTHING }else if(stage == PmdBoneHandler.IK_LIST){ - //NOTHING + assert true; // NOTHING }else if(stage == PmdBoneHandler.IKCHAIN_LIST){ - //NOTHING + assert true; // NOTHING }else if(stage == PmdBoneHandler.BONEGROUP_LIST){ - //NOTHING + assert true; // NOTHING }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){ pickOrphanBone(); }else{ diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MaterialBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MaterialBuilder.java index 959496b..2795475 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MaterialBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MaterialBuilder.java @@ -24,6 +24,9 @@ import jp.sfjp.mikutoga.pmd.parser.PmdMaterialHandler; */ class MaterialBuilder implements PmdMaterialHandler { + private static final int TRIANGLE = 3; + + private final List materialList; private Iterator materialIt; private Material currentMaterial = null; @@ -33,6 +36,7 @@ class MaterialBuilder implements PmdMaterialHandler { private final ToonMap toonMap; + /** * コンストラクタ。 * @param model モデル @@ -47,6 +51,7 @@ class MaterialBuilder implements PmdMaterialHandler { return; } + /** * {@inheritDoc} * @param stage {@inheritDoc} @@ -154,7 +159,7 @@ class MaterialBuilder implements PmdMaterialHandler { List list = this.currentMaterial.getSurfaceList(); - int surfaceNum = vertexNum / 3; + int surfaceNum = vertexNum / TRIANGLE; for(int ct = 1; ct <= surfaceNum; ct++){ Surface surface = this.surfaceIt.next(); list.add(surface); diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MorphBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MorphBuilder.java index 64b5e14..ec93d41 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MorphBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MorphBuilder.java @@ -75,9 +75,9 @@ class MorphBuilder implements PmdMorphHandler { this.currentMorphPart = this.morphPartIt.next(); } }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){ - // NOTHING + assert true; // NOTHING }else if(stage == PmdMorphHandler.MORPHORDER_LIST){ - // NOTHING + assert true; // NOTHING }else{ assert false; throw new AssertionError(); @@ -97,9 +97,9 @@ class MorphBuilder implements PmdMorphHandler { this.currentMorphPart = this.morphPartIt.next(); } }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){ - // NOTHING + assert true; // NOTHING }else if(stage == PmdMorphHandler.MORPHORDER_LIST){ - // NOTHING + assert true; // NOTHING }else{ assert false; throw new AssertionError(); @@ -115,11 +115,11 @@ class MorphBuilder implements PmdMorphHandler { @Override public void loopEnd(ParseStage stage){ if(stage == PmdMorphHandler.MORPH_LIST){ - // NOTHING + assert true; // NOTHING }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){ - // NOTHING + assert true; // NOTHING }else if(stage == PmdMorphHandler.MORPHORDER_LIST){ - // NOTHING + assert true; // NOTHING }else{ assert false; throw new AssertionError(); diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterBase.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterBase.java index 7553194..5cfe69a 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterBase.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterBase.java @@ -70,10 +70,22 @@ public class PmdExporterBase extends BinaryExporter{ /** 改行文字列 CRLF。 */ private static final String CRLF = CR + LF; // 0x0d, 0x0a + // sRGBカラー情報配列インデックス + private static final int IDX_RED = 0; + private static final int IDX_GREEN = 1; + private static final int IDX_BLUE = 2; + private static final int IDX_ALPHA = 3; + + private static final int TRIANGLE = 3; + static{ assert NOPREVBONE_ID > PmdConst.MAX_BONE - 1; } + + private float[] rgbaBuf = null; + + /** * コンストラクタ。 * @param stream 出力ストリーム @@ -150,7 +162,7 @@ public class PmdExporterBase extends BinaryExporter{ */ private void dumpBasic(PmdModel model) throws IOException, IllegalTextExportException{ - for(int idx=0; idx < MAGIC_BYTES.length; idx++){ + for(int idx = 0; idx < MAGIC_BYTES.length; idx++){ dumpByte(MAGIC_BYTES[idx]); } @@ -231,9 +243,9 @@ public class PmdExporterBase extends BinaryExporter{ for(Material material : materialList){ surfaceNum += material.getSurfaceList().size(); } - dumpLeInt(surfaceNum * 3); + dumpLeInt(surfaceNum * TRIANGLE); - Vertex[] triangle = new Vertex[3]; + Vertex[] triangle = new Vertex[TRIANGLE]; for(Material material : materialList){ for(Surface surface : material){ surface.getTriangle(triangle); @@ -261,45 +273,9 @@ public class PmdExporterBase extends BinaryExporter{ int materialNum = materialList.size(); dumpLeInt(materialNum); - float[] rgba = new float[4]; - for(Material material : materialList){ - Color diffuse = material.getDiffuseColor(); - diffuse.getRGBComponents(rgba); - dumpLeFloat(rgba[0]); - dumpLeFloat(rgba[1]); - dumpLeFloat(rgba[2]); - dumpLeFloat(rgba[3]); - - float shininess = material.getShininess(); - dumpLeFloat(shininess); - - Color specular = material.getSpecularColor(); - specular.getRGBComponents(rgba); - dumpLeFloat(rgba[0]); - dumpLeFloat(rgba[1]); - dumpLeFloat(rgba[2]); - - Color ambient = material.getAmbientColor(); - ambient.getRGBComponents(rgba); - dumpLeFloat(rgba[0]); - dumpLeFloat(rgba[1]); - dumpLeFloat(rgba[2]); - - ShadeInfo shade = material.getShadeInfo(); - int toonIdx = shade.getToonIndex(); - dumpByte(toonIdx); - - byte edgeFlag; - boolean showEdge = material.getEdgeAppearance(); - if(showEdge) edgeFlag = 0x01; - else edgeFlag = 0x00; - dumpByte(edgeFlag); - - int surfaceNum = material.getSurfaceList().size(); - dumpLeInt(surfaceNum * 3); - - dumpShadeFileInfo(shade); + dumpColorInfo(material); + dumpShadeInfo(material); } flush(); @@ -308,6 +284,64 @@ public class PmdExporterBase extends BinaryExporter{ } /** + * フォンシェーディングの色情報を出力する。 + * @param material マテリアル情報 + * @throws IOException 出力エラー + */ + private void dumpColorInfo(Material material) + throws IOException{ + Color diffuse = material.getDiffuseColor(); + this.rgbaBuf = diffuse.getRGBComponents(this.rgbaBuf); + dumpLeFloat(this.rgbaBuf[IDX_RED]); + dumpLeFloat(this.rgbaBuf[IDX_GREEN]); + dumpLeFloat(this.rgbaBuf[IDX_BLUE]); + dumpLeFloat(this.rgbaBuf[IDX_ALPHA]); + + float shininess = material.getShininess(); + dumpLeFloat(shininess); + + Color specular = material.getSpecularColor(); + this.rgbaBuf = specular.getRGBComponents(this.rgbaBuf); + dumpLeFloat(this.rgbaBuf[IDX_RED]); + dumpLeFloat(this.rgbaBuf[IDX_GREEN]); + dumpLeFloat(this.rgbaBuf[IDX_BLUE]); + + Color ambient = material.getAmbientColor(); + this.rgbaBuf = ambient.getRGBComponents(this.rgbaBuf); + dumpLeFloat(this.rgbaBuf[IDX_RED]); + dumpLeFloat(this.rgbaBuf[IDX_GREEN]); + dumpLeFloat(this.rgbaBuf[IDX_BLUE]); + + return; + } + + /** + * シェーディング情報を出力する。 + * @param material マテリアル情報 + * @throws IOException 出力エラー + * @throws IllegalTextExportException ファイル名が長すぎる + */ + private void dumpShadeInfo(Material material) + throws IOException, IllegalTextExportException{ + ShadeInfo shade = material.getShadeInfo(); + int toonIdx = shade.getToonIndex(); + dumpByte(toonIdx); + + boolean showEdge = material.getEdgeAppearance(); + byte edgeFlag; + if(showEdge) edgeFlag = 0x01; + else edgeFlag = 0x00; + dumpByte(edgeFlag); + + int surfaceNum = material.getSurfaceList().size(); + dumpLeInt(surfaceNum * TRIANGLE); + + dumpShadeFileInfo(shade); + + return; + } + + /** * シェーディングファイル情報を出力する。 * @param shade シェーディング情報 * @throws IOException 出力エラー @@ -459,15 +493,15 @@ public class PmdExporterBase extends BinaryExporter{ throws IOException, IllegalTextExportException{ Map> morphMap = model.getMorphMap(); Set typeSet = morphMap.keySet(); - List mergedMorphVertexList = model.mergeMorphVertex(); + List morphPartList = new LinkedList(); - int totalMorphPart = 0; for(MorphType type : typeSet){ List partList = morphMap.get(type); if(partList == null) continue; - totalMorphPart += partList.size(); + morphPartList.addAll(partList); } + int totalMorphPart = morphPartList.size(); if(totalMorphPart <= 0){ dumpLeShort(0); return; @@ -476,9 +510,41 @@ public class PmdExporterBase extends BinaryExporter{ dumpLeShort(totalMorphPart); } + dumpBaseMorph(model); + + for(MorphPart part : morphPartList){ + dumpText(part.getMorphName().getPrimaryText(), + PmdConst.MAXBYTES_MORPHNAME ); + + List morphVertexList = part.getMorphVertexList(); + dumpLeInt(morphVertexList.size()); + + dumpByte(part.getMorphType().encode()); + for(MorphVertex morphVertex : morphVertexList){ + dumpLeInt(morphVertex.getSerialNumber()); + dumpPos3D(morphVertex.getOffset()); + } + } + + flush(); + + return; + } + + /** + * BASEモーフを出力する。 + * @param model モデルデータ + * @throws IOException 出力エラー + * @throws IllegalTextExportException モーフ名が長すぎる + */ + private void dumpBaseMorph(PmdModel model) + throws IOException, IllegalTextExportException{ dumpText("base", PmdConst.MAXBYTES_MORPHNAME); + + List mergedMorphVertexList = model.mergeMorphVertex(); int totalVertex = mergedMorphVertexList.size(); dumpLeInt(totalVertex); + dumpByte(MorphType.BASE.encode()); for(MorphVertex morphVertex : mergedMorphVertexList){ Vertex baseVertex = morphVertex.getBaseVertex(); @@ -486,25 +552,6 @@ public class PmdExporterBase extends BinaryExporter{ dumpPos3D(baseVertex.getPosition()); } - for(MorphType type : typeSet){ - List partList = morphMap.get(type); - if(partList == null) continue; - for(MorphPart part : partList){ - dumpText(part.getMorphName().getPrimaryText(), - PmdConst.MAXBYTES_MORPHNAME ); - List morphVertexList = part.getMorphVertexList(); - dumpLeInt(morphVertexList.size()); - dumpByte(part.getMorphType().encode()); - - for(MorphVertex morphVertex : morphVertexList){ - dumpLeInt(morphVertex.getSerialNumber()); - dumpPos3D(morphVertex.getOffset()); - } - } - } - - flush(); - return; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/RigidBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/RigidBuilder.java index 3c00302..a61e869 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/RigidBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/RigidBuilder.java @@ -29,6 +29,9 @@ import jp.sfjp.mikutoga.pmd.parser.PmdRigidHandler; */ class RigidBuilder implements PmdRigidHandler { + private static final int MAX_BONEID = 65534; + + private final List boneList; private final List rigidList; @@ -78,6 +81,7 @@ class RigidBuilder implements PmdRigidHandler { */ @Override public void loopNext(ParseStage stage){ + assert this.rigidIt != null; if(this.rigidIt.hasNext()){ this.currentRigid = this.rigidIt.next(); } @@ -111,7 +115,7 @@ class RigidBuilder implements PmdRigidHandler { @Override public void pmdRigidInfo(int rigidGroupId, int linkedBoneId){ BoneInfo bone; - if(linkedBoneId < 0 || 65535 <= linkedBoneId){ + if(linkedBoneId < 0 || MAX_BONEID < linkedBoneId){ bone = null; }else{ bone = this.boneList.get(linkedBoneId); diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/ShapeBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/ShapeBuilder.java index a7321ff..e9891f9 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/ShapeBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/ShapeBuilder.java @@ -198,7 +198,8 @@ class ShapeBuilder implements PmdShapeHandler { */ @Override public void pmdVertexEdge(boolean hideEdge){ - this.currentVertex.setEdgeAppearance( ! hideEdge ); + boolean appearFlag = ! hideEdge; + this.currentVertex.setEdgeAppearance(appearFlag); return; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/TextBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/TextBuilder.java index 6851f17..c4c36cd 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/TextBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/binio/TextBuilder.java @@ -10,7 +10,6 @@ package jp.sfjp.mikutoga.pmd.model.binio; import java.util.Iterator; import java.util.List; import jp.sfjp.mikutoga.bin.parser.ParseStage; -import jp.sfjp.mikutoga.corelib.I18nText; import jp.sfjp.mikutoga.pmd.model.BoneGroup; import jp.sfjp.mikutoga.pmd.model.BoneInfo; import jp.sfjp.mikutoga.pmd.model.MorphPart; @@ -25,10 +24,6 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler { private final PmdModel model; - private final I18nText modelName; - private final I18nText description; - - private final List boneList; private Iterator boneIt; private BoneInfo currentBone = null; @@ -36,7 +31,6 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler { private Iterator morphPartIt; private MorphPart currentMorphPart = null; - private final List boneGroupList; private Iterator boneGroupIt; private BoneGroup currentBoneGroup = null; @@ -48,15 +42,7 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler { */ TextBuilder(PmdModel model){ super(); - this.model = model; - - this.modelName = model.getModelName(); - this.description = model.getDescription(); - - this.boneList = model.getBoneList(); - this.boneGroupList = model.getBoneGroupList(); - return; } @@ -80,11 +66,11 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler { /** * {@inheritDoc} - * @param hasMoreData {@inheritDoc} + * @param hasMoreDataArg {@inheritDoc} */ @Override - public void pmdParseEnd(boolean hasMoreData){ - this.hasMoreData = hasMoreData; + public void pmdParseEnd(boolean hasMoreDataArg){ + this.hasMoreData = hasMoreDataArg; return; } @@ -96,7 +82,7 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler { @Override public void loopStart(ParseStage stage, int loops){ if(stage == PmdEngHandler.ENGBONE_LIST){ - this.boneIt = this.boneList.iterator(); + this.boneIt = this.model.getBoneList().iterator(); if(this.boneIt.hasNext()){ this.currentBone = this.boneIt.next(); } @@ -115,7 +101,7 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler { this.currentMorphPart = this.morphPartIt.next(); } }else if(stage == PmdEngHandler.ENGBONEGROUP_LIST){ - this.boneGroupIt = this.boneGroupList.iterator(); + this.boneGroupIt = this.model.getBoneGroupList().iterator(); // デフォルトボーングループを読み飛ばす assert this.boneGroupIt.hasNext(); @@ -177,13 +163,13 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler { /** * {@inheritDoc} - * @param modelName {@inheritDoc} - * @param description {@inheritDoc} + * @param modelNameArg {@inheritDoc} + * @param descriptionArg {@inheritDoc} */ @Override - public void pmdModelInfo(String modelName, String description){ - this.modelName .setPrimaryText(modelName); - this.description.setPrimaryText(description); + public void pmdModelInfo(String modelNameArg, String descriptionArg){ + this.model.getModelName() .setPrimaryText(modelNameArg); + this.model.getDescription().setPrimaryText(descriptionArg); return; } @@ -198,13 +184,13 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler { /** * {@inheritDoc} - * @param modelName {@inheritDoc} - * @param description {@inheritDoc} + * @param modelNameArg {@inheritDoc} + * @param descriptionArg {@inheritDoc} */ @Override - public void pmdEngModelInfo(String modelName, String description){ - this.modelName .setGlobalText(modelName); - this.description.setGlobalText(description); + public void pmdEngModelInfo(String modelNameArg, String descriptionArg){ + this.model.getModelName() .setGlobalText(modelNameArg); + this.model.getDescription().setGlobalText(descriptionArg); return; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/package-info.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/package-info.java new file mode 100644 index 0000000..994cb28 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/package-info.java @@ -0,0 +1,14 @@ +/* + * package information for Javadoc + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +/** + * PMDモデルファイル(*.pmd)用各種基本データ構造。 + */ + +package jp.sfjp.mikutoga.pmd.model; + +/* EOF */ diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/ExporterMaterial.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/ExporterMaterial.java index 92b759e..caba9ca 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/ExporterMaterial.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/ExporterMaterial.java @@ -30,6 +30,7 @@ class ExporterMaterial extends ProxyXmlExporter { private final ExtraExporter exp; + private float[] rgbaBuf = null; /** @@ -121,27 +122,25 @@ class ExporterMaterial extends ProxyXmlExporter { */ private void putPhongShade(Material material) throws IOException{ - float[] rgba = null; - ind().putOpenSTag(PmdTag.DIFFUSE.tag()).sp(); Color diffuse = material.getDiffuseColor(); - rgba = diffuse.getRGBComponents(rgba); - putTriColor(rgba); - putFloatAttr(PmdAttr.ALPHA.attr(), rgba[IDX_ALPHA]).sp(); + this.rgbaBuf = diffuse.getRGBComponents(this.rgbaBuf); + putTriColor(this.rgbaBuf); + putFloatAttr(PmdAttr.ALPHA.attr(), this.rgbaBuf[IDX_ALPHA]).sp(); putCloseEmpty().ln(); float shininess = material.getShininess(); ind().putOpenSTag(PmdTag.SPECULAR.tag()).sp(); Color specular = material.getSpecularColor(); - rgba = specular.getRGBComponents(rgba); - putTriColor(rgba); + this.rgbaBuf = specular.getRGBComponents(this.rgbaBuf); + putTriColor(this.rgbaBuf); putFloatAttr(PmdAttr.SHININESS.attr(), shininess).sp(); putCloseEmpty().ln(); ind().putOpenSTag(PmdTag.AMBIENT.tag()).sp(); Color ambient = material.getAmbientColor(); - rgba = ambient.getRGBComponents(rgba); - putTriColor(rgba); + this.rgbaBuf = ambient.getRGBComponents(this.rgbaBuf); + putTriColor(this.rgbaBuf); putCloseEmpty().ln(); return; diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema101009.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema101009.java index 3746859..aabf53e 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema101009.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema101009.java @@ -62,6 +62,7 @@ public final class Schema101009 implements LocalXmlResource{ /** * {@inheritDoc} * @return {@inheritDoc} + * ※101009版。 */ @Override public URI getOriginalResource(){ @@ -70,6 +71,7 @@ public final class Schema101009 implements LocalXmlResource{ /** * {@inheritDoc} + * ※101009版。 * @return {@inheritDoc} */ @Override diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema130128.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema130128.java index 6b99257..546215f 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema130128.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema130128.java @@ -61,6 +61,7 @@ public final class Schema130128 implements LocalXmlResource{ /** * {@inheritDoc} + * ※130128版。 * @return {@inheritDoc} */ @Override @@ -70,6 +71,7 @@ public final class Schema130128 implements LocalXmlResource{ /** * {@inheritDoc} + * ※130128版。 * @return {@inheritDoc} */ @Override diff --git a/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java index f85f928..9a12175 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java @@ -14,25 +14,15 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; import java.nio.charset.Charset; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.validation.Schema; import jp.sfjp.mikutoga.bin.parser.MmdFormatException; import jp.sfjp.mikutoga.pmd.IllegalPmdDataException; import jp.sfjp.mikutoga.pmd.model.PmdModel; import jp.sfjp.mikutoga.pmd.model.binio.PmdExporter; import jp.sfjp.mikutoga.pmd.model.binio.PmdLoader; import jp.sfjp.mikutoga.pmd.model.xml.PmdXmlExporter; -import jp.sfjp.mikutoga.pmd.model.xml.Schema101009; -import jp.sfjp.mikutoga.pmd.model.xml.Schema130128; import jp.sfjp.mikutoga.pmd.model.xml.XmlModelFileType; import jp.sfjp.mikutoga.pmd.model.xml.XmlPmdLoader; -import jp.sfjp.mikutoga.xml.BotherHandler; -import jp.sfjp.mikutoga.xml.LocalXmlResource; -import jp.sfjp.mikutoga.xml.SchemaUtil; import jp.sfjp.mikutoga.xml.TogaXmlException; -import jp.sfjp.mikutoga.xml.XmlResourceResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; @@ -62,76 +52,6 @@ public class Pmd2XmlConv { /** - * ドキュメントビルダファクトリを初期化する。 - * @param builderFactory ドキュメントビルダファクトリ - */ - private static void initBuilderFactory( - DocumentBuilderFactory builderFactory ){ - builderFactory.setCoalescing(true); - builderFactory.setExpandEntityReferences(true); - builderFactory.setIgnoringComments(true); - builderFactory.setIgnoringElementContentWhitespace(false); - builderFactory.setNamespaceAware(true); - builderFactory.setValidating(false); - builderFactory.setXIncludeAware(false); - -// builderFactory.setFeature(name, value); -// builderFactory.setAttribute(name, value); - - return; - } - - /** - * DOMビルダ生成。 - * @return DOMビルダ - */ - private DocumentBuilder buildBuilder(){ - XmlResourceResolver resolver = new XmlResourceResolver(); - - LocalXmlResource[] schemaArray; - switch(this.inTypes){ - case XML_101009: - schemaArray = new LocalXmlResource[]{ - Schema101009.SINGLETON, - }; - break; - case XML_130128: - schemaArray = new LocalXmlResource[]{ - Schema130128.SINGLETON, - }; - break; - case XML_AUTO: - schemaArray = new LocalXmlResource[]{ - Schema101009.SINGLETON, - Schema130128.SINGLETON, - }; - break; - default: - throw new IllegalStateException(); - } - - Schema schema = SchemaUtil.newSchema(resolver, schemaArray); - - DocumentBuilderFactory builderFactory = - DocumentBuilderFactory.newInstance(); - initBuilderFactory(builderFactory); - builderFactory.setSchema(schema); - - DocumentBuilder result; - try{ - result = builderFactory.newDocumentBuilder(); - }catch(ParserConfigurationException e){ - assert false; - throw new AssertionError(e); - } - result.setEntityResolver(resolver); - result.setErrorHandler(BotherHandler.HANDLER); - - return result; - } - - - /** * 入力ファイル種別を設定する。 * @param type ファイル種別 * @throws NullPointerException 引数がnull diff --git a/src/main/java/jp/sfjp/mikutoga/pmd2xml/XmlInputUtil.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/XmlInputUtil.java index 0772100..91d0406 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd2xml/XmlInputUtil.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/XmlInputUtil.java @@ -23,7 +23,7 @@ import org.xml.sax.XMLReader; /** * XML入力に関する各種ユーティリティ。 */ -class XmlInputUtil { +final class XmlInputUtil { /** * 隠しコンストラクタ。