Exemplo n.º 1
0
        public override void LoadContent()
        {
            // Load effect first
            CustomEffect = GameUtilities.Content.Load <Effect>("Effects/MultiplePointLight");

            Texture2D texture          = GameUtilities.Content.Load <Texture2D>(_albedo[0]);
            Texture2D alternateTexture = GameUtilities.Content.Load <Texture2D>(_albedo[1]);
            Texture2D normal           = GameUtilities.Content.Load <Texture2D>(_normal);
            Texture2D specular         = GameUtilities.Content.Load <Texture2D>(_specular);

            if (texture == null || normal == null || specular == null)
            {
                throw new NullReferenceException();
            }

            Material = new MultiplePointLightMaterial()
            {
                Texture          = texture,
                AlternateTexture = alternateTexture,
                Normal           = normal,
                Specular         = specular
            };

            base.LoadContent();
        }
Exemplo n.º 2
0
        public override void Update()
        {
            var dt = (float)GameUtilities.Time.ElapsedGameTime.TotalSeconds;

            MultiplePointLightMaterial material = ((MultiplePointLightMaterial)Material);

            for (int i = 0; i < material.Position.Length; i++)
            {
                float[] radius = material.Attenuation;
                Color[] color  = material.LightColor;
                float[] speed  = { 100f, 100f, 100f };

                DebugEngine.AddBoundingSphere(new BoundingSphere(material.Position[i], radius[i]), color[i]);

                if (InputEngine.IsKeyHeld(Keys.Up))
                {
                    material.Position[i] += new Vector3(0, 0, -speed[i] * dt);
                }

                if (InputEngine.IsKeyHeld(Keys.Down))
                {
                    material.Position[i] += new Vector3(0, 0, speed[i] * dt);
                }

                if (InputEngine.IsKeyHeld(Keys.Left))
                {
                    material.Position[i] += new Vector3(-speed[i] * dt, 0, 0);
                }

                if (InputEngine.IsKeyHeld(Keys.Right))
                {
                    material.Position[i] += new Vector3(speed[i] * dt, 0, 0);
                }

                if (InputEngine.IsKeyHeld(Keys.PageUp))
                {
                    material.Position[i] += new Vector3(0, speed[i] * dt, 0);
                }

                if (InputEngine.IsKeyHeld(Keys.PageDown))
                {
                    material.Position[i] += new Vector3(0, -speed[i] * dt, 0);
                }

                if (material.IsAlternateTexture)
                {
                    if (InputEngine.IsKeyHeld(Keys.L))
                    {
                        material.Rotation += 0.1f * dt;
                    }

                    if (InputEngine.IsKeyHeld(Keys.J))
                    {
                        material.Rotation -= 0.1f * dt;
                    }
                }

                if (InputEngine.IsKeyHeld(Keys.Add))
                {
                    material.Attenuation[i] += (speed[i] * 2) * dt;
                }

                if (InputEngine.IsKeyHeld(Keys.Subtract))
                {
                    material.Attenuation[i] -= (speed[i] * 2) * dt;
                }

                if (InputEngine.IsKeyPressed(Keys.Space))
                {
                    material.IsAlternateTexture =
                        !material.IsAlternateTexture;
                }

                if (InputEngine.IsKeyPressed(Keys.C))
                {
                    material.LightColor = new[] { Color.White, Color.White, Color.White }
                }
                ;
            }

            base.Update();
        }
    }