// Update is called once per frame void Update() { if (art != null && art.NeedsRedraw()) { art.ApplyImageProcess(); img = art.GetArtwork(); renderer.material.mainTexture = img; Debug.Log("Image applied"); } if (!PauseMenu.isPaused && Input.GetButtonDown("Fire2")) { img = new Texture2D(width, height, TextureFormat.ARGB32, true); art = new Artwork(); textbox.Text("New image and genome"); } if (!PauseMenu.isPaused && Input.GetButtonDown("Fire1")) { TWEANNGenotype geno = art.GetGenotype(); geno.Mutate(); textbox.Text("Mutating..."); art = new Artwork(geno); } }
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(); }
SaveGameArtwork(Artwork art) { TWEANNGenotype TGeno = art.GetGenotype(); geno = new SaveGameGenotype { ID = TGeno.ID, NumberInputs = TGeno.numInputs, NumberOutputs = TGeno.numOutputs, ArchetypeIndex = TGeno.archetypeIndex, }; }
// Update is called once per frame void Update() { if (leftArt.NeedsRedraw()) { leftArt.ApplyImageProcess(); leftImg = leftArt.GetArtwork(); leftRenderer.material.mainTexture = leftImg; Debug.Log("leftImg applied"); } if (rightArt.NeedsRedraw()) { rightArt.ApplyImageProcess(); rightImg = rightArt.GetArtwork(); rightRenderer.material.mainTexture = rightImg; Debug.Log("rightImg applied"); } if (!PauseMenu.isPaused && Input.GetButtonDown("Fire2")) { leftImg = new Texture2D(width, height, TextureFormat.ARGB32, true); rightImg = new Texture2D(width, height, TextureFormat.ARGB32, true); BuildArtworks(); //leftArt = new Artwork(leftGeno); //rightArt = new Artwork(rightGeno); } if (!PauseMenu.isPaused && Input.GetButtonDown("Fire1")) { leftGeno = new TWEANNGenotype(leftArt.GetGenotype().Copy()); rightGeno = new TWEANNGenotype(rightArt.GetGenotype().Copy()); TWEANNCrossover cr = new TWEANNCrossover(false); cr.Crossover(leftGeno, rightGeno); leftImg = new Texture2D(width, height, TextureFormat.ARGB32, true); rightImg = new Texture2D(width, height, TextureFormat.ARGB32, true); leftArt = new Artwork(leftGeno); rightArt = new Artwork(rightGeno); } }