aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Storage
diff options
context:
space:
mode:
authorMW2007-08-13 13:36:42 +0000
committerMW2007-08-13 13:36:42 +0000
commitb59d9789f8cafdc64ebf4ecf4fec75d5589c97f7 (patch)
treefde390d45ddb9fde739c4c009e4a501228d20ec3 /OpenSim/Region/Storage
parentScriptEngine successfully compiles script, we are now even further than LSO was. (diff)
downloadopensim-SC-b59d9789f8cafdc64ebf4ecf4fec75d5589c97f7.zip
opensim-SC-b59d9789f8cafdc64ebf4ecf4fec75d5589c97f7.tar.gz
opensim-SC-b59d9789f8cafdc64ebf4ecf4fec75d5589c97f7.tar.bz2
opensim-SC-b59d9789f8cafdc64ebf4ecf4fec75d5589c97f7.tar.xz
Partial Linking of prim groups should work (its partial as currently only the root prim of the child group will actually get linked, working on linking the rest now).
Multiple prim groups are now stored in the sqlite database and are reloaded correctly.
Diffstat (limited to 'OpenSim/Region/Storage')
-rw-r--r--OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs52
1 files changed, 34 insertions, 18 deletions
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs
index 5d1592c..bd6658c 100644
--- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs
+++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs
@@ -308,7 +308,6 @@ namespace OpenSim.DataStore.MonoSqliteStorage
308 308
309 private void fillPrimRow(DataRow row, SceneObjectPart prim, LLUUID sceneGroupID) 309 private void fillPrimRow(DataRow row, SceneObjectPart prim, LLUUID sceneGroupID)
310 { 310 {
311 Console.WriteLine("scene Group for this prim is " + sceneGroupID);
312 row["UUID"] = prim.UUID; 311 row["UUID"] = prim.UUID;
313 row["ParentID"] = prim.ParentID; 312 row["ParentID"] = prim.ParentID;
314 row["CreationDate"] = prim.CreationDate; 313 row["CreationDate"] = prim.CreationDate;
@@ -481,37 +480,54 @@ namespace OpenSim.DataStore.MonoSqliteStorage
481 480
482 public List<SceneObjectGroup> LoadObjects() 481 public List<SceneObjectGroup> LoadObjects()
483 { 482 {
483 Dictionary<LLUUID, SceneObjectGroup> createdObjects = new Dictionary<LLUUID, SceneObjectGroup>();
484 List<SceneObjectGroup> retvals = new List<SceneObjectGroup>(); 484 List<SceneObjectGroup> retvals = new List<SceneObjectGroup>();
485 485
486 DataTable prims = ds.Tables["prims"]; 486 DataTable prims = ds.Tables["prims"];
487 DataTable shapes = ds.Tables["primshapes"]; 487 DataTable shapes = ds.Tables["primshapes"];
488 488
489 // This only supports 1 prim per SceneObjectGroup. Need to fix later
490 foreach (DataRow primRow in prims.Rows) 489 foreach (DataRow primRow in prims.Rows)
491 { 490 {
492 SceneObjectGroup group = new SceneObjectGroup(); 491 string uuid = (string)primRow["UUID"];
493 SceneObjectPart prim = buildPrim(primRow); 492 string objID = (string)primRow["SceneGroupID"];
494 DataRow shapeRow = shapes.Rows.Find(prim.UUID); 493 if (uuid == objID) //is new SceneObjectGroup ?
495 if (shapeRow != null)
496 { 494 {
497 prim.Shape = buildShape(shapeRow); 495 SceneObjectGroup group = new SceneObjectGroup();
496 SceneObjectPart prim = buildPrim(primRow);
497 DataRow shapeRow = shapes.Rows.Find(prim.UUID);
498 if (shapeRow != null)
499 {
500 prim.Shape = buildShape(shapeRow);
501 }
502 else
503 {
504 Console.WriteLine("No shape found for prim in storage, so setting default box shape");
505 prim.Shape = BoxShape.Default;
506 }
507 group.AddPart(prim);
508 group.RootPart = prim;
509
510 createdObjects.Add(group.UUID, group);
511 retvals.Add(group);
498 } 512 }
499 else 513 else
500 { 514 {
501 Console.WriteLine("No shape found for prim in storage, so setting default box shape"); 515 SceneObjectPart prim = buildPrim(primRow);
502 prim.Shape = BoxShape.Default; 516 DataRow shapeRow = shapes.Rows.Find(prim.UUID);
517 if (shapeRow != null)
518 {
519 prim.Shape = buildShape(shapeRow);
520 }
521 else
522 {
523 Console.WriteLine("No shape found for prim in storage, so setting default box shape");
524 prim.Shape = BoxShape.Default;
525 }
526 createdObjects[new LLUUID(objID)].AddPart(prim);
503 } 527 }
504 group.AddPart(prim);
505 // TODO: there are a couple of known issues to get this to work
506 // * While we can add Children, we can't set the root part (or
507 // or even figure out which should be the root part)
508 // * region handle may need to be persisted, it isn't now
509 group.RootPart = prim;
510
511 retvals.Add(group);
512 } 528 }
513 529
514 MainLog.Instance.Verbose("DATASTORE", "Sqlite - LoadObjects found " + prims.Rows.Count + " objects"); 530 MainLog.Instance.Verbose("DATASTORE", "Sqlite - LoadObjects found " + prims.Rows.Count + " primitives");
515 531
516 return retvals; 532 return retvals;
517 } 533 }