namespace Engine.Asset.Mesh.Loader; public interface IMeshLoader { public Mesh LoadMesh(string path, MeshLoaderParameters parameters = MeshLoaderParameters.Default); public static Mesh Optimize(Mesh mesh) { var optimizedMesh = new Mesh(); var vertexMap = new Dictionary(); uint index = 0; foreach (var vertex in mesh.Vertices) { if (vertexMap.TryGetValue(vertex, out var existingIndex)) optimizedMesh.IndicesInternal.Add(existingIndex); else { vertexMap.Add(vertex, index); optimizedMesh.VerticesInternal.Add(vertex); optimizedMesh.IndicesInternal.Add(index); index++; } } return optimizedMesh; } }