summaryrefslogtreecommitdiff
path: root/Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshCutterSimpleLW.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshCutterSimpleLW.cs')
-rw-r--r--Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshCutterSimpleLW.cs66
1 files changed, 0 insertions, 66 deletions
diff --git a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshCutterSimpleLW.cs b/Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshCutterSimpleLW.cs
deleted file mode 100644
index 4a70c56..0000000
--- a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshCutterSimpleLW.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using Unity.Collections;
-using UnityEngine;
-
-namespace NGS.MeshFusionPro;
-
-public class MeshCutterSimpleLW : IMeshCutter
-{
- private static List<int> _triangles;
-
- static MeshCutterSimpleLW()
- {
- _triangles = new List<int>();
- }
-
- public void Cut(Mesh mesh, MeshCuttingInfo info)
- {
- Cut(mesh, new MeshCuttingInfo[1] { info });
- }
-
- public void Cut(Mesh mesh, IList<MeshCuttingInfo> infos)
- {
- ValidateMeshOrThrowException(mesh);
- mesh.GetTriangles(_triangles, 0);
- using (Mesh.MeshDataArray meshDataArray = Mesh.AcquireReadOnlyMeshData(mesh))
- {
- NativeArray<LightweightVertex> other = meshDataArray[0].GetVertexData<LightweightVertex>();
- NativeList<LightweightVertex> nativeList = new NativeList<LightweightVertex>(Allocator.Temp);
- nativeList.CopyFrom(in other);
- foreach (MeshCuttingInfo item in infos.OrderByDescending((MeshCuttingInfo i) => i.triangleStart))
- {
- nativeList.RemoveRange(item.vertexStart, item.vertexCount);
- _triangles.RemoveRange(item.triangleStart, item.triangleCount);
- OffsetTriangles(item);
- }
- mesh.SetTriangles(_triangles, 0);
- mesh.SetVertexBufferData<LightweightVertex>(nativeList, 0, 0, nativeList.Length);
- }
- _triangles.Clear();
- }
-
- private void ValidateMeshOrThrowException(Mesh mesh)
- {
- if (mesh == null)
- {
- throw new ArgumentNullException("mesh");
- }
- if (mesh.subMeshCount > 1)
- {
- throw new ArgumentException("SimpleMeshCutter::'mesh' should has only 1 submesh");
- }
- }
-
- private void OffsetTriangles(MeshCuttingInfo info)
- {
- int vertexCount = info.vertexCount;
- int triangleStart = info.triangleStart;
- int count = _triangles.Count;
- for (int i = triangleStart; i < count; i++)
- {
- _triangles[i] -= vertexCount;
- }
- }
-}