- throw error on dynamic mesh collision shape

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@7216 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
nor..67 2011-04-07 17:41:47 +00:00
parent eef7e8299b
commit c036d36c96

View File

@ -40,6 +40,7 @@ import com.jme3.scene.Spatial;
import com.jme3.bullet.PhysicsSpace; import com.jme3.bullet.PhysicsSpace;
import com.jme3.bullet.collision.PhysicsCollisionObject; import com.jme3.bullet.collision.PhysicsCollisionObject;
import com.jme3.bullet.collision.shapes.CollisionShape; import com.jme3.bullet.collision.shapes.CollisionShape;
import com.jme3.bullet.collision.shapes.MeshCollisionShape;
import com.jme3.bullet.joints.PhysicsJoint; import com.jme3.bullet.joints.PhysicsJoint;
import com.jme3.bullet.objects.infos.RigidBodyMotionState; import com.jme3.bullet.objects.infos.RigidBodyMotionState;
import com.jme3.bullet.util.Converter; import com.jme3.bullet.util.Converter;
@ -100,6 +101,9 @@ public class PhysicsRigidBody extends PhysicsCollisionObject {
*/ */
protected void rebuildRigidBody() { protected void rebuildRigidBody() {
boolean removed = false; boolean removed = false;
if(collisionShape instanceof MeshCollisionShape && mass != 0){
throw new IllegalStateException("Dynamic rigidbody can not have mesh collision shape!");
}
if (rBody != null) { if (rBody != null) {
if (rBody.isInWorld()) { if (rBody.isInWorld()) {
PhysicsSpace.getPhysicsSpace().remove(this); PhysicsSpace.getPhysicsSpace().remove(this);
@ -316,6 +320,9 @@ public class PhysicsRigidBody extends PhysicsCollisionObject {
*/ */
public void setMass(float mass) { public void setMass(float mass) {
this.mass = mass; this.mass = mass;
if(collisionShape instanceof MeshCollisionShape && mass != 0){
throw new IllegalStateException("Dynamic rigidbody can not have mesh collision shape!");
}
if (collisionShape != null) { if (collisionShape != null) {
collisionShape.calculateLocalInertia(mass, localInertia); collisionShape.calculateLocalInertia(mass, localInertia);
} }
@ -516,6 +523,9 @@ public class PhysicsRigidBody extends PhysicsCollisionObject {
public void setCollisionShape(CollisionShape collisionShape) { public void setCollisionShape(CollisionShape collisionShape) {
super.setCollisionShape(collisionShape); super.setCollisionShape(collisionShape);
if(collisionShape instanceof MeshCollisionShape && mass!=0){
throw new IllegalStateException("Dynamic rigidbody can not have mesh collision shape!");
}
if (rBody == null) { if (rBody == null) {
rebuildRigidBody(); rebuildRigidBody();
} else { } else {