-
Notifications
You must be signed in to change notification settings - Fork 0
/
GenerationOutput.cs
119 lines (103 loc) · 3.35 KB
/
GenerationOutput.cs
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#region copyright
// BuildR 2.0
// Available on the Unity Asset Store https://www.assetstore.unity3d.com/#!/publisher/412
// Copyright (c) 2017 Jasper Stocker http://support.jasperstocker.com
// Support contact email@jasperstocker.com
//
// THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
// KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
#endregion
using System.Collections.Generic;
using BuildR2;
using UnityEngine;
public class GenerationOutput
{
public Mesh mesh = null;
public RawMeshData raw = null;
public static GenerationOutput CreateMeshOutput()
{
GenerationOutput output = new GenerationOutput();
output.mesh = new Mesh();
return output;
}
public static GenerationOutput CreateRawOutput()
{
GenerationOutput output = new GenerationOutput();
output.raw = new RawMeshData();
return output;
}
public static GenerationOutput CreateCombinedOutput()
{
GenerationOutput output = new GenerationOutput();
output.mesh = new Mesh();
output.raw = new RawMeshData();
return output;
}
}
public class RawMeshData
{
public Vector3[] vertices;
public Vector2[] uvs;
public int[] triangles;
public Dictionary<int, List<int>> subTriangles;
public Vector3[] normals;
public Vector4[] tangents;
public int vertCount;
public int submeshCount;
public List<Material> materials;
public RawMeshData()
{
}
public RawMeshData(int vertCount, int triCount)
{
vertices = new Vector3[vertCount];
uvs = new Vector2[vertCount];
triangles = new int[triCount];
subTriangles = new Dictionary<int, List<int>>();
normals = new Vector3[vertCount];
tangents = new Vector4[vertCount];
submeshCount = 1;
this.vertCount = vertCount;
}
public void Copy(BuildRMesh data)
{
vertices = data.vertices.ToArray();
uvs = data.uvs.ToArray();
triangles = data.triangles.ToArray();
normals = data.normals.ToArray();
tangents = data.tangents.ToArray();
subTriangles = new Dictionary<int, List<int>>(data.subTriangles);
vertCount = data.vertexCount;
submeshCount = subTriangles.Count;
materials = new List<Material>(data.submeshLibrary.MATERIALS);
}
public void Copy(Mesh data)
{
vertices = data.vertices;
uvs = data.uv;
triangles = data.triangles;
normals = data.normals;
tangents = data.tangents;
subTriangles = new Dictionary<int, List<int>>();
for (int s = 0; s < data.subMeshCount; s++)
subTriangles.Add(s, new List<int>(data.GetTriangles(s)));
vertCount = data.vertexCount;
submeshCount = subTriangles.Count;
}
public static RawMeshData CopyBuildRMesh(BuildRMesh data) {
RawMeshData output = new RawMeshData(data.vertices.Count, data.triangles.Count);
output.Copy(data);
return output;
}
public static RawMeshData CopMesh(Mesh data) {
RawMeshData output = new RawMeshData(data.vertices.Length, data.triangles.Length);
output.Copy(data);
return output;
}
public override string ToString()
{
return string.Format("vert count {0} tri count {1} sm count {2} ", vertices.Length, triangles.Length, subTriangles.Count);
}
}