Hello to all,
I am trying to draw a cube at runtime but I am getting a result something like in the image. What would be the possible reasons for that? Thank you.
Edit: Ok I am giving some code too. This is how I create meshes.
var l = new List<Vector3>();
var bh = new BuildingHolder(center, l,buildingHeight);
for (int i = 0; i < l.Count; i++)
{
l _= l *- bh.Center;*_
}
*BuildingDictionary.Add(center, bh); *
var m = bh.CreateModel();
m.name = “building”;
m.transform.parent = this.transform;
m.transform.localPosition = center;
BuildingHolder.cs
public class BuildingHolder
{
public GameObject GameObject { get; set; }
public Vector3 Center { get; set; }
public float Rotation { get; set; }
public bool IsModelCreated;
private List _verts;
* private float buildingHeight;*
* public BuildingHolder(Vector3 center, List verts, float height)*
{
IsModelCreated = false;
Center = center;
_verts = verts;
* buildingHeight = height;*
}
public GameObject CreateModel()
{
if (IsModelCreated)
return null;
var m = new GameObject().AddComponent();
m.gameObject.transform.position = Center;
* m.Initialize(verts,buildingHeight);
IsModelCreated = true;
return m.gameObject;
_}*
}
BuildingPolygon.cs
[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
class BuildingPolygon : MonoBehaviour
{
* private static float buildingHeight;*
* public void Initialize(List verts, float height)*
{
GetComponent().mesh = CreateMesh(verts);
* GetComponent().material = Resources.Load(“BuildingMat”) as Material;*
* buildingHeight = height;*
* }*
private static Mesh CreateMesh(List verts)
{
var tris = new Triangulator(verts.Select(x => x.ToVector2xz()).ToArray());
var mesh = new Mesh();
* var vertices = verts.Select(x => new Vector3(x.x, 0, x.z)).ToList();*
var indices = tris.Triangulate().ToList();
//var uv = new List();
var n = vertices.Count;
for (int index = 0; index < n; index++)
{
var v = vertices[index];
* vertices.Add(new Vector3(v.x, buildingHeight, v.z));*
}
for (int i = 0; i < n - 1; i++)
{
indices.Add(i);
indices.Add(i + n);
indices.Add(i + n + 1);
indices.Add(i);
indices.Add(i + n + 1);
indices.Add(i + 1);
}
indices.Add(n - 1);
indices.Add(n);
indices.Add(0);
indices.Add(n - 1);
indices.Add(n + n - 1);
indices.Add(n);
mesh.vertices = vertices.ToArray();
mesh.triangles = indices.ToArray();
mesh.RecalculateNormals();
mesh.RecalculateBounds();
return mesh;
}
}