コード例 #1
0
    public override void OnInspectorGUI()
    {
        // On dessine l'inspecteur standard
        DrawDefaultInspector();
        // Recuperation des differents scripts
        PoissonSampling   poissonScript      = (PoissonSampling)GameObject.Find("GenManager").GetComponent <PoissonSampling>();
        Town              townScript         = (Town)GameObject.Find("GenManager").GetComponent <Town>();
        HalfEdgesMap      halfEdgesMap       = (HalfEdgesMap)GameObject.Find("HalfEdge").GetComponent <HalfEdgesMap>();
        IntersectionMaker intersectionScript = (IntersectionMaker)target;

        // Chaque condition dessine un bouton execute le code mis en <then>
        if (GUILayout.Button("Generate Roads"))
        {
            intersectionScript.ComputeRoad(false);
            //intersectionScript.StartCoroutine(intersectionScript.threadedComputeRoad());
        }

        if (GUILayout.Button("Delete Roads"))
        {
            //intersectionScript.ClearInstanciated();
        }

        if (GUILayout.Button("Delete triangles"))
        {
            intersectionScript.ComputeRoad(true);
        }

        if (GUILayout.Button("Add Houses"))
        {
            halfEdgesMap.ExtrudeAllFaces(50f, 200f);
        }
    }
コード例 #2
0
    public override void OnInspectorGUI()
    {
        // On dessine l'inspecteur standard
        DrawDefaultInspector();
        // Recuperation du script utilisé
        PoissonSampling poissonScript = (PoissonSampling)target;

        // Chaque condition dessine un bouton execute le code mis en <then>

        if (GUILayout.Button("Poisson Sampling"))
        {
            // appel de la fonction threadedComputePoints en Coroutine car la fonction retourne un IEnumerator
            poissonScript.StartCoroutine(poissonScript.threadedComputePoints());
        }

        if (GUILayout.Button("Delete Instanciated"))
        {
            poissonScript.StartCoroutine(poissonScript.deleteComputed());
        }

        if (GUILayout.Button("Display Points"))
        {
            poissonScript.StartCoroutine(poissonScript.displayGrid());
        }
    }
コード例 #3
0
    // Use this for initialization
    void Start()
    {
        //_sampling = new GridJitterSampling2(position, size , minDist, nSamples);
        _sampling = new PoissonDiskSampling2(size.x, size.y, size.z, minDist, 30, nSamples);
        Vector3[] samples = _sampling.sample();
        _sampling.visualize();

        LloydsAlgorithm l = new LloydsAlgorithm(samples);
    }
コード例 #4
0
    // Calcul les routes en fonctions des voisins
    public void ComputeRoad(bool delTriangles)
    {
        m_intersections = new List <Intersection>();

        m_halfEdgeMap = GameObject.Find("HalfEdge").GetComponent <HalfEdgesMap>();
        m_halfEdgeMap.Init();

        // va lancer la génération
        m_poissonScript = gameObject.GetComponent <PoissonSampling>();
        InitPoissonGrid();

        //m_poissonScript.threadedComputePoints();
        ComputeNearestPoint(m_poissonScript.getRowSize, m_poissonScript.getColSize); // TODO get des lignes et colonnes

        if (delTriangles)
        {
            this.DelTriangles();
        }

        for (int i = 0; i < m_poissonScript.getRowSize; i++)
        {
            for (int j = 0; j < m_poissonScript.getColSize; j++)
            {
                if (m_poissonGrid[i, j] != null)
                {
                    for (int n = 0; n < m_poissonGrid[i, j].Neighbours.Count; n++)
                    {
                        Vector2Int coords = m_poissonGrid[i, j].Neighbours[n].coords;

                        if (!(m_poissonGrid[i, j].Neighbours[n].joined) && !(m_poissonGrid[coords.x, coords.y].IsJoined(m_poissonGrid[i, j])))
                        {
                            m_poissonGrid[i, j].SetJoined(m_poissonGrid[coords.x, coords.y], true);
                            m_poissonGrid[coords.x, coords.y].SetJoined(m_poissonGrid[i, j], true);

                            // Pour passer à la grille en 1 dimension -> j * maxI + i

                            int index = m_poissonGrid[coords.x, coords.y].IndexOfInter(m_poissonGrid[i, j]);
                            //Debug.Log("HalfEdges ind : " + m_poissonGrid[i, j].IndexInMap);

                            m_halfEdgeMap.LinkTwoPoints((Vector3)m_poissonScript.poissonGrid[i, j], (Vector3)m_poissonScript.poissonGrid[coords.x, coords.y]);

                            // Relie les routes entre les bordures de l'intersection
                            //GenerateRoad((Vector3)m_poissonGrid[i, j].Neighbours[n].positionOnIntersection, (Vector3)m_poissonGrid[coords.x, coords.y].Neighbours[index].positionOnIntersection);
                        }
                    }
                }
            }
        }

        m_halfEdgeMap.FillEsdgesWithRoads();
        m_halfEdgeMap.ComputeAllIntersectionPoints(m_poissonScript.poissonGrid, m_poissonScript.getRowSize, m_poissonScript.getColSize);
    }
コード例 #5
0
 private void Start()
 {
     terrainComponent      = GetComponent <Terrain>();
     poissonSamplingScript = (PoissonSampling)GameObject.Find("GenManager").GetComponent <PoissonSampling>();
 }
コード例 #6
0
 void OnValidate()
 {
     points = PoissonSampling.GeneratePoints(radius, regionSize, rejectionSamples);
 }