private void OnDrawGizmos()
 {
     if (meshUtility == null)
     {
         return;
     }
     meshUtility.DrawMeshGizmos(transform.position);
 }
Esempio n. 2
0
    //public void Step2()
    //{
    //    MeshUtility temp = new MeshUtility();
    //    int i = 0;
    //    //Parcours tout les triangles et les faces
    //    foreach (Triangle triangle in util.Triangles)
    //    {
    //        List<Vertex> vertices = new List<Vertex>();
    //        foreach (Edge edge in triangle.Edges)
    //        {

    //            vertices.Add(edge.Vertices[0]);
    //            Vertex v = Vertex.Average(new List<Vertex> { edge.Vertices[0], edge.Vertices[1] });
    //            vertices.Add(v);
    //            vertices.Add(edge.Vertices[1]);

    //            temp.FindOrCreateVertex(edge.Vertices[0]);
    //            temp.FindOrCreateVertex(v);
    //            temp.FindOrCreateVertex(edge.Vertices[1]);

    //            temp.FindOrCreateEdge(edge.Vertices[0], v);
    //            temp.FindOrCreateEdge(v, edge.Vertices[1]);
    //        }

    //        if (i < 6)
    //        {
    //            if (i % 2 == 0)
    //            {
    //                temp.CreateTriangle(vertices[0], vertices[1], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[2], vertices[4]);
    //                temp.CreateTriangle(vertices[1], vertices[4], vertices[7]);
    //                temp.CreateTriangle(vertices[4], vertices[5], vertices[7]);
    //            }
    //            else
    //            {
    //                temp.CreateTriangle(vertices[0], vertices[4], vertices[1]);
    //                temp.CreateTriangle(vertices[4], vertices[5], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[4], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[7], vertices[2]);
    //            }
    //        }
    //        else if (i >= 8)
    //        {
    //            if (i % 2 == 0)
    //            {
    //                temp.CreateTriangle(vertices[1], vertices[4], vertices[0]);
    //                temp.CreateTriangle(vertices[1], vertices[2], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[4], vertices[7]);
    //                temp.CreateTriangle(vertices[4], vertices[3], vertices[7]);
    //            }
    //            else
    //            {
    //                temp.CreateTriangle(vertices[0], vertices[4], vertices[1]);
    //                temp.CreateTriangle(vertices[4], vertices[3], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[4], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[7], vertices[2]);
    //            }
    //        }
    //        else
    //        {
    //            if (i % 2 == 0)
    //            {
    //                temp.CreateTriangle(vertices[0], vertices[1], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[2], vertices[4]);
    //                temp.CreateTriangle(vertices[1], vertices[4], vertices[7]);
    //                temp.CreateTriangle(vertices[4], vertices[3], vertices[7]);
    //            }
    //            else
    //            {
    //                temp.CreateTriangle(vertices[0], vertices[4], vertices[1]);
    //                temp.CreateTriangle(vertices[4], vertices[5], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[4], vertices[7]);
    //                temp.CreateTriangle(vertices[1], vertices[7], vertices[2]);
    //            }
    //        }

    //        vertices.Clear();
    //        i++;
    //        if (i > exec)
    //            break;
    //    }

    //    Debug.Log(temp.Vertices.Count);
    //    Debug.Log(temp.Edges.Count);
    //    Debug.Log(util.Edges.Count);
    //    util = temp ;
    //    DebugGraph.meshUtility = util;
    //    filter.sharedMesh = util.ToMesh();
    //}

    //public void Step1()
    //{
    //    //For each triangle, split it into three triangle at their middle
    //    MeshUtility temp = new MeshUtility(GetComponent<MeshFilter>().sharedMesh);
    //    temp.triangles.Clear();
    //    temp.edges.Clear();
    //    temp.vertices.Clear();

    //    for (int i = 0; i < 1; i++)
    //    {
    //        List<Vertex> vs = new List<Vertex>();
    //        vs.Add(util.triangles[i].GetVertices()[0]);
    //        vs.Add(util.triangles[i].GetVertices()[1]);
    //        vs.Add(util.triangles[i].GetVertices()[2]);
    //        Vertex v1 = new Vertex(new Vector3(vs[0].position.x - vs[1].position.x, vs[0].position.y - vs[1].position.y));
    //        vs.Add(v1);

    //        //vs.Add(util.triangles[i+1].GetVertices()[2]);
    //        temp.vertices.Add(vs[0]);
    //        temp.vertices.Add(vs[1]);
    //        temp.vertices.Add(vs[2]);
    //        temp.vertices.Add(vs[3]);
    //        //temp.vertices.Add(Vertex.Average(vs));

    //        Edge e1 = new Edge(vs[0], vs[1]);
    //        Edge e2 = new Edge(vs[1], vs[2]);
    //        Edge e3 = new Edge(vs[0], vs[2]);
    //        //Edge e4 = new Edge(vs[0], vs[3]);
    //        //Edge e5 = new Edge(vs[2], vs[3]);

    //        temp.edges.Add(e1);
    //        temp.edges.Add(e2);
    //        temp.edges.Add(e3);
    //        //temp.edges.Add(e4);
    //        //temp.edges.Add(e5);

    //        Triangle t1 = new Triangle(e2, e1, e3);
    //        //Triangle t2 = new Triangle(e4, e5, e3);
    //        temp.triangles.Add(t1);
    //        //temp.triangles.Add(t2);

    //        temp.edges[i].color = Color.green;
    //    }

    //    //for (int i = 0; i < util.triangles.Count; i++)
    //    //{
    //    //    List<Vertex> vs = new List<Vertex>();
    //    //    vs.Add(util.triangles[i].GetVertices()[0]);
    //    //    vs.Add(util.triangles[i].GetVertices()[1]);
    //    //    vs.Add(util.triangles[i].GetVertices()[2]);
    //    //    //vs.Add(util.triangles[i+1].GetVertices()[2]);
    //    //    temp.vertices.Add(vs[0]);
    //    //    temp.vertices.Add(vs[1]);
    //    //    temp.vertices.Add(vs[2]);
    //    //    //temp.vertices.Add(vs[3]);
    //    //    temp.vertices.Add(Vertex.Average(vs));

    //    //    Edge e1 = new Edge(vs[0], vs[1]);
    //    //    Edge e2 = new Edge(vs[1], vs[2]);
    //    //    Edge e3 = new Edge(vs[0], vs[2]);
    //    //    //Edge e4 = new Edge(vs[0], vs[3]);
    //    //    //Edge e5 = new Edge(vs[2], vs[3]);

    //    //    temp.edges.Add(e1);
    //    //    temp.edges.Add(e2);
    //    //    temp.edges.Add(e3);
    //    //    //temp.edges.Add(e4);
    //    //    //temp.edges.Add(e5);

    //    //    Triangle t1 = new Triangle(e2, e1, e3);
    //    //    //Triangle t2 = new Triangle(e4, e5, e3);
    //    //    temp.triangles.Add(t1);
    //    //    //temp.triangles.Add(t2);

    //    //    temp.edges[i * 2 + 1].color = Color.green;
    //    //}


    //    //foreach(Triangle t in util.triangles)
    //    //{
    //    //    //Centers
    //    //    temp.vertices.Add(Vertex.Average(t.GetVertices().OfType<Vertex>().ToList()));
    //    //    if (temp.vertices.Count >= 3)
    //    //        break;
    //    //}
    //    //for (int i = 0; i < util.triangles.Count; i+=3)
    //    //{

    //    //    Edge e1 = new Edge(temp.vertices[i], temp.vertices[i + 1]);
    //    //    Edge e2 = new Edge(temp.vertices[i+1], temp.vertices[i + 2]);
    //    //    Edge e3 = new Edge(temp.vertices[i+2], temp.vertices[i]);
    //    //    temp.edges.Add(e1);
    //    //    temp.edges.Add(e2);
    //    //    temp.edges.Add(e3);

    //    //    Triangle triangle = new Triangle(e1, e2, e3);
    //    //    temp.triangles.Add(triangle);
    //    //    if (temp.triangles.Count >= 1)
    //    //        break;
    //    //}


    //    Debug.Log(temp.vertices.Count);
    //    Debug.Log(temp.edges.Count);
    //    util = temp;
    //    GetComponent<MeshFilter>().sharedMesh = util.ToMesh();
    //    DebugGraph.meshUtility = util;
    //}

    private void OnDrawGizmos()
    {
        if (util == null)
        {
            return;
        }
        util.DrawMeshGizmos(transform.position);
    }
Esempio n. 3
0
    private void OnDrawGizmos()
    {
        if (meshUtility == null)
        {
            return;
        }

        meshUtility.DrawMeshGizmos(transform.position + new Vector3(1.1f, 0, 0));

        if (newMeshUtility == null)
        {
            return;
        }

        newMeshUtility.DrawMeshGizmos(transform.position);

        foreach (Vector3 p in gizmoPointsToDraw)
        {
            Gizmos.color = Color.blue;
            Gizmos.DrawWireSphere(p + new Vector3(1.1f, 0, 0), 0.01f);
        }
    }