From 4663999c243e7ac6f05f3bb6b76fefb2ff285134 Mon Sep 17 00:00:00 2001
From: Sean Dague
Date: Thu, 17 Jul 2008 20:58:20 +0000
Subject: first pass at Terrain implementation
---
OpenSim/Data/NHibernate/NHibernateRegionData.cs | 35 ++++++++++++++++---------
1 file changed, 23 insertions(+), 12 deletions(-)
(limited to 'OpenSim/Data/NHibernate/NHibernateRegionData.cs')
diff --git a/OpenSim/Data/NHibernate/NHibernateRegionData.cs b/OpenSim/Data/NHibernate/NHibernateRegionData.cs
index 38c9b9f..fb0a545 100644
--- a/OpenSim/Data/NHibernate/NHibernateRegionData.cs
+++ b/OpenSim/Data/NHibernate/NHibernateRegionData.cs
@@ -120,13 +120,14 @@ namespace OpenSim.Data.NHibernate
{
ICriteria criteria = session.CreateCriteria(typeof(SceneObjectPart));
criteria.Add(Expression.Eq("UUID", p.UUID));
- if (criteria.List().Count < 1)
+ ArrayList l = (ArrayList)criteria.List();
+ if (l.Count < 1)
{
session.Save(p);
}
- else if (criteria.List().Count == 1)
+ else if (l.Count == 1)
{
- SceneObjectPart old = (SceneObjectPart)criteria.List()[0];
+ SceneObjectPart old = (SceneObjectPart)l[0];
session.Evict(old);
session.Update(p);
}
@@ -147,13 +148,14 @@ namespace OpenSim.Data.NHibernate
{
ICriteria criteria = session.CreateCriteria(typeof(Terrain));
criteria.Add(Expression.Eq("RegionID", t.RegionID));
- if (criteria.List().Count < 1)
+ ArrayList l = (ArrayList)criteria.List();
+ if (l.Count < 1)
{
session.Save(t);
}
- else if (criteria.List().Count == 1)
+ else if (l.Count == 1)
{
- Terrain old = (Terrain)criteria.List()[0];
+ Terrain old = (Terrain)l[0];
session.Evict(old);
session.Update(t);
}
@@ -278,7 +280,8 @@ namespace OpenSim.Data.NHibernate
/// region UUID
public void StoreTerrain(double[,] ter, LLUUID regionID)
{
-
+ Terrain t = new Terrain(regionID, ter);
+ SaveOrUpdate(t);
}
///
@@ -288,11 +291,19 @@ namespace OpenSim.Data.NHibernate
/// Heightfield data
public double[,] LoadTerrain(LLUUID regionID)
{
- double[,] terret = new double[256,256];
- terret.Initialize();
-
-
- return terret;
+ try
+ {
+ Terrain t = session.Load(typeof(Terrain), regionID) as Terrain;
+ return t.Doubles;
+ }
+ catch (Exception e)
+ {
+ m_log.Error("[NHIBERNATE] issue loading terrain", e);
+
+ double[,] terret = new double[256,256];
+ terret.Initialize();
+ return terret;
+ }
}
///
--
cgit v1.1