static void CreateMapMagic () 
		{
			if (FindObjectOfType<MapMagic>() != null)
			{
				Debug.LogError("Could not create new Map Magic instance, it already exists in scene.");
				return;
			}

			GameObject go = new GameObject();
			go.name = "Map Magic";
			MapMagic.instance = go.AddComponent<MapMagic>();

			//creating new generators and new terrains (otherwise old static will be loaded)
			MapMagic.instance.UnlockAndReset();
			MapMagic.instance.gens = ScriptableObject.CreateInstance<GeneratorsAsset>(); //new MapMagic.GeneratorsList();
			MapMagic.instance.terrains = new MapMagic.TerrainGrid();
			MapMagic.instance.seed=12345; MapMagic.instance.terrainSize=1000; MapMagic.instance.terrainHeight=300; MapMagic.instance.resolution=512;
			//MapMagic.instance.terrains.maxCount = 5;

			//creating initial generators
			NoiseGenerator1 noiseGen = (NoiseGenerator1)MapMagic.instance.gens.CreateGenerator(typeof(NoiseGenerator1), new Vector2(50,50));
			noiseGen.intensity = 0.75f;

			CurveGenerator curveGen = (CurveGenerator)MapMagic.instance.gens.CreateGenerator(typeof(CurveGenerator), new Vector2(250,50));
			curveGen.curve = new AnimationCurve( new Keyframe[] { new Keyframe(0,0,0,0), new Keyframe(1,1,2.5f,1) } );

			HeightOutput heightOut = (HeightOutput)MapMagic.instance.gens.CreateGenerator(typeof(HeightOutput), new Vector2(450,50));

			curveGen.input.Link(noiseGen.output, noiseGen);
			heightOut.input.Link(curveGen.output, curveGen);

			//creating initial terrain
			MapMagic.instance.terrains.Nail(new Coord(0,0));

			//registering undo
			MapMagic.instance.gens.OnBeforeSerialize();
			Undo.RegisterCreatedObjectUndo (go, "MapMagic Create");
			EditorUtility.SetDirty(MapMagic.instance);

			/*HeightOutput heightOut =  new HeightOutput();
			heightOut.guiRect = new Rect(43,76,200,20);
			MapMagic.instance.generators.array[1] = heightOut;
			heightOut.input.Link(noiseGen.output, noiseGen);*/
			
		}
Exemple #2
0
    protected override void SetVertices()
    {
        float           v, y, w = 0;
        NoiseGenerator1 noise = new NoiseGenerator1(octaves, lacunarity, gain, perlinScale);

        for (int z = 0; z <= resolutionZ; z++)
        {
            for (int x = 0; x <= resolutionX; x++)
            {
                v = ((float)x / resolutionX) * meshScale;
                w = ((float)z / resolutionZ) * meshScale;

                y = YScale * noise.FractalNoise(v, w);
                y = FallOffType((float)x, y, (float)z);

                vertices.Add(new Vector3(v, y, w));
            }
        }
    }
        public static GeneratorsAsset Default()
        {
            GeneratorsAsset gens = ScriptableObject.CreateInstance <GeneratorsAsset>();

            //creating initial generators
            NoiseGenerator1 noiseGen = (NoiseGenerator1)gens.CreateGenerator(typeof(NoiseGenerator1), new Vector2(50, 50));

            noiseGen.intensity = 0.75f;

            CurveGenerator curveGen = (CurveGenerator)gens.CreateGenerator(typeof(CurveGenerator), new Vector2(250, 50));

            curveGen.curve = new AnimationCurve(new Keyframe[] { new Keyframe(0, 0, 0, 0), new Keyframe(1, 1, 2.5f, 1) });

            HeightOutput heightOut = (HeightOutput)gens.CreateGenerator(typeof(HeightOutput), new Vector2(450, 50));

            curveGen.input.Link(noiseGen.output, noiseGen);
            heightOut.input.Link(curveGen.output, curveGen);

            return(gens);
        }