void GenerateOwnTests()
    {
        ModuleBase perlin  = new Perlin(1, 2, .5, 6, seed, QualityMode.Medium);
        ModuleBase voronoi = new Voronoi(Frequency, Displacement, seed, true);
        ModuleBase add     = new Add(perlin, voronoi);

        Terrace terrace = new Terrace(false, add);

        terrace.Add(0f);
        terrace.Add(one);
        terrace.Add(two);

        var perlinbuilder = new Noise2D(Size, Size / 2, perlin);

        perlinbuilder.GeneratePlanar(_left, _right, _top, _bottom);

        var voronoibuilder = new Noise2D(Size, Size / 2, voronoi);

        voronoibuilder.GeneratePlanar(_left, _right, _top, _bottom);

        var addbuilder = new Noise2D(Size, Size / 2, add);

        addbuilder.GeneratePlanar(_left, _right, _top, _bottom);

        var terracebuilder = new Noise2D(Size, Size / 2, terrace);

        terracebuilder.GeneratePlanar(_left, _right, _top, _bottom);

        var perlintex  = perlinbuilder.GetTexture(_gradient);
        var voronoitex = voronoibuilder.GetTexture(_gradient);
        var addtex     = addbuilder.GetTexture(_gradient);
        var terracetex = terracebuilder.GetTexture(_gradient);

        perlintex.Apply();
        voronoitex.Apply();
        addtex.Apply();
        terracetex.Apply();

        Perlin.material.SetTexture("_BaseMap", perlintex);
        Voronoi.material.SetTexture("_BaseMap", voronoitex);
        Mix.material.SetTexture("_BaseMap", addtex);
        Terrace.material.SetTexture("_BaseMap", terracetex);

        //Perlin.material.SetTexture("_BaseMap", perlinbuilder.GetTexture(_gradient));
        //Voronoi.material.SetTexture("_BaseMap", voronoibuilder.GetTexture(_gradient));
        //Mix.material.SetTexture("_BaseMap", addbuilder.GetTexture(_gradient));
        //Terrace.material.SetTexture("_BaseMap", terracebuilder.GetTexture(_gradient));
    }
Exemple #2
0
    /// <summary>
    /// modifies a module
    /// </summary>
    /// <returns>The mod.</returns>
    /// <param name="baseMod">Base mod.</param>
    /// <param name="modType">Mod type.</param>
    private static ModuleBase modMod(ModuleBase baseMod, int modType, System.Random rand)
    {
        switch (modType)
        {
        case 0:         //curves
            Curve c = new Curve(baseMod);
            for (int i = 0; i < 4; i++)
            {
                c.Add(rand.NextDouble() * 2 - 1, rand.NextDouble() * 2 - 1);
            }
            return(c);

        case 1:        //terrace
            Terrace terr      = new Terrace(baseMod);
            int     numPoints = rand.Next(1, 10);
            for (int i = 0; i < numPoints; i++)
            {
                terr.Add(randDoub(-1, 1, rand.NextDouble()));
            }
            return(terr);

        case 2:        //add noise
            float      scale        = eDist(1, 10000, rand.NextDouble());
            ModuleBase addedTerrain = getGradientNoise(hnProb, rand.NextDouble(), scale, rand);
            double     amplitude    = eDist(.5, scale / 4, rand.NextDouble());
            addedTerrain = new ScaleBias(amplitude, 0, addedTerrain);
            return(new Add(baseMod, addedTerrain));

        case 3:         //scale module input(stretch it)
            return(new Scale(rand.NextDouble() * 5 + .01, rand.NextDouble() * 5 + .01, rand.NextDouble() * 5 + .01, baseMod));

        default:
            return(new Checker());
        }
    }
Exemple #3
0
    //a test preset that creates a mars like planet used to figure out how to build this planet generator
    public static void marsPreset(out ModuleBase finalTerrain, out ModuleBase finalTexture, out List <ModuleBase> substanceNoise)
    {
        substanceNoise = new List <ModuleBase>();

        ModuleBase mainControl = new Perlin(.0001, 2, .5, 4, 634234, QualityMode.High);
        ModuleBase edgeControl = new RidgedMultifractal(.001, 2, 3, 5723, QualityMode.High);

        edgeControl = new ScaleBias(.0, 0, edgeControl);
        ModuleBase finalControl = new Add(mainControl, edgeControl);
        ModuleBase text         = addModule(Sub.IronDioxide, Sub.IronDioxide2, finalControl, .5);

        substanceNoise.Add(text);

        /*	ModuleBase hills = new Perlin(.001, 2, 0.5, 3, 4353, QualityMode.Low, substanceNoise.Count-1);
         * hills = new Add(hills, new Const(1));
         * hills = new Multiply(hills, new Const(100));
         *
         * ModuleBase plains = new Perlin(.001, 2, .5, 3, 724, QualityMode.High, substanceNoise.Count-1);
         * plains = new Multiply(plains, new Const(3));
         *
         * ModuleBase hpcontrol = new Perlin(.0005, 2, .5, 5, 45623, QualityMode.High);
         *
         * Select hpselector = new Select(hills, plains, hpcontrol);
         * hpselector.FallOff = 1;*/

        ModuleBase plains = new Perlin(.001, 2, .5, 3, 724, QualityMode.High, substanceNoise.Count - 1);

        plains = new Multiply(plains, new Const(3));

        //ModuleBase cliffthingsbase = new Perlin(.001, 2, .5, 4, 63443, QualityMode.High);
        ModuleBase cliffthingsbase = new RidgedMultifractal(.001, 2, 4, 63443, QualityMode.High);
        Terrace    cliffthings     = new Terrace(cliffthingsbase);

        cliffthings.Add(-1);
        cliffthings.Add(-.875);
        cliffthings.Add(-.75);
        cliffthings.Add(-.5);
        cliffthings.Add(0);
        cliffthings.Add(1);


        ModuleBase finalcliff         = new ScaleBias(50, 50, cliffthings);
        ModuleBase innerControl       = new Perlin(.005, 2, .4, 3, 2356, QualityMode.High);
        ModuleBase outerControl       = new Perlin(.001, 2, .4, 3, 235, QualityMode.High);
        Select     cliffSelector      = addModule(finalcliff, plains, innerControl, .5, .1);
        Select     cliffSelectorouter = addModule(cliffSelector, plains, outerControl, .2, .3);

        finalTexture = new Const(substanceNoise.Count - 1);
        finalTerrain = cliffSelectorouter;
        //finalTerrain = hpselector;

        //finalTerrain = new Const(0, substanceNoise.Count - 1);
    }
        public override object Run()
        {
            if (Terrace.Count == 0)
            {
                return(GetInputValue <SerializableModuleBase>("Input", this.Input));
            }

            Terrace terr = new Terrace(
                GetInputValue <SerializableModuleBase>("Input", this.Input));

            for (int i = 0; i < Terrace.Count; i++)
            {
                terr.Add
                    (GetInputValue <double>(
                        "Terrace " + i.ToString(),
                        this.Terrace[i]));
            }

            return(terr);
        }