void UpdateTimer() { ArtGallery ag = ArtGallery.GetArtGallery(); CountdownTextBox ctb = countdownObject.GetComponent <CountdownTextBox>(); float timer = Mathf.Abs(ag.gameTimer); int timerMin = (int)timer / 60; int timerSec = (int)timer % 60; string timerOutMin = timerMin.ToString() + ":"; string timerOutSec = ""; if (timer > 60) { ctb.SetCounterTextColor(Color.white); } else { ctb.SetCounterTextColor(Color.red); } if (timerSec < 10) { timerOutSec = "0" + timerSec.ToString(); } else { timerOutSec = timerSec.ToString(); } string timeOutFinal = timerOutMin + timerOutSec; ctb.SetCounterText(timeOutFinal); }
private void RedrawSculpture() { needsRedraw = false; for (int x = 0; x < SCULP_X; x++) { for (int z = 0; z < SCULP_Z; z++) { for (int y = 0; y < SCULP_Y; y++) { GameObject voxelProp = vox[x, z, y]; Renderer rend = voxelProp.gameObject.GetComponent <Renderer>(); if (voxArray[x, z, y] == new Color(0f, 0f, 0f, 0f)) { rend.enabled = false; } else { rend.material.color = voxArray[x, z, y]; rend.enabled = true; } } } } ArtGallery ag = ArtGallery.GetArtGallery(); //FIXME PROTOTYPE disabling to build new method ag.SaveVox(voxArray); }
private int MUTATION_CYCLES = 12; // maximum mutations per evolution public RoomConfiguration(RoomConfiguration parentRoom, int returnPortalID, int championPortalID, Artwork[] artworksPassed, Sculpture[] sculptures) { ArtGallery ag = ArtGallery.GetArtGallery(); Artwork champion = artworksPassed[championPortalID]; if (ArtGallery.DEBUG_LEVEL < ArtGallery.DEBUG.NONE) { Debug.Log("Creating a new room with " + artworksPassed.Length + " artworks"); } this.parentRoom = parentRoom; rooms = new RoomConfiguration[artworksPassed.Length]; if (ArtGallery.DEBUG_LEVEL < ArtGallery.DEBUG.NONE) { Debug.Log("Clearing artworks and sculptures..."); } artworks = new Artwork[artworksPassed.Length]; this.sculptures = sculptures; if (ArtGallery.DEBUG_LEVEL < ArtGallery.DEBUG.NONE) { Debug.Log("Created new artworks: " + artworksPassed.Length); } rooms[returnPortalID] = parentRoom; // clone champion to each artwork and mutate for (int i = 0; i < artworksPassed.Length; i++) { TWEANNGenotype geno = new TWEANNGenotype(champion.GetGenotype().Copy()); // champion art if (i == championPortalID) { //do little geno.Mutate(); } // return art else if (i == returnPortalID) { // do nothing - save some cpu } else { // all other art TWEANNCrossover cross = new TWEANNCrossover(false) { Sucessful = false }; //HACK PROTOTYPE hardcoded value //TWEANNGenotype crossedGeno = cross.Crossover(new TWEANNGenotype(geno.Copy()), new TWEANNGenotype(champion.GetGenotype().Copy())); //geno = crossedGeno; for (int m = 0; m < Random.Range(2, ag.artworkMutationChances); m++) { geno.Mutate(); } } artworks[i] = new Artwork(geno); } MutateSculptures(); }
/// <summary> /// Create a new artwork in a room with a given genotype /// </summary> /// <param name="geno">Genotype for this artwrok to use</param> public Artwork(TWEANNGenotype geno) { ag = ArtGallery.GetArtGallery(); needsRedraw = false; processingCPPN = false; this.geno = geno; cppnProcess = new Thread(new ThreadStart(GenerateImageFromCPPN)); img = new Texture2D(width, height, TextureFormat.ARGB32, false); pixels = new Color[width * height]; //GenerateImageFromCPPN(); // non threaded version of generation cppnProcess.Start(); }
public void MutateSculptures() { ArtGallery ag = ArtGallery.GetArtGallery(); //Sort Sculptures Sculpture[] toMutate = new Sculpture[sculptures.Length]; TWEANNGenotype sculptureChampion = null; for (int s = 0; s < sculptures.Length; s++) { if (sculptures[s].GetSelected()) { sculptureChampion = new TWEANNGenotype(sculptures[s].GetGenotype().Copy()); sculptures[s].SetSelected(false); toMutate[s] = sculptures[s]; } else { toMutate[s] = sculptures[s]; } } //Select sculpture champion and crossover / mutate if (sculptureChampion != null) { for (int m = 0; m < sculptures.Length; m++) { Sculpture ms = toMutate[m]; if (ms != null) { TWEANNGenotype crossedGeno = new TWEANNGenotype(sculptureChampion.Copy()); TWEANNCrossover cross = new TWEANNCrossover(false) { Sucessful = false }; // HACK PROTOTYPE hardcoded value //TWEANNGenotype crossedmgeno = cross.Crossover(new TWEANNGenotype(sculptureChampion.Copy()), new TWEANNGenotype(ms.GetGenotype().Copy())); //crossedGeno = crossedmgeno; for (int mr = 0; mr < Random.Range(2, ag.sculptureMutationChances); mr++) //HACK PROTOTYPE hardcoded value for mutation rate { crossedGeno.Mutate(); } ms.NewSculpture(new TWEANNGenotype(crossedGeno)); } } } }