Files
doom-dm/Engine/Asset/Mesh/Loader/IMeshLoader.cs
2024-12-04 22:35:04 +03:00

29 lines
825 B
C#

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<Mesh.Vertex, uint>();
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;
}
}