/// <summary> /// Intialise un nouvel objet d'interface de maillage. /// </summary> /// <param name="meshWorkerObj_">Le travailleur du maillage.</param> /// <param name="layerWorkerObj_">Le travailleur de calques du maillage.</param> /// <param name="isReference_">Indique si l'objet est une référence.</param> public void Initialize(GameObject meshWorkerObj_, GameObject layerWorkerObj_, bool isReference_, bool isPermanent_, bool isMoveable_) { MeshWorkerObj_ = meshWorkerObj_; LayerWorkerObj_ = layerWorkerObj_; IsReference_ = isReference_; IsPermanent_ = isPermanent_; IsMoveable_ = isMoveable_; IsInitialized = true; name = $"UIObject-{transform.GetSiblingIndex():D3}"; ObjectNameObj_.GetComponent <Text>().text = $"Object-{transform.GetSiblingIndex():D3}"; SetupButton(); BodyLandscapeObj_.GetComponent <UIAugmentedFaceCreatorBodyLandscape>().ForceDraw(); if (isReference_) { if (ReferenceObjectObj_ != null) { Remove(ReferenceObjectObj_); } ReferenceObjectObj_ = gameObject; var WorkerObjAFCW_ = WorkerObj_.GetComponent <AugmentedFaceCreatorWorker>(); WorkerObjAFCW_.SetupLights(meshWorkerObj_); } var bodyLandscapeObjUIBL_ = BodyLandscapeObj_.GetComponent <UIAugmentedFaceCreatorBodyLandscape>(); bodyLandscapeObjUIBL_.DrawUI += Draw; bodyLandscapeObjUIBL_.ForceDraw(); }
/// <summary> /// Dessine l'interface utilisateur. /// </summary> private void Draw(float scale_) { // Composants var bodyLandscapeObjUIBL_ = BodyLandscapeObj_.GetComponent <UIAugmentedFaceCreatorBodyLandscape>(); var rt_ = GetComponent <RectTransform>(); var objectNameObjRT_ = ObjectNameObj_.GetComponent <RectTransform>(); var objectNameObjT_ = ObjectNameObj_.GetComponentInChildren <Text>(); var removeObjectObjRT_ = ButtonRemoveObjectObj_.GetComponent <RectTransform>(); var hideObjectObjRT_ = ButtonHideObjectObj_.GetComponent <RectTransform>(); var addLayerObjRT_ = ButtonAddLayerObj_.GetComponent <RectTransform>(); var dropdownAnchorObjRT_ = DropdownAnchorObj_.GetComponent <RectTransform>(); var dropdownAnchorObjD_ = DropdownAnchorObj_.GetComponent <Dropdown>(); var dropdownAnchorLabelObjT_ = DropdownAnchorObj_.transform.Find("Label").GetComponent <Text>(); var dropdownAnchorArrowObjRT_ = DropdownAnchorObj_.transform.Find("Arrow").GetComponent <RectTransform>(); var dropdownAnchorTemplateItemObjRT_ = DropdownAnchorObj_.transform.Find("Template").Find("Viewport").Find("Content").Find("Item").GetComponent <RectTransform>(); var dropdownAnchorTemplateLabelObjT_ = DropdownAnchorObj_.transform.Find("Template").Find("Viewport").Find("Content").Find("Item").Find("Item Label").GetComponent <Text>(); var layersObjRT_ = UILayersObj_.GetComponent <RectTransform>(); var layersContentObjVLG_ = UILayersContentObj_.GetComponent <VerticalLayoutGroup>(); // Constantes if (scale_ > 0) { scaledTouchSurfaceSize_ = touchSurfaceSize_ * scale_; scaledMarginSize_ = marginSize_ * scale_; scaledBodyFontSize_ = Mathf.RoundToInt(bodyfontSize_ * scale_); } // Logiques var height_ = 0f; //// Nom de l'objet var objectNameObjWidth_ = bodyLandscapeObjUIBL_.ScaledRightPanelWidth_ - scaledTouchSurfaceSize_.x * 2f - scaledMarginSize_ * 3f - bodyLandscapeObjUIBL_.ScaledMarginSize_ * 2f; objectNameObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, objectNameObjWidth_); objectNameObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, scaledTouchSurfaceSize_.y); objectNameObjRT_.anchoredPosition = new Vector2(scaledMarginSize_, scaledMarginSize_ * -1f); objectNameObjT_.fontSize = scaledBodyFontSize_; //// Bouton de suppresion removeObjectObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, scaledTouchSurfaceSize_.x); removeObjectObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, scaledTouchSurfaceSize_.y); removeObjectObjRT_.anchoredPosition = new Vector2(scaledMarginSize_ * -1, scaledMarginSize_ * -1f); //// Bouton de masquage hideObjectObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, scaledTouchSurfaceSize_.x); hideObjectObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, scaledTouchSurfaceSize_.y); hideObjectObjRT_.anchoredPosition = new Vector2((scaledTouchSurfaceSize_.x + scaledMarginSize_) * -1, scaledMarginSize_ * -1f); //// Première ligne height_ += Mathf.Abs(scaledMarginSize_ + scaledTouchSurfaceSize_.y); //// Bouton d'ajout de calques var secondLineOffset_ = (scaledTouchSurfaceSize_.y + scaledMarginSize_ * 2f) * -1f; addLayerObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, scaledTouchSurfaceSize_.x); addLayerObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, scaledTouchSurfaceSize_.y); addLayerObjRT_.anchoredPosition = new Vector2(scaledMarginSize_, secondLineOffset_); //// Dropdown des ancres if (!IsReference_ && ReferenceObjectObj_ != null) { dropdownAnchorObjRT_.offsetMin = new Vector2(scaledTouchSurfaceSize_.x + scaledMarginSize_ * 2f, 0f); dropdownAnchorObjRT_.offsetMax = new Vector2(scaledMarginSize_ * -1f, secondLineOffset_); dropdownAnchorObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, scaledTouchSurfaceSize_.y); dropdownAnchorLabelObjT_.fontSize = scaledBodyFontSize_; dropdownAnchorArrowObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, scaledTouchSurfaceSize_.x); dropdownAnchorArrowObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, scaledTouchSurfaceSize_.y); dropdownAnchorArrowObjRT_.anchoredPosition = Vector2.zero; dropdownAnchorTemplateItemObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, scaledTouchSurfaceSize_.y); dropdownAnchorTemplateLabelObjT_.fontSize = scaledBodyFontSize_; var anchorsNames_ = ReferenceObjectObj_?.GetComponent <UIAugmentedFaceCreatorObject>()?.MeshWorkerObj_?.GetComponent <AugmentedFaceCreatorMeshWorker>()?.GetAnchorNames_(); if (anchorsNames_ != null) { dropdownAnchorObjD_.ClearOptions(); dropdownAnchorObjD_.AddOptions(anchorsNames_); } dropdownAnchorObjD_.onValueChanged.AddListener(value_ => { AnchorIndex_ = value_; }); } DropdownAnchorObj_.SetActive(!IsReference_); //// Deuxième ligne height_ += Mathf.Abs(scaledMarginSize_ + scaledTouchSurfaceSize_.y); //// Liste des calques var layersObjOffset_ = (scaledTouchSurfaceSize_.y * 2f + scaledMarginSize_ * 3f) * -1f; layersObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, bodyLandscapeObjUIBL_.ScaledRightPanelWidth_ - bodyLandscapeObjUIBL_.ScaledMarginSize_ * 2f - scaledMarginSize_ * 2f); layersObjRT_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, scaledTouchSurfaceSize_.y * 2f + scaledMarginSize_ * 1f); layersObjRT_.anchoredPosition = new Vector2(scaledMarginSize_, layersObjOffset_); layersContentObjVLG_.spacing = scaledMarginSize_; //// Troisième ligne height_ += Mathf.Abs(scaledMarginSize_ + scaledTouchSurfaceSize_.y * 2f + scaledMarginSize_ * 1f); //// Quatrième ligne (marge) height_ += Mathf.Abs(scaledMarginSize_); //// Ce panneau rt_.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, bodyLandscapeObjUIBL_.ScaledRightPanelWidth_ - bodyLandscapeObjUIBL_.ScaledMarginSize_ * 2f); rt_.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height_); }