示例#1
0
        public static GameObject CreateLava(Texture2D lavalTexture, Texture2D normalTexture, Vector3 size)
        {
            var gameObject = new GameObject("Lava");

            var renderer = gameObject.AddComponent <MeshRenderer>();

            renderer.CastShadow    = false;
            renderer.ReceiveShadow = false;
            renderer.Geometry      = new PlaneMesh();

            var collider = gameObject.AddComponent <BoxCollider>();

            collider.IsPickable = false;

            var material = new LavaMaterial(gameObject.Scene);

            material.MainTexture   = lavalTexture;
            material.NormalTexture = normalTexture;

            renderer.Material      = material;
            renderer.Geometry.Size = size;
            renderer.Geometry.Build();

            //collider.BoundingBox = new BoundingBox(transform.Position, size);

            return(gameObject);
        }
示例#2
0
        public override void Initialize()
        {
            base.Initialize();

            // First we add a Skybox
            RenderSettings.Skybox.Generate(Application.GraphicsDevice, Application.Content, DemoGame.StarsSkybox);

            // And a camera with some components
            var camera = new CameraPrefab("camera");

            camera.AddComponent <ControllerSwitcher>();
            camera.AddComponent <DemoBehaviour>();
            Add(camera);

            // A light is required to illuminate objects.
            var lightPrefab = new LightPrefab("light", LightType.Directional);

            lightPrefab.Transform.Rotation = new Vector3(-1, 1, 0);
            lightPrefab.Light.ShadowGenerator.SetShadowMapSize(Application.GraphicsDevice, 1024);
            lightPrefab.EnableShadows = true;
            Add(lightPrefab);

            // A terrain with its material.
            var terrainMaterial = new StandardMaterial(scene);

            terrainMaterial.Texture   = Application.Content.Load <Texture2D>("Textures/Terrain/Rock");
            terrainMaterial.Shininess = 150;
            terrainMaterial.Tiling    = new Vector2(8);

            var terrain = new TerrainPrefab("terrain");

            terrain.Renderer.Geometry.Size = new Vector3(2);
            terrain.Renderer.ReceiveShadow = true;
            terrain.Randomize(4, 12);
            terrain.Renderer.Material = terrainMaterial;
            terrain.Transform.Translate(-terrain.Width >> 1, 0, -terrain.Depth / 2);
            Add(terrain);

            // Lava !
            var lavaMaterial = new LavaMaterial(this);

            lavaMaterial.Texture   = Application.Content.Load <Texture2D>("Textures/lava_texture");
            lavaMaterial.NormalMap = Application.Content.Load <Texture2D>("Textures/lava_bump");

            var lava = new WaterPrefab("water");

            lava.Renderer.Material      = lavaMaterial;
            lava.Renderer.ReceiveShadow = true;
            lava.Renderer.Geometry.Size = new Vector3(terrain.Width * 0.5f);
            lava.Renderer.Geometry.Build();
            Add(lava);
        }
示例#3
0
        public void Generate(string lavaTexture, string bumpTexture, Vector3 size)
        {
            if (scene == null)
            {
                throw new Exception("You need to attach this prefab to the scene.");
            }

            material = new LavaMaterial(scene);

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

            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);
        }
示例#4
0
 public DeferredLava(LavaMaterial material) : base(material)
 {
 }
示例#5
0
 public ForwardLava(LavaMaterial material)
 {
     m_Material = material;
 }