Пример #1
0
        private void CreateMaterialCollection()
        {
            var i      = 0;
            var colors = new Color[] { Color.Red, Color.Green, Color.Blue, Color.Yellow, Color.Purple };
            var names  = new string[] { "Red", "Green", "Blue", "Yellow", "Purple" };
            var size   = colors.Length;

            // Procedurales textures.
            for (i = 0; i < size; i++)
            {
                CreateMaterial(string.Format("Border {0}", names[i]), GraphicsHelper.CreateBorderTexture(colors[i], Color.LightGray, 64, 64, 1));
            }

            for (i = 0; i < size; i++)
            {
                CreateMaterial(string.Format("Checkboard {0}", names[i]), GraphicsHelper.CreateCheckboardTexture(colors[i], Color.LightGray, 64, 64));
            }

            // Voxel pack by Kenney Vleugels for Kenney (www.kenney.nl) / License (Creative Commons Zero, CC0)
            var path  = Path.Combine("Content", "Textures", "VoxelPack");
            var files = Directory.GetFiles(Path.Combine(path, "Tiles"));
            var name  = string.Empty;

            for (i = 0; i < files.Length; i++)
            {
                name = Path.GetFileNameWithoutExtension(files[i]);
                CreateMaterial(name, "Textures/VoxelPack/Tiles/" + name);
            }

            files = Directory.GetFiles(Path.Combine(path, "Tiles", "Details"));
            for (i = 0; i < files.Length; i++)
            {
                name = Path.GetFileNameWithoutExtension(files[i]);
                CreateBillboardMaterial(name, "Textures/VoxelPack/Tiles/Details/" + name);
            }

            // Terrain textures
            CreateMaterial("Terrain Grass", "Textures/Terrain/Grass");
            CreateMaterial("Terrain Rock", "Textures/Terrain/Rock");
            CreateMaterial("Terrain Sand", "Textures/Terrain/Sand");
            CreateMaterial("Terrain Snow", "Textures/Terrain/Snow");

            // Billboards for the editor
            CreateBillboardMaterial("ED_Camera", "Icons/Camera_Icon");
            CreateBillboardMaterial("ED_Light", "Icons/Light_Icon");

            // Water material
            var waterMaterial = new WaterMaterial(this, "WaterMaterial");

            waterMaterial.Texture   = Asset.LoadTexture("Textures/water");
            waterMaterial.NormalMap = Asset.LoadTexture("Textures/wavesbump");
        }
Пример #2
0
        public void Generate(string waterTexture, string bumpTexture, Vector3 size)
        {
            if (scene == null)
            {
                throw new Exception("You need to attach this prefab to the scene.");
            }

            material = new WaterMaterial(scene);

            if (!string.IsNullOrEmpty(waterTexture))
            {
                material.Texture = Application.Content.Load <Texture2D>(waterTexture);
            }

            if (!string.IsNullOrEmpty(bumpTexture))
            {
                material.NormalMap = Application.Content.Load <Texture2D>(bumpTexture);
            }

            renderer.Material      = material;
            renderer.Geometry.Size = size;
            renderer.Geometry.Build();
            //collider.BoundingBox = new BoundingBox(transform.Position, size);
        }