aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Environment/Scenes/EntityBase.cs7
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs61
-rw-r--r--OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs84
3 files changed, 81 insertions, 71 deletions
diff --git a/OpenSim/Region/Environment/Scenes/EntityBase.cs b/OpenSim/Region/Environment/Scenes/EntityBase.cs
index a7b9d75..2caab9e 100644
--- a/OpenSim/Region/Environment/Scenes/EntityBase.cs
+++ b/OpenSim/Region/Environment/Scenes/EntityBase.cs
@@ -109,13 +109,6 @@ namespace OpenSim.Region.Environment.Scenes
109 } 109 }
110 110
111 /// <summary> 111 /// <summary>
112 /// Called at a set interval to inform entities that they should back themsleves up to the DB
113 /// </summary>
114 public virtual void BackUp()
115 {
116 }
117
118 /// <summary>
119 /// Copies the entity 112 /// Copies the entity
120 /// </summary> 113 /// </summary>
121 /// <returns></returns> 114 /// <returns></returns>
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index eff622a..99f1900 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -149,6 +149,15 @@ namespace OpenSim.Region.Environment.Scenes
149 /// saying what prim(s) that user has selected. 149 /// saying what prim(s) that user has selected.
150 /// </summary> 150 /// </summary>
151 protected bool m_isSelected = false; 151 protected bool m_isSelected = false;
152
153 protected virtual bool InSceneBackup
154 {
155 get
156 {
157 return true;
158 }
159 }
160
152 public bool IsSelected 161 public bool IsSelected
153 { 162 {
154 get { return m_isSelected; } 163 get { return m_isSelected; }
@@ -218,10 +227,20 @@ namespace OpenSim.Region.Environment.Scenes
218 this.m_rootPart.ParentID = 0; 227 this.m_rootPart.ParentID = 0;
219 this.m_rootPart.RegionHandle = m_regionHandle; 228 this.m_rootPart.RegionHandle = m_regionHandle;
220 this.UpdateParentIDs(); 229 this.UpdateParentIDs();
221 m_scene.EventManager.OnBackup += this.ProcessBackup; 230
231 AttachToBackup();
232
222 this.ScheduleGroupForFullUpdate(); 233 this.ScheduleGroupForFullUpdate();
223 } 234 }
224 235
236 private void AttachToBackup()
237 {
238 if (InSceneBackup)
239 {
240 m_scene.EventManager.OnBackup += this.ProcessBackup;
241 }
242 }
243
225 /// <summary> 244 /// <summary>
226 /// 245 ///
227 /// </summary> 246 /// </summary>
@@ -243,7 +262,8 @@ namespace OpenSim.Region.Environment.Scenes
243 SceneObjectPart newPart = new SceneObjectPart(m_regionHandle, this, ownerID, localID, shape, pos, rootOffset); 262 SceneObjectPart newPart = new SceneObjectPart(m_regionHandle, this, ownerID, localID, shape, pos, rootOffset);
244 this.m_parts.Add(newPart.UUID, newPart); 263 this.m_parts.Add(newPart.UUID, newPart);
245 this.SetPartAsRoot(newPart); 264 this.SetPartAsRoot(newPart);
246 m_scene.EventManager.OnBackup += this.ProcessBackup; 265
266 AttachToBackup();
247 } 267 }
248 #endregion 268 #endregion
249 269
@@ -307,7 +327,8 @@ namespace OpenSim.Region.Environment.Scenes
307 } 327 }
308 dupe.UpdateParentIDs(); 328 dupe.UpdateParentIDs();
309 329
310 m_scene.EventManager.OnBackup += dupe.ProcessBackup; 330 dupe.AttachToBackup();
331
311 return dupe; 332 return dupe;
312 } 333 }
313 334
@@ -523,13 +544,19 @@ namespace OpenSim.Region.Environment.Scenes
523 } 544 }
524 } 545 }
525 546
526 m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup; 547 DetachFromBackup(objectGroup);
548
527 m_scene.DeleteEntity(objectGroup.UUID); 549 m_scene.DeleteEntity(objectGroup.UUID);
528 550
529 objectGroup.DeleteParts(); 551 objectGroup.DeleteParts();
530 this.ScheduleGroupForFullUpdate(); 552 this.ScheduleGroupForFullUpdate();
531 } 553 }
532 554
555 private void DetachFromBackup(SceneObjectGroup objectGroup)
556 {
557 m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup;
558 }
559
533 560
534 private void LinkNonRootPart(SceneObjectPart part, Vector3 oldGroupPosition, Quaternion oldGroupRotation) 561 private void LinkNonRootPart(SceneObjectPart part, Vector3 oldGroupPosition, Quaternion oldGroupRotation)
535 { 562 {
@@ -583,7 +610,7 @@ namespace OpenSim.Region.Environment.Scenes
583 proper.ObjectData[0].FolderID = LLUUID.Zero; 610 proper.ObjectData[0].FolderID = LLUUID.Zero;
584 proper.ObjectData[0].FromTaskID = LLUUID.Zero; 611 proper.ObjectData[0].FromTaskID = LLUUID.Zero;
585 proper.ObjectData[0].GroupID = LLUUID.Zero; 612 proper.ObjectData[0].GroupID = LLUUID.Zero;
586 proper.ObjectData[0].InventorySerial = (short) this.m_rootPart.InventorySerial; 613 proper.ObjectData[0].InventorySerial = (short)this.m_rootPart.InventorySerial;
587 proper.ObjectData[0].LastOwnerID = this.m_rootPart.LastOwnerID; 614 proper.ObjectData[0].LastOwnerID = this.m_rootPart.LastOwnerID;
588 proper.ObjectData[0].ObjectID = this.UUID; 615 proper.ObjectData[0].ObjectID = this.UUID;
589 proper.ObjectData[0].OwnerID = this.m_rootPart.OwnerID; 616 proper.ObjectData[0].OwnerID = this.m_rootPart.OwnerID;
@@ -672,7 +699,7 @@ namespace OpenSim.Region.Environment.Scenes
672 SceneObjectPart part = this.GetChildPart(localID); 699 SceneObjectPart part = this.GetChildPart(localID);
673 if (part != null) 700 if (part != null)
674 { 701 {
675 return part.GetInventoryFileName(remoteClient, localID); 702 return part.GetInventoryFileName(remoteClient, localID);
676 } 703 }
677 return false; 704 return false;
678 } 705 }
@@ -682,7 +709,7 @@ namespace OpenSim.Region.Environment.Scenes
682 SceneObjectPart part = this.GetChildPart(localID); 709 SceneObjectPart part = this.GetChildPart(localID);
683 if (part != null) 710 if (part != null)
684 { 711 {
685 part.RequestInventoryFile(xferManager); 712 part.RequestInventoryFile(xferManager);
686 } 713 }
687 return ""; 714 return "";
688 } 715 }
@@ -705,7 +732,7 @@ namespace OpenSim.Region.Environment.Scenes
705 return true; 732 return true;
706 } 733 }
707 return false; 734 return false;
708 735
709 } 736 }
710 737
711 public bool AddInventoryItem(IClientAPI remoteClient, uint localID, InventoryItemBase item, LLUUID copyItemID) 738 public bool AddInventoryItem(IClientAPI remoteClient, uint localID, InventoryItemBase item, LLUUID copyItemID)
@@ -730,19 +757,19 @@ namespace OpenSim.Region.Environment.Scenes
730 } 757 }
731 else 758 else
732 { 759 {
733 return AddInventoryItem(remoteClient, localID, item); 760 return AddInventoryItem(remoteClient, localID, item);
734 } 761 }
735 return false; 762 return false;
736 } 763 }
737 764
738 public int RemoveInventoryItem(IClientAPI remoteClient, uint localID, LLUUID itemID) 765 public int RemoveInventoryItem(IClientAPI remoteClient, uint localID, LLUUID itemID)
739 { 766 {
740 SceneObjectPart part = this.GetChildPart(localID); 767 SceneObjectPart part = this.GetChildPart(localID);
741 if (part != null) 768 if (part != null)
742 { 769 {
743 return part.RemoveInventoryItem(remoteClient, localID, itemID); 770 return part.RemoveInventoryItem(remoteClient, localID, itemID);
744 } 771 }
745 return -1; 772 return -1;
746 } 773 }
747 774
748 /// <summary> 775 /// <summary>
@@ -1077,7 +1104,7 @@ namespace OpenSim.Region.Environment.Scenes
1077 public void SetScene(Scene scene) 1104 public void SetScene(Scene scene)
1078 { 1105 {
1079 m_scene = scene; 1106 m_scene = scene;
1080 m_scene.EventManager.OnBackup += this.ProcessBackup; 1107 AttachToBackup();
1081 } 1108 }
1082 1109
1083 /// <summary> 1110 /// <summary>
@@ -1153,7 +1180,7 @@ namespace OpenSim.Region.Environment.Scenes
1153 1180
1154 public void DeleteGroup() 1181 public void DeleteGroup()
1155 { 1182 {
1156 m_scene.EventManager.OnBackup -= this.ProcessBackup; 1183 DetachFromBackup( this );
1157 foreach (SceneObjectPart part in this.m_parts.Values) 1184 foreach (SceneObjectPart part in this.m_parts.Values)
1158 { 1185 {
1159 List<ScenePresence> avatars = this.RequestSceneAvatars(); 1186 List<ScenePresence> avatars = this.RequestSceneAvatars();
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs
index 65b03ad..6971cc8 100644
--- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs
+++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs
@@ -1,25 +1,15 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text;
4using System.Xml;
5using System.Xml.Serialization;
6using System.IO;
7
8using OpenSim.Region.Environment.Scenes;
9using OpenSim.Region.Environment.LandManagement;
10using OpenSim.Region.Environment;
11using OpenSim.Region.Environment.Interfaces;
12using OpenSim.Framework.Console;
13using OpenSim.Framework.Types;
14using OpenSim.Framework.Utilities;
15using libsecondlife;
16
17using System.Data; 3using System.Data;
18using System.Data.SqlTypes; 4using libsecondlife;
19
20using Mono.Data.SqliteClient; 5using Mono.Data.SqliteClient;
6using OpenSim.Framework.Console;
7using OpenSim.Framework.Types;
8using OpenSim.Region.Environment.Interfaces;
9using OpenSim.Region.Environment.LandManagement;
10using OpenSim.Region.Environment.Scenes;
21 11
22namespace OpenSim.DataStore.MonoSqliteStorage 12namespace OpenSim.DataStore.MonoSqlite
23{ 13{
24 public class MonoSqliteDataStore : IRegionDataStore 14 public class MonoSqliteDataStore : IRegionDataStore
25 { 15 {
@@ -402,37 +392,37 @@ namespace OpenSim.DataStore.MonoSqliteStorage
402 prim.BaseMask = Convert.ToUInt32(row["BaseMask"]); 392 prim.BaseMask = Convert.ToUInt32(row["BaseMask"]);
403 // vectors 393 // vectors
404 prim.OffsetPosition = new LLVector3( 394 prim.OffsetPosition = new LLVector3(
405 Convert.ToSingle(row["PositionX"]), 395 Convert.ToSingle(row["PositionX"]),
406 Convert.ToSingle(row["PositionY"]), 396 Convert.ToSingle(row["PositionY"]),
407 Convert.ToSingle(row["PositionZ"]) 397 Convert.ToSingle(row["PositionZ"])
408 ); 398 );
409 prim.GroupPosition = new LLVector3( 399 prim.GroupPosition = new LLVector3(
410 Convert.ToSingle(row["GroupPositionX"]), 400 Convert.ToSingle(row["GroupPositionX"]),
411 Convert.ToSingle(row["GroupPositionY"]), 401 Convert.ToSingle(row["GroupPositionY"]),
412 Convert.ToSingle(row["GroupPositionZ"]) 402 Convert.ToSingle(row["GroupPositionZ"])
413 ); 403 );
414 prim.Velocity = new LLVector3( 404 prim.Velocity = new LLVector3(
415 Convert.ToSingle(row["VelocityX"]), 405 Convert.ToSingle(row["VelocityX"]),
416 Convert.ToSingle(row["VelocityY"]), 406 Convert.ToSingle(row["VelocityY"]),
417 Convert.ToSingle(row["VelocityZ"]) 407 Convert.ToSingle(row["VelocityZ"])
418 ); 408 );
419 prim.AngularVelocity = new LLVector3( 409 prim.AngularVelocity = new LLVector3(
420 Convert.ToSingle(row["AngularVelocityX"]), 410 Convert.ToSingle(row["AngularVelocityX"]),
421 Convert.ToSingle(row["AngularVelocityY"]), 411 Convert.ToSingle(row["AngularVelocityY"]),
422 Convert.ToSingle(row["AngularVelocityZ"]) 412 Convert.ToSingle(row["AngularVelocityZ"])
423 ); 413 );
424 prim.Acceleration = new LLVector3( 414 prim.Acceleration = new LLVector3(
425 Convert.ToSingle(row["AccelerationX"]), 415 Convert.ToSingle(row["AccelerationX"]),
426 Convert.ToSingle(row["AccelerationY"]), 416 Convert.ToSingle(row["AccelerationY"]),
427 Convert.ToSingle(row["AccelerationZ"]) 417 Convert.ToSingle(row["AccelerationZ"])
428 ); 418 );
429 // quaternions 419 // quaternions
430 prim.RotationOffset = new LLQuaternion( 420 prim.RotationOffset = new LLQuaternion(
431 Convert.ToSingle(row["RotationX"]), 421 Convert.ToSingle(row["RotationX"]),
432 Convert.ToSingle(row["RotationY"]), 422 Convert.ToSingle(row["RotationY"]),
433 Convert.ToSingle(row["RotationZ"]), 423 Convert.ToSingle(row["RotationZ"]),
434 Convert.ToSingle(row["RotationW"]) 424 Convert.ToSingle(row["RotationW"])
435 ); 425 );
436 426
437 return prim; 427 return prim;
438 } 428 }
@@ -488,10 +478,10 @@ namespace OpenSim.DataStore.MonoSqliteStorage
488 { 478 {
489 PrimitiveBaseShape s = new PrimitiveBaseShape(); 479 PrimitiveBaseShape s = new PrimitiveBaseShape();
490 s.Scale = new LLVector3( 480 s.Scale = new LLVector3(
491 Convert.ToSingle(row["ScaleX"]), 481 Convert.ToSingle(row["ScaleX"]),
492 Convert.ToSingle(row["ScaleY"]), 482 Convert.ToSingle(row["ScaleY"]),
493 Convert.ToSingle(row["ScaleZ"]) 483 Convert.ToSingle(row["ScaleZ"])
494 ); 484 );
495 // paths 485 // paths
496 s.PCode = Convert.ToByte(row["PCode"]); 486 s.PCode = Convert.ToByte(row["PCode"]);
497 s.PathBegin = Convert.ToUInt16(row["PathBegin"]); 487 s.PathBegin = Convert.ToUInt16(row["PathBegin"]);
@@ -876,4 +866,4 @@ namespace OpenSim.DataStore.MonoSqliteStorage
876 } 866 }
877 } 867 }
878 } 868 }
879} 869} \ No newline at end of file