protected override void Awake() { base.Awake(); if (_cap) { _capMode = CapMethod.Flat; _cap = false; } mesh.name = "tube"; }
protected override void BuildMesh() { if (_sides > 2) { base.BuildMesh(); bodyVertexCount = (_sides + 1) * base.clippedSamples.Length; CapMethod capMethod = _capMode; if (!useCap) { capMethod = CapMethod.None; } switch (capMethod) { case CapMethod.Flat: capVertexCount = _sides + 1; break; case CapMethod.Round: capVertexCount = _roundCapLatitude * (sides + 1); break; default: capVertexCount = 0; break; } int vertexCount = bodyVertexCount + capVertexCount * 2; bodyTrisCount = _sides * (base.clippedSamples.Length - 1) * 2 * 3; switch (capMethod) { case CapMethod.Flat: capTrisCount = (_sides - 1) * 3 * 2; break; case CapMethod.Round: capTrisCount = _sides * _roundCapLatitude * 6; break; default: capTrisCount = 0; break; } AllocateMesh(vertexCount, bodyTrisCount + capTrisCount * 2); Generate(); switch (capMethod) { case CapMethod.Flat: GenerateFlatCaps(); break; case CapMethod.Round: GenerateRoundCaps(); break; } } }
protected override void BuildMesh() { if (_sides <= 2) { return; } base.BuildMesh(); bodyVertexCount = (_sides + 1) * sampleCount; CapMethod _capModeFinal = _capMode; if (!useCap) { _capModeFinal = CapMethod.None; } switch (_capModeFinal) { case CapMethod.Flat: capVertexCount = _sides + 1; break; case CapMethod.Round: capVertexCount = _roundCapLatitude * (sides + 1); break; default: capVertexCount = 0; break; } int vertexCount = bodyVertexCount + capVertexCount * 2; bodyTrisCount = _sides * (sampleCount - 1) * 2 * 3; switch (_capModeFinal) { case CapMethod.Flat: capTrisCount = (_sides - 1) * 3 * 2; break; case CapMethod.Round: capTrisCount = _sides * _roundCapLatitude * 6; break; default: capTrisCount = 0; break; } AllocateMesh(vertexCount, bodyTrisCount + capTrisCount * 2); Generate(); switch (_capModeFinal) { case CapMethod.Flat: GenerateFlatCaps(); break; case CapMethod.Round: GenerateRoundCaps(); break; } }
protected override void BuildMesh() { if (_sides <= 2) { return; } base.BuildMesh(); bodyVertexCount = (_sides + 1) * clippedSamples.Length; CapMethod _capModeFinal = _capMode; if (!useCap) { _capModeFinal = CapMethod.None; } switch (_capModeFinal) { case CapMethod.Flat: capVertexCount = _sides + 1; break; case CapMethod.Round: capVertexCount = _roundCapLatitude * (sides + 1); break; default: capVertexCount = 0; break; } int vertexCount = bodyVertexCount + capVertexCount * 2; if (tsMesh.vertexCount != vertexCount) { tsMesh.vertices = new Vector3[vertexCount]; tsMesh.normals = new Vector3[vertexCount]; tsMesh.colors = new Color[vertexCount]; tsMesh.uv = new Vector2[vertexCount]; bodyTrisCount = _sides * (clippedSamples.Length - 1) * 2 * 3; switch (_capModeFinal) { case CapMethod.Flat: capTrisCount = (_sides - 1) * 3 * 2; break; case CapMethod.Round: capTrisCount = _sides * _roundCapLatitude * 6; break; default: capTrisCount = 0; break; } if (tsMesh.triangles.Length != bodyTrisCount + capTrisCount * 2) { tsMesh.triangles = new int[bodyTrisCount + capTrisCount * 2]; } } Generate(); switch (_capModeFinal) { case CapMethod.Flat: GenerateFlatCaps(); break; case CapMethod.Round: GenerateRoundCaps(); break; } if (doubleSided) { MeshUtility.MakeDoublesided(tsMesh); } if (calculateTangents) { MeshUtility.CalculateTangents(tsMesh); } }