コード例 #1
0
        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));
        }
コード例 #2
0
 // 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);
 }