.
This commit is contained in:
29
Engine/Asset/Mesh/Loader/IMeshLoader.cs
Normal file
29
Engine/Asset/Mesh/Loader/IMeshLoader.cs
Normal file
@@ -0,0 +1,29 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user