public void Append(ShapeDataAbstract shape)
 {
     if (shape is ShapeDataSphere)
     {
         AppendSphere(shape as ShapeDataSphere);
     }
     else
     if (shape is ShapeDataCapsule)
     {
         AppendCapsule(shape as ShapeDataCapsule);
     }
     else
     if (shape is ShapeDataMesh)
     {
         ShapeDataMesh mesh = shape as ShapeDataMesh;
         if (mesh.convex)
         {
             AppendMeshConvex(mesh);
         }
         else
         {
             AppendMeshNonConvex(mesh);
         }
     }
     else
     if (shape is ShapeDataBox)
     {
         AppendBox(shape as ShapeDataBox);
     }
     else
     if (shape is ShapeDataCharacterControler)
     {
         AppendCharacterControler(shape as ShapeDataCharacterControler);
     }
     else
     {
         Debug.LogWarningFormat("Current type are not implemented: {0}. Tell developer to fix that");
     }
 }
 public void AppendMeshConvex(ShapeDataMesh data)
 {
     AppendMeshConvex(data.verts, data.tris, data.matrix, GetAreaValue(data.area), data.infoMode != ColliderInfoMode.Solid, data.bounds);
 }
 public void AppendMeshNonConvex(ShapeDataMesh data)
 {
     AppendMeshNonConvex(data.verts, data.tris, data.matrix, GetAreaValue(data.area));
 }