3 using System.Collections.Generic;
7 private static Vector3
CENTER =
new Vector3(0f,0f,0f);
25 List<int> triangles, List<Color32> colors) {
26 int nbVertices = vertices.Count;
27 float displacement = 0.6f;
31 for(
int i =0; i<nbVertices; i+=16) {
32 vertices.Add(vertices[i] - displacement * normals[i] );
33 vertices.Add(vertices[i+1] - displacement * normals[i+1] );
34 vertices.Add(vertices[i+2] - displacement * normals[i+2] );
36 vertices.Add(vertices[i+3] - displacement * normals[i+3] );
37 vertices.Add(vertices[i+4] - displacement * normals[i+4] );
38 vertices.Add(vertices[i+5] - displacement * normals[i+5] );
40 vertices.Add(vertices[i+6] - displacement * normals[i+6] );
41 vertices.Add(vertices[i+7] - displacement * normals[i+7] );
42 vertices.Add(vertices[i+8] - displacement * normals[i+8] );
44 vertices.Add(vertices[i+9] - displacement * normals[i+9] );
45 vertices.Add(vertices[i+10] - displacement * normals[i+10] );
46 vertices.Add(vertices[i+11] - displacement * normals[i+11] );
48 vertices.Add(vertices[i+12] - displacement * normals[i] );
49 vertices.Add(vertices[i+13] - displacement * normals[i+1] );
50 vertices.Add(vertices[i+14] - displacement * normals[i+6] );
51 vertices.Add(vertices[i+15] - displacement * normals[i+7] );
53 colors.Add(colors[i]);
54 colors.Add(colors[i+1]);
55 colors.Add(colors[i+2]);
57 colors.Add(colors[i+2]);
58 colors.Add(colors[i+4]);
59 colors.Add(colors[i+5]);
61 colors.Add(colors[i+6]);
62 colors.Add(colors[i+7]);
63 colors.Add(colors[i+8]);
65 colors.Add(colors[i+9]);
66 colors.Add(colors[i+10]);
67 colors.Add(colors[i+11]);
69 colors.Add(colors[i+12]);
70 colors.Add(colors[i+13]);
71 colors.Add(colors[i+14]);
72 colors.Add(colors[i+15]);
75 normals.Add(-normals[i]);
76 normals.Add(-normals[i+1]);
77 normals.Add(-normals[i+2]);
79 normals.Add(-normals[i+3]);
80 normals.Add(-normals[i+4]);
81 normals.Add(-normals[i+5]);
83 normals.Add(-normals[i+6]);
84 normals.Add(-normals[i+7]);
85 normals.Add(-normals[i+8]);
87 normals.Add(-normals[i+9]);
88 normals.Add(-normals[i+10]);
89 normals.Add(-normals[i+11]);
92 normals.Add(normals[i+12]);
93 normals.Add(normals[i+13]);
94 normals.Add(normals[i+14]);
95 normals.Add(normals[i+15]);
98 triangles.Add(nbVertices+i);
99 triangles.Add(nbVertices+i+1);
100 triangles.Add(nbVertices+i+2);
102 triangles.Add(nbVertices+i+3);
103 triangles.Add(nbVertices+i+4);
104 triangles.Add(nbVertices+i+5);
106 triangles.Add(nbVertices+i+6);
107 triangles.Add(nbVertices+i+7);
108 triangles.Add(nbVertices+i+8);
110 triangles.Add(nbVertices+i+9);
111 triangles.Add(nbVertices+i+10);
112 triangles.Add(nbVertices+i+11);
117 triangles.Add(i+nbVertices+12);
119 triangles.Add(i+nbVertices+12);
120 triangles.Add(i+nbVertices+13);
123 triangles.Add(i+nbVertices+14);
127 triangles.Add(i+nbVertices+14);
128 triangles.Add(i+nbVertices+15);
154 foreach(Mesh mesh
in meshes) {
165 GameObject ribbObj =
new GameObject(gameobj);
167 ribbObj.AddComponent<MeshFilter>();
168 ribbObj.AddComponent<MeshRenderer>();
169 ribbObj.GetComponent<MeshFilter>().mesh = mesh;
170 ribbObj.GetComponent<Renderer>().material =
new Material(Shader.Find(
"Custom/Ribbons"));
171 ribbObj.transform.position =
CENTER;
172 ribbObj.transform.localPosition =
CENTER;
179 List<int> triangles, List<Color32> colors,
int[] ss) {
180 int nbVert = vertices.Count;
182 Vector3 back = (vertices[8] - vertices[7]).normalized;
187 vertices.Add(vertices[0]);
190 vertices.Add(vertices[8]);
193 vertices.Add(vertices[3]);
196 vertices.Add(vertices[11]);
199 vertices.Add(vertices[12]);
202 vertices.Add(vertices[15]);
205 for(
int i=0; i<6; i++) {
207 colors.Add(colors[0]);
213 triangles.Add(nbVert + 0);
214 triangles.Add(nbVert + 1);
215 triangles.Add(nbVert + 2);
218 triangles.Add(nbVert + 1);
219 triangles.Add(nbVert + 2);
220 triangles.Add(nbVert + 3);
223 triangles.Add(nbVert + 1);
224 triangles.Add(nbVert + 3);
225 triangles.Add(nbVert + 5);
228 triangles.Add(nbVert + 1);
229 triangles.Add(nbVert + 4);
230 triangles.Add(nbVert + 5);
236 List<int> triangles, List<Color32> colors,
int[] ss) {
237 int nbVert = vertices.Count;
241 int start = nbVert - 32 - 6;
243 Vector3 front = (vertices[7] - vertices[8]).normalized;
248 vertices.Add(vertices[start+1]);
251 vertices.Add(vertices[start+2]);
254 vertices.Add(vertices[start+4]);
257 vertices.Add(vertices[start+5]);
260 vertices.Add(vertices[start+13]);
263 vertices.Add(vertices[start+16]);
266 for(
int i=0; i<6; i++) {
268 colors.Add(colors[nbVert - 1 - 6]);
274 triangles.Add(nbVert + 0);
275 triangles.Add(nbVert + 1);
276 triangles.Add(nbVert + 2);
279 triangles.Add(nbVert + 1);
280 triangles.Add(nbVert + 2);
281 triangles.Add(nbVert + 3);
284 triangles.Add(nbVert + 1);
285 triangles.Add(nbVert + 3);
286 triangles.Add(nbVert + 5);
289 triangles.Add(nbVert + 1);
290 triangles.Add(nbVert + 4);
291 triangles.Add(nbVert + 5);
297 List<int> triangles, List<Color32> colors,
int[] ss,
298 string tag=
"RibbonObj",
string gameobj=
"Ribbons") {
306 mData.
vertices = vertices.ToArray();
307 mData.
normals = normals.ToArray();
309 mData.
colors = colors.ToArray();
318 List<Mesh> meshes = split.
Split(mData);
static void SubGenerateMeshes(List< Mesh > meshes, string tag, string gameobj)
void addRibbon(GameObject rib)
List< Mesh > Split(MeshData mData)
static void AddLastFrontalFace(List< Vector3 > vertices, List< Vector3 > normals, List< int > triangles, List< Color32 > colors, int[] ss)
static void DuplicateVertices(List< Vector3 > vertices, List< Vector3 > normals, List< int > triangles, List< Color32 > colors)
First attempt at making ribbons thick.
static void GenerateMeshes(List< Vector3 > vertices, List< Vector3 > normals, List< int > triangles, List< Color32 > colors, int[] ss, string tag="RibbonObj", string gameobj="Ribbons")
static void AddFirstFrontalFace(List< Vector3 > vertices, List< Vector3 > normals, List< int > triangles, List< Color32 > colors, int[] ss)
static SecondaryStructureManager getSecondaryStructureManager()