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);*/ }
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); }