mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 10:15:33 +08:00
Signal prim count taint if the AbsolutePosition of a scene object changes.
This updates prim counts correctly if an object is moved by something other than an avatar (e.g. scripts, region modules) Create TestMoveOwnerObject() regression test for this case.
This commit is contained in:
@@ -167,17 +167,18 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
|
||||
/// Test that parcel counts update correctly when an object is moved between parcels, where that movement
|
||||
/// is not done directly by the user/
|
||||
/// </summary>
|
||||
//[Test]
|
||||
[Test]
|
||||
public void TestMoveOwnerObject()
|
||||
{
|
||||
TestHelper.InMethod();
|
||||
log4net.Config.XmlConfigurator.Configure();
|
||||
// log4net.Config.XmlConfigurator.Configure();
|
||||
|
||||
SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, "a", 0x01);
|
||||
m_scene.AddNewSceneObject(sog, false);
|
||||
SceneObjectGroup sog2 = SceneSetupHelpers.CreateSceneObject(2, m_userId, "b", 0x10);
|
||||
m_scene.AddNewSceneObject(sog2, false);
|
||||
|
||||
// Move the first scene object to the eastern strip parcel
|
||||
sog.AbsolutePosition = new Vector3(254, 2, 2);
|
||||
|
||||
IPrimCounts pclo1 = m_lo.PrimCounts;
|
||||
@@ -189,7 +190,7 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
|
||||
Assert.That(pclo1.Selected, Is.EqualTo(0));
|
||||
Assert.That(pclo1.Users[m_userId], Is.EqualTo(2));
|
||||
Assert.That(pclo1.Users[m_otherUserId], Is.EqualTo(0));
|
||||
Assert.That(pclo1.Simulator, Is.EqualTo(2));
|
||||
Assert.That(pclo1.Simulator, Is.EqualTo(5));
|
||||
|
||||
IPrimCounts pclo2 = m_lo2.PrimCounts;
|
||||
|
||||
@@ -200,7 +201,28 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
|
||||
Assert.That(pclo2.Selected, Is.EqualTo(0));
|
||||
Assert.That(pclo2.Users[m_userId], Is.EqualTo(3));
|
||||
Assert.That(pclo2.Users[m_otherUserId], Is.EqualTo(0));
|
||||
Assert.That(pclo2.Simulator, Is.EqualTo(3));
|
||||
Assert.That(pclo2.Simulator, Is.EqualTo(5));
|
||||
|
||||
// Now move it back again
|
||||
sog.AbsolutePosition = new Vector3(2, 2, 2);
|
||||
|
||||
Assert.That(pclo1.Owner, Is.EqualTo(5));
|
||||
Assert.That(pclo1.Group, Is.EqualTo(0));
|
||||
Assert.That(pclo1.Others, Is.EqualTo(0));
|
||||
Assert.That(pclo1.Total, Is.EqualTo(5));
|
||||
Assert.That(pclo1.Selected, Is.EqualTo(0));
|
||||
Assert.That(pclo1.Users[m_userId], Is.EqualTo(5));
|
||||
Assert.That(pclo1.Users[m_otherUserId], Is.EqualTo(0));
|
||||
Assert.That(pclo1.Simulator, Is.EqualTo(5));
|
||||
|
||||
Assert.That(pclo2.Owner, Is.EqualTo(0));
|
||||
Assert.That(pclo2.Group, Is.EqualTo(0));
|
||||
Assert.That(pclo2.Others, Is.EqualTo(0));
|
||||
Assert.That(pclo2.Total, Is.EqualTo(0));
|
||||
Assert.That(pclo2.Selected, Is.EqualTo(0));
|
||||
Assert.That(pclo2.Users[m_userId], Is.EqualTo(0));
|
||||
Assert.That(pclo2.Users[m_otherUserId], Is.EqualTo(0));
|
||||
Assert.That(pclo2.Simulator, Is.EqualTo(5));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -325,6 +325,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
//m_rootPart.GroupPosition.Z);
|
||||
//m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor);
|
||||
//}
|
||||
|
||||
m_scene.EventManager.TriggerParcelPrimCountTainted();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user