// choisit l'une des scènes disponibles à portée et s'inscrit dedans public void SelectAndEnterScene() { float[] rdmTab = new float[availableScenes.Count]; for (int i = 0; i < availableScenes.Count; i++) // evaluation des distances entre le passant et la scene { float distance = (this.transform.position - availableScenes[i].transform.position).magnitude; rdmTab[i] = distance + Random.Range(0, 3); // bruitage } int selectedIndex = 0; float min = 10000; for (int i = 0; i < rdmTab.Length; i++) // selection de la scene la plus proche { if (rdmTab[i] < min) { min = rdmTab[i]; selectedIndex = i; } } selectedScene = availableScenes[selectedIndex]; sceneLeader = selectedScene.mainActor; // recuperation du leader de la scene en question for (int i = 0; i < selectedScene.availablesSpots.Count; i++) // parcours des places dans la scene { if (selectedScene.availablesSpots[i]) // si il ya une place de libre { sceneSpot = selectedScene.spots[i]; SetTarget(sceneSpot); // le passant se dirige sur cette place selectedScene.availablesSpots[i] = false; // et la place est prise selectedSpotIndex = i; break; } } }
// quitte la scèe public void LeaveSelectedScene() { selectedScene.availablesSpots[selectedSpotIndex] = true; sceneSpot = null; sceneLeader = null; selectedScene = null; SetTarget(null); selectedSpotIndex = -1; }
// choisit l'une des scènes disponibles à portée et s'inscrit dedans public void SelectAndEnterScene() { float[] rdmTab = new float[availableScenes.Count]; for (int i = 0; i < availableScenes.Count; i++) // evaluation des distances entre le passant et la scene { float distance = (this.transform.position - availableScenes[i].transform.position).magnitude; rdmTab[i] = distance + Random.Range(0, 3); // bruitage } int selectedIndex = 0; float min = 10000; for (int i = 0; i < rdmTab.Length; i++) // selection de la scene la plus proche { if (rdmTab[i] < min) { min = rdmTab[i]; selectedIndex = i; } } selectedScene = availableScenes[selectedIndex]; sceneLeader = selectedScene.mainActor; // recuperation du leader de la scene en question for (int i = 0; i < selectedScene.availablesSpots.Count; i++) // parcours des places dans la scene { if (selectedScene.availablesSpots[i])// si il ya une place de libre { sceneSpot = selectedScene.spots[i]; SetTarget(sceneSpot); // le passant se dirige sur cette place selectedScene.availablesSpots[i] = false; // et la place est prise selectedSpotIndex = i; break; } } }