public static void ToString(this DynamicMeshFile dynamicMeshFile, TextWriter writer)
 {
     writer.WriteLine("SkeletonFileNames: {0}", string.Join(", ", dynamicMeshFile.SkeletonFileNames));
     writer.WriteLine("BoneNames: {0}", string.Join(", ", dynamicMeshFile.BoneNames));
     writer.WriteLine("Vertexes.Count: {0}", dynamicMeshFile.Vertexes.Count());
     //for (int i = 0; i < dynamicMeshFile.Vertexes.Count(); i++)
     //{
     //    var vertex = dynamicMeshFile.Vertexes.ElementAt(i);
     //    writer.WriteLine("{0}:", i);
     //    ToString(vertex, writer);
     //}
     writer.WriteLine("Normals.Count: {0}", dynamicMeshFile.Normals.Count());
     //for (int i = 0; i < dynamicMeshFile.Normals.Count(); i++)
     //{
     //    var normal = dynamicMeshFile.Normals.ElementAt(i);
     //    writer.WriteLine("{0}: {1}", i, normal.ToFormatString());
     //}
     writer.WriteLine("MeshBlends.Count: {0}", dynamicMeshFile.MeshBlends.Count());
     for (int i = 0; i < dynamicMeshFile.MeshBlends.Count(); i++)
     {
         var meshBlend = dynamicMeshFile.MeshBlends.ElementAt(i);
         writer.WriteLine("{0}:", i);
         ToString(meshBlend, writer);
     }
 }
 public ColladaDynamicMeshExporter(IRepository repository, DynamicMeshFile dynamicMeshFile, ExportDDSToPngFileDelegate exportDDSToPngFile = null)
 {
     Repository = repository;
     DynamicMeshFile = dynamicMeshFile;
     ExportDDSToPngFile = exportDDSToPngFile ?? DefaultExportDDSToPngFileDelegate;
     TNS = TemplateNameSpace;
 }
 public static string PositionsAsString(this DynamicMeshFile dynamicMeshFile, bool flipZ = false)
 {
     return(string.Join(" ", dynamicMeshFile.Vertexes.Select(v =>
     {
         var p = v.Position;
         if (flipZ)
         {
             p.Z = -p.Z;
         }
         return p.ToFormatString();
     })));
 }