예제 #1
0
    // Update is called once per frame
    void Update()
    {
        // traigo todos los atomos seleccionados
        var selectedAtoms     = atomManager.GetSelectedAtoms();
        var selectedMolecules = moleculeManager.GetSelectedMolecules();
        var selectedMaterials = materialManager.GetSelectedMaterials();

        // si hay un solo atomo seleccionado y ninguna molecula o material, actualizo los labels con sus contadores
        if (selectedAtoms.Count == 1 && selectedMolecules.Count == 0 && selectedMaterials.Count == 0)
        {
            int  atomIndex = selectedAtoms[0];
            Atom atom      = atomManager.FindAtomInList(atomIndex);

            string counterText = EMPTY_VALUE;
            switch (particleType)
            {
            case ParticleEnum.Proton:
                counterText = atom.ProtonCounter.ToString();
                break;

            case ParticleEnum.Neutron:
                counterText = atom.NeutronCounter.ToString();
                break;

            case ParticleEnum.Electron:
                counterText = atom.ElectronCounter.ToString();
                break;
            }

            gameObject.GetComponent <TextMeshProUGUI>().text = counterText;
        }
        else
        {
            // si no hay ninguno o hay mas de uno seleccionado
            gameObject.GetComponent <TextMeshProUGUI>().text = EMPTY_VALUE;
        }
    }
예제 #2
0
    /*
     * metodo principal para el manejo de la apertura del panel INFOPANEL padre de los otros paneles de informacion
     * infocontainer de atomos, moleculas y materiales
     */
    public void OpenBottomPanel()
    {
        // cierro todos los paneles
        CloseAll();
        restoreAlphasTabbedMenu();

        // traigo todos los atomos seleccionados
        var selectedAtoms     = atomManager.GetSelectedAtoms();
        var selectedMolecules = moleculeManager.GetSelectedMolecules();
        var selectedMaterials = materialManager.GetSelectedMaterials();

        // si hay un solo atomo seleccionado y ninguna molecula o material, muestro info panel
        if (selectedAtoms.Count == 1)
        {
            //obtiene el tipo de elemento seleccionado si es un isotopo o no
            if (atomManager.GetTypeSelectedAtoms() == TypeAtomEnum.atom)
            {
                if (selectedMolecules.Count == 0 && selectedMaterials.Count == 0 && infoPanelElements.alpha == 0)
                {
                    gameObject.GetComponent <UIFader>().FadeInAndOut(infoPanelElements.gameObject);//el uifader lo tiene instanciado el padre de todos los panels
                    // activo el blockRayCast para el panel que estoy abriendo y lo desactivo para el resto
                    setActiveRayCast(infoPanelElements);
                    setInactiveRayCast(infoPanelMolecule);
                    setInactiveRayCast(infoPanelMaterial);
                    setInactiveRayCast(infoPanelIsotopos);
                }
            }

            else if (atomManager.GetTypeSelectedAtoms() == TypeAtomEnum.isotopo)
            {
                if (selectedMolecules.Count == 0 && selectedMaterials.Count == 0 && infoPanelIsotopos.alpha == 0)
                {
                    gameObject.GetComponent <UIFader>().FadeInAndOut(infoPanelIsotopos.gameObject);//el uifader lo tiene instanciado el padre de todos los panels
                    // activo el blockRayCast para el panel que estoy abriendo y lo desactivo para el resto
                    setInactiveRayCast(infoPanelElements);
                    setInactiveRayCast(infoPanelMolecule);
                    setInactiveRayCast(infoPanelMaterial);
                    setActiveRayCast(infoPanelIsotopos);
                }
            }
        }

        // si hay una sola molecula seleccionada y ningun atomo o material, muestro info panel
        else if (selectedAtoms.Count == 0 && selectedMolecules.Count == 1 && selectedMaterials.Count == 0 && infoPanelMolecule.alpha == 0)
        {
            gameObject.GetComponent <UIFader>().FadeInAndOut(infoPanelMolecule.gameObject);//el uifader lo tiene instanciado el padre de todos los panels
            // activo el blockRayCast para el panel que estoy abriendo y lo desactivo para el resto
            setInactiveRayCast(infoPanelElements);
            setActiveRayCast(infoPanelMolecule);
            setInactiveRayCast(infoPanelMaterial);
            setInactiveRayCast(infoPanelIsotopos);
        }


        // si hay un solo material seleccionada y ningun atomo o molecula, muestro info panel
        else if (selectedAtoms.Count == 0 && selectedMolecules.Count == 0 && selectedMaterials.Count == 1 && infoPanelMaterial.alpha == 0)
        {
            gameObject.GetComponent <UIFader>().FadeInAndOut(infoPanelMaterial.gameObject);//el uifader lo tiene instanciado el padre de todos los panels
            // activo el blockRayCast para el panel que estoy abriendo y lo desactivo para el resto
            setInactiveRayCast(infoPanelElements);
            setInactiveRayCast(infoPanelMolecule);
            setActiveRayCast(infoPanelMaterial);
            setInactiveRayCast(infoPanelIsotopos);
        }
    }