aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs33
1 files changed, 19 insertions, 14 deletions
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index 623671f..63dd4b2 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -127,10 +127,15 @@ namespace OpenSim.Region.CoreModules.World.Archiver
127 /// </value> 127 /// </value>
128 protected float m_rotation = 0f; 128 protected float m_rotation = 0f;
129 129
130 /// <value>
131 /// original oar region size. not using Constants.RegionSize
132 /// </value>
133 protected Vector3 m_incomingRegionSize = new Vector3(256f, 256f, float.MaxValue);
134
130 /// <value> 135 /// <value>
131 /// Center around which to apply the rotation relative to the origional oar position 136 /// Center around which to apply the rotation relative to the original oar position
132 /// </value> 137 /// </value>
133 protected Vector3 m_rotationCenter = new Vector3(Constants.RegionSize / 2f, Constants.RegionSize / 2f, 0f); 138 protected Vector3 m_rotationCenter = new Vector3(128f, 128f, 0f);
134 139
135 /// <value> 140 /// <value>
136 /// Corner 1 of a bounding cuboid which specifies which objects we load from the oar 141 /// Corner 1 of a bounding cuboid which specifies which objects we load from the oar
@@ -140,14 +145,12 @@ namespace OpenSim.Region.CoreModules.World.Archiver
140 /// <value> 145 /// <value>
141 /// Size of a bounding cuboid which specifies which objects we load from the oar 146 /// Size of a bounding cuboid which specifies which objects we load from the oar
142 /// </value> 147 /// </value>
143 protected Vector3 m_boundingSize = new Vector3(Constants.MaximumRegionSize, Constants.MaximumRegionSize, Constants.MaximumRegionSize); 148 protected Vector3 m_boundingSize = new Vector3(Constants.MaximumRegionSize, Constants.MaximumRegionSize, float.MaxValue);
144 149
145 protected bool m_noObjects = false; 150 protected bool m_noObjects = false;
146 protected bool m_boundingBox = false; 151 protected bool m_boundingBox = false;
147 protected bool m_debug = false; 152 protected bool m_debug = false;
148 153
149 protected Vector3 m_incomingRegionSize = new Vector3(256f, 256f, 4096f);
150
151 /// <summary> 154 /// <summary>
152 /// Used to cache lookups for valid uuids. 155 /// Used to cache lookups for valid uuids.
153 /// </summary> 156 /// </summary>
@@ -218,8 +221,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
218 : new Vector3(scene.RegionInfo.RegionSizeX / 2f, scene.RegionInfo.RegionSizeY / 2f, 0f); 221 : new Vector3(scene.RegionInfo.RegionSizeX / 2f, scene.RegionInfo.RegionSizeY / 2f, 0f);
219 222
220 m_boundingOrigin = Vector3.Zero; 223 m_boundingOrigin = Vector3.Zero;
221 m_boundingSize = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, Constants.RegionHeight); 224 m_boundingSize = new Vector3(scene.RegionInfo.RegionSizeX, scene.RegionInfo.RegionSizeY, float.MaxValue);
222 225
223 if (options.ContainsKey("bounding-origin")) 226 if (options.ContainsKey("bounding-origin"))
224 { 227 {
225 Vector3 boOption = (Vector3)options["bounding-origin"]; 228 Vector3 boOption = (Vector3)options["bounding-origin"];
@@ -567,18 +570,19 @@ namespace OpenSim.Region.CoreModules.World.Archiver
567 SceneObjectGroup sceneObject = serialiser.DeserializeGroupFromXml2(serialisedSceneObject); 570 SceneObjectGroup sceneObject = serialiser.DeserializeGroupFromXml2(serialisedSceneObject);
568 571
569 Vector3 pos = sceneObject.AbsolutePosition; 572 Vector3 pos = sceneObject.AbsolutePosition;
573 if (m_debug)
574 m_log.DebugFormat("[ARCHIVER]: Loading object from OAR with original scene position {0}.", pos.ToString());
570 575
571 //fix the rotation center to the middle of the incoming region now as it's otherwise hopelessly confusing on varRegions
572 //as it only works with objects and terrain (using old Merge method) and not parcels
573 m_rotationCenter.X = m_incomingRegionSize.X / 2;
574 m_rotationCenter.Y = m_incomingRegionSize.Y / 2;
575
576 if (m_debug) m_log.DebugFormat("[ARCHIVER]: Loading object from OAR with original scene position {0}.", pos.ToString());
577 // Happily this does not do much to the object since it hasn't been added to the scene yet 576 // Happily this does not do much to the object since it hasn't been added to the scene yet
578 if (!sceneObject.IsAttachment) 577 if (!sceneObject.IsAttachment)
579 { 578 {
580 if (m_rotation != 0f) 579 if (m_rotation != 0f)
581 { 580 {
581 //fix the rotation center to the middle of the incoming region now as it's otherwise hopelessly confusing on varRegions
582 //as it only works with objects and terrain (using old Merge method) and not parcels
583 m_rotationCenter.X = m_incomingRegionSize.X / 2;
584 m_rotationCenter.Y = m_incomingRegionSize.Y / 2;
585
582 // Rotate the object 586 // Rotate the object
583 sceneObject.RootPart.RotationOffset = rot * sceneObject.GroupRotation; 587 sceneObject.RootPart.RotationOffset = rot * sceneObject.GroupRotation;
584 // Get object position relative to rotation axis 588 // Get object position relative to rotation axis
@@ -609,7 +613,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
609 } 613 }
610 sceneObject.AbsolutePosition = pos; 614 sceneObject.AbsolutePosition = pos;
611 } 615 }
612 if (m_debug) m_log.DebugFormat("[ARCHIVER]: Placing object from OAR in scene at position {0}. ", pos.ToString()); 616 if (m_debug)
617 m_log.DebugFormat("[ARCHIVER]: Placing object from OAR in scene at position {0}. ", pos.ToString());
613 618
614 bool isTelehub = (sceneObject.UUID == oldTelehubUUID) && (oldTelehubUUID != UUID.Zero); 619 bool isTelehub = (sceneObject.UUID == oldTelehubUUID) && (oldTelehubUUID != UUID.Zero);
615 620