Beispiel #1
0
    // 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);
        }
    }
Beispiel #2
0
    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();
    }
Beispiel #3
0
    SaveGameArtwork(Artwork art)
    {
        TWEANNGenotype TGeno = art.GetGenotype();

        geno = new SaveGameGenotype
        {
            ID             = TGeno.ID,
            NumberInputs   = TGeno.numInputs,
            NumberOutputs  = TGeno.numOutputs,
            ArchetypeIndex = TGeno.archetypeIndex,
        };
    }
Beispiel #4
0
    // 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);
        }
    }