diff --git a/VisualPinball.Unity/VisualPinball.Unity/Extensions/MeshExtensions.cs b/VisualPinball.Unity/VisualPinball.Unity/Extensions/MeshExtensions.cs index 11b2a914c3..f90731b813 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/Extensions/MeshExtensions.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/Extensions/MeshExtensions.cs @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +using System; using UnityEngine; using UnityEngine.Rendering; using VisualPinball.Engine.Math; @@ -82,15 +83,21 @@ public static Mesh ToUnityMesh(this Engine.VPT.Mesh vpMesh, string name = null) public static void ApplyToVpMesh(this Mesh mesh, Engine.VPT.Mesh vpMesh) { - vpMesh.Vertices = new Vertex3DNoTex2[mesh.vertices.Length]; - for (var i = 0; i < mesh.vertices.Length; i++) { + var vertices = mesh.vertices; + var normals = mesh.normals; + var uv = mesh.uv; + var triangles = mesh.triangles; + Debug.Log($"Copying {vertices.Length} vertices back to {mesh.name}"); + vpMesh.Vertices = new Vertex3DNoTex2[vertices.Length]; + for (var i = 0; i < vertices.Length; i++) { vpMesh.Vertices[i] = new Vertex3DNoTex2( - mesh.vertices[i].x, mesh.vertices[i].y, mesh.vertices[i].z, - mesh.normals[i].x, mesh.normals[i].y, mesh.normals[i].z, - mesh.uv[i].x, mesh.uv[i].y + vertices[i].x, vertices[i].y, vertices[i].z, + normals[i].x, normals[i].y, normals[i].z, + uv[i].x, uv[i].y ); } - vpMesh.Indices = mesh.triangles; + vpMesh.Indices = new int[triangles.Length]; + Buffer.BlockCopy(triangles, 0, vpMesh.Indices, 0, triangles.Length); } public static void ApplyToUnityMesh(this Engine.VPT.Mesh vpMesh, Mesh mesh) diff --git a/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/SceneTableContainer.cs b/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/SceneTableContainer.cs index 10497f6f2d..2fe800a920 100644 --- a/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/SceneTableContainer.cs +++ b/VisualPinball.Unity/VisualPinball.Unity/VPT/Table/SceneTableContainer.cs @@ -84,12 +84,12 @@ public void Refresh() public override void Save(string fileName) { Refresh(); - //FillBinaryData(); + FillBinaryData(); PrepareForExport(); base.Save(fileName); - //FreeBinaryData(); + FreeBinaryData(); } private void PrepareForExport()