summaryrefslogtreecommitdiff
path: root/Thronefall_1_57/Decompile/NGS.MeshFusionPro/MeshDataListsSTD.cs
blob: 1bf34ebb00a6fbb54eff98f1a1fa9ad17547249f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using System.Collections.Generic;
using UnityEngine;

namespace NGS.MeshFusionPro;

public class MeshDataListsSTD : CombinedMeshDataInternal
{
	private CombinedMesh _root;

	private List<Vector3> _vertices;

	private List<Vector3> _normals;

	private List<Vector4> _tangents;

	private List<Bounds> _partsBounds;

	private List<Bounds> _partsBoundsLocal;

	public List<Vector3> Vertices => _vertices;

	public List<Vector3> Normals => _normals;

	public List<Vector4> Tangents => _tangents;

	public List<Bounds> PartsBounds => _partsBounds;

	public List<Bounds> PartsBoundsLocal => _partsBoundsLocal;

	public Bounds Bounds { get; set; }

	public override Bounds GetBounds()
	{
		return Bounds;
	}

	public override Bounds GetBounds(CombinedMeshPart part)
	{
		return _partsBounds[part.Index];
	}

	public void ApplyDataToMesh()
	{
		Mesh mesh = _root.Mesh;
		mesh.SetVertices(_vertices);
		mesh.SetNormals(_normals);
		mesh.SetTangents(_tangents);
		mesh.bounds = Bounds;
	}

	protected override void OnInitialized()
	{
		_root = base.Root;
		_vertices = new List<Vector3>();
		_normals = new List<Vector3>();
		_tangents = new List<Vector4>();
		_partsBounds = new List<Bounds>();
		_partsBoundsLocal = new List<Bounds>();
	}

	protected override void OnAddPart(CombinedMeshPart part, Mesh mesh, Matrix4x4 transform)
	{
		Bounds bounds = mesh.bounds;
		Bounds item = bounds.Transform(transform);
		_partsBounds.Add(item);
		_partsBoundsLocal.Add(bounds);
	}

	protected override void OnRemovePart(CombinedMeshPart part)
	{
		_partsBounds.RemoveAt(part.Index);
		_partsBoundsLocal.RemoveAt(part.Index);
	}

	protected override void OnMeshUpdated()
	{
		Mesh mesh = _root.Mesh;
		mesh.GetVertices(_vertices);
		mesh.GetNormals(_normals);
		mesh.GetTangents(_tangents);
		Bounds = mesh.bounds;
	}
}