Esempio n. 1
0
    //spawnear molécula (objeto vacío donde se meten los objetos, como "Atom")
    public void SpawnMolecule(List <AtomInMolPositionData> atomsPosition, string name)
    {
        //intento obtener una posición disponible random
        int position;

        try
        {
            position = positionManager.ObtainRandomPositionIndex();
        }
        //si no hay mas posiciones disponibles, lo loggeo y me voy
        catch (NoPositionsLeftException nple)
        {
            Debug.Log(nple.Message);
            return;
        }
        //instancio la molécula, y seteo posición
        Molecule newMolecule = Instantiate <Molecule>(moleculePrefab);

        newMolecule.transform.localPosition = positionManager.PlanePositions[position];
        molecules.Add(newMolecule);
        //seteo nombre
        newMolecule.SetMoleculeName(name);
        //spawneo todos sus átomos
        foreach (AtomInMolPositionData pos in atomsPosition)
        {
            //query a la tabla de elementos para obtener clasificación_grupo
            ElementTabPer element = dBManager.GetElementFromNro(pos.ElementId);
            //obtengo el material según la clasif
            Material mat = materials[GetMaterialIndexFromDictionary(element.ClasificacionGrupo)];
            newMolecule.SpawnAtom(pos, mat);
        }
        //y despues sus conexiones una vez que esten todos posicionados
        foreach (AtomInMolPositionData atom in atomsPosition)
        {
            //si es que tiene alguna
            if (atom.ConnectedTo > 0)
            {
                newMolecule.SpawnConnection(atom.Id, atom.ConnectedTo, atom.ConnectionType);
            }
        }
    }