fna-workbench

fna-workbench Git Source Tree


Root/src/Graphics/DirectionalLight.cs

#region License
/* FNA - XNA4 Reimplementation for Desktop Platforms
 * Copyright 2009-2016 Ethan Lee and the MonoGame Team
 *
 * Released under the Microsoft Public License.
 * See LICENSE for details.
 */
#endregion
 
namespace Microsoft.Xna.Framework.Graphics
{
    public sealed class DirectionalLight
    {
        #region Public Properties
 
        private Vector3 INTERNAL_diffuseColor;
        public Vector3 DiffuseColor
        {
            get
            {
                return INTERNAL_diffuseColor;
            }
            set
            {
                INTERNAL_diffuseColor = value;
                if (Enabled && diffuseColorParameter != null)
                {
                    diffuseColorParameter.SetValue(INTERNAL_diffuseColor);
                }
            }
        }
 
        private Vector3 INTERNAL_direction;
        public Vector3 Direction
        {
            get
            {
                return INTERNAL_direction;
            }
            set
            {
                INTERNAL_direction = value;
                if (directionParameter != null)
                {
                    directionParameter.SetValue(INTERNAL_direction);
                }
            }
        }
 
        private Vector3 INTERNAL_specularColor;
        public Vector3 SpecularColor
        {
            get
            {
                return INTERNAL_specularColor;
            }
            set
            {
                INTERNAL_specularColor = value;
                if (Enabled && specularColorParameter != null)
                {
                    specularColorParameter.SetValue(INTERNAL_specularColor);
                }
            }
        }
 
        private bool INTERNAL_enabled;
        public bool Enabled
        {
            get
            {
                return INTERNAL_enabled;
            }
            set
            {
                if (INTERNAL_enabled != value)
                {
                    INTERNAL_enabled = value;
                    if (INTERNAL_enabled)
                    {
                        if (diffuseColorParameter != null)
                        {
                            diffuseColorParameter.SetValue(DiffuseColor);
                        }
                        if (specularColorParameter != null)
                        {
                            specularColorParameter.SetValue(SpecularColor);
                        }
                    }
                    else
                    {
                        if (diffuseColorParameter != null)
                        {
                            diffuseColorParameter.SetValue(Vector3.Zero);
                        }
                        if (specularColorParameter != null)
                        {
                            specularColorParameter.SetValue(Vector3.Zero);
                        }
                    }
                }
 
            }
        }
 
        #endregion
 
        #region Internal Variables
 
        internal EffectParameter diffuseColorParameter;
        internal EffectParameter directionParameter;
        internal EffectParameter specularColorParameter;
 
        #endregion
 
        #region Public Constructor
 
        public DirectionalLight(
            EffectParameter directionParameter,
            EffectParameter diffuseColorParameter,
            EffectParameter specularColorParameter,
            DirectionalLight cloneSource
        ) {
            this.diffuseColorParameter = diffuseColorParameter;
            this.directionParameter = directionParameter;
            this.specularColorParameter = specularColorParameter;
            if (cloneSource != null)
            {
                DiffuseColor = cloneSource.DiffuseColor;
                Direction = cloneSource.Direction;
                SpecularColor = cloneSource.SpecularColor;
                Enabled = cloneSource.Enabled;
            }
        }
 
        #endregion
    }
}

Archive Download this file

Branches

Number of commits:
Page rendered in 0.09274s using 11 queries.