diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs index f1d33b9a1d..32c5655877 100644 --- a/OpenSim/Data/MySQL/MySQLSimulationData.cs +++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs @@ -863,107 +863,6 @@ namespace OpenSim.Data.MySQL } } - public virtual RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) - { - RegionLightShareData nWP = new RegionLightShareData(); - nWP.OnSave += StoreRegionWindlightSettings; - - using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) - { - dbcon.Open(); - - string command = "select * from `regionwindlight` where region_id = ?regionID"; - - using (MySqlCommand cmd = new MySqlCommand(command)) - { - cmd.Connection = dbcon; - - cmd.Parameters.AddWithValue("?regionID", regionUUID.ToString()); - - using(IDataReader result = ExecuteReader(cmd)) - { - if(!result.Read()) - { - //No result, so store our default windlight profile and return it - nWP.regionID = regionUUID; - // StoreRegionWindlightSettings(nWP); - return nWP; - } - else - { - nWP.regionID = DBGuid.FromDB(result["region_id"]); - nWP.waterColor.X = Convert.ToSingle(result["water_color_r"]); - nWP.waterColor.Y = Convert.ToSingle(result["water_color_g"]); - nWP.waterColor.Z = Convert.ToSingle(result["water_color_b"]); - nWP.waterFogDensityExponent = Convert.ToSingle(result["water_fog_density_exponent"]); - nWP.underwaterFogModifier = Convert.ToSingle(result["underwater_fog_modifier"]); - nWP.reflectionWaveletScale.X = Convert.ToSingle(result["reflection_wavelet_scale_1"]); - nWP.reflectionWaveletScale.Y = Convert.ToSingle(result["reflection_wavelet_scale_2"]); - nWP.reflectionWaveletScale.Z = Convert.ToSingle(result["reflection_wavelet_scale_3"]); - nWP.fresnelScale = Convert.ToSingle(result["fresnel_scale"]); - nWP.fresnelOffset = Convert.ToSingle(result["fresnel_offset"]); - nWP.refractScaleAbove = Convert.ToSingle(result["refract_scale_above"]); - nWP.refractScaleBelow = Convert.ToSingle(result["refract_scale_below"]); - nWP.blurMultiplier = Convert.ToSingle(result["blur_multiplier"]); - nWP.bigWaveDirection.X = Convert.ToSingle(result["big_wave_direction_x"]); - nWP.bigWaveDirection.Y = Convert.ToSingle(result["big_wave_direction_y"]); - nWP.littleWaveDirection.X = Convert.ToSingle(result["little_wave_direction_x"]); - nWP.littleWaveDirection.Y = Convert.ToSingle(result["little_wave_direction_y"]); - UUID.TryParse(result["normal_map_texture"].ToString(),out nWP.normalMapTexture); - nWP.horizon.X = Convert.ToSingle(result["horizon_r"]); - nWP.horizon.Y = Convert.ToSingle(result["horizon_g"]); - nWP.horizon.Z = Convert.ToSingle(result["horizon_b"]); - nWP.horizon.W = Convert.ToSingle(result["horizon_i"]); - nWP.hazeHorizon = Convert.ToSingle(result["haze_horizon"]); - nWP.blueDensity.X = Convert.ToSingle(result["blue_density_r"]); - nWP.blueDensity.Y = Convert.ToSingle(result["blue_density_g"]); - nWP.blueDensity.Z = Convert.ToSingle(result["blue_density_b"]); - nWP.blueDensity.W = Convert.ToSingle(result["blue_density_i"]); - nWP.hazeDensity = Convert.ToSingle(result["haze_density"]); - nWP.densityMultiplier = Convert.ToSingle(result["density_multiplier"]); - nWP.distanceMultiplier = Convert.ToSingle(result["distance_multiplier"]); - nWP.maxAltitude = Convert.ToUInt16(result["max_altitude"]); - nWP.sunMoonColor.X = Convert.ToSingle(result["sun_moon_color_r"]); - nWP.sunMoonColor.Y = Convert.ToSingle(result["sun_moon_color_g"]); - nWP.sunMoonColor.Z = Convert.ToSingle(result["sun_moon_color_b"]); - nWP.sunMoonColor.W = Convert.ToSingle(result["sun_moon_color_i"]); - nWP.sunMoonPosition = Convert.ToSingle(result["sun_moon_position"]); - nWP.ambient.X = Convert.ToSingle(result["ambient_r"]); - nWP.ambient.Y = Convert.ToSingle(result["ambient_g"]); - nWP.ambient.Z = Convert.ToSingle(result["ambient_b"]); - nWP.ambient.W = Convert.ToSingle(result["ambient_i"]); - nWP.eastAngle = Convert.ToSingle(result["east_angle"]); - nWP.sunGlowFocus = Convert.ToSingle(result["sun_glow_focus"]); - nWP.sunGlowSize = Convert.ToSingle(result["sun_glow_size"]); - nWP.sceneGamma = Convert.ToSingle(result["scene_gamma"]); - nWP.starBrightness = Convert.ToSingle(result["star_brightness"]); - nWP.cloudColor.X = Convert.ToSingle(result["cloud_color_r"]); - nWP.cloudColor.Y = Convert.ToSingle(result["cloud_color_g"]); - nWP.cloudColor.Z = Convert.ToSingle(result["cloud_color_b"]); - nWP.cloudColor.W = Convert.ToSingle(result["cloud_color_i"]); - nWP.cloudXYDensity.X = Convert.ToSingle(result["cloud_x"]); - nWP.cloudXYDensity.Y = Convert.ToSingle(result["cloud_y"]); - nWP.cloudXYDensity.Z = Convert.ToSingle(result["cloud_density"]); - nWP.cloudCoverage = Convert.ToSingle(result["cloud_coverage"]); - nWP.cloudScale = Convert.ToSingle(result["cloud_scale"]); - nWP.cloudDetailXYDensity.X = Convert.ToSingle(result["cloud_detail_x"]); - nWP.cloudDetailXYDensity.Y = Convert.ToSingle(result["cloud_detail_y"]); - nWP.cloudDetailXYDensity.Z = Convert.ToSingle(result["cloud_detail_density"]); - nWP.cloudScrollX = Convert.ToSingle(result["cloud_scroll_x"]); - nWP.cloudScrollXLock = Convert.ToBoolean(result["cloud_scroll_x_lock"]); - nWP.cloudScrollY = Convert.ToSingle(result["cloud_scroll_y"]); - nWP.cloudScrollYLock = Convert.ToBoolean(result["cloud_scroll_y_lock"]); - nWP.drawClassicClouds = Convert.ToBoolean(result["draw_classic_clouds"]); - nWP.valid = true; - } - } - } - dbcon.Close(); - } - - return nWP; - } - public virtual RegionSettings LoadRegionSettings(UUID regionUUID) { RegionSettings rs = null; @@ -1009,127 +908,6 @@ namespace OpenSim.Data.MySQL return rs; } - public virtual void StoreRegionWindlightSettings(RegionLightShareData wl) - { - using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) - { - dbcon.Open(); - - using (MySqlCommand cmd = dbcon.CreateCommand()) - { - cmd.CommandText = "REPLACE INTO `regionwindlight` (`region_id`, `water_color_r`, `water_color_g`, " - + "`water_color_b`, `water_fog_density_exponent`, `underwater_fog_modifier`, " - + "`reflection_wavelet_scale_1`, `reflection_wavelet_scale_2`, `reflection_wavelet_scale_3`, " - + "`fresnel_scale`, `fresnel_offset`, `refract_scale_above`, `refract_scale_below`, " - + "`blur_multiplier`, `big_wave_direction_x`, `big_wave_direction_y`, `little_wave_direction_x`, " - + "`little_wave_direction_y`, `normal_map_texture`, `horizon_r`, `horizon_g`, `horizon_b`, " - + "`horizon_i`, `haze_horizon`, `blue_density_r`, `blue_density_g`, `blue_density_b`, " - + "`blue_density_i`, `haze_density`, `density_multiplier`, `distance_multiplier`, `max_altitude`, " - + "`sun_moon_color_r`, `sun_moon_color_g`, `sun_moon_color_b`, `sun_moon_color_i`, `sun_moon_position`, " - + "`ambient_r`, `ambient_g`, `ambient_b`, `ambient_i`, `east_angle`, `sun_glow_focus`, `sun_glow_size`, " - + "`scene_gamma`, `star_brightness`, `cloud_color_r`, `cloud_color_g`, `cloud_color_b`, `cloud_color_i`, " - + "`cloud_x`, `cloud_y`, `cloud_density`, `cloud_coverage`, `cloud_scale`, `cloud_detail_x`, " - + "`cloud_detail_y`, `cloud_detail_density`, `cloud_scroll_x`, `cloud_scroll_x_lock`, `cloud_scroll_y`, " - + "`cloud_scroll_y_lock`, `draw_classic_clouds`) VALUES (?region_id, ?water_color_r, " - + "?water_color_g, ?water_color_b, ?water_fog_density_exponent, ?underwater_fog_modifier, ?reflection_wavelet_scale_1, " - + "?reflection_wavelet_scale_2, ?reflection_wavelet_scale_3, ?fresnel_scale, ?fresnel_offset, ?refract_scale_above, " - + "?refract_scale_below, ?blur_multiplier, ?big_wave_direction_x, ?big_wave_direction_y, ?little_wave_direction_x, " - + "?little_wave_direction_y, ?normal_map_texture, ?horizon_r, ?horizon_g, ?horizon_b, ?horizon_i, ?haze_horizon, " - + "?blue_density_r, ?blue_density_g, ?blue_density_b, ?blue_density_i, ?haze_density, ?density_multiplier, " - + "?distance_multiplier, ?max_altitude, ?sun_moon_color_r, ?sun_moon_color_g, ?sun_moon_color_b, " - + "?sun_moon_color_i, ?sun_moon_position, ?ambient_r, ?ambient_g, ?ambient_b, ?ambient_i, ?east_angle, " - + "?sun_glow_focus, ?sun_glow_size, ?scene_gamma, ?star_brightness, ?cloud_color_r, ?cloud_color_g, " - + "?cloud_color_b, ?cloud_color_i, ?cloud_x, ?cloud_y, ?cloud_density, ?cloud_coverage, ?cloud_scale, " - + "?cloud_detail_x, ?cloud_detail_y, ?cloud_detail_density, ?cloud_scroll_x, ?cloud_scroll_x_lock, " - + "?cloud_scroll_y, ?cloud_scroll_y_lock, ?draw_classic_clouds)" - ; - - cmd.Parameters.AddWithValue("region_id", wl.regionID); - cmd.Parameters.AddWithValue("water_color_r", wl.waterColor.X); - cmd.Parameters.AddWithValue("water_color_g", wl.waterColor.Y); - cmd.Parameters.AddWithValue("water_color_b", wl.waterColor.Z); - cmd.Parameters.AddWithValue("water_fog_density_exponent", wl.waterFogDensityExponent); - cmd.Parameters.AddWithValue("underwater_fog_modifier", wl.underwaterFogModifier); - cmd.Parameters.AddWithValue("reflection_wavelet_scale_1", wl.reflectionWaveletScale.X); - cmd.Parameters.AddWithValue("reflection_wavelet_scale_2", wl.reflectionWaveletScale.Y); - cmd.Parameters.AddWithValue("reflection_wavelet_scale_3", wl.reflectionWaveletScale.Z); - cmd.Parameters.AddWithValue("fresnel_scale", wl.fresnelScale); - cmd.Parameters.AddWithValue("fresnel_offset", wl.fresnelOffset); - cmd.Parameters.AddWithValue("refract_scale_above", wl.refractScaleAbove); - cmd.Parameters.AddWithValue("refract_scale_below", wl.refractScaleBelow); - cmd.Parameters.AddWithValue("blur_multiplier", wl.blurMultiplier); - cmd.Parameters.AddWithValue("big_wave_direction_x", wl.bigWaveDirection.X); - cmd.Parameters.AddWithValue("big_wave_direction_y", wl.bigWaveDirection.Y); - cmd.Parameters.AddWithValue("little_wave_direction_x", wl.littleWaveDirection.X); - cmd.Parameters.AddWithValue("little_wave_direction_y", wl.littleWaveDirection.Y); - cmd.Parameters.AddWithValue("normal_map_texture", wl.normalMapTexture); - cmd.Parameters.AddWithValue("horizon_r", wl.horizon.X); - cmd.Parameters.AddWithValue("horizon_g", wl.horizon.Y); - cmd.Parameters.AddWithValue("horizon_b", wl.horizon.Z); - cmd.Parameters.AddWithValue("horizon_i", wl.horizon.W); - cmd.Parameters.AddWithValue("haze_horizon", wl.hazeHorizon); - cmd.Parameters.AddWithValue("blue_density_r", wl.blueDensity.X); - cmd.Parameters.AddWithValue("blue_density_g", wl.blueDensity.Y); - cmd.Parameters.AddWithValue("blue_density_b", wl.blueDensity.Z); - cmd.Parameters.AddWithValue("blue_density_i", wl.blueDensity.W); - cmd.Parameters.AddWithValue("haze_density", wl.hazeDensity); - cmd.Parameters.AddWithValue("density_multiplier", wl.densityMultiplier); - cmd.Parameters.AddWithValue("distance_multiplier", wl.distanceMultiplier); - cmd.Parameters.AddWithValue("max_altitude", wl.maxAltitude); - cmd.Parameters.AddWithValue("sun_moon_color_r", wl.sunMoonColor.X); - cmd.Parameters.AddWithValue("sun_moon_color_g", wl.sunMoonColor.Y); - cmd.Parameters.AddWithValue("sun_moon_color_b", wl.sunMoonColor.Z); - cmd.Parameters.AddWithValue("sun_moon_color_i", wl.sunMoonColor.W); - cmd.Parameters.AddWithValue("sun_moon_position", wl.sunMoonPosition); - cmd.Parameters.AddWithValue("ambient_r", wl.ambient.X); - cmd.Parameters.AddWithValue("ambient_g", wl.ambient.Y); - cmd.Parameters.AddWithValue("ambient_b", wl.ambient.Z); - cmd.Parameters.AddWithValue("ambient_i", wl.ambient.W); - cmd.Parameters.AddWithValue("east_angle", wl.eastAngle); - cmd.Parameters.AddWithValue("sun_glow_focus", wl.sunGlowFocus); - cmd.Parameters.AddWithValue("sun_glow_size", wl.sunGlowSize); - cmd.Parameters.AddWithValue("scene_gamma", wl.sceneGamma); - cmd.Parameters.AddWithValue("star_brightness", wl.starBrightness); - cmd.Parameters.AddWithValue("cloud_color_r", wl.cloudColor.X); - cmd.Parameters.AddWithValue("cloud_color_g", wl.cloudColor.Y); - cmd.Parameters.AddWithValue("cloud_color_b", wl.cloudColor.Z); - cmd.Parameters.AddWithValue("cloud_color_i", wl.cloudColor.W); - cmd.Parameters.AddWithValue("cloud_x", wl.cloudXYDensity.X); - cmd.Parameters.AddWithValue("cloud_y", wl.cloudXYDensity.Y); - cmd.Parameters.AddWithValue("cloud_density", wl.cloudXYDensity.Z); - cmd.Parameters.AddWithValue("cloud_coverage", wl.cloudCoverage); - cmd.Parameters.AddWithValue("cloud_scale", wl.cloudScale); - cmd.Parameters.AddWithValue("cloud_detail_x", wl.cloudDetailXYDensity.X); - cmd.Parameters.AddWithValue("cloud_detail_y", wl.cloudDetailXYDensity.Y); - cmd.Parameters.AddWithValue("cloud_detail_density", wl.cloudDetailXYDensity.Z); - cmd.Parameters.AddWithValue("cloud_scroll_x", wl.cloudScrollX); - cmd.Parameters.AddWithValue("cloud_scroll_x_lock", wl.cloudScrollXLock); - cmd.Parameters.AddWithValue("cloud_scroll_y", wl.cloudScrollY); - cmd.Parameters.AddWithValue("cloud_scroll_y_lock", wl.cloudScrollYLock); - cmd.Parameters.AddWithValue("draw_classic_clouds", wl.drawClassicClouds); - - ExecuteNonQuery(cmd); - } - dbcon.Close(); - } - } - - public virtual void RemoveRegionWindlightSettings(UUID regionID) - { - using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) - { - dbcon.Open(); - - using (MySqlCommand cmd = dbcon.CreateCommand()) - { - cmd.CommandText = "delete from `regionwindlight` where `region_id`=?regionID"; - cmd.Parameters.AddWithValue("?regionID", regionID.ToString()); - ExecuteNonQuery(cmd); - } - dbcon.Close(); - } - } - #region RegionEnvironmentSettings public string LoadRegionEnvironmentSettings(UUID regionUUID) { diff --git a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs index dd2ad449c0..e65576fbc5 100755 --- a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs +++ b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs @@ -825,477 +825,6 @@ namespace OpenSim.Data.PGSQL cmd.ExecuteNonQuery(); } } - public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) - { - RegionLightShareData nWP = new RegionLightShareData(); - nWP.OnSave += StoreRegionWindlightSettings; - - string sql = @"select * from regionwindlight where ""region_id"" = :regionID"; - - using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) - using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) - { - cmd.Parameters.Add(_Database.CreateParameter("regionID", regionUUID.ToString() )); - conn.Open(); - using (NpgsqlDataReader result = cmd.ExecuteReader()) - { - if (!result.Read()) - { - //No result, so store our default windlight profile and return it - nWP.regionID = regionUUID; - StoreRegionWindlightSettings(nWP); - return nWP; - } - else - { - nWP.regionID = DBGuid.FromDB(result["region_id"]); - nWP.waterColor.X = Convert.ToSingle(result["water_color_r"]); - nWP.waterColor.Y = Convert.ToSingle(result["water_color_g"]); - nWP.waterColor.Z = Convert.ToSingle(result["water_color_b"]); - nWP.waterFogDensityExponent = Convert.ToSingle(result["water_fog_density_exponent"]); - nWP.underwaterFogModifier = Convert.ToSingle(result["underwater_fog_modifier"]); - nWP.reflectionWaveletScale.X = Convert.ToSingle(result["reflection_wavelet_scale_1"]); - nWP.reflectionWaveletScale.Y = Convert.ToSingle(result["reflection_wavelet_scale_2"]); - nWP.reflectionWaveletScale.Z = Convert.ToSingle(result["reflection_wavelet_scale_3"]); - nWP.fresnelScale = Convert.ToSingle(result["fresnel_scale"]); - nWP.fresnelOffset = Convert.ToSingle(result["fresnel_offset"]); - nWP.refractScaleAbove = Convert.ToSingle(result["refract_scale_above"]); - nWP.refractScaleBelow = Convert.ToSingle(result["refract_scale_below"]); - nWP.blurMultiplier = Convert.ToSingle(result["blur_multiplier"]); - nWP.bigWaveDirection.X = Convert.ToSingle(result["big_wave_direction_x"]); - nWP.bigWaveDirection.Y = Convert.ToSingle(result["big_wave_direction_y"]); - nWP.littleWaveDirection.X = Convert.ToSingle(result["little_wave_direction_x"]); - nWP.littleWaveDirection.Y = Convert.ToSingle(result["little_wave_direction_y"]); - UUID.TryParse(result["normal_map_texture"].ToString(), out nWP.normalMapTexture); - nWP.horizon.X = Convert.ToSingle(result["horizon_r"]); - nWP.horizon.Y = Convert.ToSingle(result["horizon_g"]); - nWP.horizon.Z = Convert.ToSingle(result["horizon_b"]); - nWP.horizon.W = Convert.ToSingle(result["horizon_i"]); - nWP.hazeHorizon = Convert.ToSingle(result["haze_horizon"]); - nWP.blueDensity.X = Convert.ToSingle(result["blue_density_r"]); - nWP.blueDensity.Y = Convert.ToSingle(result["blue_density_g"]); - nWP.blueDensity.Z = Convert.ToSingle(result["blue_density_b"]); - nWP.blueDensity.W = Convert.ToSingle(result["blue_density_i"]); - nWP.hazeDensity = Convert.ToSingle(result["haze_density"]); - nWP.densityMultiplier = Convert.ToSingle(result["density_multiplier"]); - nWP.distanceMultiplier = Convert.ToSingle(result["distance_multiplier"]); - nWP.maxAltitude = Convert.ToUInt16(result["max_altitude"]); - nWP.sunMoonColor.X = Convert.ToSingle(result["sun_moon_color_r"]); - nWP.sunMoonColor.Y = Convert.ToSingle(result["sun_moon_color_g"]); - nWP.sunMoonColor.Z = Convert.ToSingle(result["sun_moon_color_b"]); - nWP.sunMoonColor.W = Convert.ToSingle(result["sun_moon_color_i"]); - nWP.sunMoonPosition = Convert.ToSingle(result["sun_moon_position"]); - nWP.ambient.X = Convert.ToSingle(result["ambient_r"]); - nWP.ambient.Y = Convert.ToSingle(result["ambient_g"]); - nWP.ambient.Z = Convert.ToSingle(result["ambient_b"]); - nWP.ambient.W = Convert.ToSingle(result["ambient_i"]); - nWP.eastAngle = Convert.ToSingle(result["east_angle"]); - nWP.sunGlowFocus = Convert.ToSingle(result["sun_glow_focus"]); - nWP.sunGlowSize = Convert.ToSingle(result["sun_glow_size"]); - nWP.sceneGamma = Convert.ToSingle(result["scene_gamma"]); - nWP.starBrightness = Convert.ToSingle(result["star_brightness"]); - nWP.cloudColor.X = Convert.ToSingle(result["cloud_color_r"]); - nWP.cloudColor.Y = Convert.ToSingle(result["cloud_color_g"]); - nWP.cloudColor.Z = Convert.ToSingle(result["cloud_color_b"]); - nWP.cloudColor.W = Convert.ToSingle(result["cloud_color_i"]); - nWP.cloudXYDensity.X = Convert.ToSingle(result["cloud_x"]); - nWP.cloudXYDensity.Y = Convert.ToSingle(result["cloud_y"]); - nWP.cloudXYDensity.Z = Convert.ToSingle(result["cloud_density"]); - nWP.cloudCoverage = Convert.ToSingle(result["cloud_coverage"]); - nWP.cloudScale = Convert.ToSingle(result["cloud_scale"]); - nWP.cloudDetailXYDensity.X = Convert.ToSingle(result["cloud_detail_x"]); - nWP.cloudDetailXYDensity.Y = Convert.ToSingle(result["cloud_detail_y"]); - nWP.cloudDetailXYDensity.Z = Convert.ToSingle(result["cloud_detail_density"]); - nWP.cloudScrollX = Convert.ToSingle(result["cloud_scroll_x"]); - nWP.cloudScrollXLock = Convert.ToBoolean(result["cloud_scroll_x_lock"]); - nWP.cloudScrollY = Convert.ToSingle(result["cloud_scroll_y"]); - nWP.cloudScrollYLock = Convert.ToBoolean(result["cloud_scroll_y_lock"]); - nWP.drawClassicClouds = Convert.ToBoolean(result["draw_classic_clouds"]); - nWP.valid = true; - } - } - } - return nWP; - } - - public void RemoveRegionWindlightSettings(UUID regionID) - { - string sql = @"delete from regionwindlight where ""region_id"" = :region_id"; - using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) - using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) - { - conn.Open(); - cmd.Parameters.Add(_Database.CreateParameter("region_id", regionID.ToString())); - cmd.ExecuteNonQuery(); - } - } - - public void StoreRegionWindlightSettings(RegionLightShareData wl) - { - string sql = @"select region_id from regionwindlight where ""region_id"" = :region_id limit 1;"; - bool exists = false; - using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) - { - conn.Open(); - using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) - { - cmd.Parameters.Add(_Database.CreateParameter("region_id", wl.regionID.ToString() )); - NpgsqlDataReader dr = cmd.ExecuteReader(); - exists = dr.Read(); - } - } - if (exists) - { - RemoveRegionWindlightSettings(wl.regionID); - } - - // sql insert - sql = @"INSERT INTO regionwindlight - (region_id - ,water_color_r - ,water_color_g - ,water_color_b - ,water_fog_density_exponent - ,underwater_fog_modifier - ,reflection_wavelet_scale_1 - ,reflection_wavelet_scale_2 - ,reflection_wavelet_scale_3 - ,fresnel_scale - ,fresnel_offset - ,refract_scale_above - ,refract_scale_below - ,blur_multiplier - ,big_wave_direction_x - ,big_wave_direction_y - ,little_wave_direction_x - ,little_wave_direction_y - ,normal_map_texture - ,horizon_r - ,horizon_g - ,horizon_b - ,horizon_i - ,haze_horizon - ,blue_density_r - ,blue_density_g - ,blue_density_b - ,blue_density_i - ,haze_density - ,density_multiplier - ,distance_multiplier - ,max_altitude - ,sun_moon_color_r - ,sun_moon_color_g - ,sun_moon_color_b - ,sun_moon_color_i - ,sun_moon_position - ,ambient_r - ,ambient_g - ,ambient_b - ,ambient_i - ,east_angle - ,sun_glow_focus - ,sun_glow_size - ,scene_gamma - ,star_brightness - ,cloud_color_r - ,cloud_color_g - ,cloud_color_b - ,cloud_color_i - ,cloud_x - ,cloud_y - ,cloud_density - ,cloud_coverage - ,cloud_scale - ,cloud_detail_x - ,cloud_detail_y - ,cloud_detail_density - ,cloud_scroll_x - ,cloud_scroll_x_lock - ,cloud_scroll_y - ,cloud_scroll_y_lock - ,draw_classic_clouds) - VALUES - (:region_id - ,:water_color_r - ,:water_color_g - ,:water_color_b - ,:water_fog_density_exponent - ,:underwater_fog_modifier - ,:reflection_wavelet_scale_1 - ,:reflection_wavelet_scale_2 - ,:reflection_wavelet_scale_3 - ,:fresnel_scale - ,:fresnel_offset - ,:refract_scale_above - ,:refract_scale_below - ,:blur_multiplier - ,:big_wave_direction_x - ,:big_wave_direction_y - ,:little_wave_direction_x - ,:little_wave_direction_y - ,:normal_map_texture - ,:horizon_r - ,:horizon_g - ,:horizon_b - ,:horizon_i - ,:haze_horizon - ,:blue_density_r - ,:blue_density_g - ,:blue_density_b - ,:blue_density_i - ,:haze_density - ,:density_multiplier - ,:distance_multiplier - ,:max_altitude - ,:sun_moon_color_r - ,:sun_moon_color_g - ,:sun_moon_color_b - ,:sun_moon_color_i - ,:sun_moon_position - ,:ambient_r - ,:ambient_g - ,:ambient_b - ,:ambient_i - ,:east_angle - ,:sun_glow_focus - ,:sun_glow_size - ,:scene_gamma - ,:star_brightness - ,:cloud_color_r - ,:cloud_color_g - ,:cloud_color_b - ,:cloud_color_i - ,:cloud_x - ,:cloud_y - ,:cloud_density - ,:cloud_coverage - ,:cloud_scale - ,:cloud_detail_x - ,:cloud_detail_y - ,:cloud_detail_density - ,:cloud_scroll_x - ,:cloud_scroll_x_lock - ,:cloud_scroll_y - ,:cloud_scroll_y_lock - ,:draw_classic_clouds);"; - - using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) - { - conn.Open(); - using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) - { - cmd.Parameters.Add(_Database.CreateParameter("region_id", wl.regionID.ToString())); - cmd.Parameters.Add(_Database.CreateParameter("water_color_r", wl.waterColor.X)); - cmd.Parameters.Add(_Database.CreateParameter("water_color_g", wl.waterColor.Y)); - cmd.Parameters.Add(_Database.CreateParameter("water_color_b", wl.waterColor.Z)); - cmd.Parameters.Add(_Database.CreateParameter("water_fog_density_exponent", wl.waterFogDensityExponent)); - cmd.Parameters.Add(_Database.CreateParameter("underwater_fog_modifier", wl.underwaterFogModifier)); - cmd.Parameters.Add(_Database.CreateParameter("reflection_wavelet_scale_1", wl.reflectionWaveletScale.X)); - cmd.Parameters.Add(_Database.CreateParameter("reflection_wavelet_scale_2", wl.reflectionWaveletScale.Y)); - cmd.Parameters.Add(_Database.CreateParameter("reflection_wavelet_scale_3", wl.reflectionWaveletScale.Z)); - cmd.Parameters.Add(_Database.CreateParameter("fresnel_scale", wl.fresnelScale)); - cmd.Parameters.Add(_Database.CreateParameter("fresnel_offset", wl.fresnelOffset)); - cmd.Parameters.Add(_Database.CreateParameter("refract_scale_above", wl.refractScaleAbove)); - cmd.Parameters.Add(_Database.CreateParameter("refract_scale_below", wl.refractScaleBelow)); - cmd.Parameters.Add(_Database.CreateParameter("blur_multiplier", wl.blurMultiplier)); - cmd.Parameters.Add(_Database.CreateParameter("big_wave_direction_x", wl.bigWaveDirection.X)); - cmd.Parameters.Add(_Database.CreateParameter("big_wave_direction_y", wl.bigWaveDirection.Y)); - cmd.Parameters.Add(_Database.CreateParameter("little_wave_direction_x", wl.littleWaveDirection.X)); - cmd.Parameters.Add(_Database.CreateParameter("little_wave_direction_y", wl.littleWaveDirection.Y)); - cmd.Parameters.Add(_Database.CreateParameter("normal_map_texture", wl.normalMapTexture.ToString())); - cmd.Parameters.Add(_Database.CreateParameter("horizon_r", wl.horizon.X)); - cmd.Parameters.Add(_Database.CreateParameter("horizon_g", wl.horizon.Y)); - cmd.Parameters.Add(_Database.CreateParameter("horizon_b", wl.horizon.Z)); - cmd.Parameters.Add(_Database.CreateParameter("horizon_i", wl.horizon.W)); - cmd.Parameters.Add(_Database.CreateParameter("haze_horizon", wl.hazeHorizon)); - cmd.Parameters.Add(_Database.CreateParameter("blue_density_r", wl.blueDensity.X)); - cmd.Parameters.Add(_Database.CreateParameter("blue_density_g", wl.blueDensity.Y)); - cmd.Parameters.Add(_Database.CreateParameter("blue_density_b", wl.blueDensity.Z)); - cmd.Parameters.Add(_Database.CreateParameter("blue_density_i", wl.blueDensity.W)); - cmd.Parameters.Add(_Database.CreateParameter("haze_density", wl.hazeDensity)); - cmd.Parameters.Add(_Database.CreateParameter("density_multiplier", wl.densityMultiplier)); - cmd.Parameters.Add(_Database.CreateParameter("distance_multiplier", wl.distanceMultiplier)); - cmd.Parameters.Add(_Database.CreateParameter("max_altitude", wl.maxAltitude)); - cmd.Parameters.Add(_Database.CreateParameter("sun_moon_color_r", wl.sunMoonColor.X)); - cmd.Parameters.Add(_Database.CreateParameter("sun_moon_color_g", wl.sunMoonColor.Y)); - cmd.Parameters.Add(_Database.CreateParameter("sun_moon_color_b", wl.sunMoonColor.Z)); - cmd.Parameters.Add(_Database.CreateParameter("sun_moon_color_i", wl.sunMoonColor.W)); - cmd.Parameters.Add(_Database.CreateParameter("sun_moon_position", wl.sunMoonPosition)); - cmd.Parameters.Add(_Database.CreateParameter("ambient_r", wl.ambient.X)); - cmd.Parameters.Add(_Database.CreateParameter("ambient_g", wl.ambient.Y)); - cmd.Parameters.Add(_Database.CreateParameter("ambient_b", wl.ambient.Z)); - cmd.Parameters.Add(_Database.CreateParameter("ambient_i", wl.ambient.W)); - cmd.Parameters.Add(_Database.CreateParameter("east_angle", wl.eastAngle)); - cmd.Parameters.Add(_Database.CreateParameter("sun_glow_focus", wl.sunGlowFocus)); - cmd.Parameters.Add(_Database.CreateParameter("sun_glow_size", wl.sunGlowSize)); - cmd.Parameters.Add(_Database.CreateParameter("scene_gamma", wl.sceneGamma)); - cmd.Parameters.Add(_Database.CreateParameter("star_brightness", wl.starBrightness)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_color_r", wl.cloudColor.X)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_color_g", wl.cloudColor.Y)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_color_b", wl.cloudColor.Z)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_color_i", wl.cloudColor.W)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_x", wl.cloudXYDensity.X)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_y", wl.cloudXYDensity.Y)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_density", wl.cloudXYDensity.Z)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_coverage", wl.cloudCoverage)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_scale", wl.cloudScale)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_detail_x", wl.cloudDetailXYDensity.X)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_detail_y", wl.cloudDetailXYDensity.Y)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_detail_density", wl.cloudDetailXYDensity.Z)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_scroll_x", wl.cloudScrollX)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_scroll_x_lock", wl.cloudScrollXLock)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_scroll_y", wl.cloudScrollY)); - cmd.Parameters.Add(_Database.CreateParameter("cloud_scroll_y_lock", wl.cloudScrollYLock)); - cmd.Parameters.Add(_Database.CreateParameter("draw_classic_clouds", wl.drawClassicClouds)); - - cmd.ExecuteNonQuery(); - } - } - #region update - // } - // else - // { - // // sql update - // sql = @"UPDATE [OpenSim].[dbo].[regionwindlight] - // SET [region_id] = @region_id - // ,[water_color_r] = @water_color_r - // ,[water_color_g] = @water_color_g - // ,[water_color_b] = @water_color_b - // ,[water_fog_density_exponent] = @water_fog_density_exponent - // ,[underwater_fog_modifier] = @underwater_fog_modifier - // ,[reflection_wavelet_scale_1] = @reflection_wavelet_scale_1 - // ,[reflection_wavelet_scale_2] = @reflection_wavelet_scale_2 - // ,[reflection_wavelet_scale_3] = @reflection_wavelet_scale_3 - // ,[fresnel_scale] = @fresnel_scale - // ,[fresnel_offset] = @fresnel_offset - // ,[refract_scale_above] = @refract_scale_above - // ,[refract_scale_below] = @refract_scale_below - // ,[blur_multiplier] = @blur_multiplier - // ,[big_wave_direction_x] = @big_wave_direction_x - // ,[big_wave_direction_y] = @big_wave_direction_y - // ,[little_wave_direction_x] = @little_wave_direction_x - // ,[little_wave_direction_y] = @little_wave_direction_y - // ,[normal_map_texture] = @normal_map_texture - // ,[horizon_r] = @horizon_r - // ,[horizon_g] = @horizon_g - // ,[horizon_b] = @horizon_b - // ,[horizon_i] = @horizon_i - // ,[haze_horizon] = @haze_horizon - // ,[blue_density_r] = @blue_density_r - // ,[blue_density_g] = @blue_density_g - // ,[blue_density_b] = @blue_density_b - // ,[blue_density_i] = @blue_density_i - // ,[haze_density] = @haze_density - // ,[density_multiplier] = @density_multiplier - // ,[distance_multiplier] = @distance_multiplier - // ,[max_altitude] = @max_altitude - // ,[sun_moon_color_r] = @sun_moon_color_r - // ,[sun_moon_color_g] = @sun_moon_color_g - // ,[sun_moon_color_b] = @sun_moon_color_b - // ,[sun_moon_color_i] = @sun_moon_color_i - // ,[sun_moon_position] = @sun_moon_position - // ,[ambient_r] = @ambient_r - // ,[ambient_g] = @ambient_g - // ,[ambient_b] = @ambient_b - // ,[ambient_i] = @ambient_i - // ,[east_angle] = @east_angle - // ,[sun_glow_focus] = @sun_glow_focus - // ,[sun_glow_size] = @sun_glow_size - // ,[scene_gamma] = @scene_gamma - // ,[star_brightness] = @star_brightness - // ,[cloud_color_r] = @cloud_color_r - // ,[cloud_color_g] = @cloud_color_g - // ,[cloud_color_b] = @cloud_color_b - // ,[cloud_color_i] = @cloud_color_i - // ,[cloud_x] = @cloud_x - // ,[cloud_y] = @cloud_y - // ,[cloud_density] = @cloud_density - // ,[cloud_coverage] = @cloud_coverage - // ,[cloud_scale] = @cloud_scale - // ,[cloud_detail_x] = @cloud_detail_x - // ,[cloud_detail_y] = @cloud_detail_y - // ,[cloud_detail_density] = @cloud_detail_density - // ,[cloud_scroll_x] = @cloud_scroll_x - // ,[cloud_scroll_x_lock] = @cloud_scroll_x_lock - // ,[cloud_scroll_y] = @cloud_scroll_y - // ,[cloud_scroll_y_lock] = @cloud_scroll_y_lock - // ,[draw_classic_clouds] = @draw_classic_clouds - // WHERE region_id = @region_id"; - // using (SqlConnection conn = new SqlConnection(m_connectionString)) - // { - // conn.Open(); - // using (SqlCommand cmd = new SqlCommand(sql, conn)) - // { - // cmd.Parameters.AddWithValue("region_id", wl.regionID); - // cmd.Parameters.AddWithValue("water_color_r", wl.waterColor.X); - // cmd.Parameters.AddWithValue("water_color_g", wl.waterColor.Y); - // cmd.Parameters.AddWithValue("water_color_b", wl.waterColor.Z); - // cmd.Parameters.AddWithValue("water_fog_density_exponent", wl.waterFogDensityExponent); - // cmd.Parameters.AddWithValue("underwater_fog_modifier", wl.underwaterFogModifier); - // cmd.Parameters.AddWithValue("reflection_wavelet_scale_1", wl.reflectionWaveletScale.X); - // cmd.Parameters.AddWithValue("reflection_wavelet_scale_2", wl.reflectionWaveletScale.Y); - // cmd.Parameters.AddWithValue("reflection_wavelet_scale_3", wl.reflectionWaveletScale.Z); - // cmd.Parameters.AddWithValue("fresnel_scale", wl.fresnelScale); - // cmd.Parameters.AddWithValue("fresnel_offset", wl.fresnelOffset); - // cmd.Parameters.AddWithValue("refract_scale_above", wl.refractScaleAbove); - // cmd.Parameters.AddWithValue("refract_scale_below", wl.refractScaleBelow); - // cmd.Parameters.AddWithValue("blur_multiplier", wl.blurMultiplier); - // cmd.Parameters.AddWithValue("big_wave_direction_x", wl.bigWaveDirection.X); - // cmd.Parameters.AddWithValue("big_wave_direction_y", wl.bigWaveDirection.Y); - // cmd.Parameters.AddWithValue("little_wave_direction_x", wl.littleWaveDirection.X); - // cmd.Parameters.AddWithValue("little_wave_direction_y", wl.littleWaveDirection.Y); - // cmd.Parameters.AddWithValue("normal_map_texture", wl.normalMapTexture); - // cmd.Parameters.AddWithValue("horizon_r", wl.horizon.X); - // cmd.Parameters.AddWithValue("horizon_g", wl.horizon.Y); - // cmd.Parameters.AddWithValue("horizon_b", wl.horizon.Z); - // cmd.Parameters.AddWithValue("horizon_i", wl.horizon.W); - // cmd.Parameters.AddWithValue("haze_horizon", wl.hazeHorizon); - // cmd.Parameters.AddWithValue("blue_density_r", wl.blueDensity.X); - // cmd.Parameters.AddWithValue("blue_density_g", wl.blueDensity.Y); - // cmd.Parameters.AddWithValue("blue_density_b", wl.blueDensity.Z); - // cmd.Parameters.AddWithValue("blue_density_i", wl.blueDensity.W); - // cmd.Parameters.AddWithValue("haze_density", wl.hazeDensity); - // cmd.Parameters.AddWithValue("density_multiplier", wl.densityMultiplier); - // cmd.Parameters.AddWithValue("distance_multiplier", wl.distanceMultiplier); - // cmd.Parameters.AddWithValue("max_altitude", wl.maxAltitude); - // cmd.Parameters.AddWithValue("sun_moon_color_r", wl.sunMoonColor.X); - // cmd.Parameters.AddWithValue("sun_moon_color_g", wl.sunMoonColor.Y); - // cmd.Parameters.AddWithValue("sun_moon_color_b", wl.sunMoonColor.Z); - // cmd.Parameters.AddWithValue("sun_moon_color_i", wl.sunMoonColor.W); - // cmd.Parameters.AddWithValue("sun_moon_position", wl.sunMoonPosition); - // cmd.Parameters.AddWithValue("ambient_r", wl.ambient.X); - // cmd.Parameters.AddWithValue("ambient_g", wl.ambient.Y); - // cmd.Parameters.AddWithValue("ambient_b", wl.ambient.Z); - // cmd.Parameters.AddWithValue("ambient_i", wl.ambient.W); - // cmd.Parameters.AddWithValue("east_angle", wl.eastAngle); - // cmd.Parameters.AddWithValue("sun_glow_focus", wl.sunGlowFocus); - // cmd.Parameters.AddWithValue("sun_glow_size", wl.sunGlowSize); - // cmd.Parameters.AddWithValue("scene_gamma", wl.sceneGamma); - // cmd.Parameters.AddWithValue("star_brightness", wl.starBrightness); - // cmd.Parameters.AddWithValue("cloud_color_r", wl.cloudColor.X); - // cmd.Parameters.AddWithValue("cloud_color_g", wl.cloudColor.Y); - // cmd.Parameters.AddWithValue("cloud_color_b", wl.cloudColor.Z); - // cmd.Parameters.AddWithValue("cloud_color_i", wl.cloudColor.W); - // cmd.Parameters.AddWithValue("cloud_x", wl.cloudXYDensity.X); - // cmd.Parameters.AddWithValue("cloud_y", wl.cloudXYDensity.Y); - // cmd.Parameters.AddWithValue("cloud_density", wl.cloudXYDensity.Z); - // cmd.Parameters.AddWithValue("cloud_coverage", wl.cloudCoverage); - // cmd.Parameters.AddWithValue("cloud_scale", wl.cloudScale); - // cmd.Parameters.AddWithValue("cloud_detail_x", wl.cloudDetailXYDensity.X); - // cmd.Parameters.AddWithValue("cloud_detail_y", wl.cloudDetailXYDensity.Y); - // cmd.Parameters.AddWithValue("cloud_detail_density", wl.cloudDetailXYDensity.Z); - // cmd.Parameters.AddWithValue("cloud_scroll_x", wl.cloudScrollX); - // cmd.Parameters.AddWithValue("cloud_scroll_x_lock", wl.cloudScrollXLock); - // cmd.Parameters.AddWithValue("cloud_scroll_y", wl.cloudScrollY); - // cmd.Parameters.AddWithValue("cloud_scroll_y_lock", wl.cloudScrollYLock); - // cmd.Parameters.AddWithValue("draw_classic_clouds", wl.drawClassicClouds); - - // cmd.ExecuteNonQuery(); - // } - // } - // } - #endregion - } #region Environment Settings public string LoadRegionEnvironmentSettings(UUID regionUUID) diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs index 3b9e46a884..c51e1c7464 100644 --- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs +++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs @@ -429,75 +429,6 @@ namespace OpenSim.Data.SQLite } } - /// - /// Load windlight settings from region storage - /// - /// RegionID - public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) - { - RegionLightShareData wl = null; - - lock (ds) - { - DataTable windlightTable = ds.Tables["regionwindlight"]; - DataRow windlightRow = windlightTable.Rows.Find(regionUUID.ToString()); - if (windlightRow == null) - { - wl = new RegionLightShareData(); - wl.regionID = regionUUID; - StoreRegionWindlightSettings(wl); - return wl; - } - wl = buildRegionWindlight(windlightRow); - return wl; - } - } - - /// - /// Remove windlight settings from region storage - /// - /// RegionID - public void RemoveRegionWindlightSettings(UUID regionID) - { - lock (ds) - { - DataTable windlightTable = ds.Tables["regionwindlight"]; - DataRow windlightRow = windlightTable.Rows.Find(regionID.ToString()); - - if (windlightRow != null) - { - windlightRow.Delete(); - } - } - Commit(); - } - - /// - /// Adds an windlight into region storage - /// - /// RegionLightShareData - public void StoreRegionWindlightSettings(RegionLightShareData wl) - { - lock (ds) - { - DataTable windlightTable = ds.Tables["regionwindlight"]; - DataRow windlightRow = windlightTable.Rows.Find(wl.regionID.ToString()); - - if (windlightRow == null) - { - windlightRow = windlightTable.NewRow(); - fillRegionWindlightRow(windlightRow, wl); - windlightTable.Rows.Add(windlightRow); - } - else - { - fillRegionWindlightRow(windlightRow, wl); - } - - Commit(); - } - } - #region Region Environment Settings public string LoadRegionEnvironmentSettings(UUID regionUUID) { @@ -2038,86 +1969,12 @@ namespace OpenSim.Data.SQLite newSettings.ParcelImageID = new UUID((String)row["parcel_tile_ID"]); newSettings.GodBlockSearch = Convert.ToBoolean(row["block_search"]); newSettings.Casino = Convert.ToBoolean(row["casino"]); + if (!(row["cacheID"] is System.DBNull)) + newSettings.CacheID = new UUID((String)row["cacheID"]); + return newSettings; } - /// - /// Build a windlight entry from the persisted data. - /// - /// - /// RegionLightShareData - private RegionLightShareData buildRegionWindlight(DataRow row) - { - RegionLightShareData windlight = new RegionLightShareData(); - - windlight.regionID = new UUID((string)row["region_id"]); - windlight.waterColor.X = Convert.ToSingle(row["water_color_r"]); - windlight.waterColor.Y = Convert.ToSingle(row["water_color_g"]); - windlight.waterColor.Z = Convert.ToSingle(row["water_color_b"]); - //windlight.waterColor.W = Convert.ToSingle(row["water_color_i"]); //not implemented - windlight.waterFogDensityExponent = Convert.ToSingle(row["water_fog_density_exponent"]); - windlight.underwaterFogModifier = Convert.ToSingle(row["underwater_fog_modifier"]); - windlight.reflectionWaveletScale.X = Convert.ToSingle(row["reflection_wavelet_scale_1"]); - windlight.reflectionWaveletScale.Y = Convert.ToSingle(row["reflection_wavelet_scale_2"]); - windlight.reflectionWaveletScale.Z = Convert.ToSingle(row["reflection_wavelet_scale_3"]); - windlight.fresnelScale = Convert.ToSingle(row["fresnel_scale"]); - windlight.fresnelOffset = Convert.ToSingle(row["fresnel_offset"]); - windlight.refractScaleAbove = Convert.ToSingle(row["refract_scale_above"]); - windlight.refractScaleBelow = Convert.ToSingle(row["refract_scale_below"]); - windlight.blurMultiplier = Convert.ToSingle(row["blur_multiplier"]); - windlight.bigWaveDirection.X = Convert.ToSingle(row["big_wave_direction_x"]); - windlight.bigWaveDirection.Y = Convert.ToSingle(row["big_wave_direction_y"]); - windlight.littleWaveDirection.X = Convert.ToSingle(row["little_wave_direction_x"]); - windlight.littleWaveDirection.Y = Convert.ToSingle(row["little_wave_direction_y"]); - windlight.normalMapTexture = new UUID((string)row["normal_map_texture"]); - windlight.horizon.X = Convert.ToSingle(row["horizon_r"]); - windlight.horizon.Y = Convert.ToSingle(row["horizon_g"]); - windlight.horizon.Z = Convert.ToSingle(row["horizon_b"]); - windlight.horizon.W = Convert.ToSingle(row["horizon_i"]); - windlight.hazeHorizon = Convert.ToSingle(row["haze_horizon"]); - windlight.blueDensity.X = Convert.ToSingle(row["blue_density_r"]); - windlight.blueDensity.Y = Convert.ToSingle(row["blue_density_g"]); - windlight.blueDensity.Z = Convert.ToSingle(row["blue_density_b"]); - windlight.blueDensity.W = Convert.ToSingle(row["blue_density_i"]); - windlight.hazeDensity = Convert.ToSingle(row["haze_density"]); - windlight.densityMultiplier = Convert.ToSingle(row["density_multiplier"]); - windlight.distanceMultiplier = Convert.ToSingle(row["distance_multiplier"]); - windlight.maxAltitude = Convert.ToUInt16(row["max_altitude"]); - windlight.sunMoonColor.X = Convert.ToSingle(row["sun_moon_color_r"]); - windlight.sunMoonColor.Y = Convert.ToSingle(row["sun_moon_color_g"]); - windlight.sunMoonColor.Z = Convert.ToSingle(row["sun_moon_color_b"]); - windlight.sunMoonColor.W = Convert.ToSingle(row["sun_moon_color_i"]); - windlight.sunMoonPosition = Convert.ToSingle(row["sun_moon_position"]); - windlight.ambient.X = Convert.ToSingle(row["ambient_r"]); - windlight.ambient.Y = Convert.ToSingle(row["ambient_g"]); - windlight.ambient.Z = Convert.ToSingle(row["ambient_b"]); - windlight.ambient.W = Convert.ToSingle(row["ambient_i"]); - windlight.eastAngle = Convert.ToSingle(row["east_angle"]); - windlight.sunGlowFocus = Convert.ToSingle(row["sun_glow_focus"]); - windlight.sunGlowSize = Convert.ToSingle(row["sun_glow_size"]); - windlight.sceneGamma = Convert.ToSingle(row["scene_gamma"]); - windlight.starBrightness = Convert.ToSingle(row["star_brightness"]); - windlight.cloudColor.X = Convert.ToSingle(row["cloud_color_r"]); - windlight.cloudColor.Y = Convert.ToSingle(row["cloud_color_g"]); - windlight.cloudColor.Z = Convert.ToSingle(row["cloud_color_b"]); - windlight.cloudColor.W = Convert.ToSingle(row["cloud_color_i"]); - windlight.cloudXYDensity.X = Convert.ToSingle(row["cloud_x"]); - windlight.cloudXYDensity.Y = Convert.ToSingle(row["cloud_y"]); - windlight.cloudXYDensity.Z = Convert.ToSingle(row["cloud_density"]); - windlight.cloudCoverage = Convert.ToSingle(row["cloud_coverage"]); - windlight.cloudScale = Convert.ToSingle(row["cloud_scale"]); - windlight.cloudDetailXYDensity.X = Convert.ToSingle(row["cloud_detail_x"]); - windlight.cloudDetailXYDensity.Y = Convert.ToSingle(row["cloud_detail_y"]); - windlight.cloudDetailXYDensity.Z = Convert.ToSingle(row["cloud_detail_density"]); - windlight.cloudScrollX = Convert.ToSingle(row["cloud_scroll_x"]); - windlight.cloudScrollXLock = Convert.ToBoolean(row["cloud_scroll_x_lock"]); - windlight.cloudScrollY = Convert.ToSingle(row["cloud_scroll_y"]); - windlight.cloudScrollYLock = Convert.ToBoolean(row["cloud_scroll_y_lock"]); - windlight.drawClassicClouds = Convert.ToBoolean(row["draw_classic_clouds"]); - - return windlight; - } - /// /// Build a land access entry from the persisted data. /// @@ -2461,79 +2318,6 @@ namespace OpenSim.Data.SQLite row["cacheID"] = settings.CacheID; } - /// - /// - /// - /// - /// - private static void fillRegionWindlightRow(DataRow row, RegionLightShareData windlight) - { - row["region_id"] = windlight.regionID.ToString(); - row["water_color_r"] = windlight.waterColor.X; - row["water_color_g"] = windlight.waterColor.Y; - row["water_color_b"] = windlight.waterColor.Z; - row["water_color_i"] = 1; //windlight.waterColor.W; //not implemented - row["water_fog_density_exponent"] = windlight.waterFogDensityExponent; - row["underwater_fog_modifier"] = windlight.underwaterFogModifier; - row["reflection_wavelet_scale_1"] = windlight.reflectionWaveletScale.X; - row["reflection_wavelet_scale_2"] = windlight.reflectionWaveletScale.Y; - row["reflection_wavelet_scale_3"] = windlight.reflectionWaveletScale.Z; - row["fresnel_scale"] = windlight.fresnelScale; - row["fresnel_offset"] = windlight.fresnelOffset; - row["refract_scale_above"] = windlight.refractScaleAbove; - row["refract_scale_below"] = windlight.refractScaleBelow; - row["blur_multiplier"] = windlight.blurMultiplier; - row["big_wave_direction_x"] = windlight.bigWaveDirection.X; - row["big_wave_direction_y"] = windlight.bigWaveDirection.Y; - row["little_wave_direction_x"] = windlight.littleWaveDirection.X; - row["little_wave_direction_y"] = windlight.littleWaveDirection.Y; - row["normal_map_texture"] = windlight.normalMapTexture.ToString(); - row["horizon_r"] = windlight.horizon.X; - row["horizon_g"] = windlight.horizon.Y; - row["horizon_b"] = windlight.horizon.Z; - row["horizon_i"] = windlight.horizon.W; - row["haze_horizon"] = windlight.hazeHorizon; - row["blue_density_r"] = windlight.blueDensity.X; - row["blue_density_g"] = windlight.blueDensity.Y; - row["blue_density_b"] = windlight.blueDensity.Z; - row["blue_density_i"] = windlight.blueDensity.W; - row["haze_density"] = windlight.hazeDensity; - row["density_multiplier"] = windlight.densityMultiplier; - row["distance_multiplier"] = windlight.distanceMultiplier; - row["max_altitude"] = windlight.maxAltitude; - row["sun_moon_color_r"] = windlight.sunMoonColor.X; - row["sun_moon_color_g"] = windlight.sunMoonColor.Y; - row["sun_moon_color_b"] = windlight.sunMoonColor.Z; - row["sun_moon_color_i"] = windlight.sunMoonColor.W; - row["sun_moon_position"] = windlight.sunMoonPosition; - row["ambient_r"] = windlight.ambient.X; - row["ambient_g"] = windlight.ambient.Y; - row["ambient_b"] = windlight.ambient.Z; - row["ambient_i"] = windlight.ambient.W; - row["east_angle"] = windlight.eastAngle; - row["sun_glow_focus"] = windlight.sunGlowFocus; - row["sun_glow_size"] = windlight.sunGlowSize; - row["scene_gamma"] = windlight.sceneGamma; - row["star_brightness"] = windlight.starBrightness; - row["cloud_color_r"] = windlight.cloudColor.X; - row["cloud_color_g"] = windlight.cloudColor.Y; - row["cloud_color_b"] = windlight.cloudColor.Z; - row["cloud_color_i"] = windlight.cloudColor.W; - row["cloud_x"] = windlight.cloudXYDensity.X; - row["cloud_y"] = windlight.cloudXYDensity.Y; - row["cloud_density"] = windlight.cloudXYDensity.Z; - row["cloud_coverage"] = windlight.cloudCoverage; - row["cloud_scale"] = windlight.cloudScale; - row["cloud_detail_x"] = windlight.cloudDetailXYDensity.X; - row["cloud_detail_y"] = windlight.cloudDetailXYDensity.Y; - row["cloud_detail_density"] = windlight.cloudDetailXYDensity.Z; - row["cloud_scroll_x"] = windlight.cloudScrollX; - row["cloud_scroll_x_lock"] = windlight.cloudScrollXLock; - row["cloud_scroll_y"] = windlight.cloudScrollY; - row["cloud_scroll_y_lock"] = windlight.cloudScrollYLock; - row["draw_classic_clouds"] = windlight.drawClassicClouds; - } - /// /// /// diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index d7f1d0ef1e..5af10c12d5 100755 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs @@ -40,69 +40,12 @@ using OpenMetaverse.StructuredData; namespace OpenSim.Framework { - [Serializable] - public class RegionLightShareData : ICloneable - { - public bool valid = false; - public UUID regionID = UUID.Zero; - public Vector3 waterColor = new Vector3(4.0f,38.0f,64.0f); - public float waterFogDensityExponent = 4.0f; - public float underwaterFogModifier = 0.25f; - public Vector3 reflectionWaveletScale = new Vector3(2.0f,2.0f,2.0f); - public float fresnelScale = 0.40f; - public float fresnelOffset = 0.50f; - public float refractScaleAbove = 0.03f; - public float refractScaleBelow = 0.20f; - public float blurMultiplier = 0.040f; - public Vector2 bigWaveDirection = new Vector2(1.05f,-0.42f); - public Vector2 littleWaveDirection = new Vector2(1.11f,-1.16f); - public UUID normalMapTexture = new UUID("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); - public Vector4 horizon = new Vector4(0.25f, 0.25f, 0.32f, 0.32f); - public float hazeHorizon = 0.19f; - public Vector4 blueDensity = new Vector4(0.12f, 0.22f, 0.38f, 0.38f); - public float hazeDensity = 0.70f; - public float densityMultiplier = 0.18f; - public float distanceMultiplier = 0.8f; - public UInt16 maxAltitude = 1605; - public Vector4 sunMoonColor = new Vector4(0.24f, 0.26f, 0.30f, 0.30f); - public float sunMoonPosition = 0.317f; - public Vector4 ambient = new Vector4(0.35f,0.35f,0.35f,0.35f); - public float eastAngle = 0.0f; - public float sunGlowFocus = 0.10f; - public float sunGlowSize = 1.75f; - public float sceneGamma = 1.0f; - public float starBrightness = 0.0f; - public Vector4 cloudColor = new Vector4(0.41f, 0.41f, 0.41f, 0.41f); - public Vector3 cloudXYDensity = new Vector3(1.00f, 0.53f, 1.00f); - public float cloudCoverage = 0.27f; - public float cloudScale = 0.42f; - public Vector3 cloudDetailXYDensity = new Vector3(1.00f, 0.53f, 0.12f); - public float cloudScrollX = 0.20f; - public bool cloudScrollXLock = false; - public float cloudScrollY = 0.01f; - public bool cloudScrollYLock = false; - public bool drawClassicClouds = true; - - public delegate void SaveDelegate(RegionLightShareData wl); - public event SaveDelegate OnSave; - public void Save() - { - if (OnSave != null) - OnSave(this); - } - public object Clone() - { - return this.MemberwiseClone(); // call clone method - } - - } public class RegionInfo { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private static readonly string LogHeader = "[REGION INFO]"; - public bool commFailTF = false; public ConfigurationMember configMember; public string DataStore = String.Empty; @@ -134,7 +77,6 @@ namespace OpenSim.Framework private int m_maxPrimsPerUser = -1; private int m_linksetCapacity = 0; private string m_regionType = String.Empty; - private RegionLightShareData m_windlight = new RegionLightShareData(); protected uint m_httpPort; protected string m_serverURI; protected string m_regionName = String.Empty; @@ -222,7 +164,6 @@ namespace OpenSim.Framework source.Save(filename); RegionFile = filename; - return; } @@ -302,21 +243,6 @@ namespace OpenSim.Framework set { m_regionSettings = value; } } - public RegionLightShareData WindlightSettings - { - get - { - if (m_windlight == null) - { - m_windlight = new RegionLightShareData(); - } - - return m_windlight; - } - - set { m_windlight = value; } - } - public float NonphysPrimMin { get { return m_nonphysPrimMin; } diff --git a/OpenSim/Framework/ViewerEnviroment.cs b/OpenSim/Framework/ViewerEnviroment.cs new file mode 100644 index 0000000000..8c6e785538 --- /dev/null +++ b/OpenSim/Framework/ViewerEnviroment.cs @@ -0,0 +1,1233 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using OpenMetaverse; +using OpenMetaverse.StructuredData; + +namespace OpenSim.Framework +{ + // legacy lightshare + public class RegionLightShareData + { + public Vector3 waterColor = new Vector3(4.0f, 38.0f, 64.0f); + public float waterFogDensityExponent = 4.0f; + public float underwaterFogModifier = 0.25f; + public Vector3 reflectionWaveletScale = new Vector3(2.0f, 2.0f, 2.0f); + public float fresnelScale = 0.40f; + public float fresnelOffset = 0.50f; + public float refractScaleAbove = 0.03f; + public float refractScaleBelow = 0.20f; + public float blurMultiplier = 0.040f; + public Vector2 bigWaveDirection = new Vector2(1.05f, -0.42f); + public Vector2 littleWaveDirection = new Vector2(1.11f, -1.16f); + public UUID normalMapTexture = new UUID("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); + public Vector4 horizon = new Vector4(0.25f, 0.25f, 0.32f, 0.32f); + public float hazeHorizon = 0.19f; + public Vector4 blueDensity = new Vector4(0.12f, 0.22f, 0.38f, 0.38f); + public float hazeDensity = 0.70f; + public float densityMultiplier = 0.18f; + public float distanceMultiplier = 0.8f; + public UInt16 maxAltitude = 1605; + public Vector4 sunMoonColor = new Vector4(0.24f, 0.26f, 0.30f, 0.30f); + public float sunMoonPosition = 0.317f; + public Vector4 ambient = new Vector4(0.35f, 0.35f, 0.35f, 0.35f); + public float eastAngle = 0.0f; + public float sunGlowFocus = 0.10f; + public float sunGlowSize = 1.75f; + public float sceneGamma = 1.0f; + public float starBrightness = 0.0f; + public Vector4 cloudColor = new Vector4(0.41f, 0.41f, 0.41f, 0.41f); + public Vector3 cloudXYDensity = new Vector3(1.00f, 0.53f, 1.00f); + public float cloudCoverage = 0.27f; + public float cloudScale = 0.42f; + public Vector3 cloudDetailXYDensity = new Vector3(1.00f, 0.53f, 0.12f); + public float cloudScrollX = 0.20f; + public bool cloudScrollXLock = false; + public float cloudScrollY = 0.01f; + public bool cloudScrollYLock = false; + public bool drawClassicClouds = true; + } + + public class SkyData + { + public struct AbsCoefData + { + public float constant_term; + public float exp_scale; + public float exp_term; + public float linear_term; + public float width; + + public AbsCoefData(float w, float expt, float exps, float lin, float cons) + { + constant_term = cons; + exp_scale = exps; + exp_term = expt; + linear_term = lin; + width = w; + } + + public OSDMap ToOSD() + { + OSDMap map = new OSDMap(); + map["constant_term"] = constant_term; + map["exp_scale"] = exp_scale; + map["exp_term"] = exp_term; + map["linear_term"] = linear_term; + map["width"] = width; + return map; + } + + public void FromOSD(OSDMap map) + { + constant_term = map["constant_term"]; + exp_scale = map["exp_scale"]; + exp_term = map["exp_term"]; + linear_term = map["linear_term"]; + width = map["width"]; + } + } + + public struct mCoefData + { + public float anisotropy; + public float constant_term; + public float exp_scale; + public float exp_term; + public float linear_term; + public float width; + + public mCoefData(float w, float expt, float exps, float lin, float cons, float ani) + { + anisotropy = ani; + constant_term = cons; + exp_scale = exps; + exp_term = expt; + linear_term = lin; + width = w; + } + + public OSDMap ToOSD() + { + OSDMap map = new OSDMap(); + map["anisotropy"] = anisotropy; + map["constant_term"] = constant_term; + map["exp_scale"] = exp_scale; + map["exp_term"] = exp_term; + map["linear_term"] = linear_term; + map["width"] = width; + return map; + } + + public void FromOSD(OSDMap map) + { + anisotropy = map["anisotropy"]; + constant_term = map["constant_term"]; + exp_scale = map["exp_scale"]; + exp_term = map["exp_term"]; + linear_term = map["linear_term"]; + width = map["width"]; + } + } + //AbsCoefData(float w, float expt, float exps, float lin, float cons) + public AbsCoefData abscoefA = new AbsCoefData(25000f, 0, 0, 0, 0); + public AbsCoefData abscoefB = new AbsCoefData(0, 0, 0, -6.6666667e-5f, 1f); + public AbsCoefData rayleigh_config = new AbsCoefData(0, 1, -1.25e-4f, 0, 0); + + //mCoefData(float w, float expt, float exps, float lin, float cons, float ani) + public mCoefData mieconf = new mCoefData(0, 1f, -8.333333e-4f, 0, 0, 0.8f); + + UUID bloom_id = new UUID("3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3bef"); + UUID cloud_id = new UUID("1dc1368f-e8fe-f02d-a08d-9d9f11c1af6b"); + UUID halo_id = new UUID("12149143-f599-91a7-77ac-b52a3c0f59cd"); + UUID moon_id = new UUID("ec4b9f0b-d008-45c6-96a4-01dd947ac621"); + UUID rainbow_id = new UUID("11b4c57c-56b3-04ed-1f82-2004363882e4"); + UUID sun_id = UUID.Zero; + + public Vector3 ambient = new Vector3(0.25f, 0.25f, 0.25f); //? + public Vector3 blue_density = new Vector3(0.2447f, 0.4487f, 0.76f); + public Vector3 blue_horizon = new Vector3(0.4954f, 0.4954f, 0.64f); + public Vector3 cloud_color = new Vector3(0.41f, 0.41f, 0.41f); + public Vector3 cloud_pos_density1 = new Vector3(1, 0.5260f, 1); + public Vector3 cloud_pos_density2 = new Vector3(1, 0.5260f, 1); + public float cloud_scale = 0.42f; + public Vector2 cloud_scroll_rate = new Vector2(0.2f, 0.011f); + public float cloud_shadow = 0.27f; + public float density_multiplier = 0.00018f; + public float distance_multiplier = 0.8f; + public float gamma = 1; + public Vector3 glow = new Vector3(5, 0.0010f, -0.48f); + public float haze_density = 0.7f; + public float haze_horizon = 0.19f; + public float max_y = 1605; + public float star_brightness = 0f; + + public Vector4 sunlight_color = new Vector4(0.7342f, 0.7815f, 0.9f, 0.3f); + public string Name = "Default"; + + public float cloud_variance = 0; + public float dome_offset = 0.96f; + public float dome_radius = 15000f; + public float droplet_radius = 800.0f; + public float ice_level = 0; + + public float moisture_level = 0; + public float sky_bottom_radius = 6360; + public float sky_top_radius = 6420; + + public float sun_arc_radians = 0.00045f; + public Quaternion sun_rotation = new Quaternion(0, -0.3824995f, 0, 0.9239557f); + public float sun_scale = 1; + + public float moon_brightness = 0.5f; + public Quaternion moon_rotation = new Quaternion(0, 0.9239557f, 0, 0.3824995f); + public float moon_scale = 1; + public float planet_radius = 6360f; + + public void FromWLOSD(string name, OSD osd) + { + Vector4 v4tmp; + OSDMap map = osd as OSDMap; + + v4tmp = map["ambient"]; + ambient = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z); + v4tmp = map["blue_density"]; + blue_density = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z); + v4tmp = map["blue_horizon"]; + blue_horizon = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z); + v4tmp = map["cloud_color"]; + cloud_color = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z); + v4tmp = map["cloud_pos_density1"]; + cloud_pos_density1 = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z); + v4tmp = map["cloud_pos_density2"]; + cloud_pos_density2 = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z); + v4tmp = map["cloud_scale"]; + cloud_scale = v4tmp.X; + cloud_scroll_rate = map["cloud_scroll_rate"]; + cloud_scroll_rate.X -= 10f; + cloud_scroll_rate.Y -= 10f; + v4tmp = map["cloud_shadow"]; + cloud_shadow = v4tmp.X; + v4tmp = map["density_multiplier"]; + density_multiplier = v4tmp.X; + v4tmp = map["distance_multiplier"]; + distance_multiplier = v4tmp.X; + + Vector2 v2tmp = map["enable_cloud_scroll"]; + if (v2tmp.X == 0) + cloud_scroll_rate.X = 0; + if (v2tmp.Y == 0) + cloud_scroll_rate.Y = 0; + v4tmp = map["gamma"]; + gamma = v4tmp.X; + v4tmp = map["glow"]; + glow = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z); + v4tmp = map["haze_density"]; + haze_density = v4tmp.X; + v4tmp = map["haze_horizon"]; + haze_horizon = v4tmp.X; + //lightnorm = map["lightnorm"]; + v4tmp = map["max_y"]; + max_y = v4tmp.X; + star_brightness = map["star_brightness"] * 250.0f; + + sunlight_color = map["sunlight_color"]; + + ViewerEnviroment.convertFromAngles(this, map["sun_angle"], map["east_angle"]); + Name = name; + } + + public OSD ToWLOSD() + { + OSDMap map = new OSDMap(); + + float sun_angle; + float east_angle; + Vector4 lightnorm; + ViewerEnviroment.convertToAngles(this, out sun_angle, out east_angle, out lightnorm); + + map["ambient"] = new Vector4(ambient.X, ambient.Y, ambient.Z, 1); + map["blue_density"] = new Vector4(blue_density.X, blue_density.Y, blue_density.Z, 1); + map["blue_horizon"] = new Vector4(blue_horizon.X, blue_horizon.Y, blue_horizon.Z, 1); + map["cloud_color"] = new Vector4(cloud_color.X, cloud_color.Y, cloud_color.Z, 1);; + map["cloud_pos_density1"] = new Vector4(cloud_pos_density1.X, cloud_pos_density1.Y, cloud_pos_density1.Z, 1); + map["cloud_pos_density2"] = new Vector4(cloud_pos_density2.X, cloud_pos_density2.Y, cloud_pos_density2.Z, 1); + map["cloud_scale"] = new Vector4(cloud_scale, 0, 0, 1); + map["cloud_scroll_rate"] = new Vector2(cloud_scroll_rate.X + 10f, cloud_scroll_rate.Y + 10f); + map["cloud_shadow"] = new Vector4(cloud_shadow, 0, 0, 1); + map["density_multiplier"] = new Vector4(density_multiplier, 0, 0, 1); + map["distance_multiplier"] = new Vector4(distance_multiplier, 0, 0, 1); + map["east_angle"] = east_angle; + map["enable_cloud_scroll"] = new OSDArray { cloud_scroll_rate.X != 0, cloud_scroll_rate.Y != 0 }; + map["gamma"] = new Vector4(gamma, 0, 0, 1); + map["glow"] = new Vector4(glow.X, glow.Y, glow.Z, 1); + map["haze_density"] = new Vector4(haze_density, 0, 0, 1); + map["haze_horizon"] = new Vector4(haze_horizon, 0, 0, 1); + map["lightnorm"] = lightnorm; + map["max_y"] = new Vector4(max_y, 0, 0, 1); + map["name"] = Name; + map["star_brightness"] = star_brightness / 250.0f; + map["sun_angle"] = sun_angle; + map["sunlight_color"] = sunlight_color; + + return map; + } + + public OSD ToOSD() + { + OSDMap map = new OSDMap(64); + + OSDArray abscfg = new OSDArray(2); + abscfg.Add(abscoefA.ToOSD()); + abscfg.Add(abscoefB.ToOSD()); + map["absorption_config"] = abscfg; + + map["bloom_id"] = bloom_id; + map["cloud_color"] = cloud_color; + map["cloud_id"] = cloud_id; + map["cloud_pos_density1"] = cloud_pos_density1; + map["cloud_pos_density2"] = cloud_pos_density2; + map["cloud_scale"] = cloud_scale; + map["cloud_scroll_rate"] = cloud_scroll_rate; + map["cloud_shadow"] = cloud_shadow; + map["cloud_variance"] = cloud_variance; + map["dome_offset"] = dome_offset; + map["dome_radius"] = dome_radius; + map["droplet_radius"] = droplet_radius; + map["gamma"] = gamma; + map["glow"] = glow; + map["halo_id"] = halo_id; + map["ice_level"] = ice_level; + + OSDMap lhaze = new OSDMap(); + lhaze["ambient"] = ambient; + lhaze["blue_density"] = blue_density; + lhaze["blue_horizon"] = blue_horizon; + lhaze["density_multiplier"] = density_multiplier; + lhaze["distance_multiplier"] = distance_multiplier; + lhaze["haze_density"] = haze_density; + lhaze["haze_horizon"] = haze_horizon; + map["legacy_haze"] = lhaze; + + map["max_y"] = max_y; + + OSDArray miecfg = new OSDArray(); + miecfg.Add(mieconf.ToOSD()); + map["mie_config"] = miecfg; + + map["moisture_level"] = moisture_level; + map["moon_brightness"] = moon_brightness; + map["moon_id"] = moon_id; + map["moon_rotation"] = moon_rotation; + map["moon_scale"] = moon_scale; + map["planet_radius"] = planet_radius; + map["rainbow_id"] = rainbow_id; + + OSDArray rayl = new OSDArray(); + rayl.Add(rayleigh_config.ToOSD()); + map["rayleigh_config"] = rayl; + + map["sky_bottom_radius"] = sky_bottom_radius; + map["sky_top_radius"] = sky_top_radius; + map["star_brightness"] = star_brightness; + + map["sun_arc_radians"] = sun_arc_radians; + map["sun_id"] = sun_id; + map["sun_rotation"] = sun_rotation; + map["sun_scale"] = sun_scale; + map["sunlight_color"] = sunlight_color; + + map["type"] = "sky"; + return map; + } + + public void FromOSD(string name, OSDMap map) + { + OSDArray tmpArray; + OSD otmp; + if (map.TryGetValue("absorption_config",out otmp) && otmp is OSDArray) + { + tmpArray = otmp as OSDArray; + if (tmpArray.Count > 0) + { + abscoefA.FromOSD(tmpArray[0] as OSDMap); + if (tmpArray.Count > 1) + abscoefA.FromOSD(tmpArray[1] as OSDMap); + } + } + if (map.TryGetValue("bloom_id", out otmp)) + bloom_id = otmp; + if (map.TryGetValue("cloud_color", out otmp)) + cloud_color = otmp; + if (map.TryGetValue("cloud_id", out otmp)) + cloud_id = otmp; + if (map.TryGetValue("cloud_pos_density1", out otmp)) + cloud_pos_density1 = otmp; + if (map.TryGetValue("cloud_pos_density2", out otmp)) + cloud_pos_density2 = otmp; + if (map.TryGetValue("cloud_scale", out otmp)) + cloud_scale = otmp; + if (map.TryGetValue("cloud_scroll_rate", out otmp)) + cloud_scroll_rate = otmp; + if (map.TryGetValue("cloud_shadow", out otmp)) + cloud_shadow = otmp; + if (map.TryGetValue("cloud_variance", out otmp)) + cloud_variance = otmp; + if (map.TryGetValue("dome_offset", out otmp)) + dome_offset = otmp; + if (map.TryGetValue("dome_radius", out otmp)) + dome_radius = otmp; + if (map.TryGetValue("droplet_radius", out otmp)) + droplet_radius = otmp; + if (map.TryGetValue("gamma", out otmp)) + gamma = otmp; + if (map.TryGetValue("glow", out otmp)) + glow = otmp; + if (map.TryGetValue("halo_id", out otmp)) + halo_id = otmp; + if (map.TryGetValue("ice_level", out otmp)) + halo_id = otmp; + + if (map.TryGetValue("legacy_haze", out OSD tmp) && tmp is OSDMap) + { + OSDMap lHaze = tmp as OSDMap; + if (lHaze.TryGetValue("ambient", out otmp)) + ambient = otmp; + if (lHaze.TryGetValue("blue_density", out otmp)) + blue_density = otmp; + if (lHaze.TryGetValue("blue_horizon", out otmp)) + blue_horizon = otmp; + if (lHaze.TryGetValue("density_multiplier", out otmp)) + density_multiplier = otmp; + if (lHaze.TryGetValue("distance_multiplier", out otmp)) + distance_multiplier = otmp; + if (lHaze.TryGetValue("haze_density", out otmp)) + haze_density = otmp; + if (lHaze.TryGetValue("haze_horizon", out otmp)) + haze_horizon = otmp; + } + + if (map.TryGetValue("max_y", out otmp)) + max_y = otmp; + + if (map.TryGetValue("mie_config", out otmp) && otmp is OSDArray) + { + tmpArray = otmp as OSDArray; + if (tmpArray.Count > 0) + mieconf.FromOSD(tmpArray[0] as OSDMap); + } + + if (map.TryGetValue("moisture_level", out otmp)) + moisture_level = otmp; + if (map.TryGetValue("moon_brightness", out otmp)) + moon_brightness = otmp; + if (map.TryGetValue("moon_id", out otmp)) + moon_id = otmp; + if (map.TryGetValue("moon_rotation", out otmp)) + moon_rotation = otmp; + if (map.TryGetValue("moon_scale", out otmp)) + moon_scale = otmp; + if (map.TryGetValue("planet_radius", out otmp)) + planet_radius = otmp; + if (map.TryGetValue("rainbow_id", out otmp)) + rainbow_id = otmp; + + if (map.TryGetValue("rayleigh_config", out otmp) && otmp is OSDArray) + { + tmpArray = otmp as OSDArray; + if (tmpArray.Count > 0) + rayleigh_config.FromOSD(tmpArray[0] as OSDMap); + } + + if (map.TryGetValue("sky_bottom_radius", out otmp)) + sky_bottom_radius = otmp; + if (map.TryGetValue("sky_top_radius", out otmp)) + sky_top_radius = otmp; + if (map.TryGetValue("star_brightness", out otmp)) + star_brightness = otmp; + + if (map.TryGetValue("sun_arc_radians", out otmp)) + sun_arc_radians = otmp; + if (map.TryGetValue("sun_id", out otmp)) + sun_id = otmp; + if (map.TryGetValue("sun_rotation", out otmp)) + sun_rotation = otmp; + if (map.TryGetValue("sun_scale", out otmp)) + sun_scale = otmp; + if (map.TryGetValue("sunlight_color", out otmp)) + sunlight_color = otmp; + Name = name; + } + } + + public class WaterData + { + public UUID normalMap = new UUID("822ded49-9a6c-f61c-cb89-6df54f42cdf4"); + public UUID transpTexture = new UUID("2bfd3884-7e27-69b9-ba3a-3e673f680004"); + + public float blurMultiplier = 0.04f; + public float fresnelOffset = 0.5f; + public float fresnelScale = 0.4f; + public Vector3 normScale = new Vector3(2f, 2f, 2f); + public float scaleAbove = 0.03f; + public float scaleBelow = 0.2f; + public float underWaterFogMod = 0.25f; + public Vector3 waterFogColor = new Vector3(0.0156f, 0.149f, 0.2509f); + public float waterFogDensity = 2; + public Vector2 wave1Dir = new Vector2(1.05f, -0.42f); + public Vector2 wave2Dir = new Vector2(1.11f, -1.16f); + public string Name; + + public void FromWLOSD(string name, OSD osd) + { + Vector4 v4tmp; + OSDMap map = osd as OSDMap; + blurMultiplier = map["blurMultiplier"]; + fresnelOffset = map["fresnelOffset"]; + fresnelScale = map["fresnelScale"]; + normScale = map["normScale"]; + normalMap = map["normalMap"]; + scaleAbove = map["scaleAbove"]; + scaleBelow = map["scaleBelow"]; + underWaterFogMod = map["underWaterFogMod"]; + v4tmp = map["waterFogColor"]; + waterFogColor = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z); + waterFogDensity = map["waterFogDensity"]; + wave1Dir = map["wave1Dir"]; + wave2Dir = map["wave2Dir"]; + Name = name; + } + + public OSDMap ToWLOSD() + { + OSDMap map = new OSDMap(); + + map["blurMultiplier"] = blurMultiplier; + map["fresnelOffset"] = fresnelOffset; + map["fresnelScale"] = fresnelScale; + map["normScale"] = normScale; + map["normalMap"] = normalMap; + map["scaleAbove"] = scaleAbove; + map["scaleBelow"] = scaleBelow; + map["underWaterFogMod"] = underWaterFogMod; + map["waterFogColor"] = new Vector4(waterFogColor.X, waterFogColor.Y, waterFogColor.Z, 1); + map["waterFogDensity"] = waterFogDensity; + //map["waterFogDensity"] = (float)Math.Pow(2.0f, waterFogDensity); + map["wave1Dir"] = wave1Dir; + map["wave2Dir"] = wave2Dir; + + return map; + } + + public void FromOSD(string name, OSDMap map) + { + OSD otmp; + if (map.TryGetValue("blur_multiplier", out otmp)) + blurMultiplier = otmp; + if (map.TryGetValue("fresnel_offset", out otmp)) + fresnelOffset = otmp; + if (map.TryGetValue("fresnel_scale", out otmp)) + fresnelScale = otmp; + if (map.TryGetValue("normal_scale", out otmp)) + normScale = otmp; + if (map.TryGetValue("normal_map", out otmp)) + normalMap = otmp; + if (map.TryGetValue("scale_above", out otmp)) + scaleAbove = otmp; + if (map.TryGetValue("scale_below", out otmp)) + scaleBelow = otmp; + if (map.TryGetValue("underwater_fog_mod", out otmp)) + underWaterFogMod = otmp; + if (map.TryGetValue("water_fog_color", out otmp)) + waterFogColor = otmp; + if (map.TryGetValue("water_fog_density", out otmp)) + waterFogDensity = otmp; + if (map.TryGetValue("wave1_direction", out otmp)) + wave1Dir = otmp; + if (map.TryGetValue("wave2_direction", out otmp)) + wave2Dir = otmp; + if (map.TryGetValue("transparent_texture", out otmp)) + transpTexture = otmp; + + Name = name; + } + + public OSDMap ToOSD() + { + OSDMap map = new OSDMap(); + + map["blur_multiplier"] = blurMultiplier; + map["fresnel_offset"] = fresnelOffset; + map["fresnel_scale"] = fresnelScale; + map["normal_scale"] = normScale; + map["normal_map"] = normalMap; + map["scale_above"] = scaleAbove; + map["scale_below"] = scaleBelow; + map["underwater_fog_mod"] = underWaterFogMod; + map["water_fog_color"] = waterFogColor; + map["water_fog_density"] = waterFogDensity; + map["wave1_direction"] = wave1Dir; + map["wave2_direction"] = wave2Dir; + map["transparent_texture"] = transpTexture; + map["type"] ="water"; + + return map; + } + } + + public class DayCycle + { + public struct TrackEntry + { + public float time; + public string frameName; + + public TrackEntry(float t, string f) + { + time = t; + frameName = f; + } + } + + public bool IsStaticDayCycle = false; + public List skyTrack0 = new List(); + public List skyTrack1 = new List(); + public List skyTrack2 = new List(); + public List skyTrack3 = new List(); + public List waterTrack = new List(); + + public Dictionary skyframes = new Dictionary(); + public Dictionary waterframes = new Dictionary(); + + public string Name; + + public void FromWLOSD(OSDArray array) + { + TrackEntry track; + + OSDArray skytracksArray = null; + if (array.Count > 1) + skytracksArray = array[1] as OSDArray; + if(skytracksArray != null) + { + foreach (OSD setting in skytracksArray) + { + OSDArray innerSetting = setting as OSDArray; + if(innerSetting != null) + { + track = new TrackEntry((float)innerSetting[0].AsReal(), innerSetting[1].AsString()); + skyTrack0.Add(track); + } + } + } + + OSDMap skyFramesArray = null; + if (array.Count > 2) + skyFramesArray = array[2] as OSDMap; + if(skyFramesArray != null) + { + foreach (KeyValuePair kvp in skyFramesArray) + { + SkyData sky = new SkyData(); + sky.FromWLOSD(kvp.Key, kvp.Value); + skyframes[kvp.Key] = sky; + } + } + + WaterData water = new WaterData(); + OSDMap watermap = null; + if(array.Count > 3) + watermap = array[3] as OSDMap; + if(watermap != null) + water.FromWLOSD("WLWater", watermap); + + waterframes["WLWater"] = water; + track = new TrackEntry(-1f, "WLWater"); + waterTrack.Add(track); + + if (skyTrack0.Count == 1 && skyTrack0[0].time == -1f) + IsStaticDayCycle = true; + } + + public void ToWLOSD(ref OSDArray array) + { + OSDArray track = new OSDArray(); + foreach (TrackEntry te in skyTrack0) + { + track.Add(new OSDArray { te.time, te.frameName }); + } + + array[1] = track; + + OSDMap frames = new OSDMap(); + foreach (KeyValuePair kvp in skyframes) + { + frames[kvp.Key] = kvp.Value.ToWLOSD(); + } + array[2] = frames; + + if(waterTrack.Count > 0) + { + TrackEntry te = waterTrack[0]; + if(waterframes.TryGetValue(te.frameName, out WaterData water)) + { + array[3] = water.ToWLOSD(); + } + } + else + array[3] = new OSDMap(); + } + + public void FromOSD(OSDMap map) + { + OSD otmp; + if(map.TryGetValue("frames", out otmp) && otmp is OSDMap) + { + OSDMap mframes = otmp as OSDMap; + foreach(KeyValuePair kvp in mframes) + { + OSDMap v = kvp.Value as OSDMap; + if(v.TryGetValue("type", out otmp)) + { + string type = otmp; + if (type.Equals("water")) + { + WaterData water = new WaterData(); + water.FromOSD(kvp.Key, v); + waterframes[kvp.Key] = water; + } + else if (type.Equals("sky")) + { + SkyData sky = new SkyData(); + sky.FromOSD(kvp.Key, v); + skyframes[kvp.Key] = sky; + } + } + } + } + + if (map.TryGetValue("name", out otmp)) + Name = otmp; + else + Name ="DayCycle"; + + OSDArray track; + if (map.TryGetValue("tracks", out otmp) && otmp is OSDArray) + { + OSDArray tracks = otmp as OSDArray; + if(tracks.Count > 0) + { + track = tracks[0] as OSDArray; + for(int i = 0; i < track.Count; ++i) + { + OSDMap d = track[i] as OSDMap; + if (d.TryGetValue("key_keyframe", out OSD dtime)) + { + if (d.TryGetValue("key_name", out OSD dname)) + { + TrackEntry t = new TrackEntry(); + t.time = dtime; + t.frameName = dname; + waterTrack.Add(t); + } + } + } + } + if (tracks.Count > 1) + { + track = tracks[1] as OSDArray; + for (int i = 0; i < track.Count; ++i) + { + OSDMap d = track[i] as OSDMap; + if (d.TryGetValue("key_keyframe", out OSD dtime)) + { + if (d.TryGetValue("key_name", out OSD dname)) + { + TrackEntry t = new TrackEntry(); + t.time = dtime; + t.frameName = dname; + skyTrack0.Add(t); + } + } + } + } + if (tracks.Count > 2) + { + track = tracks[2] as OSDArray; + for (int i = 0; i < track.Count; ++i) + { + OSDMap d = track[i] as OSDMap; + if (d.TryGetValue("key_keyframe", out OSD dtime)) + { + if (d.TryGetValue("key_name", out OSD dname)) + { + TrackEntry t = new TrackEntry(); + t.time = dtime; + t.frameName = dname; + skyTrack1.Add(t); + } + } + } + } + if (tracks.Count > 3) + { + track = tracks[3] as OSDArray; + for (int i = 0; i < track.Count; ++i) + { + OSDMap d = track[i] as OSDMap; + if (d.TryGetValue("key_keyframe", out OSD dtime)) + { + if (d.TryGetValue("key_name", out OSD dname)) + { + TrackEntry t = new TrackEntry(); + t.time = dtime; + t.frameName = dname; + skyTrack2.Add(t); + } + } + } + } + if (tracks.Count > 4) + { + track = tracks[4] as OSDArray; + for (int i = 0; i < track.Count; ++i) + { + OSDMap d = track[i] as OSDMap; + if (d.TryGetValue("key_keyframe", out OSD dtime)) + { + if (d.TryGetValue("key_name", out OSD dname)) + { + TrackEntry t = new TrackEntry(); + t.time = dtime; + t.frameName = dname; + skyTrack3.Add(t); + } + } + } + } + } + } + + public OSDMap ToOSD() + { + OSDMap cycle = new OSDMap(); + + OSDMap frames = new OSDMap(); + foreach (KeyValuePair kvp in waterframes) + { + frames[kvp.Key] = kvp.Value.ToOSD(); + } + foreach (KeyValuePair kvp in skyframes) + { + frames[kvp.Key] = kvp.Value.ToOSD(); + } + cycle["frames"] = frames; + + cycle["name"] = Name; + + OSDArray tracks = new OSDArray(); + + OSDArray track = new OSDArray(); + OSDMap tmp; + foreach (TrackEntry te in waterTrack) + { + tmp = new OSDMap(); + if (te.time < 0) + tmp["key_keyframe"] = 0f; + else + tmp["key_keyframe"] = te.time; + tmp["key_name"] = te.frameName; + track.Add(tmp); + } + tracks.Add(track); + + track = new OSDArray(); + foreach (TrackEntry te in skyTrack0) + { + tmp = new OSDMap(); + if (te.time < 0) + tmp["key_keyframe"] = 0f; + else + tmp["key_keyframe"] = te.time; + tmp["key_name"] = te.frameName; + track.Add(tmp); + } + tracks.Add(track); + + track = new OSDArray(); + foreach (TrackEntry te in skyTrack1) + { + tmp = new OSDMap(); + if (te.time < 0) + tmp["key_keyframe"] = 0f; + else + tmp["key_keyframe"] = te.time; + tmp["key_name"] = te.frameName; + track.Add(tmp); + } + tracks.Add(track); + + track = new OSDArray(); + foreach (TrackEntry te in skyTrack2) + { + tmp = new OSDMap(); + if (te.time < 0) + tmp["key_keyframe"] = 0f; + else + tmp["key_keyframe"] = te.time; + tmp["key_name"] = te.frameName; + track.Add(tmp); + } + tracks.Add(track); + + track = new OSDArray(); + foreach (TrackEntry te in skyTrack3) + { + tmp = new OSDMap(); + if (te.time < 0) + tmp["key_keyframe"] = 0f; + else + tmp["key_keyframe"] = te.time; + tmp["key_name"] = te.frameName; + track.Add(tmp); + } + tracks.Add(track); + + cycle["tracks"] = tracks; + cycle["type"] = "daycycle"; + + return cycle; + } + } + + public class ViewerEnviroment + { + DayCycle Cycle = new DayCycle(); + public int DayLength = 14400; + public int DayOffset = 57600; + public int Flags = 0; + + float[] Altitudes = new float[3] {1000f, 2000f, 3000f }; + + //DayHash; + public bool IsLegacy = false; + public string DayCycleName; + + public int version = 0; + + public void FromWLOSD(OSD osd) + { + OSDArray array = osd as OSDArray; + if(osd != null) + { + Cycle = new DayCycle(); + Cycle.FromWLOSD(array); + IsLegacy = true; + Altitudes[0] = 3980f; + Altitudes[1] = 3990f; + Altitudes[2] = 4000f; + } + } + + public OSD ToWLOSD(UUID message, UUID region) + { + OSDArray array = new OSDArray(4) { null, null, null, null }; + array[0] = new OSDMap { {"messageID", message }, { "regionID", region } }; + Cycle.ToWLOSD(ref array); + return array; + } + + private static Quaternion AzAlToRot(float az, float al) + { + if (al == 0) + { + az *= 0.5f; + return new Quaternion(0, 0, (float)Math.Sin(az), (float)Math.Cos(az)); + } + + float sT = (float)Math.Sin(az); + float cT = (float)Math.Cos(az); + float sP = (float)Math.Sin(al); + float cP = (float)Math.Cos(al); + + float angle = (float)Math.Acos(cT * cP); + Vector3 axis = new Vector3( 0, -sP, sT * cP); + axis.Normalize(); + + return Quaternion.CreateFromAxisAngle(axis, angle); + } + + public static void convertFromAngles(SkyData sky, float sun_angle, float east_angle) + { + float az = -east_angle; + float al = sun_angle; + + sky.sun_rotation = AzAlToRot(az, al); + sky.moon_rotation = AzAlToRot(az + (float)Math.PI, -al); + } + + public static Vector3 Xrot(Quaternion rot) + { + Vector3 vec; + rot.Normalize(); // just in case + vec.X = 2 * (rot.X * rot.X + rot.W * rot.W) - 1; + vec.Y = 2 * (rot.X * rot.Y + rot.Z * rot.W); + vec.Z = 2 * (rot.X * rot.Z - rot.Y * rot.W); + return vec; + } + + public static void convertToAngles(SkyData sky, out float sun_angle, out float east_angle, out Vector4 lightnorm) + { + Vector3 v = Xrot(sky.sun_rotation); + lightnorm = new Vector4(v.X, v.Y, v.Z,1); + sun_angle = (float)Math.Asin(v.Z); + east_angle = -(float)Math.Atan2(v.Y, v.X); + + if (Math.Abs(sun_angle) < 1e-6) + sun_angle = 0; + if (Math.Abs(east_angle) < 1e-6) + east_angle = 0; + else if (east_angle < 0) + east_angle = 2f * (float)Math.PI + east_angle; + } + + public void FromLightShare(RegionLightShareData ls) + { + WaterData water = new WaterData(); + + water.waterFogColor = ls.waterColor / 256f; + water.waterFogDensity = (float)Math.Pow(2.0f, ls.waterFogDensityExponent); + //water.waterFogDensity = ls.waterFogDensityExponent; + water.underWaterFogMod = ls.underwaterFogModifier; + water.normScale = ls.reflectionWaveletScale; + water.fresnelScale = ls.fresnelScale; + water.fresnelOffset = ls.fresnelOffset; + water.scaleAbove = ls.refractScaleAbove; + water.scaleBelow = ls.refractScaleBelow; + water.blurMultiplier = ls.blurMultiplier; + water.wave1Dir = ls.littleWaveDirection; + water.wave2Dir = ls.bigWaveDirection; + water.normalMap = ls.normalMapTexture; + water.Name = "LightshareWater"; + + SkyData sky = new SkyData(); + convertFromAngles(sky, 2.0f * (float)Math.PI * ls.sunMoonPosition, 2.0f * (float)Math.PI * ls.eastAngle); + sky.sunlight_color = ls.sunMoonColor * 3.0f; + sky.ambient = new Vector3(ls.ambient.X * 3.0f, ls.ambient.Y * 3.0f, ls.ambient.Z * 3.0f); + sky.blue_horizon = new Vector3(ls.horizon.X * 2.0f, ls.horizon.Y * 2.0f, ls.horizon.Z * 2.0f); + sky.blue_density = new Vector3(ls.blueDensity.X * 2.0f, ls.blueDensity.Y * 2.0f, ls.blueDensity.Z * 2.0f);; + sky.haze_horizon = ls.hazeHorizon; + sky.haze_density = ls.hazeDensity; + sky.cloud_shadow = ls.cloudCoverage; + sky.density_multiplier = ls.densityMultiplier / 1000.0f; + sky.distance_multiplier = ls.distanceMultiplier; + sky.max_y = ls.maxAltitude; + sky.cloud_color = new Vector3(ls.cloudColor.X, ls.cloudColor.Y, ls.cloudColor.Z); + sky.cloud_pos_density1 = ls.cloudXYDensity; + sky.cloud_pos_density2 = ls.cloudDetailXYDensity; + sky.cloud_scale = ls.cloudScale; + sky.gamma=ls.sceneGamma; + sky.glow = new Vector3((2f - ls.sunGlowSize) * 20f, 0f, -ls.sunGlowFocus * 5f); + sky.cloud_scroll_rate = new Vector2(ls.cloudScrollX, ls.cloudScrollY); + if (ls.cloudScrollXLock) + sky.cloud_scroll_rate.X = 0; + if (ls.cloudScrollYLock) + sky.cloud_scroll_rate.Y = 0; + sky.star_brightness = ls.starBrightness * 250f; + sky.Name = "LightshareSky"; + + Cycle = new DayCycle(); + Cycle.Name = "Lightshare"; + Cycle.waterframes.Add(water.Name, water); + DayCycle.TrackEntry track = new DayCycle.TrackEntry(-1, water.Name); + Cycle.waterTrack.Add(track); + + Cycle.skyframes.Add(sky.Name, sky); + track = new DayCycle.TrackEntry(-1, sky.Name); + Cycle.skyTrack0.Add(track); + + Altitudes[0] = 3980f; + Altitudes[1] = 3990f; + Altitudes[2] = 4000f; + } + + public RegionLightShareData ToLightShare() + { + RegionLightShareData ls = new RegionLightShareData(); + + DayCycle.TrackEntry te; + if (Cycle.waterTrack.Count > 0) + { + te = Cycle.waterTrack[0]; + if (Cycle.waterframes.TryGetValue(te.frameName, out WaterData water)) + { + ls.waterColor = water.waterFogColor * 256f; + ls.waterFogDensityExponent = (float)Math.Sqrt(water.waterFogDensity); + //ls.waterFogDensityExponent = water.waterFogDensity; + ls.underwaterFogModifier = water.underWaterFogMod; + ls.reflectionWaveletScale = water.normScale; + ls.fresnelScale = water.fresnelScale; + ls.fresnelOffset = water.fresnelOffset; + ls.refractScaleAbove = water.scaleAbove; + ls.refractScaleBelow = water.scaleBelow; + ls.blurMultiplier = water.blurMultiplier; + ls.littleWaveDirection = water.wave1Dir; + ls.bigWaveDirection = water.wave2Dir; + ls.normalMapTexture = water.normalMap; + } + } + + if (Cycle.skyTrack0.Count > 0) + { + te = Cycle.skyTrack0[0]; + if (Cycle.skyframes.TryGetValue(te.frameName, out SkyData sky)) + { + Vector4 lightnorm; + convertToAngles(sky, out ls.sunMoonPosition, out ls.eastAngle, out lightnorm); + ls.sunMoonPosition *= 0.5f / (float)Math.PI; + ls.eastAngle *= 0.5f / (float)Math.PI; + ls.sunMoonColor = sky.sunlight_color / 3f; + ls.ambient = new Vector4(sky.ambient.X / 3.0f, sky.ambient.Y / 3.0f, sky.ambient.Z / 3.0f, 1); + ls.horizon = new Vector4(sky.blue_horizon.X / 2.0f, sky.blue_horizon.Y / 2.0f, sky.blue_horizon.Z / 2.0f, 1); + ls.blueDensity = new Vector4(sky.blue_density.X / 2.0f, sky.blue_density.Y / 2.0f, sky.blue_density.Z / 2.0f, 1); + ls.hazeHorizon = sky.haze_horizon; + ls.hazeDensity = sky.haze_density; + ls.cloudCoverage = sky.cloud_shadow; + ls.densityMultiplier = 1000f * sky.density_multiplier; + ls.distanceMultiplier = sky.distance_multiplier; + ls.maxAltitude = (ushort)sky.max_y; + ls.cloudColor = new Vector4(sky.cloud_color.X, sky.cloud_color.Y, sky.cloud_color.Z, 1); + ls.cloudXYDensity = sky.cloud_pos_density1; + ls.cloudDetailXYDensity = sky.cloud_pos_density2; + ls.cloudScale = sky.cloud_scale; + ls.sceneGamma = sky.gamma; + ls.sunGlowSize = (2f - sky.glow.X) / 20f; + ls.sunGlowFocus = -sky.glow.Z / 5f; + ls.cloudScrollX = sky.cloud_scroll_rate.X; + ls.cloudScrollY = sky.cloud_scroll_rate.Y; + ls.cloudScrollXLock = ls.cloudScrollX == 0f; + ls.cloudScrollYLock = ls.cloudScrollY == 0f; + ls.starBrightness = sky.star_brightness / 250f; + } + } + return ls; + } + + public void FromOSD(OSD osd) + { + OSDMap map = osd as OSDMap; + if (map == null) + return; + + OSD otmp; + + if (map.TryGetValue("day_cycle", out otmp) && otmp is OSDMap) + { + Cycle = new DayCycle(); + Cycle.FromOSD(otmp as OSDMap); + } + if (Cycle == null) + Cycle = new DayCycle(); + + if (map.TryGetValue("day_length", out otmp)) + DayLength = otmp; + if (map.TryGetValue("day_offset", out otmp)) + DayOffset = otmp; + if (map.TryGetValue("flags", out otmp)) + Flags = otmp; + if (map.TryGetValue("env_version", out otmp)) + version = otmp; + else + ++version; + + if (map.TryGetValue("track_altitudes", out otmp) && otmp is OSDArray) + { + OSDArray alt = otmp as OSDArray; + + for(int i = 0; i < alt.Count && i < 3; ++i) + { + Altitudes[i] = alt[i]; + } + } + + IsLegacy = false; + } + + public void CycleFromOSD(OSD osd) + { + OSDMap map = osd as OSDMap; + if (map == null) + return; + if(!map.TryGetValue("type", out OSD tmp)) + return; + string type = tmp.AsString(); + if(type != "daycycle") + return; + Cycle = new DayCycle(); + Cycle.FromOSD(map); + } + + public OSD ToOSD() + { + OSDMap env = new OSDMap(); + env["day_cycle"] = Cycle.ToOSD(); + env["day_length"] = DayLength; + env["day_offset"] = DayOffset; + env["flags"] = Flags; + env["env_version"] = version; + + OSDArray alt = new OSDArray(); + alt.Add(Altitudes[0]); + alt.Add(Altitudes[1]); + alt.Add(Altitudes[2]); + env["track_altitudes"] = alt; + return env; + } + + public static OSD DefaultToOSD(UUID regionID, int parcel) + { + OSDMap top = new OSDMap(); + OSDMap env = new OSDMap(); + env["is_default"] = true; + if (parcel >= 0) + env["parcel_id"] = parcel; + env["region_id"] = regionID; + OSDArray alt = new OSDArray(); + alt.Add(1000f); + alt.Add(2000f); + alt.Add(3000f); + env["track_altitudes"] = alt; + top["environment"] = env; + if (parcel >= 0) + top["parcel_id"] = parcel; + top["success"] = true; + return top; + } + } +} diff --git a/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs b/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs index 4d7da65301..9ff42daeb6 100644 --- a/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs +++ b/OpenSim/Region/CoreModules/World/LightShare/EnvironmentModule.cs @@ -26,20 +26,25 @@ */ using System; +using System.Collections.Generic; +using System.Net; using System.Reflection; using System.Text; using OpenMetaverse; +using OpenMetaverse.StructuredData; using OpenSim.Framework; using OpenSim.Framework.Capabilities; using OpenSim.Framework.Servers.HttpServer; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; +using OpenSim.Services.Interfaces; using log4net; using Nini.Config; using Mono.Addins; using Caps = OpenSim.Framework.Capabilities.Caps; - +using OSDArray = OpenMetaverse.StructuredData.OSDArray; +using OSDMap = OpenMetaverse.StructuredData.OSDMap; namespace OpenSim.Region.CoreModules.World.LightShare { @@ -52,6 +57,14 @@ namespace OpenSim.Region.CoreModules.World.LightShare private Scene m_scene = null; private UUID regionID = UUID.Zero; private bool Enabled = false; + private IEstateModule m_estateModule; + private IEventQueue m_eventQueue; + private IAssetService m_assetService; + + private static ViewerEnviroment m_DefaultEnv = null; + private static readonly string m_defaultDayAssetID = "5646d39e-d3d7-6aff-ed71-30fc87d64a91"; + + private int m_regionEnvVersion = -1; #region INonSharedRegionModule public void Initialise(IConfigSource source) @@ -69,6 +82,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare Enabled = true; + m_log.InfoFormat("[{0}]: Module is enabled.", Name); } @@ -101,12 +115,80 @@ namespace OpenSim.Region.CoreModules.World.LightShare if (!Enabled) return; + m_estateModule = scene.RequestModuleInterface(); + if (m_estateModule == null) + { + Enabled = false; + return; + } + + m_eventQueue = m_scene.RequestModuleInterface(); + if (m_eventQueue == null) + { + Enabled = false; + return; + } + + m_assetService = m_scene.AssetService; + if (m_assetService == null) + { + Enabled = false; + return; + } + + if(m_DefaultEnv == null) + { + AssetBase defEnv = m_assetService.Get(m_defaultDayAssetID); + if(defEnv != null) + { + byte[] envData = defEnv.Data; + try + { + OSD oenv = OSDParser.DeserializeLLSDXml(envData); + m_DefaultEnv = new ViewerEnviroment(); + m_DefaultEnv.CycleFromOSD(oenv); + } + catch ( Exception e) + { + m_DefaultEnv = null; + m_log.WarnFormat("[Enviroment {0}]: failed to decode default enviroment asset: {1}", m_scene.Name, e.Message); + } + } + } + + string senv = scene.SimulationDataService.LoadRegionEnvironmentSettings(scene.RegionInfo.RegionID); + if(!string.IsNullOrEmpty(senv)) + { + try + { + OSD oenv = OSDParser.DeserializeLLSDXml(senv); + ViewerEnviroment VEnv = new ViewerEnviroment(); + if(oenv is OSDArray) + VEnv.FromWLOSD(oenv); + else + VEnv.FromOSD(oenv); + scene.RegionEnviroment = VEnv; + m_regionEnvVersion = VEnv.version; + } + catch(Exception e) + { + m_log.ErrorFormat("[Enviroment {0}] failed to load initial enviroment {1}", m_scene.Name, e.Message); + scene.RegionEnviroment = null; + m_regionEnvVersion = -1; + } + } + else + { + scene.RegionEnviroment = null; + m_regionEnvVersion = -1; + } + scene.EventManager.OnRegisterCaps += OnRegisterCaps; } public void RemoveRegion(Scene scene) { - if (Enabled) + if (!Enabled) return; scene.EventManager.OnRegisterCaps -= OnRegisterCaps; @@ -120,57 +202,339 @@ namespace OpenSim.Region.CoreModules.World.LightShare if (!Enabled) return; - m_scene.SimulationDataService.RemoveRegionEnvironmentSettings(regionUUID); + StoreOnRegion(null); + WindlightRefresh(0); + } + + public void WindlightRefresh(int interpolate) + { + List ls = null; + m_scene.ForEachClient(delegate (IClientAPI client) + { + if(!client.IsActive) + return; + + uint vflags = client.GetViewerCaps(); + + if ((vflags & 0x8000) != 0) + m_estateModule.HandleRegionInfoRequest(client); + + else if ((vflags & 0x4000) != 0) + m_eventQueue.WindlightRefreshEvent(interpolate, client.AgentId); + + else + { + if(ls == null) + ls = MakeLightShareData(); + SendLightShare(client, ls); + } + }); + } + + public void FromLightShare(RegionLightShareData ls) + { + if (!Enabled) + return; + + ViewerEnviroment VEnv = new ViewerEnviroment(); + VEnv.FromLightShare(ls); + + StoreOnRegion(VEnv); + WindlightRefresh(0); + } + + public RegionLightShareData ToLightShare() + { + if (!Enabled) + return new RegionLightShareData(); + + RegionLightShareData ls = null; + try + { + ViewerEnviroment VEnv = m_scene.RegionEnviroment; + if(VEnv == null) + return new RegionLightShareData(); + ls = VEnv.ToLightShare(); + } + catch (Exception e) + { + m_log.ErrorFormat("[{0}]: Unable to convert environment to lightShare, Exception: {1} - {2}", + Name, e.Message, e.StackTrace); + } + if(ls == null) + return new RegionLightShareData(); + return ls; } #endregion #region Events private void OnRegisterCaps(UUID agentID, Caps caps) { - // m_log.DebugFormat("[{0}]: Register capability for agentID {1} in region {2}", - // Name, agentID, caps.RegionName); + // m_log.DebugFormat("[{0}]: Register capability for agentID {1} in region {2}", + // Name, agentID, caps.RegionName); - string capsPath = "/CAPS/" + UUID.Random(); + caps.RegisterSimpleHandler("EnvironmentSettings", + new SimpleStreamHandler("/" + UUID.Random(), delegate (IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) + { + processEnv(httpRequest, httpResponse, agentID); + })); - // Get handler - caps.RegisterHandler( - "EnvironmentSettings", - new RestStreamHandler( - "GET", - capsPath, - (request, path, param, httpRequest, httpResponse) - => GetEnvironmentSettings(request, path, param, agentID, caps), - "EnvironmentSettings", - agentID.ToString())); - - // Set handler - caps.HttpListener.AddStreamHandler( - new RestStreamHandler( - "POST", - capsPath, - (request, path, param, httpRequest, httpResponse) - => SetEnvironmentSettings(request, path, param, agentID, caps), - "EnvironmentSettings", - agentID.ToString())); + //Extended + caps.RegisterSimpleHandler("ExtEnvironment", + new SimpleStreamHandler("/" + UUID.Random(), delegate (IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) + { + processExtEnv(httpRequest, httpResponse, agentID, caps); + })); } #endregion - private string GetEnvironmentSettings(string request, string path, string param, - UUID agentID, Caps caps) + private void processEnv(IOSHttpRequest request, IOSHttpResponse response, UUID agentID) { - // m_log.DebugFormat("[{0}]: Environment GET handle for agentID {1} in region {2}", - // Name, agentID, caps.RegionName); + switch (request.HttpMethod) + { + case "POST": + SetEnvironmentSettings(request, response, agentID); + return; + case "GET": + GetEnvironmentSettings(response, agentID); + return; + default: + { + response.StatusCode = (int)HttpStatusCode.MethodNotAllowed; + return; + } + } + } + + + private void processExtEnv(IOSHttpRequest request, IOSHttpResponse response, UUID agentID, Caps caps) + { + switch(request.HttpMethod) + { + case "PUT": + case "POST": + SetExtEnvironmentSettings(request, response, agentID, caps); + return; + case "GET": + GetExtEnvironmentSettings(request, response, agentID); + return; + case "DELETE": + DeleteExtEnvironmentSettings(request, response, agentID); + return; + default: + { + response.StatusCode = (int)HttpStatusCode.MethodNotAllowed; + return; + } + } + } + + private void DeleteExtEnvironmentSettings(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, UUID agentID) + { + int parcel = -1; + + if (httpRequest.Query.Count > 0) + { + if (httpRequest.Query.ContainsKey("parcelid")) + { + Int32.TryParse((string)httpRequest.Query["parcelid"], out parcel); + } + } + + if(parcel == -1) + StoreOnRegion(null); + + WindlightRefresh(0); + + StringBuilder sb = LLSDxmlEncode.Start(); + LLSDxmlEncode.AddMap(sb); + LLSDxmlEncode.AddElem("messageID", UUID.Zero, sb); + LLSDxmlEncode.AddElem("regionID", regionID, sb); + LLSDxmlEncode.AddElem("success", true, sb); + LLSDxmlEncode.AddEndMap(sb); + httpResponse.RawBuffer = Util.UTF8.GetBytes(LLSDxmlEncode.End(sb)); + httpResponse.StatusCode = (int)HttpStatusCode.OK; + } + + private void GetExtEnvironmentSettings(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, UUID agentID) + { + if (httpRequest.Query.Count > 0) + { + int parcel = -1; + if (httpRequest.Query.ContainsKey("parcelid")) + { + Int32.TryParse((string)httpRequest.Query["parcelid"], out parcel); + } + OSD oenv = ViewerEnviroment.DefaultToOSD(regionID, parcel); + httpResponse.RawBuffer = Util.UTF8.GetBytes(OSDParser.SerializeLLSDXmlString(oenv)); + httpResponse.StatusCode = (int)HttpStatusCode.OK; + } + + ViewerEnviroment VEnv = m_scene.RegionEnviroment; + if (VEnv == null) + VEnv = m_DefaultEnv == null ? new ViewerEnviroment() : m_DefaultEnv; + + OSDMap map = new OpenMetaverse.StructuredData.OSDMap(); + map["environment"] = VEnv.ToOSD(); + string env = OSDParser.SerializeLLSDXmlString(map); + + // only the presence of enviroment seems to matter + if (String.IsNullOrEmpty(env)) + { + StringBuilder sb = LLSDxmlEncode.Start(); + LLSDxmlEncode.AddArray(sb); + LLSDxmlEncode.AddMap(sb); + LLSDxmlEncode.AddElem("messageID", UUID.Zero, sb); + LLSDxmlEncode.AddElem("regionID", regionID, sb); + LLSDxmlEncode.AddEndMap(sb); + LLSDxmlEncode.AddEndArray(sb); + env = LLSDxmlEncode.End(sb); + } + + httpResponse.RawBuffer = Util.UTF8NBGetbytes(env); + httpResponse.StatusCode = (int)HttpStatusCode.OK; + } + + private void SetExtEnvironmentSettings(IOSHttpRequest httpRequest, IOSHttpResponse httpResponse, UUID agentID, Caps caps) + { + bool success = false; + string message = "Could not process request"; + int parcel = -1; + int track = -1; + + StringBuilder sb = LLSDxmlEncode.Start(); + + if (httpRequest.Query.Count > 0) + { + if (httpRequest.Query.ContainsKey("parcelid")) + { + Int32.TryParse((string)httpRequest.Query["parcelid"], out parcel); + } + if (httpRequest.Query.ContainsKey("trackno")) + { + Int32.TryParse((string)httpRequest.Query["trackno"], out track); + } + + message = "Parcel Enviroment not supported"; + goto skiped; + } + + if(parcel == -1) + { + if (!m_scene.Permissions.CanIssueEstateCommand(agentID, false)) + { + message = "Insufficient estate permissions, settings has not been saved."; + goto skiped; + } + } + + if(track == -1) + { + try + { + OSD req = OSDParser.DeserializeLLSDXml(httpRequest.InputStream); + if(req is OpenMetaverse.StructuredData.OSDMap) + { + OpenMetaverse.StructuredData.OSDMap map = req as OpenMetaverse.StructuredData.OSDMap; + if(map.TryGetValue("environment", out OSD env)) + { + ViewerEnviroment VEnv = m_scene.RegionEnviroment; + if (VEnv == null) + VEnv = new ViewerEnviroment(); + OSDMap evmap = (OSDMap)env; + if(evmap.TryGetValue("day_asset", out OSD tmp) && !evmap.ContainsKey("day_cycle")) + { + string id = tmp.AsString(); + AssetBase asset = m_assetService.Get(id); + if(asset == null || asset.Data == null || asset.Data.Length == 0) + { + httpResponse.StatusCode = (int)HttpStatusCode.NotFound; + return; + } + try + { + OSD oenv = OSDParser.DeserializeLLSDXml(asset.Data); + VEnv.CycleFromOSD(oenv); + } + catch (Exception e) + { + httpResponse.StatusCode = (int)HttpStatusCode.NotFound; + return; + } + } + VEnv.FromOSD(env); + StoreOnRegion(VEnv); + + WindlightRefresh(0); + + success = true; + m_log.InfoFormat("[{0}]: ExtEnviromet settings saved from agentID {1} in region {2}", + Name, agentID, caps.RegionName); + } + } + else if (req is OSDArray) + { + ViewerEnviroment VEnv = m_scene.RegionEnviroment; + if (VEnv == null) + VEnv = new ViewerEnviroment(); + + VEnv.FromWLOSD(req); + StoreOnRegion(VEnv); + success = true; + + WindlightRefresh(0); + + m_log.InfoFormat("[{0}]: New Environment settings has been saved from agentID {1} in region {2}", + Name, agentID, caps.RegionName); + + LLSDxmlEncode.AddMap(sb); + LLSDxmlEncode.AddElem("messageID", UUID.Zero, sb); + LLSDxmlEncode.AddElem("regionID", regionID, sb); + LLSDxmlEncode.AddElem("success", success, sb); + LLSDxmlEncode.AddEndMap(sb); + httpResponse.RawBuffer = Util.UTF8.GetBytes(LLSDxmlEncode.End(sb)); + httpResponse.StatusCode = (int)HttpStatusCode.OK; + return; + } + } + catch (Exception e) + { + m_log.ErrorFormat("[{0}]: ExtEnvironment settings not saved for region {1}, Exception: {2} - {3}", + Name, caps.RegionName, e.Message, e.StackTrace); + + success = false; + message = String.Format("ExtEnvironment Set for region {0} has failed, settings not saved.", caps.RegionName); + } + } + + skiped: + string response; + + LLSDxmlEncode.AddMap(sb); + LLSDxmlEncode.AddElem("success", success, sb); + if(!success) + LLSDxmlEncode.AddElem("message", message, sb); + LLSDxmlEncode.AddEndMap(sb); + response = LLSDxmlEncode.End(sb); + + httpResponse.RawBuffer = Util.UTF8.GetBytes(response); + httpResponse.StatusCode = (int)HttpStatusCode.OK; + } + + private void GetEnvironmentSettings(IOSHttpResponse response, UUID agentID) + { + // m_log.DebugFormat("[{0}]: Environment GET handle for agentID {1} in region {2}", + // Name, agentID, caps.RegionName); string env = String.Empty; + ViewerEnviroment VEnv = m_scene.RegionEnviroment; + if (VEnv == null) + VEnv = m_DefaultEnv; - try + if (VEnv != null) { - env = m_scene.SimulationDataService.LoadRegionEnvironmentSettings(regionID); - } - catch (Exception e) - { - m_log.ErrorFormat("[{0}]: Unable to load environment settings for region {1}, Exception: {2} - {3}", - Name, caps.RegionName, e.Message, e.StackTrace); + OSD d = VEnv.ToWLOSD(UUID.Zero, regionID); + env = OSDParser.SerializeLLSDXmlString(d); } if (String.IsNullOrEmpty(env)) @@ -185,15 +549,39 @@ namespace OpenSim.Region.CoreModules.World.LightShare env = LLSDxmlEncode.End(sb); } - return env; + response.RawBuffer = Util.UTF8.GetBytes(env); + response.StatusCode = (int)HttpStatusCode.OK; } - private string SetEnvironmentSettings(string request, string path, string param, - UUID agentID, Caps caps) + private void StoreOnRegion(ViewerEnviroment VEnv) { + try + { + if (VEnv == null) + { + m_scene.SimulationDataService.RemoveRegionEnvironmentSettings(regionID); + m_scene.RegionEnviroment = null; + m_regionEnvVersion = -1; + } + else + { + m_regionEnvVersion++; + VEnv.version = m_regionEnvVersion; + OSD env = VEnv.ToOSD(); + m_scene.SimulationDataService.StoreRegionEnvironmentSettings(regionID, OSDParser.SerializeLLSDXmlString(env)); + m_scene.RegionEnviroment = VEnv; + } + } + catch (Exception e) + { + m_log.ErrorFormat("[Enviroment {0}] failed to store enviroment {1}", m_scene.Name, e.Message); + } + } - // m_log.DebugFormat("[{0}]: Environment SET handle from agentID {1} in region {2}", - // Name, agentID, caps.RegionName); + private void SetEnvironmentSettings(IOSHttpRequest request, IOSHttpResponse response, UUID agentID) + { + // m_log.DebugFormat("[{0}]: Environment SET handle from agentID {1} in region {2}", + // Name, agentID, caps.RegionName); bool success = false; string fail_reason = ""; @@ -206,19 +594,24 @@ namespace OpenSim.Region.CoreModules.World.LightShare { try { - m_scene.SimulationDataService.StoreRegionEnvironmentSettings(regionID, request); + ViewerEnviroment VEnv = new ViewerEnviroment(); + OSD env = OSDParser.DeserializeLLSDXml(request.InputStream); + VEnv.FromWLOSD(env); + StoreOnRegion(VEnv); success = true; + WindlightRefresh(0); + m_log.InfoFormat("[{0}]: New Environment settings has been saved from agentID {1} in region {2}", - Name, agentID, caps.RegionName); + Name, agentID, m_scene.Name); } catch (Exception e) { m_log.ErrorFormat("[{0}]: Environment settings has not been saved for region {1}, Exception: {2} - {3}", - Name, caps.RegionName, e.Message, e.StackTrace); + Name, m_scene.Name, e.Message, e.StackTrace); success = false; - fail_reason = String.Format("Environment Set for region {0} has failed, settings not saved.", caps.RegionName); + fail_reason = String.Format("Environment Set for region {0} has failed, settings not saved.", m_scene.Name); } } @@ -230,7 +623,111 @@ namespace OpenSim.Region.CoreModules.World.LightShare if(!success) LLSDxmlEncode.AddElem("fail_reason", fail_reason, sb); LLSDxmlEncode.AddEndMap(sb); - return LLSDxmlEncode.End(sb); + response.RawBuffer = Util.UTF8.GetBytes(LLSDxmlEncode.End(sb)); + response.StatusCode = (int)HttpStatusCode.OK; + } + + public byte[] GetDefaultAssetData(int type) + { + OSD osddata; + switch(type) + { + case 0: + SkyData sky = new SkyData(); + sky.Name = "DefaultSky"; + osddata = sky.ToOSD(); + break; + case 1: + WaterData water = new WaterData(); + water.Name = "DefaultWater"; + osddata = water.ToOSD(); + break; + case 2: + DayCycle day = new DayCycle(); + day.Name="New Daycycle"; + DayCycle.TrackEntry te = new DayCycle.TrackEntry(); + + WaterData dwater = new WaterData(); + dwater.Name = "DefaultWater"; + day.waterframes["DefaultWater"] = dwater; + te.time = 0; + te.frameName = "DefaultWater"; + day.waterTrack.Add(te); + + SkyData dsky = new SkyData(); + dsky.Name = "DefaultSky"; + day.skyframes["DefaultSky"] = dsky; + te.time = 0; + te.frameName = "DefaultSky"; + day.skyTrack0.Add(te); + + osddata = day.ToOSD(); + break; + default: + return null; + } + string sdata = OSDParser.SerializeLLSDXmlString(osddata); + return Util.UTF8NBGetbytes(sdata); + } + + public List MakeLightShareData() + { + if(m_scene.RegionEnviroment == null) + return null; + + RegionLightShareData wl = ToLightShare(); + byte[] mBlock = new Byte[249]; + int pos = 0; + + wl.waterColor.ToBytes(mBlock, 0); pos += 12; + Utils.FloatToBytes(wl.waterFogDensityExponent).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.underwaterFogModifier).CopyTo(mBlock, pos); pos += 4; + wl.reflectionWaveletScale.ToBytes(mBlock, pos); pos += 12; + Utils.FloatToBytes(wl.fresnelScale).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.fresnelOffset).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.refractScaleAbove).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.refractScaleBelow).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.blurMultiplier).CopyTo(mBlock, pos); pos += 4; + wl.bigWaveDirection.ToBytes(mBlock, pos); pos += 8; + wl.littleWaveDirection.ToBytes(mBlock, pos); pos += 8; + wl.normalMapTexture.ToBytes(mBlock, pos); pos += 16; + wl.horizon.ToBytes(mBlock, pos); pos += 16; + Utils.FloatToBytes(wl.hazeHorizon).CopyTo(mBlock, pos); pos += 4; + wl.blueDensity.ToBytes(mBlock, pos); pos += 16; + Utils.FloatToBytes(wl.hazeDensity).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.densityMultiplier).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.distanceMultiplier).CopyTo(mBlock, pos); pos += 4; + wl.sunMoonColor.ToBytes(mBlock, pos); pos += 16; + Utils.FloatToBytes(wl.sunMoonPosition).CopyTo(mBlock, pos); pos += 4; + wl.ambient.ToBytes(mBlock, pos); pos += 16; + Utils.FloatToBytes(wl.eastAngle).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.sunGlowFocus).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.sunGlowSize).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.sceneGamma).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.starBrightness).CopyTo(mBlock, pos); pos += 4; + wl.cloudColor.ToBytes(mBlock, pos); pos += 16; + wl.cloudXYDensity.ToBytes(mBlock, pos); pos += 12; + Utils.FloatToBytes(wl.cloudCoverage).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.cloudScale).CopyTo(mBlock, pos); pos += 4; + wl.cloudDetailXYDensity.ToBytes(mBlock, pos); pos += 12; + Utils.FloatToBytes(wl.cloudScrollX).CopyTo(mBlock, pos); pos += 4; + Utils.FloatToBytes(wl.cloudScrollY).CopyTo(mBlock, pos); pos += 4; + Utils.UInt16ToBytes(wl.maxAltitude).CopyTo(mBlock, pos); pos += 2; + mBlock[pos] = Convert.ToByte(wl.cloudScrollXLock); pos++; + mBlock[pos] = Convert.ToByte(wl.cloudScrollYLock); pos++; + mBlock[pos] = Convert.ToByte(wl.drawClassicClouds); pos++; + + List param = new List(); + param.Add(mBlock); + return param; + } + + public void SendLightShare(IClientAPI client, List param) + { + if(param == null || param.Count == 0) + client.SendGenericMessage("WindlightReset", UUID.Random(), new List()); + else + client.SendGenericMessage("Windlight", UUID.Random(), param); } } } diff --git a/OpenSim/Region/CoreModules/World/LightShare/LightShareModule.cs b/OpenSim/Region/CoreModules/World/LightShare/LightShareModule.cs deleted file mode 100644 index f13d648a59..0000000000 --- a/OpenSim/Region/CoreModules/World/LightShare/LightShareModule.cs +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System; -using System.Collections.Generic; -using System.Reflection; -using OpenMetaverse; -using OpenSim.Framework; -using OpenSim.Region.CoreModules.Framework.InterfaceCommander; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Region.Framework.Scenes; -using log4net; -using Nini.Config; -using Mono.Addins; - -namespace OpenSim.Region.CoreModules.World.LightShare -{ - [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "LightShareModule")] - public class LightShareModule : INonSharedRegionModule, ILightShareModule, ICommandableModule - { - private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - private readonly Commander m_commander = new Commander("windlight"); - private Scene m_scene; - private static bool m_enableWindlight; - - #region ICommandableModule Members - - public ICommander CommandInterface - { - get { return m_commander; } - } - - #endregion - - #region INonSharedRegionModule Members - - public void Initialise(IConfigSource config) - { - try - { - m_enableWindlight = config.Configs["LightShare"].GetBoolean("enable_windlight", false); - } - catch (Exception) - { - m_log.Debug("[WINDLIGHT]: ini failure for enable_windlight - using default"); - } - - m_log.DebugFormat("[WINDLIGHT]: windlight module {0}", (m_enableWindlight ? "enabled" : "disabled")); - } - - public void AddRegion(Scene scene) - { - if (!m_enableWindlight) - return; - - m_scene = scene; - m_scene.RegisterModuleInterface(this); - m_scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole; - - m_scene.EventManager.OnMakeRootAgent += EventManager_OnMakeRootAgent; - m_scene.EventManager.OnSaveNewWindlightProfile += EventManager_OnSaveNewWindlightProfile; - m_scene.EventManager.OnSendNewWindlightProfileTargeted += EventManager_OnSendNewWindlightProfileTargeted; - m_scene.LoadWindlightProfile(); - - InstallCommands(); - } - - public void RemoveRegion(Scene scene) - { - if (!m_enableWindlight) - return; - - m_scene.EventManager.OnPluginConsole -= EventManager_OnPluginConsole; - - m_scene.EventManager.OnMakeRootAgent -= EventManager_OnMakeRootAgent; - m_scene.EventManager.OnSaveNewWindlightProfile -= EventManager_OnSaveNewWindlightProfile; - m_scene.EventManager.OnSendNewWindlightProfileTargeted -= EventManager_OnSendNewWindlightProfileTargeted; - - m_scene = null; - } - - public void Close() - { - } - - public string Name - { - get { return "LightShareModule"; } - } - - public void RegionLoaded(Scene scene) - { - } - - public Type ReplaceableInterface - { - get { return null; } - } - - #endregion - - public static bool EnableWindlight - { - get - { - return m_enableWindlight; - } - set - { - } - } - - #region events - - private List compileWindlightSettings(RegionLightShareData wl) - { - byte[] mBlock = new Byte[249]; - int pos = 0; - - wl.waterColor.ToBytes(mBlock, 0); pos += 12; - Utils.FloatToBytes(wl.waterFogDensityExponent).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.underwaterFogModifier).CopyTo(mBlock, pos); pos += 4; - wl.reflectionWaveletScale.ToBytes(mBlock, pos); pos += 12; - Utils.FloatToBytes(wl.fresnelScale).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.fresnelOffset).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.refractScaleAbove).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.refractScaleBelow).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.blurMultiplier).CopyTo(mBlock, pos); pos += 4; - wl.bigWaveDirection.ToBytes(mBlock, pos); pos += 8; - wl.littleWaveDirection.ToBytes(mBlock, pos); pos += 8; - wl.normalMapTexture.ToBytes(mBlock, pos); pos += 16; - wl.horizon.ToBytes(mBlock, pos); pos += 16; - Utils.FloatToBytes(wl.hazeHorizon).CopyTo(mBlock, pos); pos += 4; - wl.blueDensity.ToBytes(mBlock, pos); pos += 16; - Utils.FloatToBytes(wl.hazeDensity).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.densityMultiplier).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.distanceMultiplier).CopyTo(mBlock, pos); pos += 4; - wl.sunMoonColor.ToBytes(mBlock, pos); pos += 16; - Utils.FloatToBytes(wl.sunMoonPosition).CopyTo(mBlock, pos); pos += 4; - wl.ambient.ToBytes(mBlock, pos); pos += 16; - Utils.FloatToBytes(wl.eastAngle).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.sunGlowFocus).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.sunGlowSize).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.sceneGamma).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.starBrightness).CopyTo(mBlock, pos); pos += 4; - wl.cloudColor.ToBytes(mBlock, pos); pos += 16; - wl.cloudXYDensity.ToBytes(mBlock, pos); pos += 12; - Utils.FloatToBytes(wl.cloudCoverage).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.cloudScale).CopyTo(mBlock, pos); pos += 4; - wl.cloudDetailXYDensity.ToBytes(mBlock, pos); pos += 12; - Utils.FloatToBytes(wl.cloudScrollX).CopyTo(mBlock, pos); pos += 4; - Utils.FloatToBytes(wl.cloudScrollY).CopyTo(mBlock, pos); pos += 4; - Utils.UInt16ToBytes(wl.maxAltitude).CopyTo(mBlock, pos); pos += 2; - mBlock[pos] = Convert.ToByte(wl.cloudScrollXLock); pos++; - mBlock[pos] = Convert.ToByte(wl.cloudScrollYLock); pos++; - mBlock[pos] = Convert.ToByte(wl.drawClassicClouds); pos++; - List param = new List(); - param.Add(mBlock); - return param; - } - - public void SendProfileToClient(IClientAPI client) - { - SendProfileToClient(client, m_scene.RegionInfo.WindlightSettings); - } - - public void SendProfileToClient(IClientAPI client, RegionLightShareData wl) - { - if (client == null) - return; - - if (m_enableWindlight) - { - if (m_scene.RegionInfo.WindlightSettings.valid) - { - List param = compileWindlightSettings(wl); - client.SendGenericMessage("Windlight", UUID.Random(), param); - } - else - { - List param = new List(); - client.SendGenericMessage("WindlightReset", UUID.Random(), param); - } - } - } - - private void EventManager_OnMakeRootAgent(ScenePresence presence) - { - if (m_enableWindlight && m_scene.RegionInfo.WindlightSettings.valid) - m_log.Debug("[WINDLIGHT]: Sending windlight scene to new client"); - SendProfileToClient(presence.ControllingClient); - } - - private void EventManager_OnSendNewWindlightProfileTargeted(RegionLightShareData wl, UUID pUUID) - { - IClientAPI client; - m_scene.TryGetClient(pUUID, out client); - SendProfileToClient(client, wl); - } - - private void EventManager_OnSaveNewWindlightProfile() - { - m_scene.ForEachRootClient(SendProfileToClient); - } - - #endregion - - #region ICommandableModule Members - - private void InstallCommands() - { - Command wlload = new Command("load", CommandIntentions.COMMAND_NON_HAZARDOUS, HandleLoad, "Load windlight profile from the database and broadcast"); - Command wlenable = new Command("enable", CommandIntentions.COMMAND_NON_HAZARDOUS, HandleEnable, "Enable the windlight plugin"); - Command wldisable = new Command("disable", CommandIntentions.COMMAND_NON_HAZARDOUS, HandleDisable, "Disable the windlight plugin"); - - m_commander.RegisterCommand("load", wlload); - m_commander.RegisterCommand("enable", wlenable); - m_commander.RegisterCommand("disable", wldisable); - - m_scene.RegisterModuleCommander(m_commander); - } - - private void HandleLoad(Object[] args) - { - if (!m_enableWindlight) - { - m_log.InfoFormat("[WINDLIGHT]: Cannot load windlight profile, module disabled. Use 'windlight enable' first."); - } - else - { - m_log.InfoFormat("[WINDLIGHT]: Loading Windlight profile from database"); - m_scene.LoadWindlightProfile(); - m_log.InfoFormat("[WINDLIGHT]: Load complete"); - } - } - - private void HandleDisable(Object[] args) - { - m_log.InfoFormat("[WINDLIGHT]: Plugin now disabled"); - m_enableWindlight = false; - } - - private void HandleEnable(Object[] args) - { - m_log.InfoFormat("[WINDLIGHT]: Plugin now enabled"); - m_enableWindlight = true; - } - - /// - /// Processes commandline input. Do not call directly. - /// - /// Commandline arguments - private void EventManager_OnPluginConsole(string[] args) - { - if (args[0] == "windlight") - { - if (args.Length == 1) - { - m_commander.ProcessConsoleCommand("add", new string[0]); - return; - } - - string[] tmpArgs = new string[args.Length - 2]; - int i; - for (i = 2; i < args.Length; i++) - { - tmpArgs[i - 2] = args[i]; - } - - m_commander.ProcessConsoleCommand(args[1], tmpArgs); - } - } - #endregion - - } -} - diff --git a/OpenSim/Region/Framework/Interfaces/IEnvironmentModule.cs b/OpenSim/Region/Framework/Interfaces/IEnvironmentModule.cs index 80cf2dcc4b..9f48c88ef4 100644 --- a/OpenSim/Region/Framework/Interfaces/IEnvironmentModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IEnvironmentModule.cs @@ -33,8 +33,8 @@ namespace OpenSim.Region.Framework.Interfaces public interface IEnvironmentModule { void ResetEnvironmentSettings(UUID regionUUID); - //void FromLightShare(RegionLightShareData wl); - //RegionLightShareData ToLightShare(); - //byte[] GetDefaultAssetData(string name); + void FromLightShare(RegionLightShareData wl); + RegionLightShareData ToLightShare(); + byte[] GetDefaultAssetData(int type); } } diff --git a/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs b/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs index f8a6b53d47..d6b627a94c 100644 --- a/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs +++ b/OpenSim/Region/Framework/Interfaces/ISimulationDataService.cs @@ -109,9 +109,6 @@ namespace OpenSim.Region.Framework.Interfaces void StoreRegionSettings(RegionSettings rs); RegionSettings LoadRegionSettings(UUID regionUUID); - RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID); - void StoreRegionWindlightSettings(RegionLightShareData wl); - void RemoveRegionWindlightSettings(UUID regionID); /// /// Load Environment settings from region storage diff --git a/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs b/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs index 19ba787931..624d79c2b8 100644 --- a/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs +++ b/OpenSim/Region/Framework/Interfaces/ISimulationDataStore.cs @@ -121,9 +121,7 @@ namespace OpenSim.Region.Framework.Interfaces void StoreRegionSettings(RegionSettings rs); RegionSettings LoadRegionSettings(UUID regionUUID); - RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID); - void StoreRegionWindlightSettings(RegionLightShareData wl); - void RemoveRegionWindlightSettings(UUID regionID); + UUID[] GetObjectIDs(UUID regionID); /// diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 2c231b1b13..920005aad1 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -720,9 +720,6 @@ namespace OpenSim.Region.Framework.Scenes /// public event OnMakeChildAgentDelegate OnMakeChildAgent; - public delegate void OnSaveNewWindlightProfileDelegate(); - public delegate void OnSendNewWindlightProfileTargetedDelegate(RegionLightShareData wl, UUID user); - /// /// Triggered after the grunt work for adding a root agent to a /// scene has been performed (resuming attachment scripts, physics, @@ -739,9 +736,6 @@ namespace OpenSim.Region.Framework.Scenes /// public event Action OnMakeRootAgent; - public event OnSendNewWindlightProfileTargetedDelegate OnSendNewWindlightProfileTargeted; - public event OnSaveNewWindlightProfileDelegate OnSaveNewWindlightProfile; - /// /// Triggered when an object or attachment enters a scene /// @@ -2160,24 +2154,6 @@ namespace OpenSim.Region.Framework.Scenes } } - public void TriggerOnSendNewWindlightProfileTargeted(RegionLightShareData wl, UUID user) - { - OnSendNewWindlightProfileTargetedDelegate handlerSendNewWindlightProfileTargeted = OnSendNewWindlightProfileTargeted; - if (handlerSendNewWindlightProfileTargeted != null) - { - handlerSendNewWindlightProfileTargeted(wl, user); - } - } - - public void TriggerOnSaveNewWindlightProfile() - { - OnSaveNewWindlightProfileDelegate handlerSaveNewWindlightProfile = OnSaveNewWindlightProfile; - if (handlerSaveNewWindlightProfile != null) - { - handlerSaveNewWindlightProfile(); - } - } - public void TriggerOnMakeRootAgent(ScenePresence presence) { Action handlerMakeRootAgent = OnMakeRootAgent; diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 3b2afbcd9e..21a2a20123 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2123,17 +2123,17 @@ namespace OpenSim.Region.Framework.Scenes SimulationDataService.StoreBakedTerrain(Bakedmap.GetTerrainData(), RegionInfo.RegionID); } - public void StoreWindlightProfile(RegionLightShareData wl) + private ViewerEnviroment m_regionEnviroment; + public ViewerEnviroment RegionEnviroment { - RegionInfo.WindlightSettings = wl; - SimulationDataService.StoreRegionWindlightSettings(wl); - m_eventManager.TriggerOnSaveNewWindlightProfile(); - } - - public void LoadWindlightProfile() - { - RegionInfo.WindlightSettings = SimulationDataService.LoadRegionWindlightSettings(RegionInfo.RegionID); - m_eventManager.TriggerOnSaveNewWindlightProfile(); + get + { + return m_regionEnviroment; + } + set + { + m_regionEnviroment = value; + } } /// diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs index 1979012b8b..8bdc061255 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs @@ -62,9 +62,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api internal bool m_LSFunctionsEnabled = false; internal IScriptModuleComms m_comms = null; internal IConfig m_osslconfig; + internal IEnvironmentModule m_enviroment = null; - public void Initialize( - IScriptEngine scriptEngine, SceneObjectPart host, TaskInventoryItem item) + public void Initialize(IScriptEngine scriptEngine, SceneObjectPart host, TaskInventoryItem item) { m_ScriptEngine = scriptEngine; m_host = host; @@ -79,6 +79,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_comms = m_ScriptEngine.World.RequestModuleInterface(); if (m_comms == null) m_LSFunctionsEnabled = false; + + m_enviroment = m_ScriptEngine.World.RequestModuleInterface(); } public override Object InitializeLifetimeService() @@ -88,8 +90,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (lease.CurrentState == LeaseState.Initial) { lease.InitialLeaseTime = TimeSpan.FromMinutes(0); - // lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0); - // lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0); + //lease.RenewOnCallTime = TimeSpan.FromSeconds(10.0); + //lease.SponsorshipTimeout = TimeSpan.FromMinutes(1.0); } return lease; } @@ -120,13 +122,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api /// List of windlight parameters public LSL_List lsGetWindlightScene(LSL_List rules) { - if (!m_LSFunctionsEnabled) + if (!m_LSFunctionsEnabled || m_enviroment == null) { LSShoutError("LightShare functions are not enabled."); return new LSL_List(); } + m_host.AddScriptLPS(1); - RegionLightShareData wl = m_host.ParentGroup.Scene.RegionInfo.WindlightSettings; + + RegionLightShareData wl = m_enviroment.ToLightShare(); LSL_List values = new LSL_List(); int idx = 0; @@ -264,9 +268,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api private RegionLightShareData getWindlightProfileFromRules(LSL_List rules) { - RegionLightShareData wl = (RegionLightShareData)m_host.ParentGroup.Scene.RegionInfo.WindlightSettings.Clone(); + RegionLightShareData wl = m_enviroment.ToLightShare(); -// LSL_List values = new LSL_List(); int idx = 0; while (idx < rules.Length) { @@ -716,12 +719,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api /// success: true or false public int lsSetWindlightScene(LSL_List rules) { - if (!m_LSFunctionsEnabled) + if (!m_LSFunctionsEnabled || m_enviroment == null) { LSShoutError("LightShare functions are not enabled."); return 0; } + m_host.AddScriptLPS(1); + if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID)) { ScenePresence sp = World.GetScenePresence(m_host.OwnerID); @@ -733,42 +738,30 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } } - int success = 0; - m_host.AddScriptLPS(1); - - if (LightShareModule.EnableWindlight) + try { - RegionLightShareData wl; - try - { - wl = getWindlightProfileFromRules(rules); - } - catch(InvalidCastException e) - { - LSShoutError(e.Message); - return 0; - } - wl.valid = true; - m_host.ParentGroup.Scene.StoreWindlightProfile(wl); - success = 1; + RegionLightShareData wl = getWindlightProfileFromRules(rules); + m_enviroment.FromLightShare(wl); } - else + catch(InvalidCastException e) { - LSShoutError("Windlight module is disabled"); + LSShoutError(e.Message); return 0; } - return success; + return 1; } public void lsClearWindlightScene() { - if (!m_LSFunctionsEnabled) + if (!m_LSFunctionsEnabled || m_enviroment == null) { LSShoutError("LightShare functions are not enabled."); return; } + m_host.AddScriptLPS(1); + if (!World.RegionInfo.EstateSettings.IsEstateManagerOrOwner(m_host.OwnerID)) { ScenePresence sp = World.GetScenePresence(m_host.OwnerID); @@ -780,11 +773,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } } - m_host.ParentGroup.Scene.RegionInfo.WindlightSettings.valid = false; - if (m_host.ParentGroup.Scene.SimulationDataService != null) - m_host.ParentGroup.Scene.SimulationDataService.RemoveRegionWindlightSettings(m_host.ParentGroup.Scene.RegionInfo.RegionID); - - m_host.ParentGroup.Scene.EventManager.TriggerOnSaveNewWindlightProfile(); + m_enviroment.ResetEnvironmentSettings(m_host.ParentGroup.Scene.RegionInfo.RegionID); } /// @@ -794,6 +783,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api /// success: true or false public int lsSetWindlightSceneTargeted(LSL_List rules, LSL_Key target) { + LSShoutError("Function temporary not supported"); + return 0; + + /* disabled code until we add force a WL into a single user if (!m_LSFunctionsEnabled) { LSShoutError("LightShare functions are not enabled."); @@ -814,7 +807,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api int success = 0; m_host.AddScriptLPS(1); - if (LightShareModule.EnableWindlight) + if (m_enviroment != null) { RegionLightShareData wl; try @@ -836,6 +829,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } return success; + */ } } } diff --git a/OpenSim/Services/SimulationService/SimulationDataService.cs b/OpenSim/Services/SimulationService/SimulationDataService.cs index eef958ac4e..84e4a80da9 100644 --- a/OpenSim/Services/SimulationService/SimulationDataService.cs +++ b/OpenSim/Services/SimulationService/SimulationDataService.cs @@ -154,20 +154,6 @@ namespace OpenSim.Services.SimulationService return m_database.LoadRegionSettings(regionUUID); } - public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) - { - return m_database.LoadRegionWindlightSettings(regionUUID); - } - - public void StoreRegionWindlightSettings(RegionLightShareData wl) - { - m_database.StoreRegionWindlightSettings(wl); - } - public void RemoveRegionWindlightSettings(UUID regionID) - { - m_database.RemoveRegionWindlightSettings(regionID); - } - public string LoadRegionEnvironmentSettings(UUID regionUUID) { return m_database.LoadRegionEnvironmentSettings(regionUUID); diff --git a/OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs b/OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs index 8379b0aa15..ab0e4f4454 100644 --- a/OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs +++ b/OpenSim/Tests/Common/Mock/MockRegionDataPlugin.cs @@ -119,20 +119,6 @@ namespace OpenSim.Data.Null return m_store.LoadRegionSettings(regionUUID); } - public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) - { - return m_store.LoadRegionWindlightSettings(regionUUID); - } - - public void RemoveRegionWindlightSettings(UUID regionID) - { - } - - public void StoreRegionWindlightSettings(RegionLightShareData wl) - { - m_store.StoreRegionWindlightSettings(wl); - } - public string LoadRegionEnvironmentSettings(UUID regionUUID) { return m_store.LoadRegionEnvironmentSettings(regionUUID); @@ -197,22 +183,6 @@ namespace OpenSim.Data.Null m_regionSettings[rs.RegionUUID] = rs; } - public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) - { - //This connector doesn't support the windlight module yet - //Return default LL windlight settings - return new RegionLightShareData(); - } - - public void RemoveRegionWindlightSettings(UUID regionID) - { - } - - public void StoreRegionWindlightSettings(RegionLightShareData wl) - { - //This connector doesn't support the windlight module yet - } - #region Environment Settings public string LoadRegionEnvironmentSettings(UUID regionUUID) { diff --git a/bin/assets/AssetSets.xml b/bin/assets/AssetSets.xml index 829f845e5d..dc440adecf 100644 --- a/bin/assets/AssetSets.xml +++ b/bin/assets/AssetSets.xml @@ -77,5 +77,9 @@
+ +
+ +
diff --git a/bin/assets/SettingsAssetSet/DefaultDaycycle.xml b/bin/assets/SettingsAssetSet/DefaultDaycycle.xml new file mode 100644 index 0000000000..1a3dac446d --- /dev/null +++ b/bin/assets/SettingsAssetSet/DefaultDaycycle.xml @@ -0,0 +1 @@ +frames10809890408763334407absorption_configconstant_term1exp_scale0exp_term0linear_term0width0constant_term1exp_scale0exp_term0linear_term0width0bloom_id3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3befcloud_color0.22615399956703186035156250.22615399956703186035156250.2261539995670318603515625cloud_id1dc1368f-e8fe-f02d-a08d-9d9f11c1af6bcloud_pos_density110.5260969996452331542968750.87999999523162841796875cloud_pos_density210.5260969996452331542968750.125cloud_scale0.4199999868869781494140625cloud_scroll_rate0.499400138854980468750.0109996795654296875cloud_shadow0.269999980926513671875cloud_variance0dome_offset0.959999978542327880859375dome_radius15000droplet_radius800flags0gamma1glow50.001000000047497451305389404-0.4799999892711639404296875halo_idice_level0legacy_hazeambient0.20405027270317077636718750.24246673285961151123046880.329999983310699462890625blue_density0.4499999880790710449218750.4499999880790710449218750.449999988079071044921875blue_horizon0.23999999463558197021484380.23999999463558197021484380.2399999946355819702148438density_multiplier0.0001590000028954818844795227distance_multiplier9.999999747378751635551453e-05haze_density4haze_horizon0max_y906.20001220703125mie_configanisotropy0.800000011920928955078125constant_term0exp_scale-0.0008333333535119891166687012exp_term1linear_term0width0moisture_level0moon_brightness0.5moon_idec4b9f0b-d008-45c6-96a4-01dd947ac621moon_rotation0-0.707107007503509521484375-4.028524611338415994943318e-140.70710647106170654296875moon_scale1planet_radius6360rainbow_id11b4c57c-56b3-04ed-1f82-2004363882e4rayleigh_configconstant_term0exp_scale-0.0001250000059371814131736755exp_term1linear_term0width0sky_bottom_radius6360sky_top_radius6420star_brightness500sun_arc_radians0.0004499999922700226306915283sun_idsun_rotation00.70710653066635131835937500.70710694789886474609375sun_scale1sunlight_color0.348766922950744628906250.35574248433113098144531250.659999966621398925781250.2199999988079071044921875typesky12059426462794438368blur_multiplier0.04000000283122062683105469flags0fresnel_offset0.5fresnel_scale0.39999997615814208984375normal_map822ded49-9a6c-f61c-cb89-6df54f42cdf4normal_scale222scale_above0.02999999932944774627685547scale_below0.2000000029802322387695313typewaterunderwater_fog_mod0.25water_fog_color0.015686275437474250793457030.14901961386203765869140630.2509804069995880126953125water_fog_density16wave1_direction1.049999713897705078125-0.4200000762939453125wave2_direction1.10999965667724609375-1.160000085830688476562512704758109389341107absorption_configconstant_term1exp_scale0exp_term0linear_term0width0constant_term1exp_scale0exp_term0linear_term0width0bloom_id3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3befcloud_color0.22615399956703186035156250.22615399956703186035156250.2261539995670318603515625cloud_id1dc1368f-e8fe-f02d-a08d-9d9f11c1af6bcloud_pos_density110.5260969996452331542968750.87999999523162841796875cloud_pos_density210.5260969996452331542968750.125cloud_scale0.4199999868869781494140625cloud_scroll_rate0.499400138854980468750.0109996795654296875cloud_shadow0.269999980926513671875cloud_variance0dome_offset0.959999978542327880859375dome_radius15000droplet_radius800flags0gamma1glow50.001000000047497451305389404-0.4799999892711639404296875halo_idice_level0legacy_hazeambient1.0199999809265136718750.8099999427795410156250.809999942779541015625blue_density0.14522500336170196533203130.39999699592590332031250.80000197887420654296875blue_horizon0.10767599940299987792968750.21348699927330017089843750.25density_multiplier0.0004600000102072954177856445distance_multiplier1haze_density0.699999988079071044921875haze_horizon0.1599999964237213134765625max_y562.5mie_configanisotropy0.800000011920928955078125constant_term0exp_scale-0.0008333333535119891166687012exp_term1linear_term0width0moisture_level0moon_brightness0.5moon_idec4b9f0b-d008-45c6-96a4-01dd947ac621moon_rotation00.037689492106437683105468754.361759309290391684044152e-080.99928951263427734375moon_scale1planet_radius6360rainbow_id11b4c57c-56b3-04ed-1f82-2004363882e4rayleigh_configconstant_term0exp_scale-0.0001250000059371814131736755exp_term1linear_term0width0sky_bottom_radius6360sky_top_radius6420star_brightness0sun_arc_radians0.0004499999922700226306915283sun_idsun_rotation0-0.9992895126342773437500.03768949210643768310546875sun_scale1sunlight_color2.8385701179504394531252.8385701179504394531252.8385701179504394531251typesky13959514211989552638absorption_configconstant_term1exp_scale0exp_term0linear_term0width0constant_term1exp_scale0exp_term0linear_term0width0bloom_id3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3befcloud_color0.22616603970527648925781250.22616603970527648925781250.2261660397052764892578125cloud_id1dc1368f-e8fe-f02d-a08d-9d9f11c1af6bcloud_pos_density110.5260969996452331542968750.88000023365020751953125cloud_pos_density210.5260969996452331542968750.125cloud_scale0.4199999868869781494140625cloud_scroll_rate0.499400138854980468750.0109996795654296875cloud_shadow0.269999980926513671875cloud_variance0dome_offset0.959999978542327880859375dome_radius15000droplet_radius800flags0gamma1glow5.0009989738464355468750.001000000047497451305389404-0.480001032352447509765625halo_idice_level0legacy_hazeambient0.8099999427795410156250.4628978371620178222656250.629999935626983642578125blue_density0.1579318046569824218750.43499568104743957519531250.87000000476837158203125blue_horizon0.20673196017742156982421880.409883141517639160156250.4799999892711639404296875density_multiplier0.0006200000061653554439544678distance_multiplier2.6999280452728271484375haze_density0.53999996185302734375haze_horizon0.1599999964237213134765625max_y563mie_configanisotropy0.800000011920928955078125constant_term0exp_scale-0.0008333333535119891166687012exp_term1linear_term0width0moisture_level0moon_brightness0.5moon_idec4b9f0b-d008-45c6-96a4-01dd947ac621moon_rotation00.998889923095703125-9.238106599696038756519556e-070.04710662364959716796875moon_scale1planet_radius6360rainbow_id11b4c57c-56b3-04ed-1f82-2004363882e4rayleigh_configconstant_term0exp_scale-0.0001250000059371814131736755exp_term1linear_term0width0sky_bottom_radius6360sky_top_radius6420star_brightness0sun_arc_radians0.0004499999922700226306915283sun_idsun_rotation0-0.0471064895391464233398437500.998889923095703125sun_scale1sunlight_color2.369999885559082031252.369999885559082031252.369999885559082031250.78999996185302734375typesky17057452632552534691absorption_configconstant_term1exp_scale0exp_term0linear_term0width0constant_term1exp_scale0exp_term0linear_term0width0bloom_id3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3befcloud_color0.22615399956703186035156250.22615399956703186035156250.2261539995670318603515625cloud_id1dc1368f-e8fe-f02d-a08d-9d9f11c1af6bcloud_pos_density110.5260969996452331542968750.87999999523162841796875cloud_pos_density210.5260969996452331542968750.125cloud_scale0.4199999868869781494140625cloud_scroll_rate0.499400138854980468750.0109996795654296875cloud_shadow0.269999980926513671875cloud_variance0dome_offset0.959999978542327880859375dome_radius15000droplet_radius800flags0gamma1glow50.001000000047497451305389404-0.4799999892711639404296875halo_idice_level0legacy_hazeambient0.22259476780891418457031250.264502525329589843750.3599999845027923583984375blue_density0.4499911665916442871093750.4499985575675964355468750.450010120868682861328125blue_horizon0.23999616503715515136718750.2399992346763610839843750.2400002926588058471679688density_multiplier0.0003000046417582780122756958distance_multiplier9.999999747378751635551453e-05haze_density3.9999043941497802734375haze_horizon4.634855940821580588817596e-06max_y906.1900634765625mie_configanisotropy0.800000011920928955078125constant_term0exp_scale-0.0008333333535119891166687012exp_term1linear_term0width0moisture_level0moon_brightness0.5moon_idec4b9f0b-d008-45c6-96a4-01dd947ac621moon_rotation0-0.9238796234130859375-8.076819568714199704118073e-080.382683277130126953125moon_scale1planet_radius6360rainbow_id11b4c57c-56b3-04ed-1f82-2004363882e4rayleigh_configconstant_term0exp_scale-0.0001250000059371814131736755exp_term1linear_term0width0sky_bottom_radius6360sky_top_radius6420star_brightness499.985504150390625sun_arc_radians0.0004499999922700226306915283sun_idsun_rotation00.382683187723159790039062500.9238796234130859375sun_scale1sunlight_color0.60242295265197753906250.614470362663269042968751.139999985694885253906250.37999999523162841796875typesky17616589359191419202absorption_configconstant_term1exp_scale0exp_term0linear_term0width0constant_term1exp_scale0exp_term0linear_term0width0bloom_id3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3befcloud_color0.40999999642372131347656250.40999999642372131347656250.4099999964237213134765625cloud_id1dc1368f-e8fe-f02d-a08d-9d9f11c1af6bcloud_pos_density110.5260969996452331542968751cloud_pos_density210.5260969996452331542968750.125cloud_scale0.4199999868869781494140625cloud_scroll_rate0.199999809265136718750.0109996795654296875cloud_shadow0.269999980926513671875cloud_variance0dome_offset0.959999978542327880859375dome_radius15000droplet_radius800flags0gamma1glow50.001000000047497451305389404-0.4799999892711639404296875halo_idice_level0legacy_hazeambient1.04999995231628417968751.04999995231628417968751.0499999523162841796875blue_density0.24475814402103424072265630.44872328639030456542968750.7599999904632568359375blue_horizon0.4954838156700134277343750.4954838156700134277343750.63999998569488525390625density_multiplier0.0001799999881768599152565002distance_multiplier0.800000011920928955078125haze_density0.699999988079071044921875haze_horizon0.189999997615814208984375max_y1605mie_configanisotropy0.800000011920928955078125constant_term0exp_scale-0.0008333333535119891166687012exp_term1linear_term0width0moisture_level0moon_brightness0.5moon_idec4b9f0b-d008-45c6-96a4-01dd947ac621moon_rotation00.38268336653709411621093753.345525456666109676007181e-080.923879563808441162109375moon_scale1planet_radius6360rainbow_id11b4c57c-56b3-04ed-1f82-2004363882e4rayleigh_configconstant_term0exp_scale-0.0001250000059371814131736755exp_term1linear_term0width0sky_bottom_radius6360sky_top_radius6420star_brightness0sun_arc_radians0.0004499999922700226306915283sun_idsun_rotation0-0.923879623413085937500.382683277130126953125sun_scale1sunlight_color0.7342105507850646972656250.7815789580345153808593750.899999976158142089843750.2999999821186065673828125typesky18208940288658674853absorption_configconstant_term1exp_scale0exp_term0linear_term0width0constant_term1exp_scale0exp_term0linear_term0width0bloom_id3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3befcloud_color0.40999999642372131347656250.40999999642372131347656250.4099999964237213134765625cloud_id1dc1368f-e8fe-f02d-a08d-9d9f11c1af6bcloud_pos_density110.5260969996452331542968751cloud_pos_density210.5260969996452331542968750.125cloud_scale0.4199999868869781494140625cloud_scroll_rate0.199999809265136718750.0109996795654296875cloud_shadow0.269999980926513671875cloud_variance0dome_offset0.959999978542327880859375dome_radius15000droplet_radius800flags0gamma1glow50.001000000047497451305389404-0.4799999892711639404296875halo_idice_level0legacy_hazeambient1.04999995231628417968751.04999995231628417968751.0499999523162841796875blue_density0.24475815892219543457031250.44872328639030456542968750.7599999904632568359375blue_horizon0.4954838156700134277343750.4954838156700134277343750.63999998569488525390625density_multiplier0.0001799999881768599152565002distance_multiplier0.800000011920928955078125haze_density0.699999988079071044921875haze_horizon0.189999997615814208984375max_y1605mie_configanisotropy0.800000011920928955078125constant_term0exp_scale-0.0008333333535119891166687012exp_term1linear_term0width0moisture_level0moon_brightness0.5moon_idec4b9f0b-d008-45c6-96a4-01dd947ac621moon_rotation00.7071067690849304199218755.404234527874203497521677e-150.7071068286895751953125moon_scale1planet_radius6360rainbow_id11b4c57c-56b3-04ed-1f82-2004363882e4rayleigh_configconstant_term0exp_scale-0.0001250000059371814131736755exp_term1linear_term0width0sky_bottom_radius6360sky_top_radius6420star_brightness0sun_arc_radians0.0004499999922700226306915283sun_idsun_rotation0-0.707106828689575195312500.7071068286895751953125sun_scale1sunlight_color0.7342105507850646972656250.7815789580345153808593750.899999976158142089843750.2999999821186065673828125typesky3639038607915694966absorption_configconstant_term1exp_scale0exp_term0linear_term0width0constant_term1exp_scale0exp_term0linear_term0width0bloom_id3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3befcloud_color0.22615399956703186035156250.22615399956703186035156250.2261539995670318603515625cloud_id1dc1368f-e8fe-f02d-a08d-9d9f11c1af6bcloud_pos_density110.5260969996452331542968750.87999999523162841796875cloud_pos_density210.5260969996452331542968750.125cloud_scale0.4199999868869781494140625cloud_scroll_rate0.499400138854980468750.0109996795654296875cloud_shadow0.269999980926513671875cloud_variance0dome_offset0.959999978542327880859375dome_radius15000droplet_radius800flags0gamma1glow50.001000000047497451305389404-0.4799999892711639404296875halo_idice_level0legacy_hazeambient0.20404693484306335449218750.24246276915073394775390630.3300038278102874755859375blue_density0.4499911665916442871093750.4499985575675964355468750.450010120868682861328125blue_horizon0.23999616503715515136718750.2399992346763610839843750.2400002926588058471679688density_multiplier0.0003000046417582780122756958distance_multiplier9.999999747378751635551453e-05haze_density3.9999043941497802734375haze_horizon4.634855940821580588817596e-06max_y906.1900634765625mie_configanisotropy0.800000011920928955078125constant_term0exp_scale-0.0008333333535119891166687012exp_term1linear_term0width0moisture_level0moon_brightness0.5moon_idec4b9f0b-d008-45c6-96a4-01dd947ac621moon_rotation0-0.38268360495567321777343753.345525101394741795957088e-080.92387950420379638671875moon_scale1planet_radius6360rainbow_id11b4c57c-56b3-04ed-1f82-2004363882e4rayleigh_configconstant_term0exp_scale-0.0001250000059371814131736755exp_term1linear_term0width0sky_bottom_radius6360sky_top_radius6420star_brightness499.985504150390625sun_arc_radians0.0004499999922700226306915283sun_idsun_rotation00.9238795042037963867187500.3826837241649627685546875sun_scale1sunlight_color0.348789811134338378906250.35576510429382324218750.66003584861755371093750.2200119793415069580078125typesky4342854188752023401absorption_configconstant_term1exp_scale0exp_term0linear_term0width0constant_term1exp_scale0exp_term0linear_term0width0bloom_id3c59f7fe-9dc8-47f9-8aaf-a9dd1fbc3befcloud_color0.370000004768371582031250.370000004768371582031250.37000000476837158203125cloud_id1dc1368f-e8fe-f02d-a08d-9d9f11c1af6bcloud_pos_density110.5260969996452331542968751cloud_pos_density210.5260969996452331542968750.125cloud_scale0.4199999868869781494140625cloud_scroll_rate0.199999809265136718750.0109996795654296875cloud_shadow0.2733333110809326171875cloud_variance0dome_offset0.959999978542327880859375dome_radius15000droplet_radius800flags0gamma1glow50.001000000047497451305389404-0.4799999892711639404296875halo_idice_level0legacy_hazeambient1.04999995231628417968751.04999995231628417968751.0499999523162841796875blue_density0.15999999642372131347656250.44872328639030456542968750.7599999904632568359375blue_horizon0.539999961853027343750.47999998927116394042968750.699999988079071044921875density_multiplier0.0001799999881768599152565002distance_multiplier0.80000007152557373046875haze_density0.7000000476837158203125haze_horizon0.189999997615814208984375max_y1605mie_configanisotropy0.800000011920928955078125constant_term0exp_scale-0.0008333333535119891166687012exp_term1linear_term0width0moisture_level0moon_brightness0.5moon_idec4b9f0b-d008-45c6-96a4-01dd947ac621moon_rotation00.923879563808441162109375-8.076811752744106343016028e-080.382683277130126953125moon_scale1planet_radius6360rainbow_id11b4c57c-56b3-04ed-1f82-2004363882e4rayleigh_configconstant_term0exp_scale-0.0001250000059371814131736755exp_term1linear_term0width0sky_bottom_radius6360sky_top_radius6420star_brightness0sun_arc_radians0.0004499999922700226306915283sun_idsun_rotation0-0.3826833963394165039062500.923879563808441162109375sun_scale1sunlight_color0.7342105507850646972656250.7815789580345153808593750.899999976158142089843750.2999999821186065673828125typeskynameDefault environmenttrackskey_keyframe0key_name12059426462794438368key_keyframe0key_name10809890408763334407key_keyframe0.125key_name17057452632552534691key_keyframe0.25key_name13959514211989552638key_keyframe0.375key_name4342854188752023401key_keyframe0.5key_name18208940288658674853key_keyframe0.625key_name17616589359191419202key_keyframe0.75key_name12704758109389341107key_keyframe0.875key_name3639038607915694966typedaycycle \ No newline at end of file diff --git a/bin/assets/SettingsAssetSet/SettingsAssetSet.xml b/bin/assets/SettingsAssetSet/SettingsAssetSet.xml new file mode 100644 index 0000000000..3ca9e533ca --- /dev/null +++ b/bin/assets/SettingsAssetSet/SettingsAssetSet.xml @@ -0,0 +1,9 @@ + +
+ + + + +
+ +
diff --git a/bin/assets/TexturesAssetSet/DefaultClouds.j2c b/bin/assets/TexturesAssetSet/DefaultClouds.j2c new file mode 100644 index 0000000000..4d93df85e9 Binary files /dev/null and b/bin/assets/TexturesAssetSet/DefaultClouds.j2c differ diff --git a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml index c8ea3345e6..6911d782c9 100644 --- a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml +++ b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml @@ -855,6 +855,13 @@ +
+ + + + +
+ diff --git a/bin/inventory/Libraries.xml b/bin/inventory/Libraries.xml index d9592a4a56..2d1362abbb 100644 --- a/bin/inventory/Libraries.xml +++ b/bin/inventory/Libraries.xml @@ -82,5 +82,9 @@ +
+ + +
diff --git a/bin/inventory/SettingsLibrary/Folders.xml b/bin/inventory/SettingsLibrary/Folders.xml new file mode 100644 index 0000000000..2a51762848 --- /dev/null +++ b/bin/inventory/SettingsLibrary/Folders.xml @@ -0,0 +1,28 @@ + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+ + + + +
+
diff --git a/bin/inventory/SettingsLibrary/Items.xml b/bin/inventory/SettingsLibrary/Items.xml new file mode 100644 index 0000000000..4de0f7fc3b --- /dev/null +++ b/bin/inventory/SettingsLibrary/Items.xml @@ -0,0 +1,40 @@ + + + + + + + +
+ + + + + + + + +
+ + +