public void SetDisplay() { ///////On trouve l'objet le plus éloigné du centre de la zone Transform farthestObject = FindFarthestLabel(); ///////On incrémente l'opacité et la taille for (var i = 0; i < labels.Count; i++) { GameObject label = labels[i]; Label_UI label_script = label.GetComponent <Label_UI>(); float distanceMax = Vector3.Distance(farthestObject.position, transform.position); Vector3 compensatedPos = new Vector3(transform.position.x, 9, transform.position.z); float distance = Vector3.Distance(label.transform.position, compensatedPos); float distancePercentage = 1 - (distance / distanceMax); print(distance + " / " + distanceMax + " = " + distancePercentage); Color currentCol = label_script.label_fond.GetComponent <Image>().color; Color newColor = new Color(currentCol.r, currentCol.g, currentCol.b, Mathf.Lerp(opacityMin, 1, distancePercentage)); label_script.label_fond.GetComponent <Image>().color = newColor; } }
void OnDestroy() { for (var i = 0; i < labels.Count; i++) { GameObject label = labels[i]; Label_UI label_script = label.GetComponent <Label_UI>(); label_script.isVisible = false; label_script.label_pointe_RT.localScale = Vector3.zero; } }
//On trouve les labels grâçe à un tag et réduit la "localScale" de chacun à 0 public void HideLabels() { GameObject[] labels = GameObject.FindGameObjectsWithTag("Label"); foreach (GameObject go in labels) { Label_UI labelScript = go.GetComponent <Label_UI>(); labelScript.label_pointe_RT.localScale = Vector3.zero; labelScript.isVisible = false; } }
public void DisplayList() //Cette fonction crée une liste de boutons et l'affiche dans la section dédiée du panneau latéral droit. Elle permet également l'affichage des labels des objets sélectionnés. { for (var i = 0; i < SelectedObj.Count; i++) { //Création des boutons de la liste d'objects sélectionnés float yPos = i * 25; Vector3 pos = new Vector3(1, -yPos); GameObject bouton = Instantiate(bouton_liste); bouton.name = "bouton_" + SelectedObj[i].name; bouton.transform.SetParent(ObjectParent.transform); bouton.GetComponent <RectTransform>().anchoredPosition = pos; bouton.GetComponent <RectTransform>().sizeDelta = new Vector2(370, 25); Text bouton_texte = bouton.GetComponentInChildren <Text>(); ObjectsInformations infos = SelectedObj[i].GetComponent <ObjectsInformations>(); bouton.GetComponent <bouton_hierarchyList>().object_linked = SelectedObj[i]; bouton_texte.text = infos.title; if (i % 2 == 0) { bouton.GetComponent <Image> ().color = new Vector4(1, 1, 1, 1); } //Si nécessaire, on agrandit le menu des objets sélectionnés if (i > 10) { Vector2 dec = new Vector2(0, 25); Cont_rect.sizeDelta += dec; Doc_rect.sizeDelta += dec; } //On force la mise à jour des canevas Canvas.ForceUpdateCanvases(); //On place les boutons créés dans une liste SelectedButton.Add(bouton); //Affichage des labels des objets sélectionnés label_script = infos.label.GetComponent <Label_UI> (); label_script.label_pointe_RT.localScale = Vector3.one; label_script.isVisible = true; } }
public void ClearLabels() //Cette fonction permet d'effacer les labels sur la maquette et de vider la liste des objets sélectionnés. { foreach (GameObject go in SelectedObj) { //On efface les labels de tous les objets sélectionnés sauf si l'un d'entre eux est l'objet actif if (go != GameObject.Find("Active_object").GetComponent <Active_object> ().active) { infos = go.GetComponent <ObjectsInformations> (); label_script = infos.label.GetComponent <Label_UI> (); label_script.label_pointe_RT.localScale = Vector3.zero; label_script.isVisible = false; } } SelectedObj.Clear(); //On vide la liste des objets sélectionnés }
public void OnClick() { if (title_field.text != "") { foreach (GameObject go in allObjects) { ObjectsInformations infos = go.GetComponent <ObjectsInformations>(); if (infos.title == title_field.text) { activeObject = go; label_script = infos.label.GetComponent <Label_UI>(); label_script.label_pointe_RT.localScale = Vector3.one; label_script.isVisible = true; break; } } } mainCam_goTo.GoTo(activeObject.transform); }
//Active le label de l'objet, et affiche les infos dans le panneau latéral //À noter : lorsque l'on veut faire apparaître un label, on fait passer sa "localSize" de 0 à 1 public void DisplayLabel() { infos = gameObject.GetComponent <ObjectsInformations> (); title_field = GameObject.Find("text_title").GetComponent <Text> (); description_field = GameObject.Find("text_description").GetComponent <Text> (); label_script = infos.label.GetComponent <Label_UI> (); title_field.text = infos.title; description_field.text = infos.description; visible = GameObject.Find("Button_afficherZones").GetComponent <ShowZones> ().visible; if (!visible) { GameObject[] zones = GameObject.FindGameObjectsWithTag("Zone"); foreach (GameObject go in zones) { go.transform.localScale = Vector3.zero; } if (infos.geometry_mock_up != "") { GameObject obj_zone = GameObject.Find(gameObject.name + "_zone"); obj_zone.transform.localScale = Vector3.one; } } label_script.label_pointe_RT.localScale = Vector3.one; label_script.isVisible = true; //On met à jour les informations du bandeau details details = GameObject.Find("texte_version"); details.GetComponent <Text> ().text = infos.version; details = GameObject.Find("texte_id"); details.GetComponent <Text> ().text = infos.id; details = GameObject.Find("texte_statut"); details.GetComponent <Text> ().text = infos.status; }
public void setActive() //Enregistre les caractéristiques de l'objet actif et les modifie pour le mettre en valeur //On récupère l'objet actif à partir de son nom { active = GameObject.Find(nom); //On stocke son matériau d'origine puis on lui donne un matériau de mise en valeur cur_mat = active.GetComponent <MeshRenderer> ().material; active.GetComponent <MeshRenderer> ().material = act_mat; //On récupère les informations attachées à l'objet actif infos = active.GetComponent <ObjectsInformations> (); //Si l'objet actif possède une zone associée... if (infos.geometry_mock_up != "") { obj_zone_act = GameObject.Find(active.name + "_zone"); //On récupère l'objet zone // Si la zone est actuellement mise en valeur, son matériau d'origine est stockée dans l'attribut start_mat de "ZoneOnClick". if (obj_zone_act.GetComponent <ZoneOnClick> ().highlighted) { cur_zone_mat = obj_zone_act.GetComponent <ZoneOnClick> ().start_mat; } // Sinon, on récupère tout simplement le matériau sur l'objet zone. else { cur_zone_mat = obj_zone_act.GetComponent <MeshRenderer> ().material; } // Gestion de la zone associée à l'objet actif highlight_Zone(); } //Si on a un objet précédent, on va lui redonner ses caractéristiques d'origine et effacer son label if (begin) { //On redonne à l'objet précédent son matériau d'origine previous.GetComponent <MeshRenderer> ().material = pre_mat; //On récupère les informations attachées à l'objet précédent infos = previous.GetComponent <ObjectsInformations> (); //On efface le label de l'objet précédent sauf s'il appartient à la liste d'objets sélectionnés SelectedObj = GameObject.Find("Documents").GetComponent <ObjectSelection> ().SelectedObj; if (!SelectedObj.Contains(previous)) { label_script = infos.label.GetComponent <Label_UI> (); label_script.label_pointe_RT.localScale = Vector3.zero; label_script.isVisible = false; } //Si l'objet précédent possède une zone associée, on redonne à cette zone son matériau d'origine if (infos.geometry_mock_up != "") { obj_zone_pre.GetComponent <MeshRenderer> ().material = pre_zone_mat; // On modifie son matériau } } //On passe les paramètres de l'objet actif dans l'objet précédent previous = active; obj_zone_pre = obj_zone_act; pre_mat = cur_mat; pre_zone_mat = cur_zone_mat; //On enregistre le fait qu'on a un objet précédent begin = true; }