Пример #1
0
 protected override void Awake()
 {
     base.Awake();
     if (_cap)
     {
         _capMode = CapMethod.Flat;
         _cap     = false;
     }
     mesh.name = "tube";
 }
Пример #2
0
        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;
                }
            }
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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);
            }
        }