public WorldMap(Rectangle3d _boundary, double _resolution, Mesh _m, List <Point3d> _waterSource, List <Point3d> _plantSource)
        {
            step = 0;

            resolution = _resolution;
            _boundary.RecenterPlane(0);
            boundary = _boundary;

            //register your map here
            terrainMap = new TerrainMap(this, _m);
            waterMap   = new WaterMap(this, _waterSource);
            plantMap   = new PlantMap(this, _plantSource);
            Random rnd = new Random();

            for (int no_turtles = 0; no_turtles < _plantSource.Count(); no_turtles++)
            {
                int locX = (int)_plantSource[no_turtles].X;
                int locY = (int)_plantSource[no_turtles].Y;
                int Xmax = plantMap.xLen - 1;
                int Ymax = plantMap.yLen - 1;
                locX = locX <0 ? 0 : locX> Xmax ? Xmax : locX;
                locY = locY <0 ? 0 : locY> Ymax ? Ymax : locY;
                plant_turtles.Add(new Plant_Turtle(locX, locY, rnd.NextDouble() * 360.0, this));
            }
        }
 public Terrain(TerrainMap terrainMap)
 {
     Map = terrainMap ?? throw new ArgumentNullException("terrainMap");
 }