Exemplo n.º 1
0
 public Triangle(Vector3 pos, float radius, int index)
 {
     Indices = new int[]
     {
         VertexDict.Add(pos),
         VertexDict.Add(pos + GetVertex(radius, index)),
         VertexDict.Add(pos + GetVertex(radius, index + 1))
     };
 }
Exemplo n.º 2
0
    public void Initialize()
    {
        List <Hexagon> hexagons = new List <Hexagon>();
        float          sqrt3    = Mathf.Sqrt(3f);

        for (int q = -extent; q <= extent; q++)
        {
            int r1 = Mathf.Max(-extent, -q - extent);
            int r2 = Mathf.Min(extent, -q + extent);
            for (int r = r1; r <= r2; r++)
            {
                hexagons.Add(new Hexagon(new Vector3(
                                             hexRadius * sqrt3 * (q + r / 2f), 0, hexRadius * 3f / 2f * r), hexRadius));
            }
        }

        Vector3[]  vertices  = VertexDict.ToArray();
        List <int> triangles = new List <int>();

        foreach (Hexagon hexagon in hexagons)
        {
            for (int i = 0; i < 18; i++)
            {
                triangles.Add(hexagon.Triangles[i / 3].Indices[i % 3]);
            }
        }

        mesh           = new Mesh();
        mesh.vertices  = vertices;
        mesh.triangles = triangles.ToArray();
        mesh.RecalculateBounds();

        Size = mesh.bounds.size.x;
        Vector3 min = mesh.bounds.min;

        Vector2[] uv = new Vector2[vertices.Length];
        for (int i = 0; i < vertices.Length; i++)
        {
            uv[i] = new Vector2((vertices[i].x - min.x) / Size, (vertices[i].z - min.z) / Size);
        }
        mesh.uv = uv;
        mesh.RecalculateNormals();  // TODO
        mesh.RecalculateTangents(); // TODO
        mesh.MarkDynamic();

        GetComponent <MeshFilter>().sharedMesh = mesh;
        coll            = GetComponent <MeshCollider>();
        coll.sharedMesh = mesh;
    }
Exemplo n.º 3
0
 void Awake()
 {
     //new mesh lists
     triangles = new List <int>();
     vertDict  = new VertexDict();
     vertices  = new List <Vector3>();
     uvs       = new List <Vector2>();
     normals   = new List <Vector3>();
     //build debug texture as a fallback if no material is supplied
     debugTex = new Texture2D(2, 2);
     debugTex.SetPixel(0, 0, Color.red);
     debugTex.SetPixel(1, 0, Color.magenta);
     debugTex.SetPixel(0, 1, Color.blue);
     debugTex.SetPixel(1, 1, Color.cyan);
     debugTex.wrapMode = TextureWrapMode.Repeat;
     debugTex.Apply();
 }