aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/NHibernate
diff options
context:
space:
mode:
authorSean Dague2008-07-17 20:58:24 +0000
committerSean Dague2008-07-17 20:58:24 +0000
commit18a5cfd10fa6fa2d3b94f1be7edb656f9688ee27 (patch)
tree04aec792d43cf02cfeea850a4e8644a3929f2d8a /OpenSim/Data/NHibernate
parentneed to synchronize the terrain updates (diff)
downloadopensim-SC-18a5cfd10fa6fa2d3b94f1be7edb656f9688ee27.zip
opensim-SC-18a5cfd10fa6fa2d3b94f1be7edb656f9688ee27.tar.gz
opensim-SC-18a5cfd10fa6fa2d3b94f1be7edb656f9688ee27.tar.bz2
opensim-SC-18a5cfd10fa6fa2d3b94f1be7edb656f9688ee27.tar.xz
terrain is close to working, but I still end up at the bottom of the sea
right now.
Diffstat (limited to 'OpenSim/Data/NHibernate')
-rw-r--r--OpenSim/Data/NHibernate/NHibernateRegionData.cs9
-rw-r--r--OpenSim/Data/NHibernate/Resources/MySQLDialect/002_RegionStore.sql2
-rw-r--r--OpenSim/Data/NHibernate/Terrain.cs31
3 files changed, 25 insertions, 17 deletions
diff --git a/OpenSim/Data/NHibernate/NHibernateRegionData.cs b/OpenSim/Data/NHibernate/NHibernateRegionData.cs
index 2167002..9d6409e 100644
--- a/OpenSim/Data/NHibernate/NHibernateRegionData.cs
+++ b/OpenSim/Data/NHibernate/NHibernateRegionData.cs
@@ -298,13 +298,10 @@ namespace OpenSim.Data.NHibernate
298 Terrain t = session.Load(typeof(Terrain), regionID) as Terrain; 298 Terrain t = session.Load(typeof(Terrain), regionID) as Terrain;
299 return t.Doubles; 299 return t.Doubles;
300 } 300 }
301 catch (Exception e) 301 catch (NHibernate.ObjectNotFoundException e)
302 { 302 {
303 m_log.Error("[NHIBERNATE] issue loading terrain", e); 303 m_log.Info("No terrain yet");
304 304 return null;
305 double[,] terret = new double[256,256];
306 terret.Initialize();
307 return terret;
308 } 305 }
309 } 306 }
310 307
diff --git a/OpenSim/Data/NHibernate/Resources/MySQLDialect/002_RegionStore.sql b/OpenSim/Data/NHibernate/Resources/MySQLDialect/002_RegionStore.sql
index 4e9c974..fc11e95 100644
--- a/OpenSim/Data/NHibernate/Resources/MySQLDialect/002_RegionStore.sql
+++ b/OpenSim/Data/NHibernate/Resources/MySQLDialect/002_RegionStore.sql
@@ -2,7 +2,7 @@ BEGIN;
2 2
3CREATE TABLE `Terrain` ( 3CREATE TABLE `Terrain` (
4 `RegionID` char(36) not null, 4 `RegionID` char(36) not null,
5 `Map` blob, 5 `Map` longblob,
6 PRIMARY KEY (`RegionID`) 6 PRIMARY KEY (`RegionID`)
7) ENGINE=InnoDB DEFAULT CHARSET=utf8; 7) ENGINE=InnoDB DEFAULT CHARSET=utf8;
8 8
diff --git a/OpenSim/Data/NHibernate/Terrain.cs b/OpenSim/Data/NHibernate/Terrain.cs
index 4c184da..a95e45a 100644
--- a/OpenSim/Data/NHibernate/Terrain.cs
+++ b/OpenSim/Data/NHibernate/Terrain.cs
@@ -27,13 +27,17 @@
27 27
28using System; 28using System;
29using System.IO; 29using System.IO;
30using System.Reflection;
30using OpenSim.Framework; 31using OpenSim.Framework;
32using log4net;
31using libsecondlife; 33using libsecondlife;
32 34
33namespace OpenSim.Data.NHibernate 35namespace OpenSim.Data.NHibernate
34{ 36{
35 public class Terrain 37 public class Terrain
36 { 38 {
39 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
40
37 private double[,] map; 41 private double[,] map;
38 private LLUUID regionID; 42 private LLUUID regionID;
39 43
@@ -70,29 +74,36 @@ namespace OpenSim.Data.NHibernate
70 74
71 private static double[,] parseTerrain(byte[] data) 75 private static double[,] parseTerrain(byte[] data)
72 { 76 {
73 double[,] terret = new double[Constants.RegionSize,Constants.RegionSize]; 77 double[,] terret = new double[256,256];
74 terret.Initialize(); 78 terret.Initialize();
75 79
76 MemoryStream str = new MemoryStream(data); 80 MemoryStream str = new MemoryStream(data);
77 BinaryReader br = new BinaryReader(str); 81 BinaryReader br = new BinaryReader(str);
78 for (int x = 0; x < Constants.RegionSize; x++) 82 try {
79 { 83 for (int x = 0; x < 256; x++)
80 for (int y = 0; y < Constants.RegionSize; y++)
81 { 84 {
82 terret[x, y] = br.ReadDouble(); 85 for (int y = 0; y < 256; y++)
86 {
87 terret[x, y] = br.ReadDouble();
88 }
83 } 89 }
90 }
91 catch (Exception e)
92 {
93 m_log.Error("Issue parsing Map", e);
84 } 94 }
85 return terret; 95 return terret;
86 } 96 }
87 97
88 private static byte[] serializeTerrain(double[,] val) 98 private static byte[] serializeTerrain(double[,] val)
89 { 99 {
90 MemoryStream str = new MemoryStream((int)(Constants.RegionSize * Constants.RegionSize * sizeof (double))); 100 MemoryStream str = new MemoryStream((int)(65536 * sizeof (double)));
91 BinaryWriter bw = new BinaryWriter(str); 101 BinaryWriter bw = new BinaryWriter(str);
92 102
93 // TODO: COMPATIBILITY - Add byte-order conversions 103 // TODO: COMPATIBILITY - Add byte-order conversions
94 for (int x = 0; x < Constants.RegionSize; x++) 104 for (int x = 0; x < 256; x++)
95 for (int y = 0; y < Constants.RegionSize; y++) 105 {
106 for (int y = 0; y < 256; y++)
96 { 107 {
97 double height = val[x, y]; 108 double height = val[x, y];
98 if (height <= 0.0) 109 if (height <= 0.0)
@@ -100,8 +111,8 @@ namespace OpenSim.Data.NHibernate
100 111
101 bw.Write(height); 112 bw.Write(height);
102 } 113 }
103 114 }
104 return (byte[])str.ToArray(); 115 return str.ToArray();
105 } 116 }
106 } 117 }
107} \ No newline at end of file 118} \ No newline at end of file