/*
     *	Funcion: spawnInCircle()
     *
     *	Simula la introduccion de liquido en celdas alrededor del centro del entorno.
     */
    public void spawnInCircle()
    {
        if (testDelay > 0)
        {
            testDelay = 0;

            Vector3 indexes = sicStartPosition;
            if (indexes.x <= tamano_x / 4 && indexes.z < tamano_z / 4 * 3)
            {
                indexes.z++;
            }
            if (indexes.z >= tamano_z / 4 * 3 && indexes.x < tamano_x / 4 * 3)
            {
                indexes.x++;
            }
            if (indexes.x >= tamano_x / 4 * 3 && indexes.z > tamano_z / 4)
            {
                indexes.z--;
            }
            if (indexes.z <= tamano_z / 4 && indexes.x > tamano_x / 4)
            {
                indexes.x--;
            }

            Celda cell = getCelda((int)indexes.x, (int)indexes.y, (int)indexes.z);
            if (cell.estaVacia() && !cell.esCeldaSolida())
            {
                cell.setSaturacion(1f);
            }

            sicStartPosition = indexes;
        }

        testDelay++;
    }
Example #2
0
    /*
     *  Funcion: puedeFluirHaciaAbajo()
     *
     *  Devuelve verdadero si el liquido en la celda actual puede fluir hacia la celda abajo, falso si no.
     */
    bool puedeFluirHaciaAbajo()
    {
        Celda abajo = getCeldaAbajo();

        if (abajo != null && !abajo.esCeldaSolida() && abajo.saturacion < 1f)
        {
            return(true);
        }
        return(false);
    }
    /*
     *	Funcion: spawnAtRandom()
     *
     *	Simula la introduccion de liquido en celdas aleatorias del entorno.
     */
    public void spawnAtRandom()
    {
        if (testDelay > 0)
        {
            testDelay = 0;

            float   min_height = 0.7f;
            Vector3 indexes    = new Vector3(UnityEngine.Random.Range(0, tamano_x), UnityEngine.Random.Range(tamano_y * min_height, tamano_y), UnityEngine.Random.Range(0, tamano_z));
            Celda   cell       = getCelda((int)indexes.x, (int)indexes.y, (int)indexes.z);
            if (cell.estaVacia() && !cell.esCeldaSolida())
            {
                cell.setSaturacion(1f);
            }
        }

        testDelay++;
    }