예제 #1
0
        bool ISimulationDataLightShareStorageInterface.TryGetValue(UUID regionID, out EnvController.WindlightSkyData skyData, out EnvController.WindlightWaterData waterData)
        {
            using (var conn = new NpgsqlConnection(m_ConnectionString))
            {
                conn.Open();
                using (var cmd = new NpgsqlCommand("SELECT * FROM lightshare WHERE \"RegionID\" = @regionid LIMIT 1", conn))
                {
                    cmd.Parameters.AddParameter("@regionid", regionID);
                    using (NpgsqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (!reader.Read())
                        {
                            skyData   = EnvController.WindlightSkyData.Defaults;
                            waterData = EnvController.WindlightWaterData.Defaults;
                            return(false);
                        }

                        skyData = new EnvController.WindlightSkyData
                        {
                            Ambient              = reader.GetWLVector4("Ambient"),
                            CloudColor           = reader.GetWLVector4("CloudColor"),
                            CloudCoverage        = (double)reader["CloudCoverage"],
                            BlueDensity          = reader.GetWLVector4("BlueDensity"),
                            CloudDetailXYDensity = reader.GetVector3("CloudDetailXYDensity"),
                            CloudScale           = (double)reader["CloudScale"],
                            CloudScroll          = reader.GetWLVector2("CloudScroll"),
                            CloudScrollXLock     = (bool)reader["CloudScrollXLock"],
                            CloudScrollYLock     = (bool)reader["CloudScrollYLock"],
                            CloudXYDensity       = reader.GetVector3("CloudXYDensity"),
                            DensityMultiplier    = (double)reader["DensityMultiplier"],
                            DistanceMultiplier   = (double)reader["DistanceMultiplier"],
                            DrawClassicClouds    = (bool)reader["DrawClassicClouds"],
                            EastAngle            = (double)reader["EastAngle"],
                            HazeDensity          = (double)reader["HazeDensity"],
                            HazeHorizon          = (double)reader["HazeHorizon"],
                            Horizon              = reader.GetWLVector4("Horizon"),
                            MaxAltitude          = (int)reader["MaxAltitude"],
                            SceneGamma           = (double)reader["SceneGamma"],
                            SunGlowFocus         = (double)reader["SunGlowFocus"],
                            SunGlowSize          = (double)reader["SunGlowSize"],
                            SunMoonColor         = reader.GetWLVector4("SunMoonColor"),
                            SunMoonPosition      = (double)reader["SunMoonPosition"]
                        };
                        waterData = new EnvController.WindlightWaterData
                        {
                            BigWaveDirection       = reader.GetWLVector2("BigWaveDirection"),
                            LittleWaveDirection    = reader.GetWLVector2("LittleWaveDirection"),
                            BlurMultiplier         = (double)reader["BlurMultiplier"],
                            FresnelScale           = (double)reader["FresnelScale"],
                            FresnelOffset          = (double)reader["FresnelOffset"],
                            NormalMapTexture       = reader.GetUUID("NormalMapTexture"),
                            ReflectionWaveletScale = reader.GetVector3("ReflectionWaveletScale"),
                            RefractScaleAbove      = (double)reader["RefractScaleAbove"],
                            RefractScaleBelow      = (double)reader["RefractScaleBelow"],
                            UnderwaterFogModifier  = (double)reader["UnderwaterFogModifier"],
                            Color = reader.GetColor("WaterColor"),
                            FogDensityExponent = (double)reader["FogDensityExponent"]
                        };
                        return(true);
                    }
                }
            }
        }