private static Vector3[] MeshToVertexArray(TargetPlatform platform, ModelMeshContent mesh)
		{
			MemoryStream ms;
			var buffer = mesh.MeshParts[0].VertexBuffer;

//			if (platform == TargetPlatform.Xbox360)
//			{
//				ms = new MemoryStream(ReverseByteOrder(buffer.VertexData));
//			}
//			else
//			{
				ms = new MemoryStream(buffer.VertexData);
//			}
			BinaryReader reader = new BinaryReader(ms);

			var elems = buffer.VertexDeclaration.VertexElements;
			int count = mesh.MeshParts[0].NumVertices;

			ms.Seek(mesh.MeshParts[0].VertexOffset * buffer.VertexDeclaration.VertexStride.Value, SeekOrigin.Begin);

			var vertices = new Vector3[count];
			for (int i = 0; i < count; i++)
			{
				foreach (var elType in elems)
				{
					if (elType.VertexElementUsage == VertexElementUsage.Position)
					{
						vertices[i].X = reader.ReadSingle();
						vertices[i].Y = reader.ReadSingle();
						vertices[i].Z = reader.ReadSingle();
					}
					else
					{
						switch (elType.VertexElementFormat)
						{
							case VertexElementFormat.Color:
								reader.ReadUInt32();
								break;
							case VertexElementFormat.Vector2:
								reader.ReadSingle();
								reader.ReadSingle();
								break;
							case VertexElementFormat.Vector3:
								reader.ReadSingle();
								reader.ReadSingle();
								reader.ReadSingle();
								break;
							default:
								throw new InvalidContentException("Unrecognized element type in vertex buffer: " + elType.ToString());
						}
					}
				}
			}

			var transforms = new Stack<Matrix>();
			var bone = mesh.ParentBone;
			while (bone != null)
			{
				transforms.Push(bone.Transform);
				bone = bone.Parent;
			}

			var transform = Matrix.Identity;
			while (transforms.Count > 0)
			{
				transform *= transforms.Pop();
			}

			Vector3.Transform(vertices, ref transform, vertices);
			return vertices;
		}
 // Go through the modelmeshes and replace all basic effects for skinned models
 // with BasicPaletteEffect.
 private void ReplaceBasicEffects(ModelMeshContent input)
 {
     foreach (ModelMeshPartContent part in input.MeshParts)
     {
         SkinningType skinType = ContentUtil.GetSkinningType(part.VertexBuffer.VertexDeclaration.VertexElements);
         if (skinType != SkinningType.None)
         {
             ReplaceBasicEffect(skinType, part);
         }
     }
 }
		private static Vector3 GetMeshTranslation(ModelMeshContent mesh)
		{
			var pos = Vector3.Zero;
			var bone = mesh.ParentBone;
			while (bone != null)
			{
				pos += bone.Transform.Translation;
				bone = bone.Parent;
			}
			return pos;
		}