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); } }
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()); } }
// 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); }
// 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); }
private void Start() { terrainComponent = GetComponent <Terrain>(); poissonSamplingScript = (PoissonSampling)GameObject.Find("GenManager").GetComponent <PoissonSampling>(); }
void OnValidate() { points = PoissonSampling.GeneratePoints(radius, regionSize, rejectionSamples); }