示例#1
0
    public static Mesh CreateMesh(List <Polygon2D> polygons, GameObject gameObject, Vector2 UVScale, Vector2 UVOffset, PolygonTriangulator2D.Triangulation triangulation = PolygonTriangulator2D.Triangulation.Advanced)
    {
        if (gameObject.GetComponent <MeshRenderer>() == null)
        {
            gameObject.AddComponent <MeshRenderer>();
        }

        MeshFilter filter = gameObject.GetComponent <MeshFilter> ();

        if (filter == null)
        {
            filter = gameObject.AddComponent <MeshFilter>() as MeshFilter;
        }

        CombineInstance[] combine = new CombineInstance[polygons.Count];
        for (int i = 0; i < polygons.Count; i++)
        {
            Polygon2D poly = polygons[i];

            combine[i].mesh      = PolygonTriangulator2D.Triangulate(poly, UVScale, UVOffset, triangulation);
            combine[i].transform = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(0, 0, 0), Vector3.one);
        }

        Mesh mesh = new Mesh();

        mesh.CombineMeshes(combine);

        filter.sharedMesh = mesh;
        if (filter.sharedMesh == null)
        {
            UnityEngine.Object.Destroy(gameObject);
        }

        return(filter.sharedMesh);
    }
示例#2
0
 public Mesh GetMesh()
 {
     if (mesh == null)
     {
         mesh = PolygonTriangulator2D.Triangulate(Polygon2DList.CreateFromGameObject(gameObject)[0], Vector2.zero, Vector2.zero, PolygonTriangulator2D.Triangulation.Advanced);
     }
     return(mesh);
 }
示例#3
0
 public Mesh GetMesh()
 {
     if (mesh == null)
     {
         if (GetPolygon().pointsList.Count > 2)
         {
             mesh = PolygonTriangulator2D.Triangulate(GetPolygon(), Vector2.zero, Vector2.zero, PolygonTriangulator2D.Triangulation.Advanced);
         }
     }
     return(mesh);
 }
示例#4
0
    public EraseMesh GetMesh(Transform transformA, Transform transformB)
    {
        Polygon2D polygon = GetWorldShape().ToLocalSpace(transformA);

        polygon.ToOffsetItself(new Vector2D(transformA.position - transformB.position));
        polygon.ToRotationItself(transformB.rotation.eulerAngles.z * -Mathf.Deg2Rad);
        polygon.ToScaleItself(new Vector2(1.0f / transformB.localScale.x, 1.0f / transformB.localScale.y));

        Mesh mesh = PolygonTriangulator2D.Triangulate(polygon, Vector2.zero, Vector2.zero, PolygonTriangulator2D.Triangulation.Advanced);

        EraseMesh eraseMesh = new EraseMesh();

        eraseMesh.mesh = mesh;
        return(eraseMesh);
    }
 public Mesh GetMesh()
 {
     if (mesh == null)
     {
         if (GetPolygons().Count > 0)
         {
             if (GetPolygons()[0].pointsList.Count > 2)
             {
                 // Triangulate Polygon List?
                 mesh = PolygonTriangulator2D.Triangulate(GetPolygons()[0], Vector2.zero, Vector2.zero, PolygonTriangulator2D.Triangulation.Advanced);
             }
         }
     }
     return(mesh);
 }
 public Mesh GetMesh_Collider(Transform transform)
 {
     if (mesh_collider == null)
     {
         if (GetPolygons_Collider_Local(transform).Count > 0)
         {
             if (GetPolygons_Collider_Local(transform)[0].pointsList.Count > 2)
             {
                 // Triangulate Polygon List?
                 mesh_collider = PolygonTriangulator2D.Triangulate(GetPolygons_Collider_Local(transform)[0], Vector2.zero, Vector2.zero, PolygonTriangulator2D.Triangulation.Advanced);
             }
         }
     }
     return(mesh_collider);
 }
示例#7
0
 public Mesh GetMesh()
 {
     if (mesh == null)
     {
         List <Polygon2D> polygons = Polygon2DList.CreateFromGameObject(gameObject);
         if (polygons.Count > 0)
         {
             mesh = PolygonTriangulator2D.Triangulate(polygons[0], Vector2.zero, Vector2.zero, PolygonTriangulator2D.Triangulation.Advanced);
         }
         else
         {
             Debug.Log("SmartLighting2D: LightingRoom2D object is missing Collider Component");
         }
     }
     return(mesh);
 }
示例#8
0
    static public void GenerateMesh(GameObject gameObject, Polygon polygon, Vector2 UVScale)
    {
        if (gameObject.GetComponent <MeshRenderer>() == null)
        {
            gameObject.AddComponent <MeshRenderer>();
        }

        MeshFilter filter = gameObject.GetComponent <MeshFilter> ();

        if (filter == null)
        {
            filter = gameObject.AddComponent <MeshFilter>() as MeshFilter;
        }

        filter.mesh = PolygonTriangulator2D.Triangulate(polygon, UVScale);
    }
示例#9
0
    public Mesh CreateMesh3D(GameObject gameObject, float z, Vector2 UVScale, Vector2 UVOffset, PolygonTriangulator2D.Triangulation triangulation)
    {
        if (gameObject.GetComponent <MeshRenderer>() == null)
        {
            gameObject.AddComponent <MeshRenderer>();
        }

        MeshFilter filter = gameObject.GetComponent <MeshFilter> ();

        if (filter == null)
        {
            filter = gameObject.AddComponent <MeshFilter>() as MeshFilter;
        }

        filter.sharedMesh = PolygonTriangulator2D.Triangulate3D(this, z, UVScale, UVOffset, triangulation);
        if (filter.sharedMesh == null)
        {
            UnityEngine.Object.Destroy(gameObject);
        }

        return(filter.sharedMesh);
    }
示例#10
0
 public Mesh CreateMesh(Vector2 UVScale, Vector2 UVOffset, PolygonTriangulator2D.Triangulation triangulation = PolygonTriangulator2D.Triangulation.Advanced)
 {
     return(PolygonTriangulator2D.Triangulate(this, UVScale, UVOffset, triangulation));
 }