示例#1
0
 public void Parse(CommandFileParser parser)
 {
     parser.ParserRead();
     while (!parser.IsEndElement("rtspec"))
     {
         if (parser.IsElement() && (!parser.IsElement("rtspec")))
         {
             if (parser.IsElement("generation"))
             {
                 mGeneration = parser.ReadInt();
             }
             else if (parser.IsElement("shadow"))
             {
                 mComputeShadow = parser.ReadBool();
             }
             else if (parser.IsElement("reflection"))
             {
                 mComputeReflection = parser.ReadBool();
             }
             else if (parser.IsElement("background"))
             {
                 mBgColor = parser.ReadVector3();
             }
             else
             {
                 parser.ParserError("RTWorld");
             }
         }
         else
         {
             parser.ParserRead();
         }
     }
 }
        private bool mUseDepthMap = false; // off

        /// <summary>
        /// Constructor from parser.
        /// Please DO NOT change the parsing routine unless you know what you are doing).
        /// </summary>
        /// <param name="parser"></param>
        public RTLightType_Spot(CommandFileParser parser)
        {
            mLightSourceType = RTLightSourceType.RTLightSourceTypeSpot;

            while (!parser.IsEndElement("light"))
            {
                if (parser.IsElement() && (!parser.IsElement("light")))
                {
                    if (parser.IsElement("color"))
                    {
                        mColor = parser.ReadVector3();
                    }
                    else if (parser.IsElement("position"))
                    {
                        mPosition = parser.ReadVector3();
                    }
                    else if (parser.IsElement("direction"))
                    {
                        mDirection = parser.ReadVector3();
                    }
                    else if (parser.IsElement("innerAngle"))
                    {
                        mInnerAngle = MathHelper.ToRadians(parser.ReadFloat());
                    }
                    else if (parser.IsElement("outerAngle"))
                    {
                        mOuterAngle = MathHelper.ToRadians(parser.ReadFloat());
                    }
                    else if (parser.IsElement("falloff"))
                    {
                        mFallOff = parser.ReadFloat();
                    }
                    else if (parser.IsElement("depthMap"))
                    {
                        mUseDepthMap = parser.ReadBool();
                    }
                    else if (parser.IsElement("depthMapResolution"))
                    {
                        mRes = parser.ReadInt();
                    }
                    else if (parser.IsElement("depthMapFilterRes"))
                    {
                        mFilterRes = parser.ReadInt();
                    }
                    else
                    {
                        parser.ParserError("Light");
                    }
                }
                else
                {
                    parser.ParserRead();
                }
            }

            mDirection          = -Vector3.Normalize(mDirection);
            mCosInAngle         = (float)Math.Cos(mInnerAngle / 2);
            mCosOutAngle        = (float)Math.Cos(mOuterAngle / 2);
            mFallOffDenominator = 1f / (mCosInAngle - mCosOutAngle);
        }
 public void Parse(CommandFileParser parser)
 {
     parser.ParserRead();
     while (!parser.IsEndElement("rtspec"))
     {
         if (parser.IsElement() && (!parser.IsElement("rtspec")))
         {
             if (parser.IsElement("generation"))
                 mGeneration = parser.ReadInt();
             else if (parser.IsElement("shadow"))
                 mComputeShadow = parser.ReadBool();
             else if (parser.IsElement("reflection"))
                 mComputeReflection = parser.ReadBool();
             else if (parser.IsElement("background"))
                 mBgColor = parser.ReadVector3();
             else
                 parser.ParserError("RTWorld");
         }
         else
             parser.ParserRead();
     }
 }
        private bool mUseDepthMap = false; // off

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Constructor from parser. 
        /// Please DO NOT change the parsing routine unless you know what you are doing).
        /// </summary>
        /// <param name="parser"></param>
        public RTLightType_Spot(CommandFileParser parser)
        {
            mLightSourceType = RTLightSourceType.RTLightSourceTypeSpot;

            while (!parser.IsEndElement("light"))
            {
                if (parser.IsElement() && (!parser.IsElement("light")))
                {
                    if (parser.IsElement("color"))
                        mColor = parser.ReadVector3();
                    else if (parser.IsElement("position"))
                        mPosition = parser.ReadVector3();
                    else if (parser.IsElement("direction"))
                        mDirection = parser.ReadVector3();
                    else if (parser.IsElement("innerAngle"))
                        mInnerAngle = MathHelper.ToRadians(parser.ReadFloat());
                    else if (parser.IsElement("outerAngle"))
                        mOuterAngle = MathHelper.ToRadians(parser.ReadFloat());
                    else if (parser.IsElement("falloff"))
                        mFallOff = parser.ReadFloat();
                    else if (parser.IsElement("depthMap"))
                        mUseDepthMap = parser.ReadBool();
                    else if (parser.IsElement("depthMapResolution"))
                        mRes = parser.ReadInt();
                    else if (parser.IsElement("depthMapFilterRes"))
                        mFilterRes = parser.ReadInt();
                    else
                        parser.ParserError("Light");
                }
                else
                    parser.ParserRead();
            }

            mDirection = -Vector3.Normalize(mDirection);
            mCosInAngle = (float) Math.Cos(mInnerAngle / 2);
            mCosOutAngle = (float)Math.Cos(mOuterAngle / 2);
            mFallOffDenominator = 1f / (mCosInAngle - mCosOutAngle);
        }