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