diff options
Diffstat (limited to 'OpenSim/Region')
8 files changed, 138 insertions, 23 deletions
diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index d2f5648..9de3831 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs | |||
@@ -262,8 +262,10 @@ namespace OpenSim | |||
262 | } | 262 | } |
263 | else | 263 | else |
264 | { | 264 | { |
265 | MainLog.Instance.Verbose("No startup command script specified. Moving on..."); | 265 | MainLog.Instance.Verbose("STARTUP","No startup command script specified. Moving on..."); |
266 | } | 266 | } |
267 | |||
268 | MainLog.Instance.Status("STARTUP","Startup complete, serving " + m_udpServers.Count.ToString() + " region(s)"); | ||
267 | } | 269 | } |
268 | 270 | ||
269 | private static void CreateDefaultRegionInfoXml(string fileName) | 271 | private static void CreateDefaultRegionInfoXml(string fileName) |
@@ -361,11 +363,11 @@ namespace OpenSim | |||
361 | RunCommandScript(m_shutdownCommandsFile); | 363 | RunCommandScript(m_shutdownCommandsFile); |
362 | } | 364 | } |
363 | 365 | ||
364 | m_log.Verbose("Closing all threads"); | 366 | m_log.Verbose("SHUTDOWN", "Closing all threads"); |
365 | m_log.Verbose("Killing listener thread"); | 367 | m_log.Verbose("SHUTDOWN", "Killing listener thread"); |
366 | m_log.Verbose("Killing clients"); | 368 | m_log.Verbose("SHUTDOWN", "Killing clients"); |
367 | // IMPLEMENT THIS | 369 | // IMPLEMENT THIS |
368 | m_log.Verbose("Closing console and terminating"); | 370 | m_log.Verbose("SHUTDOWN", "Closing console and terminating"); |
369 | 371 | ||
370 | m_sceneManager.Close(); | 372 | m_sceneManager.Close(); |
371 | 373 | ||
@@ -380,7 +382,7 @@ namespace OpenSim | |||
380 | /// <param name="fileName"></param> | 382 | /// <param name="fileName"></param> |
381 | private void RunCommandScript(string fileName) | 383 | private void RunCommandScript(string fileName) |
382 | { | 384 | { |
383 | MainLog.Instance.Verbose("Running command script (" + fileName + ")"); | 385 | MainLog.Instance.Verbose("COMMANDFILE", "Running " + fileName); |
384 | if (File.Exists(fileName)) | 386 | if (File.Exists(fileName)) |
385 | { | 387 | { |
386 | StreamReader readFile = File.OpenText(fileName); | 388 | StreamReader readFile = File.OpenText(fileName); |
@@ -389,14 +391,14 @@ namespace OpenSim | |||
389 | { | 391 | { |
390 | if (currentCommand != "") | 392 | if (currentCommand != "") |
391 | { | 393 | { |
392 | MainLog.Instance.Verbose("Running '" + currentCommand + "'"); | 394 | MainLog.Instance.Verbose("COMMANDFILE", "Running '" + currentCommand + "'"); |
393 | MainLog.Instance.MainLogRunCommand(currentCommand); | 395 | MainLog.Instance.MainLogRunCommand(currentCommand); |
394 | } | 396 | } |
395 | } | 397 | } |
396 | } | 398 | } |
397 | else | 399 | else |
398 | { | 400 | { |
399 | MainLog.Instance.Error("Command script missing. Can not run commands"); | 401 | MainLog.Instance.Error("COMMANDFILE","Command script missing. Can not run commands"); |
400 | } | 402 | } |
401 | } | 403 | } |
402 | 404 | ||
diff --git a/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs b/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs index 1a00f2c..e375343 100644 --- a/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs +++ b/OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs | |||
@@ -47,8 +47,8 @@ namespace OpenSim.Region.Environment.Interfaces | |||
47 | 47 | ||
48 | List<SceneObjectGroup> LoadObjects(LLUUID regionUUID); | 48 | List<SceneObjectGroup> LoadObjects(LLUUID regionUUID); |
49 | 49 | ||
50 | void StoreTerrain(double[,] terrain); | 50 | void StoreTerrain(double[,] terrain, LLUUID regionID); |
51 | double[,] LoadTerrain(); | 51 | double[,] LoadTerrain(LLUUID regionID); |
52 | 52 | ||
53 | void StoreParcel(Land Parcel); | 53 | void StoreParcel(Land Parcel); |
54 | void RemoveLandObject(uint ID); | 54 | void RemoveLandObject(uint ID); |
diff --git a/OpenSim/Region/Environment/ModuleLoader.cs b/OpenSim/Region/Environment/ModuleLoader.cs index c579c1d..4fc45a0 100644 --- a/OpenSim/Region/Environment/ModuleLoader.cs +++ b/OpenSim/Region/Environment/ModuleLoader.cs | |||
@@ -168,7 +168,7 @@ namespace OpenSim.Region.Environment | |||
168 | } | 168 | } |
169 | catch( BadImageFormatException e ) | 169 | catch( BadImageFormatException e ) |
170 | { | 170 | { |
171 | m_log.Warn( "MODULES", "The file [{0}] is not a module assembly.", e.FileName ); | 171 | m_log.Verbose( "MODULES", "The file [{0}] is not a module assembly.", e.FileName ); |
172 | } | 172 | } |
173 | } | 173 | } |
174 | 174 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index e2430f8..ee47678 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -370,7 +370,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
370 | phyScene.SetTerrain(Terrain.GetHeights1D()); | 370 | phyScene.SetTerrain(Terrain.GetHeights1D()); |
371 | } | 371 | } |
372 | 372 | ||
373 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD()); | 373 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(),RegionInfo.RegionID); |
374 | 374 | ||
375 | float[] terData = Terrain.GetHeights1D(); | 375 | float[] terData = Terrain.GetHeights1D(); |
376 | 376 | ||
@@ -466,7 +466,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
466 | { | 466 | { |
467 | try | 467 | try |
468 | { | 468 | { |
469 | double[,] map = storageManager.DataStore.LoadTerrain(); | 469 | double[,] map = storageManager.DataStore.LoadTerrain(RegionInfo.RegionID); |
470 | if (map == null) | 470 | if (map == null) |
471 | { | 471 | { |
472 | if (string.IsNullOrEmpty(m_regInfo.EstateSettings.terrainFile)) | 472 | if (string.IsNullOrEmpty(m_regInfo.EstateSettings.terrainFile)) |
@@ -474,7 +474,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
474 | MainLog.Instance.Verbose("TERRAIN", "No default terrain. Generating a new terrain."); | 474 | MainLog.Instance.Verbose("TERRAIN", "No default terrain. Generating a new terrain."); |
475 | Terrain.HillsGenerator(); | 475 | Terrain.HillsGenerator(); |
476 | 476 | ||
477 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD()); | 477 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(),RegionInfo.RegionID); |
478 | } | 478 | } |
479 | else | 479 | else |
480 | { | 480 | { |
@@ -488,7 +488,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
488 | MainLog.Instance.Verbose("TERRAIN", "No terrain found in database or default. Generating a new terrain."); | 488 | MainLog.Instance.Verbose("TERRAIN", "No terrain found in database or default. Generating a new terrain."); |
489 | Terrain.HillsGenerator(); | 489 | Terrain.HillsGenerator(); |
490 | } | 490 | } |
491 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD()); | 491 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(), RegionInfo.RegionID); |
492 | } | 492 | } |
493 | } | 493 | } |
494 | else | 494 | else |
diff --git a/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs b/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs index be27a0b..95ab2ca 100644 --- a/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs +++ b/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs | |||
@@ -70,7 +70,7 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
70 | 70 | ||
71 | public void Initialise(Scene scene, IConfigSource config) | 71 | public void Initialise(Scene scene, IConfigSource config) |
72 | { | 72 | { |
73 | System.Console.WriteLine("Initialising Extensions Scripting Module"); | 73 | OpenSim.Framework.Console.MainLog.Instance.Verbose("SCRIPTMODULE", "Initialising Extensions Scripting Module"); |
74 | m_scene = scene; | 74 | m_scene = scene; |
75 | 75 | ||
76 | m_scene.RegisterModuleInterface<IExtensionScriptModule>(this); | 76 | m_scene.RegisterModuleInterface<IExtensionScriptModule>(this); |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs index 87b6d34..81bc938 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs | |||
@@ -93,7 +93,7 @@ namespace OpenSim.Region.Physics.Manager | |||
93 | IPhysicsPlugin plug = (IPhysicsPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | 93 | IPhysicsPlugin plug = (IPhysicsPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); |
94 | plug.Init(); | 94 | plug.Init(); |
95 | this._plugins.Add(plug.GetName(),plug); | 95 | this._plugins.Add(plug.GetName(),plug); |
96 | Console.WriteLine("added physics engine: " + plug.GetName()); | 96 | OpenSim.Framework.Console.MainLog.Instance.Verbose("PHYSICS","Added physics engine: " + plug.GetName()); |
97 | 97 | ||
98 | } | 98 | } |
99 | 99 | ||
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs index 733e4c4..cc0ff7a 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs | |||
@@ -43,10 +43,12 @@ namespace OpenSim.DataStore.MonoSqlite | |||
43 | { | 43 | { |
44 | private const string primSelect = "select * from prims"; | 44 | private const string primSelect = "select * from prims"; |
45 | private const string shapeSelect = "select * from primshapes"; | 45 | private const string shapeSelect = "select * from primshapes"; |
46 | private const string terrainSelect = "select * from terrain"; | ||
46 | 47 | ||
47 | private DataSet ds; | 48 | private DataSet ds; |
48 | private SqliteDataAdapter primDa; | 49 | private SqliteDataAdapter primDa; |
49 | private SqliteDataAdapter shapeDa; | 50 | private SqliteDataAdapter shapeDa; |
51 | private SqliteDataAdapter terrainDa; | ||
50 | 52 | ||
51 | /*********************************************************************** | 53 | /*********************************************************************** |
52 | * | 54 | * |
@@ -70,6 +72,8 @@ namespace OpenSim.DataStore.MonoSqlite | |||
70 | shapeDa = new SqliteDataAdapter(shapeSelectCmd); | 72 | shapeDa = new SqliteDataAdapter(shapeSelectCmd); |
71 | // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa); | 73 | // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa); |
72 | 74 | ||
75 | SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, conn); | ||
76 | terrainDa = new SqliteDataAdapter(terrainSelectCmd); | ||
73 | 77 | ||
74 | // We fill the data set, now we've got copies in memory for the information | 78 | // We fill the data set, now we've got copies in memory for the information |
75 | // TODO: see if the linkage actually holds. | 79 | // TODO: see if the linkage actually holds. |
@@ -83,6 +87,10 @@ namespace OpenSim.DataStore.MonoSqlite | |||
83 | 87 | ||
84 | ds.Tables.Add(createShapeTable()); | 88 | ds.Tables.Add(createShapeTable()); |
85 | setupShapeCommands(shapeDa, conn); | 89 | setupShapeCommands(shapeDa, conn); |
90 | |||
91 | ds.Tables.Add(createTerrainTable()); | ||
92 | setupTerrainCommands(terrainDa, conn); | ||
93 | terrainDa.Fill(ds.Tables["terrain"]); | ||
86 | 94 | ||
87 | // WORKAROUND: This is a work around for sqlite on | 95 | // WORKAROUND: This is a work around for sqlite on |
88 | // windows, which gets really unhappy with blob columns | 96 | // windows, which gets really unhappy with blob columns |
@@ -210,14 +218,57 @@ namespace OpenSim.DataStore.MonoSqlite | |||
210 | } | 218 | } |
211 | 219 | ||
212 | 220 | ||
213 | public void StoreTerrain(double[,] ter) | 221 | public void StoreTerrain(double[,] ter, LLUUID regionID) |
214 | { | 222 | { |
223 | int revision = OpenSim.Framework.Utilities.Util.UnixTimeSinceEpoch(); | ||
224 | |||
225 | MainLog.Instance.Verbose("DATASTORE", "Storing terrain revision r" + revision.ToString()); | ||
226 | |||
227 | DataTable terrain = ds.Tables["terrain"]; | ||
228 | |||
229 | DataRow newrow = terrain.NewRow(); | ||
230 | fillTerrainRow(newrow, regionID, revision, ter); | ||
231 | terrain.Rows.Add(newrow); | ||
215 | 232 | ||
233 | Commit(); | ||
216 | } | 234 | } |
217 | 235 | ||
218 | public double[,] LoadTerrain() | 236 | public double[,] LoadTerrain(LLUUID regionID) |
219 | { | 237 | { |
220 | return null; | 238 | double[,] terret = new double[256, 256]; |
239 | terret.Initialize(); | ||
240 | |||
241 | DataTable terrain = ds.Tables["terrain"]; | ||
242 | |||
243 | DataRow[] rows = terrain.Select("RegionUUID = '" + regionID.ToString() + "'","Revision DESC"); | ||
244 | |||
245 | int rev = 0; | ||
246 | |||
247 | if (rows.Length > 0) | ||
248 | { | ||
249 | DataRow row = rows[0]; | ||
250 | |||
251 | byte[] heightmap = (byte[])row["Heightfield"]; | ||
252 | for (int x = 0; x < 256; x++) | ||
253 | { | ||
254 | for (int y = 0; y < 256; y++) | ||
255 | { | ||
256 | terret[x, y] = BitConverter.ToDouble(heightmap, ((x * 256) + y) * 8); | ||
257 | } | ||
258 | } | ||
259 | |||
260 | rev = (int)row["Revision"]; | ||
261 | } | ||
262 | else | ||
263 | { | ||
264 | MainLog.Instance.Verbose("DATASTORE", "No terrain found for region"); | ||
265 | return null; | ||
266 | } | ||
267 | |||
268 | |||
269 | MainLog.Instance.Verbose("DATASTORE", "Loaded terrain revision r" + rev.ToString()); | ||
270 | |||
271 | return terret; | ||
221 | } | 272 | } |
222 | 273 | ||
223 | public void RemoveLandObject(uint id) | 274 | public void RemoveLandObject(uint id) |
@@ -240,6 +291,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
240 | lock (ds) { | 291 | lock (ds) { |
241 | primDa.Update(ds, "prims"); | 292 | primDa.Update(ds, "prims"); |
242 | shapeDa.Update(ds, "primshapes"); | 293 | shapeDa.Update(ds, "primshapes"); |
294 | terrainDa.Update(ds, "terrain"); | ||
243 | ds.AcceptChanges(); | 295 | ds.AcceptChanges(); |
244 | } | 296 | } |
245 | } | 297 | } |
@@ -263,6 +315,22 @@ namespace OpenSim.DataStore.MonoSqlite | |||
263 | dt.Columns.Add(col); | 315 | dt.Columns.Add(col); |
264 | } | 316 | } |
265 | 317 | ||
318 | private DataTable createTerrainTable() | ||
319 | { | ||
320 | DataTable terrain = new DataTable("terrain"); | ||
321 | |||
322 | createCol(terrain, "RegionUUID", typeof(System.String)); | ||
323 | createCol(terrain, "Revision", typeof(System.Int32)); | ||
324 | createCol(terrain, "Heightfield", typeof(System.Byte[])); | ||
325 | |||
326 | /* // Attempting to work out requirements to get SQLite to actually *save* the data. | ||
327 | createCol(terrain, "PrIndex", typeof(System.String)); | ||
328 | terrain.PrimaryKey = new DataColumn[] { terrain.Columns["PrIndex"] }; | ||
329 | */ | ||
330 | |||
331 | return terrain; | ||
332 | } | ||
333 | |||
266 | private DataTable createPrimTable() | 334 | private DataTable createPrimTable() |
267 | { | 335 | { |
268 | DataTable prims = new DataTable("prims"); | 336 | DataTable prims = new DataTable("prims"); |
@@ -431,6 +499,22 @@ namespace OpenSim.DataStore.MonoSqlite | |||
431 | return prim; | 499 | return prim; |
432 | } | 500 | } |
433 | 501 | ||
502 | private void fillTerrainRow(DataRow row, LLUUID regionUUID, int rev, double[,] val) | ||
503 | { | ||
504 | row["RegionUUID"] = regionUUID; | ||
505 | row["Revision"] = rev; | ||
506 | |||
507 | System.IO.MemoryStream str = new System.IO.MemoryStream(65536 * sizeof(double)); | ||
508 | System.IO.BinaryWriter bw = new System.IO.BinaryWriter(str); | ||
509 | |||
510 | // TODO: COMPATIBILITY - Add byte-order conversions | ||
511 | for (int x = 0; x < 256; x++) | ||
512 | for (int y = 0; y < 256; y++) | ||
513 | bw.Write(val[x, y]); | ||
514 | |||
515 | row["Heightfield"] = str.ToArray(); | ||
516 | } | ||
517 | |||
434 | private void fillPrimRow(DataRow row, SceneObjectPart prim, LLUUID sceneGroupID, LLUUID regionUUID) | 518 | private void fillPrimRow(DataRow row, SceneObjectPart prim, LLUUID sceneGroupID, LLUUID regionUUID) |
435 | { | 519 | { |
436 | row["UUID"] = prim.UUID; | 520 | row["UUID"] = prim.UUID; |
@@ -692,7 +776,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
692 | subsql += ",\n"; | 776 | subsql += ",\n"; |
693 | } | 777 | } |
694 | subsql += col.ColumnName + " " + sqliteType(col.DataType); | 778 | subsql += col.ColumnName + " " + sqliteType(col.DataType); |
695 | if (col == dt.PrimaryKey[0]) | 779 | if (dt.PrimaryKey.Length > 0 && col == dt.PrimaryKey[0]) |
696 | { | 780 | { |
697 | subsql += " primary key"; | 781 | subsql += " primary key"; |
698 | } | 782 | } |
@@ -746,6 +830,12 @@ namespace OpenSim.DataStore.MonoSqlite | |||
746 | da.DeleteCommand = delete; | 830 | da.DeleteCommand = delete; |
747 | } | 831 | } |
748 | 832 | ||
833 | private void setupTerrainCommands(SqliteDataAdapter da, SqliteConnection conn) | ||
834 | { | ||
835 | da.InsertCommand = createInsertCommand("terrain", ds.Tables["terrain"]); | ||
836 | da.InsertCommand.Connection = conn; | ||
837 | } | ||
838 | |||
749 | private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn) | 839 | private void setupShapeCommands(SqliteDataAdapter da, SqliteConnection conn) |
750 | { | 840 | { |
751 | da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]); | 841 | da.InsertCommand = createInsertCommand("primshapes", ds.Tables["primshapes"]); |
@@ -764,12 +854,15 @@ namespace OpenSim.DataStore.MonoSqlite | |||
764 | { | 854 | { |
765 | string createPrims = defineTable(createPrimTable()); | 855 | string createPrims = defineTable(createPrimTable()); |
766 | string createShapes = defineTable(createShapeTable()); | 856 | string createShapes = defineTable(createShapeTable()); |
857 | string createTerrain = defineTable(createTerrainTable()); | ||
767 | 858 | ||
768 | SqliteCommand pcmd = new SqliteCommand(createPrims, conn); | 859 | SqliteCommand pcmd = new SqliteCommand(createPrims, conn); |
769 | SqliteCommand scmd = new SqliteCommand(createShapes, conn); | 860 | SqliteCommand scmd = new SqliteCommand(createShapes, conn); |
861 | SqliteCommand tcmd = new SqliteCommand(createTerrain, conn); | ||
770 | conn.Open(); | 862 | conn.Open(); |
771 | pcmd.ExecuteNonQuery(); | 863 | pcmd.ExecuteNonQuery(); |
772 | scmd.ExecuteNonQuery(); | 864 | scmd.ExecuteNonQuery(); |
865 | tcmd.ExecuteNonQuery(); | ||
773 | conn.Close(); | 866 | conn.Close(); |
774 | } | 867 | } |
775 | 868 | ||
@@ -779,12 +872,15 @@ namespace OpenSim.DataStore.MonoSqlite | |||
779 | SqliteDataAdapter pDa = new SqliteDataAdapter(primSelectCmd); | 872 | SqliteDataAdapter pDa = new SqliteDataAdapter(primSelectCmd); |
780 | SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, conn); | 873 | SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, conn); |
781 | SqliteDataAdapter sDa = new SqliteDataAdapter(shapeSelectCmd); | 874 | SqliteDataAdapter sDa = new SqliteDataAdapter(shapeSelectCmd); |
875 | SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, conn); | ||
876 | SqliteDataAdapter tDa = new SqliteDataAdapter(terrainSelectCmd); | ||
782 | 877 | ||
783 | DataSet tmpDS = new DataSet(); | 878 | DataSet tmpDS = new DataSet(); |
784 | try | 879 | try |
785 | { | 880 | { |
786 | pDa.Fill(tmpDS, "prims"); | 881 | pDa.Fill(tmpDS, "prims"); |
787 | sDa.Fill(tmpDS, "primshapes"); | 882 | sDa.Fill(tmpDS, "primshapes"); |
883 | tDa.Fill(tmpDS, "terrain"); | ||
788 | } | 884 | } |
789 | catch (Mono.Data.SqliteClient.SqliteSyntaxException) | 885 | catch (Mono.Data.SqliteClient.SqliteSyntaxException) |
790 | { | 886 | { |
@@ -794,6 +890,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
794 | 890 | ||
795 | pDa.Fill(tmpDS, "prims"); | 891 | pDa.Fill(tmpDS, "prims"); |
796 | sDa.Fill(tmpDS, "primshapes"); | 892 | sDa.Fill(tmpDS, "primshapes"); |
893 | tDa.Fill(tmpDS, "terrain"); | ||
797 | 894 | ||
798 | foreach (DataColumn col in createPrimTable().Columns) | 895 | foreach (DataColumn col in createPrimTable().Columns) |
799 | { | 896 | { |
@@ -811,6 +908,14 @@ namespace OpenSim.DataStore.MonoSqlite | |||
811 | return false; | 908 | return false; |
812 | } | 909 | } |
813 | } | 910 | } |
911 | foreach (DataColumn col in createTerrainTable().Columns) | ||
912 | { | ||
913 | if (!tmpDS.Tables["terrain"].Columns.Contains(col.ColumnName)) | ||
914 | { | ||
915 | MainLog.Instance.Verbose("DATASTORE", "Missing require column:" + col.ColumnName); | ||
916 | return false; | ||
917 | } | ||
918 | } | ||
814 | return true; | 919 | return true; |
815 | } | 920 | } |
816 | 921 | ||
@@ -834,6 +939,14 @@ namespace OpenSim.DataStore.MonoSqlite | |||
834 | { | 939 | { |
835 | return DbType.Double; | 940 | return DbType.Double; |
836 | } | 941 | } |
942 | else if (type == typeof(System.Byte)) | ||
943 | { | ||
944 | return DbType.Byte; | ||
945 | } | ||
946 | else if (type == typeof(System.Double)) | ||
947 | { | ||
948 | return DbType.Double; | ||
949 | } | ||
837 | else if (type == typeof(System.Byte[])) | 950 | else if (type == typeof(System.Byte[])) |
838 | { | 951 | { |
839 | return DbType.Binary; | 952 | return DbType.Binary; |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs index 91b1914..f726ea2 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs | |||
@@ -61,12 +61,12 @@ namespace OpenSim.DataStore.NullStorage | |||
61 | return new List<SceneObjectGroup>(); | 61 | return new List<SceneObjectGroup>(); |
62 | } | 62 | } |
63 | 63 | ||
64 | public void StoreTerrain(double[,] ter) | 64 | public void StoreTerrain(double[,] ter, LLUUID regionID) |
65 | { | 65 | { |
66 | 66 | ||
67 | } | 67 | } |
68 | 68 | ||
69 | public double[,] LoadTerrain() | 69 | public double[,] LoadTerrain(LLUUID regionID) |
70 | { | 70 | { |
71 | return null; | 71 | return null; |
72 | } | 72 | } |