public static LibNoise.Gradient CreateGradientServer(List <LibNoise.GradientPresets.GradientKeyData> keyData) { List <LibNoise.GradientKey> keys = new List <LibNoise.GradientKey>(); for (int i = 0; i < keyData.Count; i++) { if (keyData[i].isImage) { List <Color[]> images = new List <Color[]>(); string[] files = keyData[i].imageFiles.ToArray(); for (int j = 0; j < files.Length; j++) { string file = GameServer.Instance.AppDirectory + "terrainTextures" + Path.DirectorySeparatorChar + files[j]; if (File.Exists(file)) { System.Drawing.Bitmap map = new System.Drawing.Bitmap(System.Drawing.Image.FromFile(file)); //Logger.Log("{0}: {1} {2}", file, map.Width.ToString(), map.Height.ToString()); System.Drawing.Color[] imgColors = new System.Drawing.Color[map.Width * map.Height]; for (int x = 0; x < map.Width; x++) { for (int y = 0; y < map.Height; y++) { imgColors[x + y * map.Width] = map.GetPixel(x, y); } } if (!TextureFiles.ContainsKey(files[j])) { TextureFiles.Add(files[j], imgColors); } keyData[i].images.Add(ColorConvert.LibColList(imgColors)); images.Add(ColorConvert.LibColList(imgColors)); } } keys.Add(new LibNoise.GradientKey(images, 10, 10, keyData[i].time)); } else { keys.Add(new LibNoise.GradientKey(keyData[i].color, keyData[i].time)); } } return(LibNoise.GradientPresets.CreateGradient(keys)); }
// use when creating public bool Generate(IModule module, string preset) { NoiseModule = module; GradientPreset = _presetLoader.GetPreset(preset); if (GradientPreset != null && module != null) { NoiseMap = new Noise2D(Width, Height, NoiseModule); //_noiseMap.GeneratePlanar (0, 4, 0, 2); NoiseMap.GenerateSpherical(-90, 90, -180, 180); Logger.Log("terrain generated."); Gradient = GradientCreator.CreateGradientServer(new List <GradientPresets.GradientKeyData>(GradientPreset)); ColorMap = ColorConvert.SysColList(NoiseMap.GetTexture(Gradient)); Logger.Log("bitmap generated."); Settings.preset = preset; return(true); } else { Logger.LogError("Generate: Gradient Preset is null!"); } return(false); }