Moved database storage of the world map to the Db4LocalStorage so its in the same database as in world prims are stored.

This commit is contained in:
MW
2007-04-02 10:46:59 +00:00
parent 9b49ba6d24
commit 1ea4ba3a18
28 changed files with 2405 additions and 2394 deletions

View File

@@ -31,6 +31,7 @@ using Db4objects.Db4o.Query;
using libsecondlife;
using OpenSim.Framework.Interfaces;
using OpenSim.Framework.Assets;
using OpenSim.Framework.Terrain;
namespace OpenSim.Storage.LocalStorageDb4o
{
@@ -116,7 +117,51 @@ namespace OpenSim.Storage.LocalStorageDb4o
receiver.PrimFromStorage(prim);
}
}
public float[] LoadWorld()
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LoadWorld() - Loading world....");
//World blank = new World();
float[] heightmap = null;
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LoadWorld() - Looking for a heightmap in local DB");
IObjectSet world_result = db.Get(typeof(MapStorage));
if (world_result.Count > 0)
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LoadWorld() - Found a heightmap in local database, loading");
MapStorage map = (MapStorage)world_result.Next();
//blank.LandMap = map.Map;
heightmap = map.Map;
}
else
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LoadWorld() - No heightmap found, generating new one");
HeightmapGenHills hills = new HeightmapGenHills();
// blank.LandMap = hills.GenerateHeightmap(200, 4.0f, 80.0f, false);
heightmap = hills.GenerateHeightmap(200, 4.0f, 80.0f, false);
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LoadWorld() - Saving heightmap to local database");
MapStorage map = new MapStorage();
map.Map = heightmap; //blank.LandMap;
db.Set(map);
db.Commit();
}
return heightmap;
}
public void SaveMap(float[] heightmap)
{
IObjectSet world_result = db.Get(typeof(MapStorage));
if (world_result.Count > 0)
{
OpenSim.Framework.Console.MainConsole.Instance.WriteLine("SaveWorld() - updating saved copy of heightmap in local database");
MapStorage map = (MapStorage)world_result.Next();
db.Delete(map);
}
MapStorage map1 = new MapStorage();
map1.Map = heightmap; //OpenSim_Main.local_world.LandMap;
db.Set(map1);
db.Commit();
}
public void ShutDown()
{
db.Commit();