diff options
| author | chai <215380520@qq.com> | 2024-05-19 17:03:57 +0800 |
|---|---|---|
| committer | chai <215380520@qq.com> | 2024-05-19 17:03:57 +0800 |
| commit | cf58771365b5953c6eac548b172aae880d1f0acd (patch) | |
| tree | a49757a4b5c447cbf877584d482367a6bfe33b10 /Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshSeparatorSimple.cs | |
| parent | eed315deae356ddfb17f28305e7cde6cdfc43313 (diff) | |
* rename
Diffstat (limited to 'Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshSeparatorSimple.cs')
| -rw-r--r-- | Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshSeparatorSimple.cs | 130 |
1 files changed, 0 insertions, 130 deletions
diff --git a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshSeparatorSimple.cs b/Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshSeparatorSimple.cs deleted file mode 100644 index 6c79a16..0000000 --- a/Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshSeparatorSimple.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; -using UnityEngine.Rendering; - -namespace NGS.MeshFusionPro; - -public class MeshSeparatorSimple -{ - private const int MAX_UV_CHANNELS = 4; - - private static Dictionary<Mesh, Mesh[]> _meshToSubmeshes; - - private static List<Vector3> _srcVertices; - - private static List<Vector3> _srcNormals; - - private static List<Vector4> _srcTangents; - - private static List<Vector2> _srcUV; - - private static List<int> _triangles; - - private static List<Vector3> _vertices; - - private static List<Vector3> _normals; - - private static List<Vector4> _tangents; - - private static List<Vector2> _uv; - - static MeshSeparatorSimple() - { - _meshToSubmeshes = new Dictionary<Mesh, Mesh[]>(); - _srcVertices = new List<Vector3>(); - _srcNormals = new List<Vector3>(); - _srcTangents = new List<Vector4>(); - _srcUV = new List<Vector2>(); - _triangles = new List<int>(); - _vertices = new List<Vector3>(); - _normals = new List<Vector3>(); - _tangents = new List<Vector4>(); - _uv = new List<Vector2>(); - } - - public Mesh GetSubmesh(Mesh source, int submesh) - { - if (!_meshToSubmeshes.TryGetValue(source, out var value)) - { - value = Separate(source); - _meshToSubmeshes.Add(source, value); - } - return value[submesh]; - } - - private Mesh[] Separate(Mesh mesh) - { - int subMeshCount = mesh.subMeshCount; - Mesh[] array = new Mesh[subMeshCount]; - CollectMeshData(mesh); - for (int i = 0; i < subMeshCount; i++) - { - array[i] = CreateFromSubmesh(mesh, i); - } - ClearData(); - return array; - } - - private void CollectMeshData(Mesh mesh) - { - mesh.GetVertices(_srcVertices); - mesh.GetNormals(_srcNormals); - mesh.GetTangents(_srcTangents); - } - - private Mesh CreateFromSubmesh(Mesh mesh, int submesh) - { - SubMeshDescriptor subMesh = mesh.GetSubMesh(submesh); - Mesh mesh2 = new Mesh(); - int indexCount = subMesh.indexCount; - int vertexCount = subMesh.vertexCount; - int firstVertex = subMesh.firstVertex; - int num = firstVertex + vertexCount; - _vertices.Clear(); - _normals.Clear(); - _tangents.Clear(); - mesh.GetIndices(_triangles, submesh); - for (int i = firstVertex; i < num; i++) - { - _vertices.Add(_srcVertices[i]); - _normals.Add(_srcNormals[i]); - _tangents.Add(_srcTangents[i]); - } - for (int j = 0; j < indexCount; j++) - { - _triangles[j] -= firstVertex; - } - mesh2.SetVertices(_vertices); - mesh2.SetNormals(_normals); - mesh2.SetTangents(_tangents); - mesh2.SetTriangles(_triangles, 0, calculateBounds: false); - mesh2.bounds = subMesh.bounds; - for (int k = 0; k < 4; k++) - { - mesh.GetUVs(k, _srcUV); - if (_srcUV.Count != 0) - { - _uv.Clear(); - for (int l = firstVertex; l < num; l++) - { - _uv.Add(_srcUV[l]); - } - mesh2.SetUVs(k, _uv); - } - } - return mesh2; - } - - private void ClearData() - { - _srcVertices.Clear(); - _srcNormals.Clear(); - _srcTangents.Clear(); - _srcUV.Clear(); - _triangles.Clear(); - _vertices.Clear(); - _normals.Clear(); - _tangents.Clear(); - _uv.Clear(); - } -} |
