public override BulletShape BuildNativeShape(BulletWorld pWorld, ShapeData pShapeData)
{
DiscreteDynamicsWorld world = (pWorld as BulletWorldXNA).world;
CollisionShape shape = null;
switch (pShapeData.Type)
{
case BSPhysicsShapeType.SHAPE_BOX:
shape = new BoxShape(new IndexedVector3(0.5f, 0.5f, 0.5f));
break;
case BSPhysicsShapeType.SHAPE_CONE:
shape = new ConeShapeZ(0.5f, 1.0f);
break;
case BSPhysicsShapeType.SHAPE_CYLINDER:
shape = new CylinderShapeZ(new IndexedVector3(0.5f, 0.5f, 0.5f));
break;
case BSPhysicsShapeType.SHAPE_SPHERE:
shape = new SphereShape(0.5f);
break;
}
if (shape != null)
{
IndexedVector3 scaling = new IndexedVector3(pShapeData.Scale.X, pShapeData.Scale.Y, pShapeData.Scale.Z);
shape.SetMargin(world.WorldSettings.Params.collisionMargin);
shape.SetLocalScaling(ref scaling);
}
return new BulletShapeXNA(shape, pShapeData.Type);
}