Example #1
0
    private void _GenerateObject(MeshItem mesh)
    {
        GameObject newObject = (GameObject)Object.Instantiate(_meshPrefab);
        newObject.transform.SetParent(_meshParent.transform);

        MeshFilter _meshFilter = newObject.GetComponent<MeshFilter>();
        PolygonCollider2D _collider = newObject.GetComponent<PolygonCollider2D>();

        List<Vector2> _uvs = new List<Vector2>();
        List<int> _triangles = new List<int>();
        Mesh _mesh = new Mesh();

        for (int i = 0; i < mesh.points.Count; i++)
        {
            _uvs.Add(new Vector2(mesh.points[i].x, mesh.points[i].y));
        }

        for (int i = 0; i < (mesh.points.Count - 2); i++)
        {
            _triangles.Add(0);
            _triangles.Add(i + 2);
            _triangles.Add(i + 1);
        }

        _mesh.vertices = mesh.points.ToArray();
        _mesh.uv = _uvs.ToArray();
        _mesh.triangles = _triangles.ToArray();
        _mesh.RecalculateNormals();

        _meshFilter.mesh = _mesh;

        _collider.points = _uvs.ToArray();
    }
Example #2
0
 public void CreateMesh(List<Vector3> points)
 {
     MeshItem newMesh = new MeshItem();
     for (int i = 0; i < points.Count; i++)
         newMesh.AddPoint(points[i]);
     meshes.Add(newMesh);
     _GenerateObject(meshes[meshes.Count - 1]);
 }
Example #3
0
                public unsafe bool CanUseInstancingForTransparentWith(ref MeshItem meshItem)
                {
                    if (BoundingBoxCenter != meshItem.BoundingBoxCenter)
                    {
                        return(false);
                    }
                    if (BoundingSphere != meshItem.BoundingSphere)
                    {
                        return(false);
                    }
                    if (CastShadows != meshItem.CastShadows)
                    {
                        return(false);
                    }
                    if (ReceiveDecals != meshItem.ReceiveDecals)
                    {
                        return(false);
                    }
                    if (ReplaceMaterial != meshItem.ReplaceMaterial)
                    {
                        return(false);
                    }

                    if (ReplaceMaterialSelectively != null || meshItem.ReplaceMaterialSelectively != null)
                    {
                        if (ReplaceMaterialSelectively != null && meshItem.ReplaceMaterialSelectively != null)
                        {
                            if (ReplaceMaterialSelectively.Length != meshItem.ReplaceMaterialSelectively.Length)
                            {
                                return(false);
                            }

                            for (int n = 0; n < ReplaceMaterialSelectively.Length; n++)
                            {
                                if (ReplaceMaterialSelectively[n] != meshItem.ReplaceMaterialSelectively[n])
                                {
                                    return(false);
                                }
                            }
                        }
                        else
                        {
                            return(false);
                        }
                    }

                    if (AnimationData != null || meshItem.AnimationData != null)
                    {
                        return(false);
                    }
                    if (MeshData != meshItem.MeshData)
                    {
                        return(false);
                    }

                    if (LODValue != meshItem.LODValue)
                    {
                        return(false);
                    }
                    //if( LODValue != 0 || meshItem.LODValue != 0 )
                    //	return false;

                    if (Layers != null || meshItem.Layers != null)
                    {
                        return(false);
                    }

                    //public GpuVertexBuffer BatchingInstanceBuffer;

                    //public object Creator;
                    //public object AnyData;

                    ////public BillboardData[] BillboardArray;

                    return(true);
                }