コード例 #1
0
        /// <summary>
        /// Inicializa los valores de modelos
        /// </summary>
        public void Init()
        {
            ModelTarget[] arrTargetActive = GetActiveTargets();

            // Obtener un modelo activo del arreglo que no se con overlap para topografias
            // Se evita tener mas de un modelo activo.
            ModelTarget singleModel   = arrTargetActive.FirstOrDefault((m) => m.isOverlap == false);
            int         idModelActive = (singleModel != null) ? singleModel.Id : -1;

            // Activar/Desactivar modelos segun su configuracion inicial
            foreach (ModelTarget om in modelsTarget)
            {
                if (om.isOverlap)
                {
                    om.Model.SetActive(om.IsActive);
                }
                else
                {
                    // Activar solo un modelo si no tiene overlap
                    bool isActive = (idModelActive == om.Id);

                    om.Model.SetActive(isActive);
                }
            }

            OnInitialization.Invoke();
        }
コード例 #2
0
        /// <summary>
        /// Modificar la informacion y listener del boton
        /// </summary>
        /// <param name="mControl"></param>
        /// <param name="mTarget"></param>
        public void setListenerButton(ModelARControl mControl, ModelTarget mTarget)
        {
            if (bttnTarget == null)
            {
                bttnTarget = GetComponent <Button>();
            }

            setId(mTarget.Id);

            // Cambiar nombre boton
            bttnTarget.GetComponentInChildren <TextMeshProUGUI>().text = mTarget.Name;

            bttnTarget.onClick.AddListener(() => mControl.setActiveModel(mTarget.Id));
            bttnTarget.onClick.AddListener(() => ARManager.Instance.ChangeModelTarget(mControl));

            bool isInteractable = (mTarget.isOverlap) ? true : !mTarget.IsActive;

            bttnTarget.interactable = true;
        }
コード例 #3
0
        /// <summary>
        /// Activa/Desactiva los modelos dependiendo de su naturaleza.
        /// Si el modelo no es "overlap" entonces solo puede haber uno activado (del conjunto con
        /// la misma opcion).
        /// </summary>
        /// <param name="target"></param>
        public void setActiveModel(ModelTarget target)
        {
            bool isActive;
            int  id = target.Id;

            if (target == null)
            {
                return;
            }

            if (target.isOverlap)
            {
                isActive = !target.IsActive;
                target.Model.SetActive(isActive);
                target.IsActive = isActive;
                return;
            }

            // Activar/Desactivar modelos que no tienen overlap.
            // Si un modelo se activa, los demás se desactivan.
            // Si un modelo se desactiva, los demás modelos se desactivan.
            foreach (ModelTarget m in modelsTarget)
            {
                if (id == m.Id)
                {
                    isActive = !m.IsActive;
                }
                else
                {
                    isActive = false;
                }

                if (!m.isOverlap)
                {
                    SetActiveSingleModel(m, isActive);
                }
            }
        }
コード例 #4
0
 /// <summary>
 /// Activar desactivar un modelo en especifico
 /// </summary>
 /// <param name="target"></param>
 /// <param name="value"></param>
 public void SetActiveSingleModel(ModelTarget target, bool value)
 {
     target.Model.SetActive(value);
     target.IsActive = value;
 }
コード例 #5
0
        public void setActiveModel(int id)
        {
            ModelTarget target = modelsTarget.SingleOrDefault((mt) => mt.Id == id);

            setActiveModel(target);
        }