diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLDataStore.cs | 9 | ||||
-rw-r--r-- | OpenSim/Framework/RegionSettings.cs | 201 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 8 |
3 files changed, 213 insertions, 5 deletions
diff --git a/OpenSim/Data/MySQL/MySQLDataStore.cs b/OpenSim/Data/MySQL/MySQLDataStore.cs index f1a252d..69f9a16 100644 --- a/OpenSim/Data/MySQL/MySQLDataStore.cs +++ b/OpenSim/Data/MySQL/MySQLDataStore.cs | |||
@@ -736,7 +736,14 @@ namespace OpenSim.Data.MySQL | |||
736 | string searchExp = "regionUUID = '" + regionUUID.ToString() + "'"; | 736 | string searchExp = "regionUUID = '" + regionUUID.ToString() + "'"; |
737 | DataRow[] rawsettings = regionsettings.Select(searchExp); | 737 | DataRow[] rawsettings = regionsettings.Select(searchExp); |
738 | if(rawsettings.Length == 0) | 738 | if(rawsettings.Length == 0) |
739 | return null; | 739 | { |
740 | RegionSettings rs = new RegionSettings(); | ||
741 | rs.RegionUUID = regionUUID; | ||
742 | |||
743 | StoreRegionSettings(rs); | ||
744 | |||
745 | return rs; | ||
746 | } | ||
740 | DataRow row = rawsettings[0]; | 747 | DataRow row = rawsettings[0]; |
741 | 748 | ||
742 | return buildRegionSettings(row); | 749 | return buildRegionSettings(row); |
diff --git a/OpenSim/Framework/RegionSettings.cs b/OpenSim/Framework/RegionSettings.cs index ac853b5..79185e4 100644 --- a/OpenSim/Framework/RegionSettings.cs +++ b/OpenSim/Framework/RegionSettings.cs | |||
@@ -26,6 +26,8 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.IO; | ||
30 | using System.Reflection; | ||
29 | using libsecondlife; | 31 | using libsecondlife; |
30 | using log4net; | 32 | using log4net; |
31 | 33 | ||
@@ -33,6 +35,205 @@ namespace OpenSim.Framework | |||
33 | { | 35 | { |
34 | public class RegionSettings | 36 | public class RegionSettings |
35 | { | 37 | { |
38 | private ConfigurationMember configMember; | ||
39 | |||
40 | public delegate void SaveDelegate(RegionSettings rs); | ||
41 | |||
42 | public event SaveDelegate OnSave; | ||
43 | |||
44 | public RegionSettings() | ||
45 | { | ||
46 | if (configMember == null) | ||
47 | { | ||
48 | configMember = new ConfigurationMember(Path.Combine(Util.configDir(), "estate_settings.xml"), "ESTATE SETTINGS", LoadConfigurationOptions, HandleIncomingConfiguration, true); | ||
49 | configMember.performConfigurationRetrieve(); | ||
50 | } | ||
51 | } | ||
52 | |||
53 | public void LoadConfigurationOptions() | ||
54 | { | ||
55 | configMember.addConfigurationOption("region_flags", | ||
56 | ConfigurationOption.ConfigurationTypes.TYPE_UINT32, | ||
57 | String.Empty, "336723974", true); | ||
58 | |||
59 | configMember.addConfigurationOption("max_agents", | ||
60 | ConfigurationOption.ConfigurationTypes.TYPE_INT32, | ||
61 | String.Empty, "40", true); | ||
62 | |||
63 | configMember.addConfigurationOption("object_bonus_factor", | ||
64 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
65 | String.Empty, "1.0", true); | ||
66 | |||
67 | configMember.addConfigurationOption("sim_access", | ||
68 | ConfigurationOption.ConfigurationTypes.TYPE_INT32, | ||
69 | String.Empty, "21", true); | ||
70 | |||
71 | configMember.addConfigurationOption("terrain_detail_0", | ||
72 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
73 | String.Empty, "00000000-0000-0000-0000-000000000000",true); | ||
74 | |||
75 | configMember.addConfigurationOption("terrain_detail_1", | ||
76 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
77 | String.Empty, "00000000-0000-0000-0000-000000000000",true); | ||
78 | |||
79 | configMember.addConfigurationOption("terrain_detail_2", | ||
80 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
81 | String.Empty, "00000000-0000-0000-0000-000000000000",true); | ||
82 | |||
83 | configMember.addConfigurationOption("terrain_detail_3", | ||
84 | ConfigurationOption.ConfigurationTypes.TYPE_LLUUID, | ||
85 | String.Empty, "00000000-0000-0000-0000-000000000000",true); | ||
86 | |||
87 | configMember.addConfigurationOption("terrain_start_height_0", | ||
88 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
89 | String.Empty, "10.0", true); | ||
90 | |||
91 | configMember.addConfigurationOption("terrain_start_height_1", | ||
92 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
93 | String.Empty, "10.0", true); | ||
94 | |||
95 | configMember.addConfigurationOption("terrain_start_height_2", | ||
96 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
97 | String.Empty, "10.0", true); | ||
98 | |||
99 | configMember.addConfigurationOption("terrain_start_height_3", | ||
100 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
101 | String.Empty, "10.0", true); | ||
102 | |||
103 | configMember.addConfigurationOption("terrain_height_range_0", | ||
104 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
105 | String.Empty, "60.0", true); | ||
106 | |||
107 | configMember.addConfigurationOption("terrain_height_range_1", | ||
108 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
109 | String.Empty, "60.0", true); | ||
110 | |||
111 | configMember.addConfigurationOption("terrain_height_range_2", | ||
112 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
113 | String.Empty, "60.0", true); | ||
114 | |||
115 | configMember.addConfigurationOption("terrain_height_range_3", | ||
116 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
117 | String.Empty, "60.0", true); | ||
118 | |||
119 | configMember.addConfigurationOption("region_water_height", | ||
120 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
121 | String.Empty, "20.0", true); | ||
122 | |||
123 | configMember.addConfigurationOption("terrain_raise_limit", | ||
124 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
125 | String.Empty, "100.0", true); | ||
126 | |||
127 | configMember.addConfigurationOption("terrain_lower_limit", | ||
128 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
129 | String.Empty, "100.0", true); | ||
130 | |||
131 | configMember.addConfigurationOption("sun_hour", | ||
132 | ConfigurationOption.ConfigurationTypes.TYPE_DOUBLE, | ||
133 | String.Empty, "0.0", true); | ||
134 | } | ||
135 | |||
136 | public bool HandleIncomingConfiguration(string key, object value) | ||
137 | { | ||
138 | switch(key) | ||
139 | { | ||
140 | case "region_flags": | ||
141 | Simulator.RegionFlags flags = (Simulator.RegionFlags)(uint)value; | ||
142 | |||
143 | m_BlockTerraform = | ||
144 | (flags & Simulator.RegionFlags.BlockTerraform) != 0; | ||
145 | m_BlockFly = | ||
146 | (flags & Simulator.RegionFlags.NoFly) != 0; | ||
147 | m_AllowDamage = | ||
148 | (flags & Simulator.RegionFlags.AllowDamage) != 0; | ||
149 | m_RestrictPushing = | ||
150 | (flags & Simulator.RegionFlags.RestrictPushObject) != 0; | ||
151 | m_AllowLandResell = | ||
152 | (flags & Simulator.RegionFlags.BlockLandResell) == 0; | ||
153 | m_AllowLandJoinDivide = | ||
154 | (flags & Simulator.RegionFlags.AllowParcelChanges) != 0; | ||
155 | m_BlockShowInSearch = | ||
156 | ((uint)flags & (1 << 29)) != 0; | ||
157 | m_DisableScripts = | ||
158 | (flags & Simulator.RegionFlags.SkipScripts) != 0; | ||
159 | m_DisableCollisions = | ||
160 | (flags & Simulator.RegionFlags.SkipCollisions) != 0; | ||
161 | m_DisablePhysics = | ||
162 | (flags & Simulator.RegionFlags.SkipPhysics) != 0; | ||
163 | m_FixedSun = | ||
164 | (flags & Simulator.RegionFlags.SunFixed) != 0; | ||
165 | break; | ||
166 | case "max_agents": | ||
167 | m_AgentLimit = (int)value; | ||
168 | break; | ||
169 | case "object_bonus_factor": | ||
170 | m_ObjectBonus = (double)value; | ||
171 | break; | ||
172 | case "sim_access": | ||
173 | int access = (int)value; | ||
174 | if(access <= 13) | ||
175 | m_Maturity = 0; | ||
176 | else | ||
177 | m_Maturity = 1; | ||
178 | break; | ||
179 | case "terrain_detail_0": | ||
180 | m_TerrainTexture1 = (LLUUID)value; | ||
181 | break; | ||
182 | case "terrain_detail_1": | ||
183 | m_TerrainTexture1 = (LLUUID)value; | ||
184 | break; | ||
185 | case "terrain_detail_2": | ||
186 | m_TerrainTexture1 = (LLUUID)value; | ||
187 | break; | ||
188 | case "terrain_detail_3": | ||
189 | m_TerrainTexture1 = (LLUUID)value; | ||
190 | break; | ||
191 | case "terrain_start_height_0": | ||
192 | m_Elevation1SW = (double)value; | ||
193 | break; | ||
194 | case "terrain_start_height_1": | ||
195 | m_Elevation1NW = (double)value; | ||
196 | break; | ||
197 | case "terrain_start_height_2": | ||
198 | m_Elevation1SE = (double)value; | ||
199 | break; | ||
200 | case "terrain_start_height_3": | ||
201 | m_Elevation1NE = (double)value; | ||
202 | break; | ||
203 | case "terrain_height_range_0": | ||
204 | m_Elevation2SW = (double)value; | ||
205 | break; | ||
206 | case "terrain_height_range_1": | ||
207 | m_Elevation2NW = (double)value; | ||
208 | break; | ||
209 | case "terrain_height_range_2": | ||
210 | m_Elevation2SE = (double)value; | ||
211 | break; | ||
212 | case "terrain_height_range_3": | ||
213 | m_Elevation2NE = (double)value; | ||
214 | break; | ||
215 | case "region_water_height": | ||
216 | m_WaterHeight = (double)value; | ||
217 | break; | ||
218 | case "terrain_raise_limit": | ||
219 | m_TerrainRaiseLimit = (double)value; | ||
220 | break; | ||
221 | case "terrain_lower_limit": | ||
222 | m_TerrainLowerLimit = (double)value; | ||
223 | break; | ||
224 | case "sun_hour": | ||
225 | m_SunPosition = (double)value; | ||
226 | break; | ||
227 | } | ||
228 | |||
229 | return true; | ||
230 | } | ||
231 | |||
232 | public void Save() | ||
233 | { | ||
234 | OnSave(this); | ||
235 | } | ||
236 | |||
36 | private LLUUID m_RegionUUID = LLUUID.Zero; | 237 | private LLUUID m_RegionUUID = LLUUID.Zero; |
37 | 238 | ||
38 | public LLUUID RegionUUID | 239 | public LLUUID RegionUUID |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 12c909b..12d7bcd 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -267,10 +267,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
267 | // Load region settings | 267 | // Load region settings |
268 | // First try database | 268 | // First try database |
269 | m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); | 269 | m_regInfo.RegionSettings = m_storageManager.DataStore.LoadRegionSettings(m_regInfo.RegionID); |
270 | // If the database access failed, this will create defaults | 270 | |
271 | m_regInfo.RegionSettings.RegionUUID = m_regInfo.RegionID; | 271 | // Hook up save event |
272 | // Finally, save the defaults | 272 | m_regInfo.RegionSettings.OnSave += m_storageManager.DataStore.StoreRegionSettings; |
273 | m_storageManager.DataStore.StoreRegionSettings(m_regInfo.RegionSettings); | 273 | |
274 | 274 | ||
275 | //Bind Storage Manager functions to some land manager functions for this scene | 275 | //Bind Storage Manager functions to some land manager functions for this scene |
276 | EventManager.OnLandObjectAdded += | 276 | EventManager.OnLandObjectAdded += |