aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/SQLite/SQLiteSimulationData.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Data/SQLite/SQLiteSimulationData.cs927
1 files changed, 622 insertions, 305 deletions
diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
index a313c4f..ce1b7b4 100644
--- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
@@ -35,7 +35,7 @@ using log4net;
35#if CSharpSqlite 35#if CSharpSqlite
36 using Community.CsharpSqlite.Sqlite; 36 using Community.CsharpSqlite.Sqlite;
37#else 37#else
38 using Mono.Data.Sqlite; 38using Mono.Data.Sqlite;
39#endif 39#endif
40using OpenMetaverse; 40using OpenMetaverse;
41using OpenMetaverse.StructuredData; 41using OpenMetaverse.StructuredData;
@@ -60,6 +60,7 @@ namespace OpenSim.Data.SQLite
60 private const string landAccessListSelect = "select distinct * from landaccesslist"; 60 private const string landAccessListSelect = "select distinct * from landaccesslist";
61 private const string regionbanListSelect = "select * from regionban"; 61 private const string regionbanListSelect = "select * from regionban";
62 private const string regionSettingsSelect = "select * from regionsettings"; 62 private const string regionSettingsSelect = "select * from regionsettings";
63 private const string regionWindlightSelect = "select * from regionwindlight";
63 64
64 private DataSet ds; 65 private DataSet ds;
65 private SqliteDataAdapter primDa; 66 private SqliteDataAdapter primDa;
@@ -69,9 +70,9 @@ namespace OpenSim.Data.SQLite
69 private SqliteDataAdapter landDa; 70 private SqliteDataAdapter landDa;
70 private SqliteDataAdapter landAccessListDa; 71 private SqliteDataAdapter landAccessListDa;
71 private SqliteDataAdapter regionSettingsDa; 72 private SqliteDataAdapter regionSettingsDa;
73 private SqliteDataAdapter regionWindlightDa;
72 74
73 private SqliteConnection m_conn; 75 private SqliteConnection m_conn;
74
75 private String m_connectionString; 76 private String m_connectionString;
76 77
77 protected virtual Assembly Assembly 78 protected virtual Assembly Assembly
@@ -136,6 +137,9 @@ namespace OpenSim.Data.SQLite
136 137
137 SqliteCommand regionSettingsSelectCmd = new SqliteCommand(regionSettingsSelect, m_conn); 138 SqliteCommand regionSettingsSelectCmd = new SqliteCommand(regionSettingsSelect, m_conn);
138 regionSettingsDa = new SqliteDataAdapter(regionSettingsSelectCmd); 139 regionSettingsDa = new SqliteDataAdapter(regionSettingsSelectCmd);
140
141 SqliteCommand regionWindlightSelectCmd = new SqliteCommand(regionWindlightSelect, m_conn);
142 regionWindlightDa = new SqliteDataAdapter(regionWindlightSelectCmd);
139 // This actually does the roll forward assembly stuff 143 // This actually does the roll forward assembly stuff
140 Migration m = new Migration(m_conn, Assembly, "RegionStore"); 144 Migration m = new Migration(m_conn, Assembly, "RegionStore");
141 m.Update(); 145 m.Update();
@@ -163,6 +167,9 @@ namespace OpenSim.Data.SQLite
163 ds.Tables.Add(createRegionSettingsTable()); 167 ds.Tables.Add(createRegionSettingsTable());
164 setupRegionSettingsCommands(regionSettingsDa, m_conn); 168 setupRegionSettingsCommands(regionSettingsDa, m_conn);
165 169
170 ds.Tables.Add(createRegionWindlightTable());
171 setupRegionWindlightCommands(regionWindlightDa, m_conn);
172
166 // WORKAROUND: This is a work around for sqlite on 173 // WORKAROUND: This is a work around for sqlite on
167 // windows, which gets really unhappy with blob columns 174 // windows, which gets really unhappy with blob columns
168 // that have no sample data in them. At some point we 175 // that have no sample data in them. At some point we
@@ -171,63 +178,72 @@ namespace OpenSim.Data.SQLite
171 { 178 {
172 primDa.Fill(ds.Tables["prims"]); 179 primDa.Fill(ds.Tables["prims"]);
173 } 180 }
174 catch (Exception) 181 catch (Exception e)
175 { 182 {
176 m_log.Info("[SQLITE REGION DB]: Caught fill error on prims table"); 183 m_log.ErrorFormat("[SQLITE REGION DB]: Caught fill error on prims table :{0}", e.Message);
177 } 184 }
178 185
179 try 186 try
180 { 187 {
181 shapeDa.Fill(ds.Tables["primshapes"]); 188 shapeDa.Fill(ds.Tables["primshapes"]);
182 } 189 }
183 catch (Exception) 190 catch (Exception e)
184 { 191 {
185 m_log.Info("[SQLITE REGION DB]: Caught fill error on primshapes table"); 192 m_log.ErrorFormat("[SQLITE REGION DB]: Caught fill error on primshapes table :{0}", e.Message);
186 } 193 }
187 194
188 try 195 try
189 { 196 {
190 itemsDa.Fill(ds.Tables["primitems"]); 197 itemsDa.Fill(ds.Tables["primitems"]);
191 } 198 }
192 catch (Exception) 199 catch (Exception e)
193 { 200 {
194 m_log.Info("[SQLITE REGION DB]: Caught fill error on primitems table"); 201 m_log.ErrorFormat("[SQLITE REGION DB]: Caught fill error on primitems table :{0}", e.Message);
195 } 202 }
196 203
197 try 204 try
198 { 205 {
199 terrainDa.Fill(ds.Tables["terrain"]); 206 terrainDa.Fill(ds.Tables["terrain"]);
200 } 207 }
201 catch (Exception) 208 catch (Exception e)
202 { 209 {
203 m_log.Info("[SQLITE REGION DB]: Caught fill error on terrain table"); 210 m_log.ErrorFormat("[SQLITE REGION DB]: Caught fill error on terrain table :{0}", e.Message);
204 } 211 }
205 212
206 try 213 try
207 { 214 {
208 landDa.Fill(ds.Tables["land"]); 215 landDa.Fill(ds.Tables["land"]);
209 } 216 }
210 catch (Exception) 217 catch (Exception e)
211 { 218 {
212 m_log.Info("[SQLITE REGION DB]: Caught fill error on land table"); 219 m_log.ErrorFormat("[SQLITE REGION DB]: Caught fill error on land table :{0}", e.Message);
213 } 220 }
214 221
215 try 222 try
216 { 223 {
217 landAccessListDa.Fill(ds.Tables["landaccesslist"]); 224 landAccessListDa.Fill(ds.Tables["landaccesslist"]);
218 } 225 }
219 catch (Exception) 226 catch (Exception e)
220 { 227 {
221 m_log.Info("[SQLITE REGION DB]: Caught fill error on landaccesslist table"); 228 m_log.ErrorFormat("[SQLITE REGION DB]: Caught fill error on landaccesslist table :{0}", e.Message);
222 } 229 }
223 230
224 try 231 try
225 { 232 {
226 regionSettingsDa.Fill(ds.Tables["regionsettings"]); 233 regionSettingsDa.Fill(ds.Tables["regionsettings"]);
227 } 234 }
228 catch (Exception) 235 catch (Exception e)
236 {
237 m_log.ErrorFormat("[SQLITE REGION DB]: Caught fill error on regionsettings table :{0}", e.Message);
238 }
239
240 try
241 {
242 regionWindlightDa.Fill(ds.Tables["regionwindlight"]);
243 }
244 catch (Exception e)
229 { 245 {
230 m_log.Info("[SQLITE REGION DB]: Caught fill error on regionsettings table"); 246 m_log.ErrorFormat("[SQLITE REGION DB]: Caught fill error on regionwindlight table :{0}", e.Message);
231 } 247 }
232 248
233 // We have to create a data set mapping for every table, otherwise the IDataAdaptor.Update() will not populate rows with values! 249 // We have to create a data set mapping for every table, otherwise the IDataAdaptor.Update() will not populate rows with values!
@@ -240,14 +256,14 @@ namespace OpenSim.Data.SQLite
240 CreateDataSetMapping(landDa, "land"); 256 CreateDataSetMapping(landDa, "land");
241 CreateDataSetMapping(landAccessListDa, "landaccesslist"); 257 CreateDataSetMapping(landAccessListDa, "landaccesslist");
242 CreateDataSetMapping(regionSettingsDa, "regionsettings"); 258 CreateDataSetMapping(regionSettingsDa, "regionsettings");
259 CreateDataSetMapping(regionWindlightDa, "regionwindlight");
243 } 260 }
244 } 261 }
245 catch (Exception e) 262 catch (Exception e)
246 { 263 {
247 m_log.Error(e); 264 m_log.ErrorFormat("[SQLITE REGION DB]: ", e);
248 Environment.Exit(23); 265 Environment.Exit(23);
249 } 266 }
250
251 return; 267 return;
252 } 268 }
253 269
@@ -298,6 +314,11 @@ namespace OpenSim.Data.SQLite
298 regionSettingsDa.Dispose(); 314 regionSettingsDa.Dispose();
299 regionSettingsDa = null; 315 regionSettingsDa = null;
300 } 316 }
317 if (regionWindlightDa != null)
318 {
319 regionWindlightDa.Dispose();
320 regionWindlightDa = null;
321 }
301 } 322 }
302 323
303 public void StoreRegionSettings(RegionSettings rs) 324 public void StoreRegionSettings(RegionSettings rs)
@@ -321,19 +342,76 @@ namespace OpenSim.Data.SQLite
321 Commit(); 342 Commit();
322 } 343 }
323 } 344 }
345
346 /// <summary>
347 /// Load windlight settings from region storage
348 /// </summary>
349 /// <param name="regionUUID">RegionID</param>
324 public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) 350 public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID)
325 { 351 {
326 //This connector doesn't support the windlight module yet 352 RegionLightShareData wl = null;
327 //Return default LL windlight settings 353
328 return new RegionLightShareData(); 354 lock (ds)
355 {
356 DataTable windlightTable = ds.Tables["regionwindlight"];
357 DataRow windlightRow = windlightTable.Rows.Find(regionUUID.ToString());
358 if (windlightRow == null)
359 {
360 wl = new RegionLightShareData();
361 wl.regionID = regionUUID;
362 StoreRegionWindlightSettings(wl);
363 return wl;
364 }
365 wl = buildRegionWindlight(windlightRow);
366 return wl;
367 }
329 } 368 }
369
370 /// <summary>
371 /// Remove windlight settings from region storage
372 /// </summary>
373 /// <param name="regionID">RegionID</param>
330 public void RemoveRegionWindlightSettings(UUID regionID) 374 public void RemoveRegionWindlightSettings(UUID regionID)
331 { 375 {
376 lock (ds)
377 {
378 DataTable windlightTable = ds.Tables["regionwindlight"];
379 DataRow windlightRow = windlightTable.Rows.Find(regionID.ToString());
380
381 if (windlightRow != null)
382 {
383 windlightRow.Delete();
384 }
385 }
386 Commit();
332 } 387 }
388
389 /// <summary>
390 /// Adds an windlight into region storage
391 /// </summary>
392 /// <param name="wl">RegionLightShareData</param>
333 public void StoreRegionWindlightSettings(RegionLightShareData wl) 393 public void StoreRegionWindlightSettings(RegionLightShareData wl)
334 { 394 {
335 //This connector doesn't support the windlight module yet 395 lock (ds)
396 {
397 DataTable windlightTable = ds.Tables["regionwindlight"];
398 DataRow windlightRow = windlightTable.Rows.Find(wl.regionID.ToString());
399
400 if (windlightRow == null)
401 {
402 windlightRow = windlightTable.NewRow();
403 fillRegionWindlightRow(windlightRow, wl);
404 windlightTable.Rows.Add(windlightRow);
405 }
406 else
407 {
408 fillRegionWindlightRow(windlightRow, wl);
409 }
410
411 Commit();
412 }
336 } 413 }
414
337 public RegionSettings LoadRegionSettings(UUID regionUUID) 415 public RegionSettings LoadRegionSettings(UUID regionUUID)
338 { 416 {
339 lock (ds) 417 lock (ds)
@@ -387,7 +465,7 @@ namespace OpenSim.Data.SQLite
387 } 465 }
388 466
389 Commit(); 467 Commit();
390 // m_log.Info("[Dump of prims]: " + ds.GetXml()); 468// m_log.Info("[Dump of prims]: " + ds.GetXml());
391 } 469 }
392 470
393 /// <summary> 471 /// <summary>
@@ -397,7 +475,7 @@ namespace OpenSim.Data.SQLite
397 /// <param name="regionUUID">the region UUID</param> 475 /// <param name="regionUUID">the region UUID</param>
398 public void RemoveObject(UUID obj, UUID regionUUID) 476 public void RemoveObject(UUID obj, UUID regionUUID)
399 { 477 {
400 // m_log.InfoFormat("[REGION DB]: Removing obj: {0} from region: {1}", obj.Guid, regionUUID); 478// m_log.InfoFormat("[REGION DB]: Removing obj: {0} from region: {1}", obj.Guid, regionUUID);
401 479
402 DataTable prims = ds.Tables["prims"]; 480 DataTable prims = ds.Tables["prims"];
403 DataTable shapes = ds.Tables["primshapes"]; 481 DataTable shapes = ds.Tables["primshapes"];
@@ -409,7 +487,7 @@ namespace OpenSim.Data.SQLite
409 foreach (DataRow row in primRows) 487 foreach (DataRow row in primRows)
410 { 488 {
411 // Remove shape rows 489 // Remove shape rows
412 UUID uuid = new UUID((string) row["UUID"]); 490 UUID uuid = new UUID((string)row["UUID"]);
413 DataRow shapeRow = shapes.Rows.Find(uuid.ToString()); 491 DataRow shapeRow = shapes.Rows.Find(uuid.ToString());
414 if (shapeRow != null) 492 if (shapeRow != null)
415 { 493 {
@@ -464,7 +542,7 @@ namespace OpenSim.Data.SQLite
464 { 542 {
465 DataRow[] primsForRegion = prims.Select(byRegion); 543 DataRow[] primsForRegion = prims.Select(byRegion);
466// m_log.Info("[SQLITE REGION DB]: Loaded " + primsForRegion.Length + " prims for region: " + regionUUID); 544// m_log.Info("[SQLITE REGION DB]: Loaded " + primsForRegion.Length + " prims for region: " + regionUUID);
467 545
468 // First, create all groups 546 // First, create all groups
469 foreach (DataRow primRow in primsForRegion) 547 foreach (DataRow primRow in primsForRegion)
470 { 548 {
@@ -472,9 +550,9 @@ namespace OpenSim.Data.SQLite
472 { 550 {
473 SceneObjectPart prim = null; 551 SceneObjectPart prim = null;
474 552
475 string uuid = (string) primRow["UUID"]; 553 string uuid = (string)primRow["UUID"];
476 string objID = (string) primRow["SceneGroupID"]; 554 string objID = (string)primRow["SceneGroupID"];
477 555
478 if (uuid == objID) //is new SceneObjectGroup ? 556 if (uuid == objID) //is new SceneObjectGroup ?
479 { 557 {
480 prim = buildPrim(primRow); 558 prim = buildPrim(primRow);
@@ -489,7 +567,7 @@ namespace OpenSim.Data.SQLite
489 "[SQLITE REGION DB]: No shape found for prim in storage, so setting default box shape"); 567 "[SQLITE REGION DB]: No shape found for prim in storage, so setting default box shape");
490 prim.Shape = PrimitiveBaseShape.Default; 568 prim.Shape = PrimitiveBaseShape.Default;
491 } 569 }
492 570
493 SceneObjectGroup group = new SceneObjectGroup(prim); 571 SceneObjectGroup group = new SceneObjectGroup(prim);
494 createdObjects.Add(group.UUID, group); 572 createdObjects.Add(group.UUID, group);
495 retvals.Add(group); 573 retvals.Add(group);
@@ -506,7 +584,7 @@ namespace OpenSim.Data.SQLite
506 } 584 }
507 } 585 }
508 } 586 }
509 587
510 // Now fill the groups with part data 588 // Now fill the groups with part data
511 foreach (DataRow primRow in primsForRegion) 589 foreach (DataRow primRow in primsForRegion)
512 { 590 {
@@ -514,8 +592,8 @@ namespace OpenSim.Data.SQLite
514 { 592 {
515 SceneObjectPart prim = null; 593 SceneObjectPart prim = null;
516 594
517 string uuid = (string) primRow["UUID"]; 595 string uuid = (string)primRow["UUID"];
518 string objID = (string) primRow["SceneGroupID"]; 596 string objID = (string)primRow["SceneGroupID"];
519 if (uuid != objID) //is new SceneObjectGroup ? 597 if (uuid != objID) //is new SceneObjectGroup ?
520 { 598 {
521 prim = buildPrim(primRow); 599 prim = buildPrim(primRow);
@@ -562,8 +640,7 @@ namespace OpenSim.Data.SQLite
562 DataRow[] dbItemRows = dbItems.Select(sql); 640 DataRow[] dbItemRows = dbItems.Select(sql);
563 IList<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); 641 IList<TaskInventoryItem> inventory = new List<TaskInventoryItem>();
564 642
565// m_log.DebugFormat( 643// m_log.DebugFormat("[SQLITE REGION DB]: Found {0} items for {1} {2}", dbItemRows.Length, prim.Name, prim.UUID);
566// "[SQLITE REGION DB]: Found {0} items for {1} {2}", dbItemRows.Length, prim.Name, prim.UUID);
567 644
568 foreach (DataRow row in dbItemRows) 645 foreach (DataRow row in dbItemRows)
569 { 646 {
@@ -742,7 +819,7 @@ namespace OpenSim.Data.SQLite
742 // cmd.Parameters.Add(new SqliteParameter(":LandUUID", parcel.LandData.GlobalID.ToString())); 819 // cmd.Parameters.Add(new SqliteParameter(":LandUUID", parcel.LandData.GlobalID.ToString()));
743 // cmd.ExecuteNonQuery(); 820 // cmd.ExecuteNonQuery();
744 821
745// } 822 // }
746 823
747 // This is the slower.. but more appropriate thing to do 824 // This is the slower.. but more appropriate thing to do
748 825
@@ -805,7 +882,7 @@ namespace OpenSim.Data.SQLite
805 /// </summary> 882 /// </summary>
806 public void Commit() 883 public void Commit()
807 { 884 {
808 //m_log.Debug("[SQLITE]: Starting commit"); 885// m_log.Debug("[SQLITE]: Starting commit");
809 lock (ds) 886 lock (ds)
810 { 887 {
811 primDa.Update(ds, "prims"); 888 primDa.Update(ds, "prims");
@@ -819,6 +896,7 @@ namespace OpenSim.Data.SQLite
819 try 896 try
820 { 897 {
821 regionSettingsDa.Update(ds, "regionsettings"); 898 regionSettingsDa.Update(ds, "regionsettings");
899 regionWindlightDa.Update(ds, "regionwindlight");
822 } 900 }
823 catch (SqliteException SqlEx) 901 catch (SqliteException SqlEx)
824 { 902 {
@@ -875,9 +953,9 @@ namespace OpenSim.Data.SQLite
875 { 953 {
876 DataTable terrain = new DataTable("terrain"); 954 DataTable terrain = new DataTable("terrain");
877 955
878 createCol(terrain, "RegionUUID", typeof (String)); 956 createCol(terrain, "RegionUUID", typeof(String));
879 createCol(terrain, "Revision", typeof (Int32)); 957 createCol(terrain, "Revision", typeof(Int32));
880 createCol(terrain, "Heightfield", typeof (Byte[])); 958 createCol(terrain, "Heightfield", typeof(Byte[]));
881 959
882 return terrain; 960 return terrain;
883 } 961 }
@@ -890,62 +968,62 @@ namespace OpenSim.Data.SQLite
890 { 968 {
891 DataTable prims = new DataTable("prims"); 969 DataTable prims = new DataTable("prims");
892 970
893 createCol(prims, "UUID", typeof (String)); 971 createCol(prims, "UUID", typeof(String));
894 createCol(prims, "RegionUUID", typeof (String)); 972 createCol(prims, "RegionUUID", typeof(String));
895 createCol(prims, "CreationDate", typeof (Int32)); 973 createCol(prims, "CreationDate", typeof(Int32));
896 createCol(prims, "Name", typeof (String)); 974 createCol(prims, "Name", typeof(String));
897 createCol(prims, "SceneGroupID", typeof (String)); 975 createCol(prims, "SceneGroupID", typeof(String));
898 // various text fields 976 // various text fields
899 createCol(prims, "Text", typeof (String)); 977 createCol(prims, "Text", typeof(String));
900 createCol(prims, "ColorR", typeof (Int32)); 978 createCol(prims, "ColorR", typeof(Int32));
901 createCol(prims, "ColorG", typeof (Int32)); 979 createCol(prims, "ColorG", typeof(Int32));
902 createCol(prims, "ColorB", typeof (Int32)); 980 createCol(prims, "ColorB", typeof(Int32));
903 createCol(prims, "ColorA", typeof (Int32)); 981 createCol(prims, "ColorA", typeof(Int32));
904 createCol(prims, "Description", typeof (String)); 982 createCol(prims, "Description", typeof(String));
905 createCol(prims, "SitName", typeof (String)); 983 createCol(prims, "SitName", typeof(String));
906 createCol(prims, "TouchName", typeof (String)); 984 createCol(prims, "TouchName", typeof(String));
907 // permissions 985 // permissions
908 createCol(prims, "ObjectFlags", typeof (Int32)); 986 createCol(prims, "ObjectFlags", typeof(Int32));
909 createCol(prims, "CreatorID", typeof (String)); 987 createCol(prims, "CreatorID", typeof(String));
910 createCol(prims, "OwnerID", typeof (String)); 988 createCol(prims, "OwnerID", typeof(String));
911 createCol(prims, "GroupID", typeof (String)); 989 createCol(prims, "GroupID", typeof(String));
912 createCol(prims, "LastOwnerID", typeof (String)); 990 createCol(prims, "LastOwnerID", typeof(String));
913 createCol(prims, "OwnerMask", typeof (Int32)); 991 createCol(prims, "OwnerMask", typeof(Int32));
914 createCol(prims, "NextOwnerMask", typeof (Int32)); 992 createCol(prims, "NextOwnerMask", typeof(Int32));
915 createCol(prims, "GroupMask", typeof (Int32)); 993 createCol(prims, "GroupMask", typeof(Int32));
916 createCol(prims, "EveryoneMask", typeof (Int32)); 994 createCol(prims, "EveryoneMask", typeof(Int32));
917 createCol(prims, "BaseMask", typeof (Int32)); 995 createCol(prims, "BaseMask", typeof(Int32));
918 // vectors 996 // vectors
919 createCol(prims, "PositionX", typeof (Double)); 997 createCol(prims, "PositionX", typeof(Double));
920 createCol(prims, "PositionY", typeof (Double)); 998 createCol(prims, "PositionY", typeof(Double));
921 createCol(prims, "PositionZ", typeof (Double)); 999 createCol(prims, "PositionZ", typeof(Double));
922 createCol(prims, "GroupPositionX", typeof (Double)); 1000 createCol(prims, "GroupPositionX", typeof(Double));
923 createCol(prims, "GroupPositionY", typeof (Double)); 1001 createCol(prims, "GroupPositionY", typeof(Double));
924 createCol(prims, "GroupPositionZ", typeof (Double)); 1002 createCol(prims, "GroupPositionZ", typeof(Double));
925 createCol(prims, "VelocityX", typeof (Double)); 1003 createCol(prims, "VelocityX", typeof(Double));
926 createCol(prims, "VelocityY", typeof (Double)); 1004 createCol(prims, "VelocityY", typeof(Double));
927 createCol(prims, "VelocityZ", typeof (Double)); 1005 createCol(prims, "VelocityZ", typeof(Double));
928 createCol(prims, "AngularVelocityX", typeof (Double)); 1006 createCol(prims, "AngularVelocityX", typeof(Double));
929 createCol(prims, "AngularVelocityY", typeof (Double)); 1007 createCol(prims, "AngularVelocityY", typeof(Double));
930 createCol(prims, "AngularVelocityZ", typeof (Double)); 1008 createCol(prims, "AngularVelocityZ", typeof(Double));
931 createCol(prims, "AccelerationX", typeof (Double)); 1009 createCol(prims, "AccelerationX", typeof(Double));
932 createCol(prims, "AccelerationY", typeof (Double)); 1010 createCol(prims, "AccelerationY", typeof(Double));
933 createCol(prims, "AccelerationZ", typeof (Double)); 1011 createCol(prims, "AccelerationZ", typeof(Double));
934 // quaternions 1012 // quaternions
935 createCol(prims, "RotationX", typeof (Double)); 1013 createCol(prims, "RotationX", typeof(Double));
936 createCol(prims, "RotationY", typeof (Double)); 1014 createCol(prims, "RotationY", typeof(Double));
937 createCol(prims, "RotationZ", typeof (Double)); 1015 createCol(prims, "RotationZ", typeof(Double));
938 createCol(prims, "RotationW", typeof (Double)); 1016 createCol(prims, "RotationW", typeof(Double));
939 1017
940 // sit target 1018 // sit target
941 createCol(prims, "SitTargetOffsetX", typeof (Double)); 1019 createCol(prims, "SitTargetOffsetX", typeof(Double));
942 createCol(prims, "SitTargetOffsetY", typeof (Double)); 1020 createCol(prims, "SitTargetOffsetY", typeof(Double));
943 createCol(prims, "SitTargetOffsetZ", typeof (Double)); 1021 createCol(prims, "SitTargetOffsetZ", typeof(Double));
944 1022
945 createCol(prims, "SitTargetOrientW", typeof (Double)); 1023 createCol(prims, "SitTargetOrientW", typeof(Double));
946 createCol(prims, "SitTargetOrientX", typeof (Double)); 1024 createCol(prims, "SitTargetOrientX", typeof(Double));
947 createCol(prims, "SitTargetOrientY", typeof (Double)); 1025 createCol(prims, "SitTargetOrientY", typeof(Double));
948 createCol(prims, "SitTargetOrientZ", typeof (Double)); 1026 createCol(prims, "SitTargetOrientZ", typeof(Double));
949 1027
950 createCol(prims, "PayPrice", typeof(Int32)); 1028 createCol(prims, "PayPrice", typeof(Int32));
951 createCol(prims, "PayButton1", typeof(Int32)); 1029 createCol(prims, "PayButton1", typeof(Int32));
@@ -981,7 +1059,7 @@ namespace OpenSim.Data.SQLite
981 createCol(prims, "SaleType", typeof(Int16)); 1059 createCol(prims, "SaleType", typeof(Int16));
982 1060
983 // click action 1061 // click action
984 createCol(prims, "ClickAction", typeof (Byte)); 1062 createCol(prims, "ClickAction", typeof(Byte));
985 1063
986 createCol(prims, "Material", typeof(Byte)); 1064 createCol(prims, "Material", typeof(Byte));
987 1065
@@ -993,7 +1071,7 @@ namespace OpenSim.Data.SQLite
993 createCol(prims, "MediaURL", typeof(String)); 1071 createCol(prims, "MediaURL", typeof(String));
994 1072
995 // Add in contraints 1073 // Add in contraints
996 prims.PrimaryKey = new DataColumn[] {prims.Columns["UUID"]}; 1074 prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] };
997 1075
998 return prims; 1076 return prims;
999 } 1077 }
@@ -1005,42 +1083,42 @@ namespace OpenSim.Data.SQLite
1005 private static DataTable createShapeTable() 1083 private static DataTable createShapeTable()
1006 { 1084 {
1007 DataTable shapes = new DataTable("primshapes"); 1085 DataTable shapes = new DataTable("primshapes");
1008 createCol(shapes, "UUID", typeof (String)); 1086 createCol(shapes, "UUID", typeof(String));
1009 // shape is an enum 1087 // shape is an enum
1010 createCol(shapes, "Shape", typeof (Int32)); 1088 createCol(shapes, "Shape", typeof(Int32));
1011 // vectors 1089 // vectors
1012 createCol(shapes, "ScaleX", typeof (Double)); 1090 createCol(shapes, "ScaleX", typeof(Double));
1013 createCol(shapes, "ScaleY", typeof (Double)); 1091 createCol(shapes, "ScaleY", typeof(Double));
1014 createCol(shapes, "ScaleZ", typeof (Double)); 1092 createCol(shapes, "ScaleZ", typeof(Double));
1015 // paths 1093 // paths
1016 createCol(shapes, "PCode", typeof (Int32)); 1094 createCol(shapes, "PCode", typeof(Int32));
1017 createCol(shapes, "PathBegin", typeof (Int32)); 1095 createCol(shapes, "PathBegin", typeof(Int32));
1018 createCol(shapes, "PathEnd", typeof (Int32)); 1096 createCol(shapes, "PathEnd", typeof(Int32));
1019 createCol(shapes, "PathScaleX", typeof (Int32)); 1097 createCol(shapes, "PathScaleX", typeof(Int32));
1020 createCol(shapes, "PathScaleY", typeof (Int32)); 1098 createCol(shapes, "PathScaleY", typeof(Int32));
1021 createCol(shapes, "PathShearX", typeof (Int32)); 1099 createCol(shapes, "PathShearX", typeof(Int32));
1022 createCol(shapes, "PathShearY", typeof (Int32)); 1100 createCol(shapes, "PathShearY", typeof(Int32));
1023 createCol(shapes, "PathSkew", typeof (Int32)); 1101 createCol(shapes, "PathSkew", typeof(Int32));
1024 createCol(shapes, "PathCurve", typeof (Int32)); 1102 createCol(shapes, "PathCurve", typeof(Int32));
1025 createCol(shapes, "PathRadiusOffset", typeof (Int32)); 1103 createCol(shapes, "PathRadiusOffset", typeof(Int32));
1026 createCol(shapes, "PathRevolutions", typeof (Int32)); 1104 createCol(shapes, "PathRevolutions", typeof(Int32));
1027 createCol(shapes, "PathTaperX", typeof (Int32)); 1105 createCol(shapes, "PathTaperX", typeof(Int32));
1028 createCol(shapes, "PathTaperY", typeof (Int32)); 1106 createCol(shapes, "PathTaperY", typeof(Int32));
1029 createCol(shapes, "PathTwist", typeof (Int32)); 1107 createCol(shapes, "PathTwist", typeof(Int32));
1030 createCol(shapes, "PathTwistBegin", typeof (Int32)); 1108 createCol(shapes, "PathTwistBegin", typeof(Int32));
1031 // profile 1109 // profile
1032 createCol(shapes, "ProfileBegin", typeof (Int32)); 1110 createCol(shapes, "ProfileBegin", typeof(Int32));
1033 createCol(shapes, "ProfileEnd", typeof (Int32)); 1111 createCol(shapes, "ProfileEnd", typeof(Int32));
1034 createCol(shapes, "ProfileCurve", typeof (Int32)); 1112 createCol(shapes, "ProfileCurve", typeof(Int32));
1035 createCol(shapes, "ProfileHollow", typeof (Int32)); 1113 createCol(shapes, "ProfileHollow", typeof(Int32));
1036 createCol(shapes, "State", typeof(Int32)); 1114 createCol(shapes, "State", typeof(Int32));
1037 // text TODO: this isn't right, but I'm not sure the right 1115 // text TODO: this isn't right, but I'm not sure the right
1038 // way to specify this as a blob atm 1116 // way to specify this as a blob atm
1039 createCol(shapes, "Texture", typeof (Byte[])); 1117 createCol(shapes, "Texture", typeof(Byte[]));
1040 createCol(shapes, "ExtraParams", typeof (Byte[])); 1118 createCol(shapes, "ExtraParams", typeof(Byte[]));
1041 createCol(shapes, "Media", typeof(String)); 1119 createCol(shapes, "Media", typeof(String));
1042 1120
1043 shapes.PrimaryKey = new DataColumn[] {shapes.Columns["UUID"]}; 1121 shapes.PrimaryKey = new DataColumn[] { shapes.Columns["UUID"] };
1044 1122
1045 return shapes; 1123 return shapes;
1046 } 1124 }
@@ -1053,29 +1131,29 @@ namespace OpenSim.Data.SQLite
1053 { 1131 {
1054 DataTable items = new DataTable("primitems"); 1132 DataTable items = new DataTable("primitems");
1055 1133
1056 createCol(items, "itemID", typeof (String)); 1134 createCol(items, "itemID", typeof(String));
1057 createCol(items, "primID", typeof (String)); 1135 createCol(items, "primID", typeof(String));
1058 createCol(items, "assetID", typeof (String)); 1136 createCol(items, "assetID", typeof(String));
1059 createCol(items, "parentFolderID", typeof (String)); 1137 createCol(items, "parentFolderID", typeof(String));
1060 1138
1061 createCol(items, "invType", typeof (Int32)); 1139 createCol(items, "invType", typeof(Int32));
1062 createCol(items, "assetType", typeof (Int32)); 1140 createCol(items, "assetType", typeof(Int32));
1063 1141
1064 createCol(items, "name", typeof (String)); 1142 createCol(items, "name", typeof(String));
1065 createCol(items, "description", typeof (String)); 1143 createCol(items, "description", typeof(String));
1066 1144
1067 createCol(items, "creationDate", typeof (Int64)); 1145 createCol(items, "creationDate", typeof(Int64));
1068 createCol(items, "creatorID", typeof (String)); 1146 createCol(items, "creatorID", typeof(String));
1069 createCol(items, "ownerID", typeof (String)); 1147 createCol(items, "ownerID", typeof(String));
1070 createCol(items, "lastOwnerID", typeof (String)); 1148 createCol(items, "lastOwnerID", typeof(String));
1071 createCol(items, "groupID", typeof (String)); 1149 createCol(items, "groupID", typeof(String));
1072 1150
1073 createCol(items, "nextPermissions", typeof (UInt32)); 1151 createCol(items, "nextPermissions", typeof(UInt32));
1074 createCol(items, "currentPermissions", typeof (UInt32)); 1152 createCol(items, "currentPermissions", typeof(UInt32));
1075 createCol(items, "basePermissions", typeof (UInt32)); 1153 createCol(items, "basePermissions", typeof(UInt32));
1076 createCol(items, "everyonePermissions", typeof (UInt32)); 1154 createCol(items, "everyonePermissions", typeof(UInt32));
1077 createCol(items, "groupPermissions", typeof (UInt32)); 1155 createCol(items, "groupPermissions", typeof(UInt32));
1078 createCol(items, "flags", typeof (UInt32)); 1156 createCol(items, "flags", typeof(UInt32));
1079 1157
1080 items.PrimaryKey = new DataColumn[] { items.Columns["itemID"] }; 1158 items.PrimaryKey = new DataColumn[] { items.Columns["itemID"] };
1081 1159
@@ -1089,44 +1167,44 @@ namespace OpenSim.Data.SQLite
1089 private static DataTable createLandTable() 1167 private static DataTable createLandTable()
1090 { 1168 {
1091 DataTable land = new DataTable("land"); 1169 DataTable land = new DataTable("land");
1092 createCol(land, "UUID", typeof (String)); 1170 createCol(land, "UUID", typeof(String));
1093 createCol(land, "RegionUUID", typeof (String)); 1171 createCol(land, "RegionUUID", typeof(String));
1094 createCol(land, "LocalLandID", typeof (UInt32)); 1172 createCol(land, "LocalLandID", typeof(UInt32));
1095 1173
1096 // Bitmap is a byte[512] 1174 // Bitmap is a byte[512]
1097 createCol(land, "Bitmap", typeof (Byte[])); 1175 createCol(land, "Bitmap", typeof(Byte[]));
1098 1176
1099 createCol(land, "Name", typeof (String)); 1177 createCol(land, "Name", typeof(String));
1100 createCol(land, "Desc", typeof (String)); 1178 createCol(land, "Desc", typeof(String));
1101 createCol(land, "OwnerUUID", typeof (String)); 1179 createCol(land, "OwnerUUID", typeof(String));
1102 createCol(land, "IsGroupOwned", typeof (Boolean)); 1180 createCol(land, "IsGroupOwned", typeof(Boolean));
1103 createCol(land, "Area", typeof (Int32)); 1181 createCol(land, "Area", typeof(Int32));
1104 createCol(land, "AuctionID", typeof (Int32)); //Unemplemented 1182 createCol(land, "AuctionID", typeof(Int32)); //Unemplemented
1105 createCol(land, "Category", typeof (Int32)); //Enum OpenMetaverse.Parcel.ParcelCategory 1183 createCol(land, "Category", typeof(Int32)); //Enum OpenMetaverse.Parcel.ParcelCategory
1106 createCol(land, "ClaimDate", typeof (Int32)); 1184 createCol(land, "ClaimDate", typeof(Int32));
1107 createCol(land, "ClaimPrice", typeof (Int32)); 1185 createCol(land, "ClaimPrice", typeof(Int32));
1108 createCol(land, "GroupUUID", typeof (string)); 1186 createCol(land, "GroupUUID", typeof(string));
1109 createCol(land, "SalePrice", typeof (Int32)); 1187 createCol(land, "SalePrice", typeof(Int32));
1110 createCol(land, "LandStatus", typeof (Int32)); //Enum. OpenMetaverse.Parcel.ParcelStatus 1188 createCol(land, "LandStatus", typeof(Int32)); //Enum. OpenMetaverse.Parcel.ParcelStatus
1111 createCol(land, "LandFlags", typeof (UInt32)); 1189 createCol(land, "LandFlags", typeof(UInt32));
1112 createCol(land, "LandingType", typeof (Byte)); 1190 createCol(land, "LandingType", typeof(Byte));
1113 createCol(land, "MediaAutoScale", typeof (Byte)); 1191 createCol(land, "MediaAutoScale", typeof(Byte));
1114 createCol(land, "MediaTextureUUID", typeof (String)); 1192 createCol(land, "MediaTextureUUID", typeof(String));
1115 createCol(land, "MediaURL", typeof (String)); 1193 createCol(land, "MediaURL", typeof(String));
1116 createCol(land, "MusicURL", typeof (String)); 1194 createCol(land, "MusicURL", typeof(String));
1117 createCol(land, "PassHours", typeof (Double)); 1195 createCol(land, "PassHours", typeof(Double));
1118 createCol(land, "PassPrice", typeof (UInt32)); 1196 createCol(land, "PassPrice", typeof(UInt32));
1119 createCol(land, "SnapshotUUID", typeof (String)); 1197 createCol(land, "SnapshotUUID", typeof(String));
1120 createCol(land, "UserLocationX", typeof (Double)); 1198 createCol(land, "UserLocationX", typeof(Double));
1121 createCol(land, "UserLocationY", typeof (Double)); 1199 createCol(land, "UserLocationY", typeof(Double));
1122 createCol(land, "UserLocationZ", typeof (Double)); 1200 createCol(land, "UserLocationZ", typeof(Double));
1123 createCol(land, "UserLookAtX", typeof (Double)); 1201 createCol(land, "UserLookAtX", typeof(Double));
1124 createCol(land, "UserLookAtY", typeof (Double)); 1202 createCol(land, "UserLookAtY", typeof(Double));
1125 createCol(land, "UserLookAtZ", typeof (Double)); 1203 createCol(land, "UserLookAtZ", typeof(Double));
1126 createCol(land, "AuthbuyerID", typeof(String)); 1204 createCol(land, "AuthbuyerID", typeof(String));
1127 createCol(land, "OtherCleanTime", typeof(Int32)); 1205 createCol(land, "OtherCleanTime", typeof(Int32));
1128 1206
1129 land.PrimaryKey = new DataColumn[] {land.Columns["UUID"]}; 1207 land.PrimaryKey = new DataColumn[] { land.Columns["UUID"] };
1130 1208
1131 return land; 1209 return land;
1132 } 1210 }
@@ -1138,9 +1216,9 @@ namespace OpenSim.Data.SQLite
1138 private static DataTable createLandAccessListTable() 1216 private static DataTable createLandAccessListTable()
1139 { 1217 {
1140 DataTable landaccess = new DataTable("landaccesslist"); 1218 DataTable landaccess = new DataTable("landaccesslist");
1141 createCol(landaccess, "LandUUID", typeof (String)); 1219 createCol(landaccess, "LandUUID", typeof(String));
1142 createCol(landaccess, "AccessUUID", typeof (String)); 1220 createCol(landaccess, "AccessUUID", typeof(String));
1143 createCol(landaccess, "Flags", typeof (UInt32)); 1221 createCol(landaccess, "Flags", typeof(UInt32));
1144 1222
1145 return landaccess; 1223 return landaccess;
1146 } 1224 }
@@ -1149,41 +1227,41 @@ namespace OpenSim.Data.SQLite
1149 { 1227 {
1150 DataTable regionsettings = new DataTable("regionsettings"); 1228 DataTable regionsettings = new DataTable("regionsettings");
1151 createCol(regionsettings, "regionUUID", typeof(String)); 1229 createCol(regionsettings, "regionUUID", typeof(String));
1152 createCol(regionsettings, "block_terraform", typeof (Int32)); 1230 createCol(regionsettings, "block_terraform", typeof(Int32));
1153 createCol(regionsettings, "block_fly", typeof (Int32)); 1231 createCol(regionsettings, "block_fly", typeof(Int32));
1154 createCol(regionsettings, "allow_damage", typeof (Int32)); 1232 createCol(regionsettings, "allow_damage", typeof(Int32));
1155 createCol(regionsettings, "restrict_pushing", typeof (Int32)); 1233 createCol(regionsettings, "restrict_pushing", typeof(Int32));
1156 createCol(regionsettings, "allow_land_resell", typeof (Int32)); 1234 createCol(regionsettings, "allow_land_resell", typeof(Int32));
1157 createCol(regionsettings, "allow_land_join_divide", typeof (Int32)); 1235 createCol(regionsettings, "allow_land_join_divide", typeof(Int32));
1158 createCol(regionsettings, "block_show_in_search", typeof (Int32)); 1236 createCol(regionsettings, "block_show_in_search", typeof(Int32));
1159 createCol(regionsettings, "agent_limit", typeof (Int32)); 1237 createCol(regionsettings, "agent_limit", typeof(Int32));
1160 createCol(regionsettings, "object_bonus", typeof (Double)); 1238 createCol(regionsettings, "object_bonus", typeof(Double));
1161 createCol(regionsettings, "maturity", typeof (Int32)); 1239 createCol(regionsettings, "maturity", typeof(Int32));
1162 createCol(regionsettings, "disable_scripts", typeof (Int32)); 1240 createCol(regionsettings, "disable_scripts", typeof(Int32));
1163 createCol(regionsettings, "disable_collisions", typeof (Int32)); 1241 createCol(regionsettings, "disable_collisions", typeof(Int32));
1164 createCol(regionsettings, "disable_physics", typeof (Int32)); 1242 createCol(regionsettings, "disable_physics", typeof(Int32));
1165 createCol(regionsettings, "terrain_texture_1", typeof(String)); 1243 createCol(regionsettings, "terrain_texture_1", typeof(String));
1166 createCol(regionsettings, "terrain_texture_2", typeof(String)); 1244 createCol(regionsettings, "terrain_texture_2", typeof(String));
1167 createCol(regionsettings, "terrain_texture_3", typeof(String)); 1245 createCol(regionsettings, "terrain_texture_3", typeof(String));
1168 createCol(regionsettings, "terrain_texture_4", typeof(String)); 1246 createCol(regionsettings, "terrain_texture_4", typeof(String));
1169 createCol(regionsettings, "elevation_1_nw", typeof (Double)); 1247 createCol(regionsettings, "elevation_1_nw", typeof(Double));
1170 createCol(regionsettings, "elevation_2_nw", typeof (Double)); 1248 createCol(regionsettings, "elevation_2_nw", typeof(Double));
1171 createCol(regionsettings, "elevation_1_ne", typeof (Double)); 1249 createCol(regionsettings, "elevation_1_ne", typeof(Double));
1172 createCol(regionsettings, "elevation_2_ne", typeof (Double)); 1250 createCol(regionsettings, "elevation_2_ne", typeof(Double));
1173 createCol(regionsettings, "elevation_1_se", typeof (Double)); 1251 createCol(regionsettings, "elevation_1_se", typeof(Double));
1174 createCol(regionsettings, "elevation_2_se", typeof (Double)); 1252 createCol(regionsettings, "elevation_2_se", typeof(Double));
1175 createCol(regionsettings, "elevation_1_sw", typeof (Double)); 1253 createCol(regionsettings, "elevation_1_sw", typeof(Double));
1176 createCol(regionsettings, "elevation_2_sw", typeof (Double)); 1254 createCol(regionsettings, "elevation_2_sw", typeof(Double));
1177 createCol(regionsettings, "water_height", typeof (Double)); 1255 createCol(regionsettings, "water_height", typeof(Double));
1178 createCol(regionsettings, "terrain_raise_limit", typeof (Double)); 1256 createCol(regionsettings, "terrain_raise_limit", typeof(Double));
1179 createCol(regionsettings, "terrain_lower_limit", typeof (Double)); 1257 createCol(regionsettings, "terrain_lower_limit", typeof(Double));
1180 createCol(regionsettings, "use_estate_sun", typeof (Int32)); 1258 createCol(regionsettings, "use_estate_sun", typeof(Int32));
1181 createCol(regionsettings, "sandbox", typeof (Int32)); 1259 createCol(regionsettings, "sandbox", typeof(Int32));
1182 createCol(regionsettings, "sunvectorx",typeof (Double)); 1260 createCol(regionsettings, "sunvectorx", typeof(Double));
1183 createCol(regionsettings, "sunvectory",typeof (Double)); 1261 createCol(regionsettings, "sunvectory", typeof(Double));
1184 createCol(regionsettings, "sunvectorz",typeof (Double)); 1262 createCol(regionsettings, "sunvectorz", typeof(Double));
1185 createCol(regionsettings, "fixed_sun", typeof (Int32)); 1263 createCol(regionsettings, "fixed_sun", typeof(Int32));
1186 createCol(regionsettings, "sun_position", typeof (Double)); 1264 createCol(regionsettings, "sun_position", typeof(Double));
1187 createCol(regionsettings, "covenant", typeof(String)); 1265 createCol(regionsettings, "covenant", typeof(String));
1188 createCol(regionsettings, "covenant_datetime", typeof(Int32)); 1266 createCol(regionsettings, "covenant_datetime", typeof(Int32));
1189 createCol(regionsettings, "map_tile_ID", typeof(String)); 1267 createCol(regionsettings, "map_tile_ID", typeof(String));
@@ -1191,6 +1269,82 @@ namespace OpenSim.Data.SQLite
1191 return regionsettings; 1269 return regionsettings;
1192 } 1270 }
1193 1271
1272 /// <summary>
1273 /// create "regionwindlight" table
1274 /// </summary>
1275 /// <returns>RegionWindlight DataTable</returns>
1276 private static DataTable createRegionWindlightTable()
1277 {
1278 DataTable regionwindlight = new DataTable("regionwindlight");
1279 createCol(regionwindlight, "region_id", typeof(String));
1280 createCol(regionwindlight, "water_color_r", typeof(Double));
1281 createCol(regionwindlight, "water_color_g", typeof(Double));
1282 createCol(regionwindlight, "water_color_b", typeof(Double));
1283 createCol(regionwindlight, "water_color_i", typeof(Double));
1284 createCol(regionwindlight, "water_fog_density_exponent", typeof(Double));
1285 createCol(regionwindlight, "underwater_fog_modifier", typeof(Double));
1286 createCol(regionwindlight, "reflection_wavelet_scale_1", typeof(Double));
1287 createCol(regionwindlight, "reflection_wavelet_scale_2", typeof(Double));
1288 createCol(regionwindlight, "reflection_wavelet_scale_3", typeof(Double));
1289 createCol(regionwindlight, "fresnel_scale", typeof(Double));
1290 createCol(regionwindlight, "fresnel_offset", typeof(Double));
1291 createCol(regionwindlight, "refract_scale_above", typeof(Double));
1292 createCol(regionwindlight, "refract_scale_below", typeof(Double));
1293 createCol(regionwindlight, "blur_multiplier", typeof(Double));
1294 createCol(regionwindlight, "big_wave_direction_x", typeof(Double));
1295 createCol(regionwindlight, "big_wave_direction_y", typeof(Double));
1296 createCol(regionwindlight, "little_wave_direction_x", typeof(Double));
1297 createCol(regionwindlight, "little_wave_direction_y", typeof(Double));
1298 createCol(regionwindlight, "normal_map_texture", typeof(String));
1299 createCol(regionwindlight, "horizon_r", typeof(Double));
1300 createCol(regionwindlight, "horizon_g", typeof(Double));
1301 createCol(regionwindlight, "horizon_b", typeof(Double));
1302 createCol(regionwindlight, "horizon_i", typeof(Double));
1303 createCol(regionwindlight, "haze_horizon", typeof(Double));
1304 createCol(regionwindlight, "blue_density_r", typeof(Double));
1305 createCol(regionwindlight, "blue_density_g", typeof(Double));
1306 createCol(regionwindlight, "blue_density_b", typeof(Double));
1307 createCol(regionwindlight, "blue_density_i", typeof(Double));
1308 createCol(regionwindlight, "haze_density", typeof(Double));
1309 createCol(regionwindlight, "density_multiplier", typeof(Double));
1310 createCol(regionwindlight, "distance_multiplier", typeof(Double));
1311 createCol(regionwindlight, "max_altitude", typeof(Int32));
1312 createCol(regionwindlight, "sun_moon_color_r", typeof(Double));
1313 createCol(regionwindlight, "sun_moon_color_g", typeof(Double));
1314 createCol(regionwindlight, "sun_moon_color_b", typeof(Double));
1315 createCol(regionwindlight, "sun_moon_color_i", typeof(Double));
1316 createCol(regionwindlight, "sun_moon_position", typeof(Double));
1317 createCol(regionwindlight, "ambient_r", typeof(Double));
1318 createCol(regionwindlight, "ambient_g", typeof(Double));
1319 createCol(regionwindlight, "ambient_b", typeof(Double));
1320 createCol(regionwindlight, "ambient_i", typeof(Double));
1321 createCol(regionwindlight, "east_angle", typeof(Double));
1322 createCol(regionwindlight, "sun_glow_focus", typeof(Double));
1323 createCol(regionwindlight, "sun_glow_size", typeof(Double));
1324 createCol(regionwindlight, "scene_gamma", typeof(Double));
1325 createCol(regionwindlight, "star_brightness", typeof(Double));
1326 createCol(regionwindlight, "cloud_color_r", typeof(Double));
1327 createCol(regionwindlight, "cloud_color_g", typeof(Double));
1328 createCol(regionwindlight, "cloud_color_b", typeof(Double));
1329 createCol(regionwindlight, "cloud_color_i", typeof(Double));
1330 createCol(regionwindlight, "cloud_x", typeof(Double));
1331 createCol(regionwindlight, "cloud_y", typeof(Double));
1332 createCol(regionwindlight, "cloud_density", typeof(Double));
1333 createCol(regionwindlight, "cloud_coverage", typeof(Double));
1334 createCol(regionwindlight, "cloud_scale", typeof(Double));
1335 createCol(regionwindlight, "cloud_detail_x", typeof(Double));
1336 createCol(regionwindlight, "cloud_detail_y", typeof(Double));
1337 createCol(regionwindlight, "cloud_detail_density", typeof(Double));
1338 createCol(regionwindlight, "cloud_scroll_x", typeof(Double));
1339 createCol(regionwindlight, "cloud_scroll_x_lock", typeof(Int32));
1340 createCol(regionwindlight, "cloud_scroll_y", typeof(Double));
1341 createCol(regionwindlight, "cloud_scroll_y_lock", typeof(Int32));
1342 createCol(regionwindlight, "draw_classic_clouds", typeof(Int32));
1343
1344 regionwindlight.PrimaryKey = new DataColumn[] { regionwindlight.Columns["region_id"] };
1345 return regionwindlight;
1346 }
1347
1194 /*********************************************************************** 1348 /***********************************************************************
1195 * 1349 *
1196 * Convert between ADO.NET <=> OpenSim Objects 1350 * Convert between ADO.NET <=> OpenSim Objects
@@ -1229,26 +1383,26 @@ namespace OpenSim.Data.SQLite
1229 // back out. Not enough time to figure it out yet. 1383 // back out. Not enough time to figure it out yet.
1230 1384
1231 SceneObjectPart prim = new SceneObjectPart(); 1385 SceneObjectPart prim = new SceneObjectPart();
1232 prim.UUID = new UUID((String) row["UUID"]); 1386 prim.UUID = new UUID((String)row["UUID"]);
1233 // explicit conversion of integers is required, which sort 1387 // explicit conversion of integers is required, which sort
1234 // of sucks. No idea if there is a shortcut here or not. 1388 // of sucks. No idea if there is a shortcut here or not.
1235 prim.CreationDate = Convert.ToInt32(row["CreationDate"]); 1389 prim.CreationDate = Convert.ToInt32(row["CreationDate"]);
1236 prim.Name = row["Name"] == DBNull.Value ? string.Empty : (string)row["Name"]; 1390 prim.Name = row["Name"] == DBNull.Value ? string.Empty : (string)row["Name"];
1237 // various text fields 1391 // various text fields
1238 prim.Text = (String) row["Text"]; 1392 prim.Text = (String)row["Text"];
1239 prim.Color = Color.FromArgb(Convert.ToInt32(row["ColorA"]), 1393 prim.Color = Color.FromArgb(Convert.ToInt32(row["ColorA"]),
1240 Convert.ToInt32(row["ColorR"]), 1394 Convert.ToInt32(row["ColorR"]),
1241 Convert.ToInt32(row["ColorG"]), 1395 Convert.ToInt32(row["ColorG"]),
1242 Convert.ToInt32(row["ColorB"])); 1396 Convert.ToInt32(row["ColorB"]));
1243 prim.Description = (String) row["Description"]; 1397 prim.Description = (String)row["Description"];
1244 prim.SitName = (String) row["SitName"]; 1398 prim.SitName = (String)row["SitName"];
1245 prim.TouchName = (String) row["TouchName"]; 1399 prim.TouchName = (String)row["TouchName"];
1246 // permissions 1400 // permissions
1247 prim.ObjectFlags = Convert.ToUInt32(row["ObjectFlags"]); 1401 prim.ObjectFlags = Convert.ToUInt32(row["ObjectFlags"]);
1248 prim.CreatorIdentification = (String) row["CreatorID"]; 1402 prim.CreatorIdentification = (String)row["CreatorID"];
1249 prim.OwnerID = new UUID((String) row["OwnerID"]); 1403 prim.OwnerID = new UUID((String)row["OwnerID"]);
1250 prim.GroupID = new UUID((String) row["GroupID"]); 1404 prim.GroupID = new UUID((String)row["GroupID"]);
1251 prim.LastOwnerID = new UUID((String) row["LastOwnerID"]); 1405 prim.LastOwnerID = new UUID((String)row["LastOwnerID"]);
1252 prim.OwnerMask = Convert.ToUInt32(row["OwnerMask"]); 1406 prim.OwnerMask = Convert.ToUInt32(row["OwnerMask"]);
1253 prim.NextOwnerMask = Convert.ToUInt32(row["NextOwnerMask"]); 1407 prim.NextOwnerMask = Convert.ToUInt32(row["NextOwnerMask"]);
1254 prim.GroupMask = Convert.ToUInt32(row["GroupMask"]); 1408 prim.GroupMask = Convert.ToUInt32(row["GroupMask"]);
@@ -1360,7 +1514,7 @@ namespace OpenSim.Data.SQLite
1360 1514
1361 if (!(row["MediaURL"] is System.DBNull)) 1515 if (!(row["MediaURL"] is System.DBNull))
1362 { 1516 {
1363 //m_log.DebugFormat("[SQLITE]: MediaUrl type [{0}]", row["MediaURL"].GetType()); 1517// m_log.DebugFormat("[SQLITE]: MediaUrl type [{0}]", row["MediaURL"].GetType());
1364 prim.MediaUrl = (string)row["MediaURL"]; 1518 prim.MediaUrl = (string)row["MediaURL"];
1365 } 1519 }
1366 1520
@@ -1376,28 +1530,28 @@ namespace OpenSim.Data.SQLite
1376 { 1530 {
1377 TaskInventoryItem taskItem = new TaskInventoryItem(); 1531 TaskInventoryItem taskItem = new TaskInventoryItem();
1378 1532
1379 taskItem.ItemID = new UUID((String)row["itemID"]); 1533 taskItem.ItemID = new UUID((String)row["itemID"]);
1380 taskItem.ParentPartID = new UUID((String)row["primID"]); 1534 taskItem.ParentPartID = new UUID((String)row["primID"]);
1381 taskItem.AssetID = new UUID((String)row["assetID"]); 1535 taskItem.AssetID = new UUID((String)row["assetID"]);
1382 taskItem.ParentID = new UUID((String)row["parentFolderID"]); 1536 taskItem.ParentID = new UUID((String)row["parentFolderID"]);
1383 1537
1384 taskItem.InvType = Convert.ToInt32(row["invType"]); 1538 taskItem.InvType = Convert.ToInt32(row["invType"]);
1385 taskItem.Type = Convert.ToInt32(row["assetType"]); 1539 taskItem.Type = Convert.ToInt32(row["assetType"]);
1386 1540
1387 taskItem.Name = (String)row["name"]; 1541 taskItem.Name = (String)row["name"];
1388 taskItem.Description = (String)row["description"]; 1542 taskItem.Description = (String)row["description"];
1389 taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); 1543 taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]);
1390 taskItem.CreatorIdentification = (String)row["creatorID"]; 1544 taskItem.CreatorIdentification = (String)row["creatorID"];
1391 taskItem.OwnerID = new UUID((String)row["ownerID"]); 1545 taskItem.OwnerID = new UUID((String)row["ownerID"]);
1392 taskItem.LastOwnerID = new UUID((String)row["lastOwnerID"]); 1546 taskItem.LastOwnerID = new UUID((String)row["lastOwnerID"]);
1393 taskItem.GroupID = new UUID((String)row["groupID"]); 1547 taskItem.GroupID = new UUID((String)row["groupID"]);
1394 1548
1395 taskItem.NextPermissions = Convert.ToUInt32(row["nextPermissions"]); 1549 taskItem.NextPermissions = Convert.ToUInt32(row["nextPermissions"]);
1396 taskItem.CurrentPermissions = Convert.ToUInt32(row["currentPermissions"]); 1550 taskItem.CurrentPermissions = Convert.ToUInt32(row["currentPermissions"]);
1397 taskItem.BasePermissions = Convert.ToUInt32(row["basePermissions"]); 1551 taskItem.BasePermissions = Convert.ToUInt32(row["basePermissions"]);
1398 taskItem.EveryonePermissions = Convert.ToUInt32(row["everyonePermissions"]); 1552 taskItem.EveryonePermissions = Convert.ToUInt32(row["everyonePermissions"]);
1399 taskItem.GroupPermissions = Convert.ToUInt32(row["groupPermissions"]); 1553 taskItem.GroupPermissions = Convert.ToUInt32(row["groupPermissions"]);
1400 taskItem.Flags = Convert.ToUInt32(row["flags"]); 1554 taskItem.Flags = Convert.ToUInt32(row["flags"]);
1401 1555
1402 return taskItem; 1556 return taskItem;
1403 } 1557 }
@@ -1411,35 +1565,35 @@ namespace OpenSim.Data.SQLite
1411 { 1565 {
1412 LandData newData = new LandData(); 1566 LandData newData = new LandData();
1413 1567
1414 newData.GlobalID = new UUID((String) row["UUID"]); 1568 newData.GlobalID = new UUID((String)row["UUID"]);
1415 newData.LocalID = Convert.ToInt32(row["LocalLandID"]); 1569 newData.LocalID = Convert.ToInt32(row["LocalLandID"]);
1416 1570
1417 // Bitmap is a byte[512] 1571 // Bitmap is a byte[512]
1418 newData.Bitmap = (Byte[]) row["Bitmap"]; 1572 newData.Bitmap = (Byte[])row["Bitmap"];
1419 1573
1420 newData.Name = (String) row["Name"]; 1574 newData.Name = (String)row["Name"];
1421 newData.Description = (String) row["Desc"]; 1575 newData.Description = (String)row["Desc"];
1422 newData.OwnerID = (UUID)(String) row["OwnerUUID"]; 1576 newData.OwnerID = (UUID)(String)row["OwnerUUID"];
1423 newData.IsGroupOwned = (Boolean) row["IsGroupOwned"]; 1577 newData.IsGroupOwned = (Boolean)row["IsGroupOwned"];
1424 newData.Area = Convert.ToInt32(row["Area"]); 1578 newData.Area = Convert.ToInt32(row["Area"]);
1425 newData.AuctionID = Convert.ToUInt32(row["AuctionID"]); //Unemplemented 1579 newData.AuctionID = Convert.ToUInt32(row["AuctionID"]); //Unemplemented
1426 newData.Category = (ParcelCategory) Convert.ToInt32(row["Category"]); 1580 newData.Category = (ParcelCategory)Convert.ToInt32(row["Category"]);
1427 //Enum OpenMetaverse.Parcel.ParcelCategory 1581 //Enum OpenMetaverse.Parcel.ParcelCategory
1428 newData.ClaimDate = Convert.ToInt32(row["ClaimDate"]); 1582 newData.ClaimDate = Convert.ToInt32(row["ClaimDate"]);
1429 newData.ClaimPrice = Convert.ToInt32(row["ClaimPrice"]); 1583 newData.ClaimPrice = Convert.ToInt32(row["ClaimPrice"]);
1430 newData.GroupID = new UUID((String) row["GroupUUID"]); 1584 newData.GroupID = new UUID((String)row["GroupUUID"]);
1431 newData.SalePrice = Convert.ToInt32(row["SalePrice"]); 1585 newData.SalePrice = Convert.ToInt32(row["SalePrice"]);
1432 newData.Status = (ParcelStatus) Convert.ToInt32(row["LandStatus"]); 1586 newData.Status = (ParcelStatus)Convert.ToInt32(row["LandStatus"]);
1433 //Enum. OpenMetaverse.Parcel.ParcelStatus 1587 //Enum. OpenMetaverse.Parcel.ParcelStatus
1434 newData.Flags = Convert.ToUInt32(row["LandFlags"]); 1588 newData.Flags = Convert.ToUInt32(row["LandFlags"]);
1435 newData.LandingType = (Byte) row["LandingType"]; 1589 newData.LandingType = (Byte)row["LandingType"];
1436 newData.MediaAutoScale = (Byte) row["MediaAutoScale"]; 1590 newData.MediaAutoScale = (Byte)row["MediaAutoScale"];
1437 newData.MediaID = new UUID((String) row["MediaTextureUUID"]); 1591 newData.MediaID = new UUID((String)row["MediaTextureUUID"]);
1438 newData.MediaURL = (String) row["MediaURL"]; 1592 newData.MediaURL = (String)row["MediaURL"];
1439 newData.MusicURL = (String) row["MusicURL"]; 1593 newData.MusicURL = (String)row["MusicURL"];
1440 newData.PassHours = Convert.ToSingle(row["PassHours"]); 1594 newData.PassHours = Convert.ToSingle(row["PassHours"]);
1441 newData.PassPrice = Convert.ToInt32(row["PassPrice"]); 1595 newData.PassPrice = Convert.ToInt32(row["PassPrice"]);
1442 newData.SnapshotID = (UUID)(String) row["SnapshotUUID"]; 1596 newData.SnapshotID = (UUID)(String)row["SnapshotUUID"];
1443 try 1597 try
1444 { 1598 {
1445 1599
@@ -1471,7 +1625,7 @@ namespace OpenSim.Data.SQLite
1471 { 1625 {
1472 RegionSettings newSettings = new RegionSettings(); 1626 RegionSettings newSettings = new RegionSettings();
1473 1627
1474 newSettings.RegionUUID = new UUID((string) row["regionUUID"]); 1628 newSettings.RegionUUID = new UUID((string)row["regionUUID"]);
1475 newSettings.BlockTerraform = Convert.ToBoolean(row["block_terraform"]); 1629 newSettings.BlockTerraform = Convert.ToBoolean(row["block_terraform"]);
1476 newSettings.AllowDamage = Convert.ToBoolean(row["allow_damage"]); 1630 newSettings.AllowDamage = Convert.ToBoolean(row["allow_damage"]);
1477 newSettings.BlockFly = Convert.ToBoolean(row["block_fly"]); 1631 newSettings.BlockFly = Convert.ToBoolean(row["block_fly"]);
@@ -1485,10 +1639,10 @@ namespace OpenSim.Data.SQLite
1485 newSettings.DisableScripts = Convert.ToBoolean(row["disable_scripts"]); 1639 newSettings.DisableScripts = Convert.ToBoolean(row["disable_scripts"]);
1486 newSettings.DisableCollisions = Convert.ToBoolean(row["disable_collisions"]); 1640 newSettings.DisableCollisions = Convert.ToBoolean(row["disable_collisions"]);
1487 newSettings.DisablePhysics = Convert.ToBoolean(row["disable_physics"]); 1641 newSettings.DisablePhysics = Convert.ToBoolean(row["disable_physics"]);
1488 newSettings.TerrainTexture1 = new UUID((String) row["terrain_texture_1"]); 1642 newSettings.TerrainTexture1 = new UUID((String)row["terrain_texture_1"]);
1489 newSettings.TerrainTexture2 = new UUID((String) row["terrain_texture_2"]); 1643 newSettings.TerrainTexture2 = new UUID((String)row["terrain_texture_2"]);
1490 newSettings.TerrainTexture3 = new UUID((String) row["terrain_texture_3"]); 1644 newSettings.TerrainTexture3 = new UUID((String)row["terrain_texture_3"]);
1491 newSettings.TerrainTexture4 = new UUID((String) row["terrain_texture_4"]); 1645 newSettings.TerrainTexture4 = new UUID((String)row["terrain_texture_4"]);
1492 newSettings.Elevation1NW = Convert.ToDouble(row["elevation_1_nw"]); 1646 newSettings.Elevation1NW = Convert.ToDouble(row["elevation_1_nw"]);
1493 newSettings.Elevation2NW = Convert.ToDouble(row["elevation_2_nw"]); 1647 newSettings.Elevation2NW = Convert.ToDouble(row["elevation_2_nw"]);
1494 newSettings.Elevation1NE = Convert.ToDouble(row["elevation_1_ne"]); 1648 newSettings.Elevation1NE = Convert.ToDouble(row["elevation_1_ne"]);
@@ -1502,14 +1656,14 @@ namespace OpenSim.Data.SQLite
1502 newSettings.TerrainLowerLimit = Convert.ToDouble(row["terrain_lower_limit"]); 1656 newSettings.TerrainLowerLimit = Convert.ToDouble(row["terrain_lower_limit"]);
1503 newSettings.UseEstateSun = Convert.ToBoolean(row["use_estate_sun"]); 1657 newSettings.UseEstateSun = Convert.ToBoolean(row["use_estate_sun"]);
1504 newSettings.Sandbox = Convert.ToBoolean(row["sandbox"]); 1658 newSettings.Sandbox = Convert.ToBoolean(row["sandbox"]);
1505 newSettings.SunVector = new Vector3 ( 1659 newSettings.SunVector = new Vector3(
1506 Convert.ToSingle(row["sunvectorx"]), 1660 Convert.ToSingle(row["sunvectorx"]),
1507 Convert.ToSingle(row["sunvectory"]), 1661 Convert.ToSingle(row["sunvectory"]),
1508 Convert.ToSingle(row["sunvectorz"]) 1662 Convert.ToSingle(row["sunvectorz"])
1509 ); 1663 );
1510 newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]); 1664 newSettings.FixedSun = Convert.ToBoolean(row["fixed_sun"]);
1511 newSettings.SunPosition = Convert.ToDouble(row["sun_position"]); 1665 newSettings.SunPosition = Convert.ToDouble(row["sun_position"]);
1512 newSettings.Covenant = new UUID((String) row["covenant"]); 1666 newSettings.Covenant = new UUID((String)row["covenant"]);
1513 newSettings.CovenantChangedDateTime = Convert.ToInt32(row["covenant_datetime"]); 1667 newSettings.CovenantChangedDateTime = Convert.ToInt32(row["covenant_datetime"]);
1514 newSettings.TerrainImageID = new UUID((String)row["map_tile_ID"]); 1668 newSettings.TerrainImageID = new UUID((String)row["map_tile_ID"]);
1515 1669
@@ -1517,6 +1671,83 @@ namespace OpenSim.Data.SQLite
1517 } 1671 }
1518 1672
1519 /// <summary> 1673 /// <summary>
1674 /// Build a windlight entry from the persisted data.
1675 /// </summary>
1676 /// <param name="row"></param>
1677 /// <returns>RegionLightShareData</returns>
1678 private RegionLightShareData buildRegionWindlight(DataRow row)
1679 {
1680 RegionLightShareData windlight = new RegionLightShareData();
1681
1682 windlight.regionID = new UUID((string)row["region_id"]);
1683 windlight.waterColor.X = Convert.ToSingle(row["water_color_r"]);
1684 windlight.waterColor.Y = Convert.ToSingle(row["water_color_g"]);
1685 windlight.waterColor.Z = Convert.ToSingle(row["water_color_b"]);
1686 //windlight.waterColor.W = Convert.ToSingle(row["water_color_i"]); //not implemented
1687 windlight.waterFogDensityExponent = Convert.ToSingle(row["water_fog_density_exponent"]);
1688 windlight.underwaterFogModifier = Convert.ToSingle(row["underwater_fog_modifier"]);
1689 windlight.reflectionWaveletScale.X = Convert.ToSingle(row["reflection_wavelet_scale_1"]);
1690 windlight.reflectionWaveletScale.Y = Convert.ToSingle(row["reflection_wavelet_scale_2"]);
1691 windlight.reflectionWaveletScale.Z = Convert.ToSingle(row["reflection_wavelet_scale_3"]);
1692 windlight.fresnelScale = Convert.ToSingle(row["fresnel_scale"]);
1693 windlight.fresnelOffset = Convert.ToSingle(row["fresnel_offset"]);
1694 windlight.refractScaleAbove = Convert.ToSingle(row["refract_scale_above"]);
1695 windlight.refractScaleBelow = Convert.ToSingle(row["refract_scale_below"]);
1696 windlight.blurMultiplier = Convert.ToSingle(row["blur_multiplier"]);
1697 windlight.bigWaveDirection.X = Convert.ToSingle(row["big_wave_direction_x"]);
1698 windlight.bigWaveDirection.Y = Convert.ToSingle(row["big_wave_direction_y"]);
1699 windlight.littleWaveDirection.X = Convert.ToSingle(row["little_wave_direction_x"]);
1700 windlight.littleWaveDirection.Y = Convert.ToSingle(row["little_wave_direction_y"]);
1701 windlight.normalMapTexture = new UUID((string)row["normal_map_texture"]);
1702 windlight.horizon.X = Convert.ToSingle(row["horizon_r"]);
1703 windlight.horizon.Y = Convert.ToSingle(row["horizon_g"]);
1704 windlight.horizon.Z = Convert.ToSingle(row["horizon_b"]);
1705 windlight.horizon.W = Convert.ToSingle(row["horizon_i"]);
1706 windlight.hazeHorizon = Convert.ToSingle(row["haze_horizon"]);
1707 windlight.blueDensity.X = Convert.ToSingle(row["blue_density_r"]);
1708 windlight.blueDensity.Y = Convert.ToSingle(row["blue_density_g"]);
1709 windlight.blueDensity.Z = Convert.ToSingle(row["blue_density_b"]);
1710 windlight.blueDensity.W = Convert.ToSingle(row["blue_density_i"]);
1711 windlight.hazeDensity = Convert.ToSingle(row["haze_density"]);
1712 windlight.densityMultiplier = Convert.ToSingle(row["density_multiplier"]);
1713 windlight.distanceMultiplier = Convert.ToSingle(row["distance_multiplier"]);
1714 windlight.maxAltitude = Convert.ToUInt16(row["max_altitude"]);
1715 windlight.sunMoonColor.X = Convert.ToSingle(row["sun_moon_color_r"]);
1716 windlight.sunMoonColor.Y = Convert.ToSingle(row["sun_moon_color_g"]);
1717 windlight.sunMoonColor.Z = Convert.ToSingle(row["sun_moon_color_b"]);
1718 windlight.sunMoonColor.W = Convert.ToSingle(row["sun_moon_color_i"]);
1719 windlight.sunMoonPosition = Convert.ToSingle(row["sun_moon_position"]);
1720 windlight.ambient.X = Convert.ToSingle(row["ambient_r"]);
1721 windlight.ambient.Y = Convert.ToSingle(row["ambient_g"]);
1722 windlight.ambient.Z = Convert.ToSingle(row["ambient_b"]);
1723 windlight.ambient.W = Convert.ToSingle(row["ambient_i"]);
1724 windlight.eastAngle = Convert.ToSingle(row["east_angle"]);
1725 windlight.sunGlowFocus = Convert.ToSingle(row["sun_glow_focus"]);
1726 windlight.sunGlowSize = Convert.ToSingle(row["sun_glow_size"]);
1727 windlight.sceneGamma = Convert.ToSingle(row["scene_gamma"]);
1728 windlight.starBrightness = Convert.ToSingle(row["star_brightness"]);
1729 windlight.cloudColor.X = Convert.ToSingle(row["cloud_color_r"]);
1730 windlight.cloudColor.Y = Convert.ToSingle(row["cloud_color_g"]);
1731 windlight.cloudColor.Z = Convert.ToSingle(row["cloud_color_b"]);
1732 windlight.cloudColor.W = Convert.ToSingle(row["cloud_color_i"]);
1733 windlight.cloudXYDensity.X = Convert.ToSingle(row["cloud_x"]);
1734 windlight.cloudXYDensity.Y = Convert.ToSingle(row["cloud_y"]);
1735 windlight.cloudXYDensity.Z = Convert.ToSingle(row["cloud_density"]);
1736 windlight.cloudCoverage = Convert.ToSingle(row["cloud_coverage"]);
1737 windlight.cloudScale = Convert.ToSingle(row["cloud_scale"]);
1738 windlight.cloudDetailXYDensity.X = Convert.ToSingle(row["cloud_detail_x"]);
1739 windlight.cloudDetailXYDensity.Y = Convert.ToSingle(row["cloud_detail_y"]);
1740 windlight.cloudDetailXYDensity.Z = Convert.ToSingle(row["cloud_detail_density"]);
1741 windlight.cloudScrollX = Convert.ToSingle(row["cloud_scroll_x"]);
1742 windlight.cloudScrollXLock = Convert.ToBoolean(row["cloud_scroll_x_lock"]);
1743 windlight.cloudScrollY = Convert.ToSingle(row["cloud_scroll_y"]);
1744 windlight.cloudScrollYLock = Convert.ToBoolean(row["cloud_scroll_y_lock"]);
1745 windlight.drawClassicClouds = Convert.ToBoolean(row["draw_classic_clouds"]);
1746
1747 return windlight;
1748 }
1749
1750 /// <summary>
1520 /// Build a land access entry from the persisted data. 1751 /// Build a land access entry from the persisted data.
1521 /// </summary> 1752 /// </summary>
1522 /// <param name="row"></param> 1753 /// <param name="row"></param>
@@ -1524,8 +1755,8 @@ namespace OpenSim.Data.SQLite
1524 private static LandAccessEntry buildLandAccessData(DataRow row) 1755 private static LandAccessEntry buildLandAccessData(DataRow row)
1525 { 1756 {
1526 LandAccessEntry entry = new LandAccessEntry(); 1757 LandAccessEntry entry = new LandAccessEntry();
1527 entry.AgentID = new UUID((string) row["AccessUUID"]); 1758 entry.AgentID = new UUID((string)row["AccessUUID"]);
1528 entry.Flags = (AccessList) row["Flags"]; 1759 entry.Flags = (AccessList)row["Flags"];
1529 entry.Expires = 0; 1760 entry.Expires = 0;
1530 return entry; 1761 return entry;
1531 } 1762 }
@@ -1537,7 +1768,7 @@ namespace OpenSim.Data.SQLite
1537 /// <returns></returns> 1768 /// <returns></returns>
1538 private static Array serializeTerrain(double[,] val) 1769 private static Array serializeTerrain(double[,] val)
1539 { 1770 {
1540 MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) *sizeof (double)); 1771 MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) * sizeof(double));
1541 BinaryWriter bw = new BinaryWriter(str); 1772 BinaryWriter bw = new BinaryWriter(str);
1542 1773
1543 // TODO: COMPATIBILITY - Add byte-order conversions 1774 // TODO: COMPATIBILITY - Add byte-order conversions
@@ -1548,21 +1779,21 @@ namespace OpenSim.Data.SQLite
1548 return str.ToArray(); 1779 return str.ToArray();
1549 } 1780 }
1550 1781
1551// private void fillTerrainRow(DataRow row, UUID regionUUID, int rev, double[,] val) 1782 // private void fillTerrainRow(DataRow row, UUID regionUUID, int rev, double[,] val)
1552// { 1783 // {
1553// row["RegionUUID"] = regionUUID; 1784 // row["RegionUUID"] = regionUUID;
1554// row["Revision"] = rev; 1785 // row["Revision"] = rev;
1555 1786
1556 // MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize)*sizeof (double)); 1787 // MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize)*sizeof (double));
1557// BinaryWriter bw = new BinaryWriter(str); 1788 // BinaryWriter bw = new BinaryWriter(str);
1558 1789
1559// // TODO: COMPATIBILITY - Add byte-order conversions 1790 // // TODO: COMPATIBILITY - Add byte-order conversions
1560 // for (int x = 0; x < (int)Constants.RegionSize; x++) 1791 // for (int x = 0; x < (int)Constants.RegionSize; x++)
1561 // for (int y = 0; y < (int)Constants.RegionSize; y++) 1792 // for (int y = 0; y < (int)Constants.RegionSize; y++)
1562// bw.Write(val[x, y]); 1793 // bw.Write(val[x, y]);
1563 1794
1564// row["Heightfield"] = str.ToArray(); 1795 // row["Heightfield"] = str.ToArray();
1565// } 1796 // }
1566 1797
1567 /// <summary> 1798 /// <summary>
1568 /// 1799 ///
@@ -1843,6 +2074,79 @@ namespace OpenSim.Data.SQLite
1843 /// 2074 ///
1844 /// </summary> 2075 /// </summary>
1845 /// <param name="row"></param> 2076 /// <param name="row"></param>
2077 /// <param name="windlight"></param>
2078 private static void fillRegionWindlightRow(DataRow row, RegionLightShareData windlight)
2079 {
2080 row["region_id"] = windlight.regionID.ToString();
2081 row["water_color_r"] = windlight.waterColor.X;
2082 row["water_color_g"] = windlight.waterColor.Y;
2083 row["water_color_b"] = windlight.waterColor.Z;
2084 row["water_color_i"] = 1; //windlight.waterColor.W; //not implemented
2085 row["water_fog_density_exponent"] = windlight.waterFogDensityExponent;
2086 row["underwater_fog_modifier"] = windlight.underwaterFogModifier;
2087 row["reflection_wavelet_scale_1"] = windlight.reflectionWaveletScale.X;
2088 row["reflection_wavelet_scale_2"] = windlight.reflectionWaveletScale.Y;
2089 row["reflection_wavelet_scale_3"] = windlight.reflectionWaveletScale.Z;
2090 row["fresnel_scale"] = windlight.fresnelScale;
2091 row["fresnel_offset"] = windlight.fresnelOffset;
2092 row["refract_scale_above"] = windlight.refractScaleAbove;
2093 row["refract_scale_below"] = windlight.refractScaleBelow;
2094 row["blur_multiplier"] = windlight.blurMultiplier;
2095 row["big_wave_direction_x"] = windlight.bigWaveDirection.X;
2096 row["big_wave_direction_y"] = windlight.bigWaveDirection.Y;
2097 row["little_wave_direction_x"] = windlight.littleWaveDirection.X;
2098 row["little_wave_direction_y"] = windlight.littleWaveDirection.Y;
2099 row["normal_map_texture"] = windlight.normalMapTexture.ToString();
2100 row["horizon_r"] = windlight.horizon.X;
2101 row["horizon_g"] = windlight.horizon.Y;
2102 row["horizon_b"] = windlight.horizon.Z;
2103 row["horizon_i"] = windlight.horizon.W;
2104 row["haze_horizon"] = windlight.hazeHorizon;
2105 row["blue_density_r"] = windlight.blueDensity.X;
2106 row["blue_density_g"] = windlight.blueDensity.Y;
2107 row["blue_density_b"] = windlight.blueDensity.Z;
2108 row["blue_density_i"] = windlight.blueDensity.W;
2109 row["haze_density"] = windlight.hazeDensity;
2110 row["density_multiplier"] = windlight.densityMultiplier;
2111 row["distance_multiplier"] = windlight.distanceMultiplier;
2112 row["max_altitude"] = windlight.maxAltitude;
2113 row["sun_moon_color_r"] = windlight.sunMoonColor.X;
2114 row["sun_moon_color_g"] = windlight.sunMoonColor.Y;
2115 row["sun_moon_color_b"] = windlight.sunMoonColor.Z;
2116 row["sun_moon_color_i"] = windlight.sunMoonColor.W;
2117 row["sun_moon_position"] = windlight.sunMoonPosition;
2118 row["ambient_r"] = windlight.ambient.X;
2119 row["ambient_g"] = windlight.ambient.Y;
2120 row["ambient_b"] = windlight.ambient.Z;
2121 row["ambient_i"] = windlight.ambient.W;
2122 row["east_angle"] = windlight.eastAngle;
2123 row["sun_glow_focus"] = windlight.sunGlowFocus;
2124 row["sun_glow_size"] = windlight.sunGlowSize;
2125 row["scene_gamma"] = windlight.sceneGamma;
2126 row["star_brightness"] = windlight.starBrightness;
2127 row["cloud_color_r"] = windlight.cloudColor.X;
2128 row["cloud_color_g"] = windlight.cloudColor.Y;
2129 row["cloud_color_b"] = windlight.cloudColor.Z;
2130 row["cloud_color_i"] = windlight.cloudColor.W;
2131 row["cloud_x"] = windlight.cloudXYDensity.X;
2132 row["cloud_y"] = windlight.cloudXYDensity.Y;
2133 row["cloud_density"] = windlight.cloudXYDensity.Z;
2134 row["cloud_coverage"] = windlight.cloudCoverage;
2135 row["cloud_scale"] = windlight.cloudScale;
2136 row["cloud_detail_x"] = windlight.cloudDetailXYDensity.X;
2137 row["cloud_detail_y"] = windlight.cloudDetailXYDensity.Y;
2138 row["cloud_detail_density"] = windlight.cloudDetailXYDensity.Z;
2139 row["cloud_scroll_x"] = windlight.cloudScrollX;
2140 row["cloud_scroll_x_lock"] = windlight.cloudScrollXLock;
2141 row["cloud_scroll_y"] = windlight.cloudScrollY;
2142 row["cloud_scroll_y_lock"] = windlight.cloudScrollYLock;
2143 row["draw_classic_clouds"] = windlight.drawClassicClouds;
2144 }
2145
2146 /// <summary>
2147 ///
2148 /// </summary>
2149 /// <param name="row"></param>
1846 /// <returns></returns> 2150 /// <returns></returns>
1847 private PrimitiveBaseShape buildShape(DataRow row) 2151 private PrimitiveBaseShape buildShape(DataRow row)
1848 { 2152 {
@@ -1878,7 +2182,7 @@ namespace OpenSim.Data.SQLite
1878 byte[] textureEntry = (byte[])row["Texture"]; 2182 byte[] textureEntry = (byte[])row["Texture"];
1879 s.TextureEntry = textureEntry; 2183 s.TextureEntry = textureEntry;
1880 2184
1881 s.ExtraParams = (byte[]) row["ExtraParams"]; 2185 s.ExtraParams = (byte[])row["ExtraParams"];
1882 2186
1883 if (!(row["Media"] is System.DBNull)) 2187 if (!(row["Media"] is System.DBNull))
1884 s.Media = PrimitiveBaseShape.MediaList.FromXml((string)row["Media"]); 2188 s.Media = PrimitiveBaseShape.MediaList.FromXml((string)row["Media"]);
@@ -1986,10 +2290,10 @@ namespace OpenSim.Data.SQLite
1986 // repalce with current inventory details 2290 // repalce with current inventory details
1987 foreach (TaskInventoryItem newItem in items) 2291 foreach (TaskInventoryItem newItem in items)
1988 { 2292 {
1989// m_log.InfoFormat( 2293 // m_log.InfoFormat(
1990// "[DATASTORE]: ", 2294 // "[DATASTORE]: ",
1991// "Adding item {0}, {1} to prim ID {2}", 2295 // "Adding item {0}, {1} to prim ID {2}",
1992// newItem.Name, newItem.ItemID, newItem.ParentPartID); 2296 // newItem.Name, newItem.ItemID, newItem.ParentPartID);
1993 2297
1994 DataRow newItemRow = dbItems.NewRow(); 2298 DataRow newItemRow = dbItems.NewRow();
1995 fillItemRow(newItemRow, newItem); 2299 fillItemRow(newItemRow, newItem);
@@ -2040,7 +2344,7 @@ namespace OpenSim.Data.SQLite
2040 sql += ") values (:"; 2344 sql += ") values (:";
2041 sql += String.Join(", :", cols); 2345 sql += String.Join(", :", cols);
2042 sql += ")"; 2346 sql += ")";
2043 //m_log.DebugFormat("[SQLITE]: Created insert command {0}", sql); 2347// m_log.DebugFormat("[SQLITE]: Created insert command {0}", sql);
2044 SqliteCommand cmd = new SqliteCommand(sql); 2348 SqliteCommand cmd = new SqliteCommand(sql);
2045 2349
2046 // this provides the binding for all our parameters, so 2350 // this provides the binding for all our parameters, so
@@ -2192,7 +2496,7 @@ namespace OpenSim.Data.SQLite
2192 da.UpdateCommand.Connection = conn; 2496 da.UpdateCommand.Connection = conn;
2193 2497
2194 SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID"); 2498 SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID");
2195 delete.Parameters.Add(createSqliteParameter("UUID", typeof (String))); 2499 delete.Parameters.Add(createSqliteParameter("UUID", typeof(String)));
2196 delete.Connection = conn; 2500 delete.Connection = conn;
2197 da.DeleteCommand = delete; 2501 da.DeleteCommand = delete;
2198 } 2502 }
@@ -2211,7 +2515,7 @@ namespace OpenSim.Data.SQLite
2211 da.UpdateCommand.Connection = conn; 2515 da.UpdateCommand.Connection = conn;
2212 2516
2213 SqliteCommand delete = new SqliteCommand("delete from primitems where itemID = :itemID"); 2517 SqliteCommand delete = new SqliteCommand("delete from primitems where itemID = :itemID");
2214 delete.Parameters.Add(createSqliteParameter("itemID", typeof (String))); 2518 delete.Parameters.Add(createSqliteParameter("itemID", typeof(String)));
2215 delete.Connection = conn; 2519 delete.Connection = conn;
2216 da.DeleteCommand = delete; 2520 da.DeleteCommand = delete;
2217 } 2521 }
@@ -2279,6 +2583,19 @@ namespace OpenSim.Data.SQLite
2279 /// </summary> 2583 /// </summary>
2280 /// <param name="da"></param> 2584 /// <param name="da"></param>
2281 /// <param name="conn"></param> 2585 /// <param name="conn"></param>
2586 private void setupRegionWindlightCommands(SqliteDataAdapter da, SqliteConnection conn)
2587 {
2588 da.InsertCommand = createInsertCommand("regionwindlight", ds.Tables["regionwindlight"]);
2589 da.InsertCommand.Connection = conn;
2590 da.UpdateCommand = createUpdateCommand("regionwindlight", "region_id=:region_id", ds.Tables["regionwindlight"]);
2591 da.UpdateCommand.Connection = conn;
2592 }
2593
2594 /// <summary>
2595 ///
2596 /// </summary>
2597 /// <param name="da"></param>
2598 /// <param name="conn"></param>
2282 private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn) 2599 private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn)
2283 { 2600 {
2284 da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]); 2601 da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]);
@@ -2288,7 +2605,7 @@ namespace OpenSim.Data.SQLite
2288 da.UpdateCommand.Connection = conn; 2605 da.UpdateCommand.Connection = conn;
2289 2606
2290 SqliteCommand delete = new SqliteCommand("delete from primshapes where UUID = :UUID"); 2607 SqliteCommand delete = new SqliteCommand("delete from primshapes where UUID = :UUID");
2291 delete.Parameters.Add(createSqliteParameter("UUID", typeof (String))); 2608 delete.Parameters.Add(createSqliteParameter("UUID", typeof(String)));
2292 delete.Connection = conn; 2609 delete.Connection = conn;
2293 da.DeleteCommand = delete; 2610 da.DeleteCommand = delete;
2294 } 2611 }
@@ -2306,27 +2623,27 @@ namespace OpenSim.Data.SQLite
2306 /// <returns></returns> 2623 /// <returns></returns>
2307 private static DbType dbtypeFromType(Type type) 2624 private static DbType dbtypeFromType(Type type)
2308 { 2625 {
2309 if (type == typeof (String)) 2626 if (type == typeof(String))
2310 { 2627 {
2311 return DbType.String; 2628 return DbType.String;
2312 } 2629 }
2313 else if (type == typeof (Int32)) 2630 else if (type == typeof(Int32))
2314 { 2631 {
2315 return DbType.Int32; 2632 return DbType.Int32;
2316 } 2633 }
2317 else if (type == typeof (Double)) 2634 else if (type == typeof(Double))
2318 { 2635 {
2319 return DbType.Double; 2636 return DbType.Double;
2320 } 2637 }
2321 else if (type == typeof (Byte)) 2638 else if (type == typeof(Byte))
2322 { 2639 {
2323 return DbType.Byte; 2640 return DbType.Byte;
2324 } 2641 }
2325 else if (type == typeof (Double)) 2642 else if (type == typeof(Double))
2326 { 2643 {
2327 return DbType.Double; 2644 return DbType.Double;
2328 } 2645 }
2329 else if (type == typeof (Byte[])) 2646 else if (type == typeof(Byte[]))
2330 { 2647 {
2331 return DbType.Binary; 2648 return DbType.Binary;
2332 } 2649 }
@@ -2338,32 +2655,32 @@ namespace OpenSim.Data.SQLite
2338 2655
2339 static void PrintDataSet(DataSet ds) 2656 static void PrintDataSet(DataSet ds)
2340 { 2657 {
2341 // Print out any name and extended properties. 2658 // Print out any name and extended properties.
2342 Console.WriteLine("DataSet is named: {0}", ds.DataSetName); 2659 Console.WriteLine("DataSet is named: {0}", ds.DataSetName);
2343 foreach (System.Collections.DictionaryEntry de in ds.ExtendedProperties) 2660 foreach (System.Collections.DictionaryEntry de in ds.ExtendedProperties)
2344 {
2345 Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
2346 }
2347 Console.WriteLine();
2348 foreach (DataTable dt in ds.Tables)
2349 {
2350 Console.WriteLine("=> {0} Table:", dt.TableName);
2351 // Print out the column names.
2352 for (int curCol = 0; curCol < dt.Columns.Count; curCol++)
2353 { 2661 {
2354 Console.Write(dt.Columns[curCol].ColumnName + "\t"); 2662 Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
2355 } 2663 }
2356 Console.WriteLine("\n----------------------------------"); 2664 Console.WriteLine();
2357 // Print the DataTable. 2665 foreach (DataTable dt in ds.Tables)
2358 for (int curRow = 0; curRow < dt.Rows.Count; curRow++)
2359 { 2666 {
2360 for (int curCol = 0; curCol < dt.Columns.Count; curCol++) 2667 Console.WriteLine("=> {0} Table:", dt.TableName);
2361 { 2668 // Print out the column names.
2362 Console.Write(dt.Rows[curRow][curCol].ToString() + "\t"); 2669 for (int curCol = 0; curCol < dt.Columns.Count; curCol++)
2363 } 2670 {
2364 Console.WriteLine(); 2671 Console.Write(dt.Columns[curCol].ColumnName + "\t");
2672 }
2673 Console.WriteLine("\n----------------------------------");
2674 // Print the DataTable.
2675 for (int curRow = 0; curRow < dt.Rows.Count; curRow++)
2676 {
2677 for (int curCol = 0; curCol < dt.Columns.Count; curCol++)
2678 {
2679 Console.Write(dt.Rows[curRow][curCol].ToString() + "\t");
2680 }
2681 Console.WriteLine();
2682 }
2365 } 2683 }
2366 }
2367 } 2684 }
2368 2685
2369 } 2686 }