GetMaterial() public method

public GetMaterial ( IntVector3 p ) : MaterialInfo
p IntVector3
return MaterialInfo
Example #1
0
        public static void CreateVegetation(TerrainData terrain, Random random, int vegetationLimit)
        {
            var grassMaterials = Materials.GetMaterials(MaterialCategory.Grass).ToArray();
            var woodMaterials  = Materials.GetMaterials(MaterialCategory.Wood).ToArray();
            var berryMaterials = Materials.GetMaterials(MaterialCategory.Berry).ToArray();

            int baseSeed = random.Next();

            if (baseSeed == 0)
            {
                baseSeed = 1;
            }

            terrain.Size.Plane.Range().AsParallel().ForAll(p2d =>
            {
                int z = terrain.GetSurfaceLevel(p2d);

                var p = new IntVector3(p2d, z);

                if (z >= vegetationLimit)
                {
                    return;
                }

                var td = terrain.GetTileData(p);

                if (td.WaterLevel > 0)
                {
                    return;
                }

                if (terrain.GetMaterial(p.Down).Category != MaterialCategory.Soil)
                {
                    return;
                }

                var r = new MWCRandom(p, baseSeed);

                int v = r.Next(100);

                if (v >= 95)
                {
                    td.ID         = TileID.Sapling;
                    td.MaterialID = woodMaterials[r.Next(woodMaterials.Length)].ID;
                }
                else if (v >= 90)
                {
                    td.ID         = TileID.Tree;
                    td.MaterialID = woodMaterials[r.Next(woodMaterials.Length)].ID;
                }
                else if (v >= 80)
                {
                    td.ID         = TileID.Shrub;
                    td.MaterialID = berryMaterials[r.Next(berryMaterials.Length)].ID;
                }
                else
                {
                    td.ID         = TileID.Grass;
                    td.MaterialID = grassMaterials[r.Next(grassMaterials.Length)].ID;
                }

                terrain.SetTileDataNoHeight(p, td);
            });
        }
Example #2
0
        public static void CreateVegetation(TerrainData terrain, Random random, int vegetationLimit)
        {
            var grassMaterials = Materials.GetMaterials(MaterialCategory.Grass).ToArray();
            var woodMaterials = Materials.GetMaterials(MaterialCategory.Wood).ToArray();
            var berryMaterials = Materials.GetMaterials(MaterialCategory.Berry).ToArray();

            int baseSeed = random.Next();
            if (baseSeed == 0)
                baseSeed = 1;

            terrain.Size.Plane.Range().AsParallel().ForAll(p2d =>
            {
                int z = terrain.GetSurfaceLevel(p2d);

                var p = new IntVector3(p2d, z);

                if (z >= vegetationLimit)
                    return;

                var td = terrain.GetTileData(p);

                if (td.WaterLevel > 0)
                    return;

                if (terrain.GetMaterial(p.Down).Category != MaterialCategory.Soil)
                    return;

                var r = new MWCRandom(p, baseSeed);

                int v = r.Next(100);

                if (v >= 95)
                {
                    td.ID = TileID.Sapling;
                    td.MaterialID = woodMaterials[r.Next(woodMaterials.Length)].ID;
                }
                else if (v >= 90)
                {
                    td.ID = TileID.Tree;
                    td.MaterialID = woodMaterials[r.Next(woodMaterials.Length)].ID;
                }
                else if (v >= 80)
                {
                    td.ID = TileID.Shrub;
                    td.MaterialID = berryMaterials[r.Next(berryMaterials.Length)].ID;
                }
                else
                {
                    td.ID = TileID.Grass;
                    td.MaterialID = grassMaterials[r.Next(grassMaterials.Length)].ID;
                }

                terrain.SetTileDataNoHeight(p, td);
            });
        }