Example #1
0
        private void UpdateCastingShadowLight()
        {
            int index = LightTypeComboBox.SelectedIndex;

            if (index == -1 || _shadowSpotLight == null)
            {
                return;
            }

            if (index == 0) // Spot light
            {
                // Enable shadow casting for spot light
                _shadowSpotLight.SetDXAttribute(DXAttributeType.IsCastingShadow, _isShadowEnabled);
                _directionalLight.SetDXAttribute(DXAttributeType.IsCastingShadow, false);

                // Use only _shadowSpotLight
                if (_lightsModel3DGroup.Children.Contains(_directionalLight))
                {
                    _lightsModel3DGroup.Children.Remove(_directionalLight);
                }

                if (!_lightsModel3DGroup.Children.Contains(_shadowSpotLight))
                {
                    _lightsModel3DGroup.Children.Add(_shadowSpotLight);
                }
            }
            else // Directional light
            {
                // Enable shadow casting for directional light
                _directionalLight.SetDXAttribute(DXAttributeType.IsCastingShadow, _isShadowEnabled);
                _shadowSpotLight.SetDXAttribute(DXAttributeType.IsCastingShadow, false);

                // Use only _directionalLight
                if (_lightsModel3DGroup.Children.Contains(_shadowSpotLight))
                {
                    _lightsModel3DGroup.Children.Remove(_shadowSpotLight);
                }

                if (!_lightsModel3DGroup.Children.Contains(_directionalLight))
                {
                    _lightsModel3DGroup.Children.Add(_directionalLight);
                }
            }
        }