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;
}
}
|