OSDN Git Service

1.105.3-SNAPSHOT版開発開始
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / pmdloader / RigidBuilder.java
index a255fdc..e952e17 100644 (file)
-/*\r
- * building rigid information\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2010 MikuToga Partners\r
- */\r
-\r
-package jp.sourceforge.mikutoga.pmd.pmdloader;\r
-\r
-import java.util.Iterator;\r
-import java.util.List;\r
-import jp.sourceforge.mikutoga.corelib.ListUtil;\r
-import jp.sourceforge.mikutoga.parser.ParseStage;\r
-import jp.sourceforge.mikutoga.parser.pmd.PmdLimits;\r
-import jp.sourceforge.mikutoga.parser.pmd.PmdRigidHandler;\r
-import jp.sourceforge.mikutoga.pmd.BoneInfo;\r
-import jp.sourceforge.mikutoga.pmd.DynamicsInfo;\r
-import jp.sourceforge.mikutoga.pmd.PmdModel;\r
-import jp.sourceforge.mikutoga.pmd.Pos3d;\r
-import jp.sourceforge.mikutoga.pmd.Rad3d;\r
-import jp.sourceforge.mikutoga.pmd.RigidBehaviorType;\r
-import jp.sourceforge.mikutoga.pmd.RigidGroup;\r
-import jp.sourceforge.mikutoga.pmd.RigidInfo;\r
-import jp.sourceforge.mikutoga.pmd.RigidShape;\r
-import jp.sourceforge.mikutoga.pmd.RigidShapeType;\r
-\r
-/**\r
- * 剛体関係の通知をパーサから受け取る。\r
- */\r
-class RigidBuilder implements PmdRigidHandler {\r
-\r
-    private final List<BoneInfo> boneList;\r
-\r
-    private final List<RigidInfo> rigidList;\r
-    private Iterator<RigidInfo> rigidIt;\r
-    private RigidInfo currentRigid = null;\r
-\r
-    private final List<RigidGroup> rigidGroupList;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param model モデル\r
-     */\r
-    RigidBuilder(PmdModel model){\r
-        super();\r
-        this.boneList = model.getBoneList();\r
-        this.rigidList = model.getRigidList();\r
-        this.rigidGroupList = model.getRigidGroupList();\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param stage {@inheritDoc}\r
-     * @param loops {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void loopStart(ParseStage stage, int loops){\r
-        ListUtil.prepareDefConsList(this.rigidList, RigidInfo.class, loops);\r
-        ListUtil.assignIndexedSerial(this.rigidList);\r
-\r
-        this.rigidIt = this.rigidList.iterator();\r
-        if(this.rigidIt.hasNext()){\r
-            this.currentRigid = this.rigidIt.next();\r
-        }\r
-\r
-        ListUtil.prepareDefConsList(this.rigidGroupList,\r
-                                    RigidGroup.class,\r
-                                    PmdLimits.RIGIDGROUP_FIXEDNUM );\r
-        ListUtil.assignIndexedSerial(this.rigidGroupList);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param stage {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void loopNext(ParseStage stage){\r
-        if(this.rigidIt.hasNext()){\r
-            this.currentRigid = this.rigidIt.next();\r
-        }\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param stage {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void loopEnd(ParseStage stage){\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param rigidName {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdRigidName(String rigidName){\r
-        this.currentRigid.getRigidName().setPrimaryText(rigidName);\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param rigidGroupId {@inheritDoc}\r
-     * @param linkedBoneId {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdRigidInfo(int rigidGroupId, int linkedBoneId){\r
-        BoneInfo bone;\r
-        if(linkedBoneId < 0 || 65535 <= linkedBoneId){\r
-            bone = null;\r
-        }else{\r
-            bone = this.boneList.get(linkedBoneId);\r
-        }\r
-        RigidGroup group = this.rigidGroupList.get(rigidGroupId);\r
-\r
-        this.currentRigid.setLinkedBone(bone);\r
-        this.currentRigid.setRigidGroup(group);\r
-        group.getRigidList().add(this.currentRigid);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param shapeType {@inheritDoc}\r
-     * @param width {@inheritDoc}\r
-     * @param height {@inheritDoc}\r
-     * @param depth {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdRigidShape(byte shapeType,\r
-                              float width, float height, float depth){\r
-        RigidShape shape = this.currentRigid.getRigidShape();\r
-\r
-        shape.setWidth(width);\r
-        shape.setHeight(height);\r
-        shape.setDepth(depth);\r
-\r
-        RigidShapeType type = RigidShapeType.decode(shapeType);\r
-        shape.setShapeType(type);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param posX {@inheritDoc}\r
-     * @param posY {@inheritDoc}\r
-     * @param posZ {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdRigidPosition(float posX, float posY, float posZ){\r
-        Pos3d position = this.currentRigid.getPosition();\r
-        position.setXPos(posX);\r
-        position.setYPos(posY);\r
-        position.setZPos(posZ);\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param radX {@inheritDoc}\r
-     * @param radY {@inheritDoc}\r
-     * @param radZ {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdRigidRotation(float radX, float radY, float radZ){\r
-        Rad3d rotation = this.currentRigid.getRotation();\r
-        rotation.setXRad(radX);\r
-        rotation.setYRad(radY);\r
-        rotation.setZRad(radZ);\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param mass {@inheritDoc}\r
-     * @param dampingPos {@inheritDoc}\r
-     * @param dampingRot {@inheritDoc}\r
-     * @param restitution {@inheritDoc}\r
-     * @param friction {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdRigidPhysics(float mass,\r
-                                  float dampingPos,\r
-                                  float dampingRot,\r
-                                  float restitution,\r
-                                  float friction ){\r
-        DynamicsInfo info = this.currentRigid.getDynamicsInfo();\r
-\r
-        info.setMass(mass);\r
-        info.setDampingPosition(dampingPos);\r
-        info.setDampingRotation(dampingRot);\r
-        info.setRestitution(restitution);\r
-        info.setFriction(friction);\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * {@inheritDoc}\r
-     * @param behaveType {@inheritDoc}\r
-     * @param collisionMap {@inheritDoc}\r
-     */\r
-    @Override\r
-    public void pmdRigidBehavior(byte behaveType, short collisionMap){\r
-        RigidBehaviorType type = RigidBehaviorType.decode(behaveType);\r
-        this.currentRigid.setBehaviorType(type);\r
-\r
-        for(int bitPos = 0; bitPos < PmdLimits.RIGIDGROUP_FIXEDNUM; bitPos++){\r
-            short mask = 0x0001;\r
-            mask <<= bitPos;\r
-            if((collisionMap & mask) == 0){\r
-                RigidGroup group = this.rigidGroupList.get(bitPos);\r
-                this.currentRigid.getThroughGroupColl().add(group);\r
-            }\r
-        }\r
-\r
-        return;\r
-    }\r
-\r
-}\r
+/*
+ * building rigid information
+ *
+ * License : The MIT License
+ * Copyright(c) 2010 MikuToga Partners
+ */
+
+package jp.sourceforge.mikutoga.pmd.pmdloader;
+
+import java.util.Iterator;
+import java.util.List;
+import jp.sourceforge.mikutoga.corelib.ListUtil;
+import jp.sourceforge.mikutoga.parser.ParseStage;
+import jp.sourceforge.mikutoga.parser.pmd.PmdLimits;
+import jp.sourceforge.mikutoga.parser.pmd.PmdRigidHandler;
+import jp.sourceforge.mikutoga.pmd.BoneInfo;
+import jp.sourceforge.mikutoga.pmd.DynamicsInfo;
+import jp.sourceforge.mikutoga.pmd.PmdModel;
+import jp.sourceforge.mikutoga.pmd.Pos3d;
+import jp.sourceforge.mikutoga.pmd.Rad3d;
+import jp.sourceforge.mikutoga.pmd.RigidBehaviorType;
+import jp.sourceforge.mikutoga.pmd.RigidGroup;
+import jp.sourceforge.mikutoga.pmd.RigidInfo;
+import jp.sourceforge.mikutoga.pmd.RigidShape;
+import jp.sourceforge.mikutoga.pmd.RigidShapeType;
+
+/**
+ * 剛体関係の通知をパーサから受け取る。
+ */
+class RigidBuilder implements PmdRigidHandler {
+
+    private final List<BoneInfo> boneList;
+
+    private final List<RigidInfo> rigidList;
+    private Iterator<RigidInfo> rigidIt;
+    private RigidInfo currentRigid = null;
+
+    private final List<RigidGroup> rigidGroupList;
+
+    /**
+     * コンストラクタ。
+     * @param model モデル
+     */
+    RigidBuilder(PmdModel model){
+        super();
+        this.boneList = model.getBoneList();
+        this.rigidList = model.getRigidList();
+        this.rigidGroupList = model.getRigidGroupList();
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param stage {@inheritDoc}
+     * @param loops {@inheritDoc}
+     */
+    @Override
+    public void loopStart(ParseStage stage, int loops){
+        ListUtil.prepareDefConsList(this.rigidList, RigidInfo.class, loops);
+        ListUtil.assignIndexedSerial(this.rigidList);
+
+        this.rigidIt = this.rigidList.iterator();
+        if(this.rigidIt.hasNext()){
+            this.currentRigid = this.rigidIt.next();
+        }
+
+        ListUtil.prepareDefConsList(this.rigidGroupList,
+                                    RigidGroup.class,
+                                    PmdLimits.RIGIDGROUP_FIXEDNUM );
+        ListUtil.assignIndexedSerial(this.rigidGroupList);
+
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param stage {@inheritDoc}
+     */
+    @Override
+    public void loopNext(ParseStage stage){
+        if(this.rigidIt.hasNext()){
+            this.currentRigid = this.rigidIt.next();
+        }
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param stage {@inheritDoc}
+     */
+    @Override
+    public void loopEnd(ParseStage stage){
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param rigidName {@inheritDoc}
+     */
+    @Override
+    public void pmdRigidName(String rigidName){
+        this.currentRigid.getRigidName().setPrimaryText(rigidName);
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param rigidGroupId {@inheritDoc}
+     * @param linkedBoneId {@inheritDoc}
+     */
+    @Override
+    public void pmdRigidInfo(int rigidGroupId, int linkedBoneId){
+        BoneInfo bone;
+        if(linkedBoneId < 0 || 65535 <= linkedBoneId){
+            bone = null;
+        }else{
+            bone = this.boneList.get(linkedBoneId);
+        }
+        RigidGroup group = this.rigidGroupList.get(rigidGroupId);
+
+        this.currentRigid.setLinkedBone(bone);
+        this.currentRigid.setRigidGroup(group);
+        group.getRigidList().add(this.currentRigid);
+
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param shapeType {@inheritDoc}
+     * @param width {@inheritDoc}
+     * @param height {@inheritDoc}
+     * @param depth {@inheritDoc}
+     */
+    @Override
+    public void pmdRigidShape(byte shapeType,
+                              float width, float height, float depth){
+        RigidShape shape = this.currentRigid.getRigidShape();
+
+        shape.setWidth(width);
+        shape.setHeight(height);
+        shape.setDepth(depth);
+
+        RigidShapeType type = RigidShapeType.decode(shapeType);
+        shape.setShapeType(type);
+
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param posX {@inheritDoc}
+     * @param posY {@inheritDoc}
+     * @param posZ {@inheritDoc}
+     */
+    @Override
+    public void pmdRigidPosition(float posX, float posY, float posZ){
+        Pos3d position = this.currentRigid.getPosition();
+        position.setXPos(posX);
+        position.setYPos(posY);
+        position.setZPos(posZ);
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param radX {@inheritDoc}
+     * @param radY {@inheritDoc}
+     * @param radZ {@inheritDoc}
+     */
+    @Override
+    public void pmdRigidRotation(float radX, float radY, float radZ){
+        Rad3d rotation = this.currentRigid.getRotation();
+        rotation.setXRad(radX);
+        rotation.setYRad(radY);
+        rotation.setZRad(radZ);
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param mass {@inheritDoc}
+     * @param dampingPos {@inheritDoc}
+     * @param dampingRot {@inheritDoc}
+     * @param restitution {@inheritDoc}
+     * @param friction {@inheritDoc}
+     */
+    @Override
+    public void pmdRigidPhysics(float mass,
+                                  float dampingPos,
+                                  float dampingRot,
+                                  float restitution,
+                                  float friction ){
+        DynamicsInfo info = this.currentRigid.getDynamicsInfo();
+
+        info.setMass(mass);
+        info.setDampingPosition(dampingPos);
+        info.setDampingRotation(dampingRot);
+        info.setRestitution(restitution);
+        info.setFriction(friction);
+
+        return;
+    }
+
+    /**
+     * {@inheritDoc}
+     * @param behaveType {@inheritDoc}
+     * @param collisionMap {@inheritDoc}
+     */
+    @Override
+    public void pmdRigidBehavior(byte behaveType, short collisionMap){
+        RigidBehaviorType type = RigidBehaviorType.decode(behaveType);
+        this.currentRigid.setBehaviorType(type);
+
+        for(int bitPos = 0; bitPos < PmdLimits.RIGIDGROUP_FIXEDNUM; bitPos++){
+            short mask = 0x0001;
+            mask <<= bitPos;
+            if((collisionMap & mask) == 0){
+                RigidGroup group = this.rigidGroupList.get(bitPos);
+                this.currentRigid.getThroughGroupColl().add(group);
+            }
+        }
+
+        return;
+    }
+
+}