internal void GenerateMesh(Vector2 weight0, Vector2 weight1, Vector2 weight2, Vector3 v0, Vector3 v1, Vector3 v2, Vector2 u0, Vector2 u1, Vector2 u2, List <NavMeshRenderTriangle> triangles)
        {
            if (m_PaintedType == PaintedType.Painted)
            {
                //if (isBePainted)
                {
                    Vector3 vertex0 = (1 - weight0.x - weight0.y) * v0 + weight0.x * v1 + weight0.y * v2;
                    Vector3 vertex1 = (1 - weight1.x - weight1.y) * v0 + weight1.x * v1 + weight1.y * v2;
                    Vector3 vertex2 = (1 - weight2.x - weight2.y) * v0 + weight2.x * v1 + weight2.y * v2;

                    Vector2 uv0 = (1 - weight0.x - weight0.y) * u0 + weight0.x * u1 + weight0.y * u2;
                    Vector2 uv1 = (1 - weight1.x - weight1.y) * u0 + weight1.x * u1 + weight1.y * u2;
                    Vector2 uv2 = (1 - weight2.x - weight2.y) * u0 + weight2.x * u1 + weight2.y * u2;

                    NavMeshRenderTriangle triangle = null;
                    if (triangles.Count <= 0)
                    {
                        triangle = new NavMeshRenderTriangle();
                        triangles.Add(triangle);
                    }
                    else
                    {
                        triangle = triangles[triangles.Count - 1];
                    }
                    if (triangle.vertexCount >= 64990)
                    {
                        triangle = new NavMeshRenderTriangle();
                        triangles.Add(triangle);
                    }

                    triangle.AddVertex(vertex0, uv0);
                    triangle.AddVertex(vertex1, uv1);
                    triangle.AddVertex(vertex2, uv2);
                }
            }
            else if (m_PaintedType == PaintedType.Mix)
            {
                Vector2 halfw01 = weight0 + (weight1 - weight0) * 0.5f;
                Vector2 halfw02 = weight0 + (weight2 - weight0) * 0.5f;
                Vector2 halfw12 = weight1 + (weight2 - weight1) * 0.5f;
                if (m_CenterNode != null)
                {
                    m_CenterNode.GenerateMesh(halfw01, halfw12, halfw02, v0, v1, v2, u0, u1, u2, triangles);
                }
                if (m_TopNode != null)
                {
                    m_TopNode.GenerateMesh(halfw01, weight1, halfw12, v0, v1, v2, u0, u1, u2, triangles);
                }
                if (m_LeftNode != null)
                {
                    m_LeftNode.GenerateMesh(weight0, halfw01, halfw02, v0, v1, v2, u0, u1, u2, triangles);
                }
                if (m_RightNode != null)
                {
                    m_RightNode.GenerateMesh(halfw02, halfw12, weight2, v0, v1, v2, u0, u1, u2, triangles);
                }
            }
        }
Ejemplo n.º 2
0
        internal void GenerateRenderMesh(List <NavMeshRenderTriangle> triangles)
        {
            NavMeshRenderTriangle triangle = null;

            if (triangles.Count <= 0)
            {
                triangle = new NavMeshRenderTriangle();
                triangles.Add(triangle);
            }
            else
            {
                triangle = triangles[triangles.Count - 1];
            }
            if (triangle.vertexCount >= 64990)
            {
                triangle = new NavMeshRenderTriangle();
                triangles.Add(triangle);
            }

            triangle.AddVertex(vertex0, uv0);
            triangle.AddVertex(vertex1, uv1);
            triangle.AddVertex(vertex2, uv2);
        }