aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-05-21 00:02:53 +0100
committerJustin Clark-Casey (justincc)2011-05-21 00:02:53 +0100
commit90567a9eaac717ab86316c078e148f8fe13432ac (patch)
tree3a87213e6a946c25b6a029dbf911b75038b8a070 /OpenSim/Region/Framework/Scenes
parentrefactor TestRezObjectFromInventoryItem() (diff)
downloadopensim-SC-90567a9eaac717ab86316c078e148f8fe13432ac.zip
opensim-SC-90567a9eaac717ab86316c078e148f8fe13432ac.tar.gz
opensim-SC-90567a9eaac717ab86316c078e148f8fe13432ac.tar.bz2
opensim-SC-90567a9eaac717ab86316c078e148f8fe13432ac.tar.xz
refactor Scene.RezObject() to use AddNewSceneObject() rather than copy/pasting code with small differences
Diffstat (limited to 'OpenSim/Region/Framework/Scenes')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs14
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs17
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs5
4 files changed, 17 insertions, 25 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 7b88f4f..3c47873 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -2095,19 +2095,7 @@ namespace OpenSim.Region.Framework.Scenes
2095 sourcePart.Inventory.RemoveInventoryItem(item.ItemID); 2095 sourcePart.Inventory.RemoveInventoryItem(item.ItemID);
2096 } 2096 }
2097 2097
2098 AddNewSceneObject(group, true); 2098 AddNewSceneObject(group, true, pos, rot, vel);
2099
2100 group.AbsolutePosition = pos;
2101 group.Velocity = vel;
2102
2103 if (rot != null)
2104 group.UpdateGroupRotationR((Quaternion)rot);
2105
2106 // TODO: This needs to be refactored with the similar code in
2107 // SceneGraph.AddNewSceneObject(SceneObjectGroup sceneObject, bool attachToBackup, Vector3 pos, Quaternion rot, Vector3 vel)
2108 // possibly by allowing this method to take a null rotation.
2109 if (group.RootPart.PhysActor != null && group.RootPart.PhysActor.IsPhysical && vel != Vector3.Zero)
2110 group.RootPart.ApplyImpulse((vel * group.GetMass()), false);
2111 2099
2112 // We can only call this after adding the scene object, since the scene object references the scene 2100 // We can only call this after adding the scene object, since the scene object references the scene
2113 // to find out if scripts should be activated at all. 2101 // to find out if scripts should be activated at all.
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index cfb3a5d..b9690fe 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1976,12 +1976,12 @@ namespace OpenSim.Region.Framework.Scenes
1976 /// </remarks> 1976 /// </remarks>
1977 /// <param name="sceneObject"></param> 1977 /// <param name="sceneObject"></param>
1978 /// <param name="attachToBackup"></param> 1978 /// <param name="attachToBackup"></param>
1979 /// <param name="pos">Position of the object</param> 1979 /// <param name="pos">Position of the object. If null then the position stored in the object is used.</param>
1980 /// <param name="rot">Rotation of the object</param> 1980 /// <param name="rot">Rotation of the object. If null then the rotation stored in the object is used.</param>
1981 /// <param name="vel">Velocity of the object. This parameter only has an effect if the object is physical</param> 1981 /// <param name="vel">Velocity of the object. This parameter only has an effect if the object is physical</param>
1982 /// <returns></returns> 1982 /// <returns></returns>
1983 public bool AddNewSceneObject( 1983 public bool AddNewSceneObject(
1984 SceneObjectGroup sceneObject, bool attachToBackup, Vector3 pos, Quaternion rot, Vector3 vel) 1984 SceneObjectGroup sceneObject, bool attachToBackup, Vector3? pos, Quaternion? rot, Vector3 vel)
1985 { 1985 {
1986 if (m_sceneGraph.AddNewSceneObject(sceneObject, attachToBackup, pos, rot, vel)) 1986 if (m_sceneGraph.AddNewSceneObject(sceneObject, attachToBackup, pos, rot, vel))
1987 { 1987 {
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 0cff011..cdb4e41 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -311,25 +311,26 @@ namespace OpenSim.Region.Framework.Scenes
311 /// This method does not send updates to the client - callers need to handle this themselves. 311 /// This method does not send updates to the client - callers need to handle this themselves.
312 /// <param name="sceneObject"></param> 312 /// <param name="sceneObject"></param>
313 /// <param name="attachToBackup"></param> 313 /// <param name="attachToBackup"></param>
314 /// <param name="pos">Position of the object</param> 314 /// <param name="pos">Position of the object. If null then the position stored in the object is used.</param>
315 /// <param name="rot">Rotation of the object</param> 315 /// <param name="rot">Rotation of the object. If null then the rotation stored in the object is used.</param>
316 /// <param name="vel">Velocity of the object. This parameter only has an effect if the object is physical</param> 316 /// <param name="vel">Velocity of the object. This parameter only has an effect if the object is physical</param>
317 /// <returns></returns> 317 /// <returns></returns>
318 public bool AddNewSceneObject( 318 public bool AddNewSceneObject(
319 SceneObjectGroup sceneObject, bool attachToBackup, Vector3 pos, Quaternion rot, Vector3 vel) 319 SceneObjectGroup sceneObject, bool attachToBackup, Vector3? pos, Quaternion? rot, Vector3 vel)
320 { 320 {
321 AddNewSceneObject(sceneObject, true, false); 321 AddNewSceneObject(sceneObject, true, false);
322 322
323 // we set it's position in world. 323 if (pos != null)
324 sceneObject.AbsolutePosition = pos; 324 sceneObject.AbsolutePosition = (Vector3)pos;
325 325
326 if (sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim) 326 if (sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim)
327 { 327 {
328 sceneObject.ClearPartAttachmentData(); 328 sceneObject.ClearPartAttachmentData();
329 } 329 }
330 330
331 sceneObject.UpdateGroupRotationR(rot); 331 if (rot != null)
332 332 sceneObject.UpdateGroupRotationR((Quaternion)rot);
333
333 //group.ApplyPhysics(m_physicalPrim); 334 //group.ApplyPhysics(m_physicalPrim);
334 if (sceneObject.RootPart.PhysActor != null && sceneObject.RootPart.PhysActor.IsPhysical && vel != Vector3.Zero) 335 if (sceneObject.RootPart.PhysActor != null && sceneObject.RootPart.PhysActor.IsPhysical && vel != Vector3.Zero)
335 { 336 {
diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
index 4d4974f..222710f 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs
@@ -126,7 +126,10 @@ namespace OpenSim.Region.Framework.Tests
126 126
127 Assert.That(rezzedObject, Is.Not.Null); 127 Assert.That(rezzedObject, Is.Not.Null);
128 Assert.That(rezzedObject.AbsolutePosition, Is.EqualTo(rezPos)); 128 Assert.That(rezzedObject.AbsolutePosition, Is.EqualTo(rezPos));
129 Assert.That(rezzedObject.Velocity, Is.EqualTo(rezVel)); 129
130 // Velocity doesn't get applied, probably because there is no physics in tests (yet)
131// Assert.That(rezzedObject.Velocity, Is.EqualTo(rezVel));
132 Assert.That(rezzedObject.Velocity, Is.EqualTo(Vector3.Zero));
130 133
131 // Confusingly, this isn't the rezzedObject.Rotation 134 // Confusingly, this isn't the rezzedObject.Rotation
132 Assert.That(rezzedObject.RootPart.RotationOffset, Is.EqualTo(rezRot)); 135 Assert.That(rezzedObject.RootPart.RotationOffset, Is.EqualTo(rezRot));