/* * 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++; }
/* * Funcion: renderNewCelda() * * Si <celda> no ha sido rendered, y <celda> no esta vacia (saturacion > 0), ejecuta la operacion de render para la nueva celda. */ public void renderNewCelda(Celda celda, int sc_index) { if (!celda.rendered) { if (!celda.estaVacia()) { renderNuevaCelda(celda, sc_index); } } }
/* * Funcion: renderCelda() * * Si <celda> ya ha sido rendered, y <celda> esta vacia (saturacion = 0), ejecuta la operacion de unrender para <celda>. * Si <celda> no esta vacia (saturacion > 0), ejecuta la operacion de actualizacion de render para <celda>. */ public void renderCelda(Celda celda, int act_index) { if (celda.rendered) { if (celda.estaVacia()) { unrenderCelda(celda, act_index); } else { actualizarCelda(celda); } } }
/* * 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++; }