public void SendTargetedWindlightProfile(UUID agentID, WindlightSkyData skyData, WindlightWaterData waterData)
        {
            m_OverrideLightSharePerAgent[agentID] = true;
            IAgent agent;

            if (m_Scene.RootAgents.TryGetValue(agentID, out agent))
            {
                agent.SendMessageIfRootAgent(CompileWindlightSettings(skyData, waterData), m_Scene.ID);
            }
        }
        private GenericMessage CompileWindlightSettings(WindlightSkyData skyWindlight, WindlightWaterData waterWindlight)
        {
            var m = new GenericMessage
            {
                Method = "Windlight"
            };
            var mBlock = new byte[249];
            int pos    = 0;

            AddToCompiledWL(waterWindlight.Color, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.FogDensityExponent, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.UnderwaterFogModifier, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.ReflectionWaveletScale, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.FresnelScale, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.FresnelOffset, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.RefractScaleAbove, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.RefractScaleBelow, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.BlurMultiplier, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.BigWaveDirection, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.LittleWaveDirection, ref mBlock, ref pos);
            AddToCompiledWL(waterWindlight.NormalMapTexture, ref mBlock, ref pos);

            AddToCompiledWL(skyWindlight.Horizon, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.HazeHorizon, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.BlueDensity, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.HazeDensity, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.DensityMultiplier, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.DistanceMultiplier, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.SunMoonColor, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.SunMoonPosition, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.Ambient, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.EastAngle, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.SunGlowFocus, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.SunGlowSize, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.SceneGamma, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.StarBrightness, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.CloudColor, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.CloudXYDensity, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.CloudCoverage, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.CloudScale, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.CloudDetailXYDensity, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.CloudScroll, ref mBlock, ref pos);
            AddToCompiledWL((ushort)skyWindlight.MaxAltitude, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.CloudScrollXLock, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.CloudScrollYLock, ref mBlock, ref pos);
            AddToCompiledWL(skyWindlight.DrawClassicClouds, ref mBlock, ref pos);
            m.ParamList.Add(mBlock);
            return(m);
        }