node.pmdGeometryArray[pmdGeometryIndex++] = geom;
meshConverter.getMeshDataList().set(i, null);
// go.add(mesh);
-// mesh.setInterleaved();
+ mesh.setInterleaved();
}
// go.optimize3();
createSkinCommonVertData();
* @author kobayasi
*/
public class PMDPhysicsWorld {
+ int maxSteps = 10;
// bullet physics
static final Object lockObject = new Object();
PhysicsSpace physicsSpace;
// applyResultToBone();
// }
// synchronized(lockObject) {
- physicsSpace.update(timeStep, 100);
+ physicsSpace.update(timeStep, maxSteps);
// }
// applyResultToBone();
}
return physicsSpace;
}
+ public int getMaxSteps() {
+ return maxSteps;
+ }
+
+ public void setMaxSteps(int maxSteps) {
+ this.maxSteps = maxSteps;
+ }
+
+
}
return;
}
float time = currentTime + tpf;
- if (accuracy > 0 && tpf < 1f) {
+ if (accuracy <= 0) {
+ controlUpdate2(tpf);
+ } else if (tpf < accuracy * 8) {
physicsControl.update(tpf);
physicsControl.getWorld().applyResultToBone();
physicsControl.getWorld().getPhysicsSpace().distributeEvents();
} else {
- controlUpdate2(tpf);
+ float accuracy2 = tpf / 8;
+ physicsControl.getWorld().setAccuracy(accuracy2);
+ physicsControl.update(tpf);
+ physicsControl.getWorld().applyResultToBone();
+ physicsControl.getWorld().getPhysicsSpace().distributeEvents();
+ physicsControl.getWorld().setAccuracy(accuracy);
}
resetSkins();
calcSkins();
package projectkyoto.mmd.file;
import java.io.BufferedInputStream;
+import java.io.EOFException;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
boneDispList = new PMDBoneDispList(is);
headerEnglish = new PMDHeaderEnglish(this, is);
toonTextureList = new PMDToonTextureList(is);
- rigidBodyList = new PMDRigidBodyList(is);
- jointList = new PMDJointList(is);
+ try {
+ rigidBodyList = new PMDRigidBodyList(is);
+ jointList = new PMDJointList(is);
+ } catch(EOFException ex) {
+ rigidBodyList = new PMDRigidBodyList();
+ jointList = new PMDJointList();
+ }
// toonTextureList = new PMDToonTextureList();
// rigidBodyList = new PMDRigidBodyList();
// jointList = new PMDJointList();