/// Collect and bind geometry from stream public void Bind(UnityEngine.Mesh mesh) { var vertices = new List<Vector3>(); var triangles = new List<int>(); var uv = useUV ? new List<Vector2>() : null; var color = useColor ? new List<Color32>() : null; var normals = useUV ? new List<Vector3>() : null; // Collect foreach (var gp in geometry.Geometry) { gp.VertexOffset = vertices.Count; vertices.AddRange(gp.Vertices); triangles.AddRange(gp.Triangles); if (uv != null) { uv.AddRange(gp.UV); } if (color != null) { color.AddRange(gp.Color); } if (normals != null) { normals.AddRange(gp.Normals); } } // Attach mesh.Clear(); mesh.vertices = vertices.ToArray(); mesh.triangles = triangles.ToArray(); if (useUV) { mesh.uv = uv.ToArray(); } if (useColor) { mesh.colors32 = color.ToArray(); } if (useNormals) { mesh.normals = normals.ToArray(); } // Bind if (!useNormals) { mesh.RecalculateNormals(); } mesh.RecalculateBounds(); mesh.Optimize(); // Summary vertexGen = vertices.Count; triangleGen = triangles.Count; }