示例#1
0
        public virtual void CreateRoadsFromGrid()
        {
            Debug.Log("PerlinCityGenerator: Creating roads from grid");
            List <Node>     vertices = polyGrid.GetVertices();
            List <GridFace> faces    = polyGrid.GetFaces();

            Dictionary <Vector2Int, bool> connectionPoints = new Dictionary <Vector2Int, bool>();

            //draw connections between verts
            foreach (Node node in vertices)
            {
                node.GetConnectionLines(ref connectionPoints);
            }

            //draw connections between face verts
            for (int i = 0; i < faces.Count; i++)
            {
                int a = Random.value > 0.5f ? 0 : 3;
                int b = Random.value > 0.5f ? 1 : 2;

                Vector3 midPoint = Framework.Util.MathOps.Midpoint(faces[i].GetVertex(a).GetPosition(), faces[i].GetVertex(b).GetPosition());
                //TODO Check if there is a building here before drawing
                //faces[i].GetConnectionLine(ref connectionPoints, faces[i].GetPosition(), midPoint);

                List <Node> verts = faces[i].GetVertices();
                foreach (Node node in verts)
                {
                    node.GetConnectionLines(ref connectionPoints);
                }
            }

            roadPainter.DrawRoads(ref connectionPoints);
            roadPainter.ApplyAlphaBlend();
        }
示例#2
0
    public void ShowGridProps()
    {
        EditorGUILayout.BeginVertical();

        showGridVertices = EditorGUILayout.Foldout(showGridVertices, "Vertices");
        if (showGridVertices)
        {
            vertScrollPos = EditorGUILayout.BeginScrollView(vertScrollPos);
            List <Node> verts = polyGrid.GetVertices();
            GUI.enabled = false;
            for (int i = 0; i < verts.Count; i++)
            {
                string str = "Vertex " + i;
                EditorGUILayout.Vector2Field(str, verts[i].GetPosition());

                EditorGUILayout.IntField("connections", verts[i].NumConnections());
            }
            GUI.enabled = true;
            EditorGUILayout.EndScrollView();
        }

        showGridFaces = EditorGUILayout.Foldout(showGridFaces, "Faces");
        if (showGridFaces)
        {
            faceScrollPos = EditorGUILayout.BeginScrollView(faceScrollPos);
            GUI.enabled   = false;
            List <GridFace> faces = polyGrid.GetFaces();
            for (int i = 0; i < faces.Count; i++)
            {
                string str = "Face " + i;
                EditorGUILayout.Vector2Field(str, faces[i].GetPosition());

                EditorGUILayout.IntField("vertices", faces[i].NumVertices());
            }
            GUI.enabled = true;
            EditorGUILayout.EndScrollView();
        }
        EditorGUILayout.EndHorizontal();
    }