Пример #1
0
    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);
    }
Пример #2
0
    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);
    }
Пример #3
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();
    }
Пример #4
0
 /// <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();
 }
Пример #5
0
    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));
                }
            }
        }
    }