Esempio n. 1
0
        private void WriteBlendState(String name, BlendState value)
        {
            _writer.Write(TAB_BLOCK2);
            _writer.Write("BlendState");
            WriteSpace();
            _writer.Write(name);
            RenderStateKey key = value.RenderStateKey;

            if (key.Equals(BlendState.AdditiveBlend.RenderStateKey))
            {
                WriteSeparator();
                _writer.Write("AdditiveBlend");
                WriteNewLine();
            }
            else if (key.Equals(BlendState.AlphaBlendNonPremultiplied.RenderStateKey))
            {
                WriteSeparator();
                _writer.Write("AlphaBlendNonPremultiplied");
                WriteNewLine();
            }
            else if (key.Equals(BlendState.AlphaBlendPremultiplied.RenderStateKey))
            {
                WriteSeparator();
                _writer.Write("AlphaBlendPremultiplied");
                WriteNewLine();
            }
            else if (key.Equals(BlendState.Opaque.RenderStateKey))
            {
                WriteSeparator();
                _writer.Write("Opaque");
                WriteNewLine();
            }
            else
            {
                WriteOpenBrace();

                if (value.AlphaBlendFunction != BlendFunction.Add)
                {
                    _writer.Write(TAB_BLOCK3);
                    _writer.Write("AlphaBlendFunction");
                    WriteSeparator();
                    _writer.Write(value.AlphaBlendFunction.ToString());
                    WriteNewLine();
                }

                if (value.AlphaSourceBlend != Blend.One)
                {
                    _writer.Write(TAB_BLOCK3);
                    _writer.Write("AlphaSourceBlend");
                    WriteSeparator();
                    _writer.Write(value.AlphaSourceBlend.ToString());
                    WriteNewLine();
                }

                if (value.AlphaDestinationBlend != Blend.Zero)
                {
                    _writer.Write(TAB_BLOCK3);
                    _writer.Write("AlphaDestinationBlend");
                    WriteSeparator();
                    _writer.Write(value.AlphaDestinationBlend.ToString());
                    WriteNewLine();
                }

                if (value.ColorBlendFunction != BlendFunction.Add)
                {
                    _writer.Write(TAB_BLOCK3);
                    _writer.Write("ColorBlendFunction");
                    WriteSeparator();
                    _writer.Write(value.ColorBlendFunction.ToString());
                    WriteNewLine();
                }

                if (value.ColorSourceBlend != Blend.One)
                {
                    _writer.Write(TAB_BLOCK3);
                    _writer.Write("ColorSourceBlend");
                    WriteSeparator();
                    _writer.Write(value.ColorSourceBlend.ToString());
                    WriteNewLine();
                }

                if (value.ColorDestinationBlend != Blend.Zero)
                {
                    _writer.Write(TAB_BLOCK3);
                    _writer.Write("ColorDestinationBlend");
                    WriteSeparator();
                    _writer.Write(value.ColorDestinationBlend.ToString());
                    WriteNewLine();
                }

                if (!value.BlendFactor.Equals(Color.White))
                {
                    _writer.Write(TAB_BLOCK3);
                    _writer.Write("BlendFactor");
                    WriteSeparator();
                    Color c = value.BlendFactor;
                    _writer.Write(c.R);
                    WriteSpace();
                    _writer.Write(c.G);
                    WriteSpace();
                    _writer.Write(c.B);
                    WriteSpace();
                    _writer.Write(c.A);
                    WriteNewLine();
                }

                if (value.MultiSampleMask != int.MaxValue)
                {
                    _writer.Write(TAB_BLOCK3);
                    _writer.Write("MultiSampleMask");
                    WriteSeparator();
                    _writer.Write(value.MultiSampleMask);
                    WriteNewLine();
                }

                int beCount = value.BlendEnableCount;
                if (beCount > 0)
                {
                    if (value.GetBlendEnable(0) == false)
                    {
                        _writer.Write(TAB_BLOCK3);
                        _writer.Write("BlendEnable[0]");
                        WriteSeparator();
                        _writer.Write("false");
                        WriteNewLine();
                    }

                    for (int i = 1; i < beCount; i++)
                    {
                        if (value.GetBlendEnable(i) == true)
                        {
                            _writer.Write(TAB_BLOCK3);
                            _writer.Write("BlendEnable[");
                            _writer.Write(i);
                            _writer.Write("]");
                            WriteSeparator();
                            _writer.Write("true");
                            WriteNewLine();
                        }
                    }
                }

                int cwCount = value.ColorWriteChannelsCount;
                if (cwCount > 0)
                {
                    ColorWriteChannels cwc = value.GetWriteChannels(0);
                    if (cwc != ColorWriteChannels.All)
                    {
                        _writer.Write(TAB_BLOCK3);
                        _writer.Write("ColorWriteChannels[0]");
                        WriteSeparator();
                        _writer.Write(cwc.ToString().Replace(",", " |"));
                        WriteNewLine();
                    }

                    for (int i = 1; i < cwCount; i++)
                    {
                        cwc = value.GetWriteChannels(i);
                        if (cwc != ColorWriteChannels.All)
                        {
                            _writer.Write(TAB_BLOCK3);
                            _writer.Write("ColorWriteChannels[");
                            _writer.Write(i);
                            _writer.Write("]");
                            WriteSeparator();
                            _writer.Write(cwc.ToString().Replace(",", " |"));
                            WriteNewLine();
                        }
                    }
                }

                WriteCloseBrace(false, TAB_BLOCK2);
            }
        }