From 7ff4eec79cf16886439604a23126abd195ae8b2e Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 7 Jul 2012 00:02:45 +0100
Subject: Remove redundant SetScene() function in Scene.AddSceneObject()
This is always done later on in SceneGraph.AddSceneObject() if the call hasn't failed due to sanity checks.
There's no other purpose for this method to exist and it's dangerous/pointless to call in other conditions.
---
OpenSim/Data/Tests/RegionTests.cs | 2 +-
OpenSim/Region/Framework/Scenes/Scene.cs | 2 --
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 6 +++---
.../Region/Framework/Scenes/SceneObjectGroup.cs | 10 ----------
.../Shared/Tests/OSSL_ApiAppearanceTest.cs | 14 ++++++-------
.../ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs | 6 +++---
OpenSim/Tests/Common/Helpers/SceneHelpers.cs | 23 +++++++++++++++++++---
7 files changed, 34 insertions(+), 29 deletions(-)
diff --git a/OpenSim/Data/Tests/RegionTests.cs b/OpenSim/Data/Tests/RegionTests.cs
index 474609b..55b9b4d 100644
--- a/OpenSim/Data/Tests/RegionTests.cs
+++ b/OpenSim/Data/Tests/RegionTests.cs
@@ -1081,7 +1081,7 @@ namespace OpenSim.Data.Tests
sop.Shape = PrimitiveBaseShape.Default;
SceneObjectGroup sog = new SceneObjectGroup(sop);
- sog.SetScene(scene);
+// sog.SetScene(scene);
return sog;
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 5c7bca0..ec911a5 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2554,8 +2554,6 @@ namespace OpenSim.Region.Framework.Scenes
/// True if the SceneObjectGroup was added, False if it was not
public bool AddSceneObject(SceneObjectGroup sceneObject)
{
- sceneObject.SetScene(this);
-
// Force allocation of new LocalId
//
SceneObjectPart[] parts = sceneObject.Parts;
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index bc9a585..2be5364 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -355,9 +355,9 @@ namespace OpenSim.Region.Framework.Scenes
if (Entities.ContainsKey(sceneObject.UUID))
{
-// m_log.DebugFormat(
-// "[SCENEGRAPH]: Scene graph for {0} already contains object {1} in AddSceneObject()",
-// m_parentScene.RegionInfo.RegionName, sceneObject.UUID);
+ m_log.DebugFormat(
+ "[SCENEGRAPH]: Scene graph for {0} already contains object {1} in AddSceneObject()",
+ m_parentScene.RegionInfo.RegionName, sceneObject.UUID);
return false;
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 96cc376..4e0e183 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1055,16 +1055,6 @@ namespace OpenSim.Region.Framework.Scenes
{
return Utils.FloatToUInt16(m_scene.TimeDilation, 0.0f, 1.0f);
}
-
- ///
- /// Added as a way for the storage provider to reset the scene,
- /// most likely a better way to do this sort of thing but for now...
- ///
- ///
- public void SetScene(Scene scene)
- {
- m_scene = scene;
- }
///
/// Set a part to act as the root part for this scene object
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs
index 3965734..c8718d9 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiAppearanceTest.cs
@@ -79,7 +79,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
/// Test creation of an NPC where the appearance data comes from a notecard
///
[Test]
- public void TestOsNpcCreateFromNotecard()
+ public void TestOsNpcCreateUsingAppearanceFromNotecard()
{
TestHelpers.InMethod();
// log4net.Config.XmlConfigurator.Configure();
@@ -90,7 +90,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId);
sp.Appearance.AvatarHeight = newHeight;
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId);
+ SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10);
SceneObjectPart part = so.RootPart;
m_scene.AddSceneObject(so);
@@ -114,10 +114,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
/// Test creation of an NPC where the appearance data comes from an avatar already in the region.
///
[Test]
- public void TestOsNpcCreateFromAvatar()
+ public void TestOsNpcCreateUsingAppearanceFromAvatar()
{
TestHelpers.InMethod();
-// log4net.Config.XmlConfigurator.Configure();
+// TestHelpers.EnableLogging();
// Store an avatar with a different height from default in a notecard.
UUID userId = TestHelpers.ParseTail(0x1);
@@ -125,7 +125,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId);
sp.Appearance.AvatarHeight = newHeight;
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId);
+ SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10);
SceneObjectPart part = so.RootPart;
m_scene.AddSceneObject(so);
@@ -156,7 +156,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId);
sp.Appearance.AvatarHeight = newHeight;
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId);
+ SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10);
SceneObjectPart part = so.RootPart;
m_scene.AddSceneObject(so);
@@ -197,7 +197,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, nonOwnerId);
sp.Appearance.AvatarHeight = newHeight;
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, ownerId);
+ SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, ownerId, 0x10);
SceneObjectPart part = so.RootPart;
m_scene.AddSceneObject(so);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs
index 813e53b..25679a6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Tests/OSSL_ApiNpcTests.cs
@@ -97,11 +97,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId);
sp.Appearance.AvatarHeight = newHeight;
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId);
+ SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10);
SceneObjectPart part = so.RootPart;
m_scene.AddSceneObject(so);
- SceneObjectGroup otherSo = SceneHelpers.CreateSceneObject(1, otherUserId);
+ SceneObjectGroup otherSo = SceneHelpers.CreateSceneObject(1, otherUserId, 0x20);
SceneObjectPart otherPart = otherSo.RootPart;
m_scene.AddSceneObject(otherSo);
@@ -148,7 +148,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Tests
ScenePresence sp = SceneHelpers.AddScenePresence(m_scene, userId);
sp.Appearance.AvatarHeight = newHeight;
- SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId);
+ SceneObjectGroup so = SceneHelpers.CreateSceneObject(1, userId, 0x10);
SceneObjectPart part = so.RootPart;
m_scene.AddSceneObject(so);
diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
index 3a2e420..d5354cb 100644
--- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
+++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs
@@ -601,19 +601,36 @@ namespace OpenSim.Tests.Common
ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero)
{ Name = name, UUID = id, Scale = new Vector3(1, 1, 1) };
}
-
+
///
/// Create a scene object but do not add it to the scene.
///
///
- /// UUID always starts at 00000000-0000-0000-0000-000000000001
+ /// UUID always starts at 00000000-0000-0000-0000-000000000001. For some purposes, (e.g. serializing direct
+ /// to another object's inventory) we do not need a scene unique ID. So it would be better to add the
+ /// UUID when we actually add an object to a scene rather than on creation.
///
/// The number of parts that should be in the scene object
///
///
public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId)
{
- return CreateSceneObject(parts, ownerId, "", 0x1);
+ return CreateSceneObject(parts, ownerId, 0x1);
+ }
+
+ ///
+ /// Create a scene object but do not add it to the scene.
+ ///
+ /// The number of parts that should be in the scene object
+ ///
+ ///
+ /// The hexadecimal last part of the UUID for parts created. A UUID of the form "00000000-0000-0000-0000-{0:XD12}"
+ /// will be given to the root part, and incremented for each part thereafter.
+ ///
+ ///
+ public static SceneObjectGroup CreateSceneObject(int parts, UUID ownerId, int uuidTail)
+ {
+ return CreateSceneObject(parts, ownerId, "", uuidTail);
}
///
--
cgit v1.1