|
|
|
@ -58,6 +58,21 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
private AttachmentsModule m_attMod;
|
|
|
|
|
private ScenePresence m_presence;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Standard user ID
|
|
|
|
|
/// </summary>
|
|
|
|
|
private UUID m_userId = TestHelpers.ParseTail(0x1);
|
|
|
|
|
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// Standard attachment item ID
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// private UUID m_attItemId = TestHelpers.ParseTail(0x10);
|
|
|
|
|
//
|
|
|
|
|
// /// <summary>
|
|
|
|
|
// /// Standard attachment asset ID
|
|
|
|
|
// /// </summary>
|
|
|
|
|
// private UUID m_attAssetId = TestHelpers.ParseTail(0x11);
|
|
|
|
|
|
|
|
|
|
[TestFixtureSetUp]
|
|
|
|
|
public void FixtureInit()
|
|
|
|
|
{
|
|
|
|
@ -86,13 +101,27 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Add the standard presence for a test.
|
|
|
|
|
/// Creates an attachment item in the given user's inventory. Does not attach.
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void AddPresence()
|
|
|
|
|
/// <remarks>
|
|
|
|
|
/// A user with the given ID and an inventory must already exist.
|
|
|
|
|
/// </remarks>
|
|
|
|
|
/// <returns>
|
|
|
|
|
/// The attachment item.
|
|
|
|
|
/// </returns>
|
|
|
|
|
/// <param name='userId'></param>
|
|
|
|
|
/// <param name='attName'></param>
|
|
|
|
|
/// <param name='rawItemId'></param>
|
|
|
|
|
/// <param name='rawAssetId'></param>
|
|
|
|
|
private InventoryItemBase CreateAttachmentItem(UUID userId, string attName, int rawItemId, int rawAssetId)
|
|
|
|
|
{
|
|
|
|
|
UUID userId = TestHelpers.ParseTail(0x1);
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, userId);
|
|
|
|
|
m_presence = SceneHelpers.AddScenePresence(scene, userId);
|
|
|
|
|
return UserInventoryHelpers.CreateInventoryItem(
|
|
|
|
|
scene,
|
|
|
|
|
attName,
|
|
|
|
|
TestHelpers.ParseTail(rawItemId),
|
|
|
|
|
TestHelpers.ParseTail(rawAssetId),
|
|
|
|
|
userId,
|
|
|
|
|
InventoryType.Object);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
@ -101,7 +130,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
TestHelpers.InMethod();
|
|
|
|
|
// TestHelpers.EnableLogging();
|
|
|
|
|
|
|
|
|
|
AddPresence();
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, m_userId);
|
|
|
|
|
m_presence = SceneHelpers.AddScenePresence(scene, m_userId);
|
|
|
|
|
|
|
|
|
|
string attName = "att";
|
|
|
|
|
|
|
|
|
|
SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, attName, m_presence.UUID).ParentGroup;
|
|
|
|
@ -140,24 +171,20 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
TestHelpers.InMethod();
|
|
|
|
|
// log4net.Config.XmlConfigurator.Configure();
|
|
|
|
|
|
|
|
|
|
AddPresence();
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, m_userId);
|
|
|
|
|
m_presence = SceneHelpers.AddScenePresence(scene, m_userId);
|
|
|
|
|
|
|
|
|
|
UUID attItemId = TestHelpers.ParseTail(0x2);
|
|
|
|
|
UUID attAssetId = TestHelpers.ParseTail(0x3);
|
|
|
|
|
string attName = "att";
|
|
|
|
|
|
|
|
|
|
UserInventoryHelpers.CreateInventoryItem(
|
|
|
|
|
scene, attName, attItemId, attAssetId, m_presence.UUID, InventoryType.Object);
|
|
|
|
|
InventoryItemBase attItem = CreateAttachmentItem(m_userId, "att", 0x10, 0x20);
|
|
|
|
|
|
|
|
|
|
m_attMod.RezSingleAttachmentFromInventory(
|
|
|
|
|
m_presence, attItemId, (uint)AttachmentPoint.Chest);
|
|
|
|
|
m_presence, attItem.ID, (uint)AttachmentPoint.Chest);
|
|
|
|
|
|
|
|
|
|
// Check scene presence status
|
|
|
|
|
Assert.That(m_presence.HasAttachments(), Is.True);
|
|
|
|
|
List<SceneObjectGroup> attachments = m_presence.GetAttachments();
|
|
|
|
|
Assert.That(attachments.Count, Is.EqualTo(1));
|
|
|
|
|
SceneObjectGroup attSo = attachments[0];
|
|
|
|
|
Assert.That(attSo.Name, Is.EqualTo(attName));
|
|
|
|
|
Assert.That(attSo.Name, Is.EqualTo(attItem.Name));
|
|
|
|
|
Assert.That(attSo.AttachmentPoint, Is.EqualTo((byte)AttachmentPoint.Chest));
|
|
|
|
|
Assert.That(attSo.IsAttachment);
|
|
|
|
|
Assert.That(attSo.UsesPhysics, Is.False);
|
|
|
|
@ -165,7 +192,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
|
|
|
|
|
// Check appearance status
|
|
|
|
|
Assert.That(m_presence.Appearance.GetAttachments().Count, Is.EqualTo(1));
|
|
|
|
|
Assert.That(m_presence.Appearance.GetAttachpoint(attItemId), Is.EqualTo((int)AttachmentPoint.Chest));
|
|
|
|
|
Assert.That(m_presence.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo((int)AttachmentPoint.Chest));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
@ -174,17 +201,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
TestHelpers.InMethod();
|
|
|
|
|
// log4net.Config.XmlConfigurator.Configure();
|
|
|
|
|
|
|
|
|
|
AddPresence();
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, m_userId);
|
|
|
|
|
m_presence = SceneHelpers.AddScenePresence(scene, m_userId);
|
|
|
|
|
|
|
|
|
|
UUID attItemId = TestHelpers.ParseTail(0x2);
|
|
|
|
|
UUID attAssetId = TestHelpers.ParseTail(0x3);
|
|
|
|
|
string attName = "att";
|
|
|
|
|
InventoryItemBase attItem = CreateAttachmentItem(m_userId, "att", 0x10, 0x20);
|
|
|
|
|
|
|
|
|
|
UserInventoryHelpers.CreateInventoryItem(
|
|
|
|
|
scene, attName, attItemId, attAssetId, m_presence.UUID, InventoryType.Object);
|
|
|
|
|
|
|
|
|
|
ISceneEntity so = m_attMod.RezSingleAttachmentFromInventory(
|
|
|
|
|
m_presence, attItemId, (uint)AttachmentPoint.Chest);
|
|
|
|
|
ISceneEntity so
|
|
|
|
|
= m_attMod.RezSingleAttachmentFromInventory(
|
|
|
|
|
m_presence, attItem.ID, (uint)AttachmentPoint.Chest);
|
|
|
|
|
m_attMod.DetachSingleAttachmentToGround(m_presence, so.LocalId);
|
|
|
|
|
|
|
|
|
|
// Check scene presence status
|
|
|
|
@ -196,7 +220,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
Assert.That(m_presence.Appearance.GetAttachments().Count, Is.EqualTo(0));
|
|
|
|
|
|
|
|
|
|
// Check item status
|
|
|
|
|
Assert.That(scene.InventoryService.GetItem(new InventoryItemBase(attItemId)), Is.Null);
|
|
|
|
|
Assert.That(scene.InventoryService.GetItem(new InventoryItemBase(attItem.ID)), Is.Null);
|
|
|
|
|
|
|
|
|
|
// Check object in scene
|
|
|
|
|
Assert.That(scene.GetSceneObjectGroup("att"), Is.Not.Null);
|
|
|
|
@ -208,18 +232,14 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
TestHelpers.InMethod();
|
|
|
|
|
// log4net.Config.XmlConfigurator.Configure();
|
|
|
|
|
|
|
|
|
|
AddPresence();
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, m_userId);
|
|
|
|
|
m_presence = SceneHelpers.AddScenePresence(scene, m_userId);
|
|
|
|
|
|
|
|
|
|
UUID attItemId = TestHelpers.ParseTail(0x2);
|
|
|
|
|
UUID attAssetId = TestHelpers.ParseTail(0x3);
|
|
|
|
|
string attName = "att";
|
|
|
|
|
|
|
|
|
|
UserInventoryHelpers.CreateInventoryItem(
|
|
|
|
|
scene, attName, attItemId, attAssetId, m_presence.UUID, InventoryType.Object);
|
|
|
|
|
InventoryItemBase attItem = CreateAttachmentItem(m_userId, "att", 0x10, 0x20);
|
|
|
|
|
|
|
|
|
|
m_attMod.RezSingleAttachmentFromInventory(
|
|
|
|
|
m_presence, attItemId, (uint)AttachmentPoint.Chest);
|
|
|
|
|
m_attMod.DetachSingleAttachmentToInv(m_presence, attItemId);
|
|
|
|
|
m_presence, attItem.ID, (uint)AttachmentPoint.Chest);
|
|
|
|
|
m_attMod.DetachSingleAttachmentToInv(m_presence, attItem.ID);
|
|
|
|
|
|
|
|
|
|
// Check status on scene presence
|
|
|
|
|
Assert.That(m_presence.HasAttachments(), Is.False);
|
|
|
|
@ -227,7 +247,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
Assert.That(attachments.Count, Is.EqualTo(0));
|
|
|
|
|
|
|
|
|
|
// Check item status
|
|
|
|
|
Assert.That(m_presence.Appearance.GetAttachpoint(attItemId), Is.EqualTo(0));
|
|
|
|
|
Assert.That(m_presence.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo(0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -239,17 +259,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
TestHelpers.InMethod();
|
|
|
|
|
// log4net.Config.XmlConfigurator.Configure();
|
|
|
|
|
|
|
|
|
|
UUID userId = TestHelpers.ParseTail(0x1);
|
|
|
|
|
UUID attItemId = TestHelpers.ParseTail(0x2);
|
|
|
|
|
UUID attAssetId = TestHelpers.ParseTail(0x3);
|
|
|
|
|
string attName = "att";
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, m_userId);
|
|
|
|
|
InventoryItemBase attItem = CreateAttachmentItem(m_userId, "att", 0x10, 0x20);
|
|
|
|
|
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, userId);
|
|
|
|
|
InventoryItemBase attItem
|
|
|
|
|
= UserInventoryHelpers.CreateInventoryItem(
|
|
|
|
|
scene, attName, attItemId, attAssetId, userId, InventoryType.Object);
|
|
|
|
|
|
|
|
|
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId);
|
|
|
|
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(m_userId);
|
|
|
|
|
acd.Appearance = new AvatarAppearance();
|
|
|
|
|
acd.Appearance.SetAttachment((int)AttachmentPoint.Chest, attItem.ID, attItem.AssetID);
|
|
|
|
|
ScenePresence presence = SceneHelpers.AddScenePresence(scene, acd);
|
|
|
|
@ -268,17 +281,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
TestHelpers.InMethod();
|
|
|
|
|
// log4net.Config.XmlConfigurator.Configure();
|
|
|
|
|
|
|
|
|
|
UUID userId = TestHelpers.ParseTail(0x1);
|
|
|
|
|
UUID attItemId = TestHelpers.ParseTail(0x2);
|
|
|
|
|
UUID attAssetId = TestHelpers.ParseTail(0x3);
|
|
|
|
|
string attName = "att";
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, m_userId);
|
|
|
|
|
InventoryItemBase attItem = CreateAttachmentItem(m_userId, "att", 0x10, 0x20);
|
|
|
|
|
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, userId);
|
|
|
|
|
InventoryItemBase attItem
|
|
|
|
|
= UserInventoryHelpers.CreateInventoryItem(
|
|
|
|
|
scene, attName, attItemId, attAssetId, userId, InventoryType.Object);
|
|
|
|
|
|
|
|
|
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId);
|
|
|
|
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(m_userId);
|
|
|
|
|
acd.Appearance = new AvatarAppearance();
|
|
|
|
|
acd.Appearance.SetAttachment((int)AttachmentPoint.Chest, attItem.ID, attItem.AssetID);
|
|
|
|
|
ScenePresence presence = SceneHelpers.AddScenePresence(scene, acd);
|
|
|
|
@ -288,7 +294,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
|
|
|
|
|
Assert.That(attachments.Count, Is.EqualTo(1));
|
|
|
|
|
SceneObjectGroup attSo = attachments[0];
|
|
|
|
|
Assert.That(attSo.Name, Is.EqualTo(attName));
|
|
|
|
|
Assert.That(attSo.Name, Is.EqualTo(attItem.Name));
|
|
|
|
|
Assert.That(attSo.AttachmentPoint, Is.EqualTo((byte)AttachmentPoint.Chest));
|
|
|
|
|
Assert.That(attSo.IsAttachment);
|
|
|
|
|
Assert.That(attSo.UsesPhysics, Is.False);
|
|
|
|
@ -298,9 +304,32 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
|
|
|
|
List<AvatarAttachment> retreivedAttachments = presence.Appearance.GetAttachments();
|
|
|
|
|
Assert.That(retreivedAttachments.Count, Is.EqualTo(1));
|
|
|
|
|
Assert.That(retreivedAttachments[0].AttachPoint, Is.EqualTo((int)AttachmentPoint.Chest));
|
|
|
|
|
Assert.That(retreivedAttachments[0].ItemID, Is.EqualTo(attItemId));
|
|
|
|
|
Assert.That(retreivedAttachments[0].AssetID, Is.EqualTo(attAssetId));
|
|
|
|
|
Assert.That(presence.Appearance.GetAttachpoint(attItemId), Is.EqualTo((int)AttachmentPoint.Chest));
|
|
|
|
|
Assert.That(retreivedAttachments[0].ItemID, Is.EqualTo(attItem.ID));
|
|
|
|
|
Assert.That(retreivedAttachments[0].AssetID, Is.EqualTo(attItem.AssetID));
|
|
|
|
|
Assert.That(presence.Appearance.GetAttachpoint(attItem.ID), Is.EqualTo((int)AttachmentPoint.Chest));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void TestUpdateAttachmentPosition()
|
|
|
|
|
{
|
|
|
|
|
TestHelpers.InMethod();
|
|
|
|
|
|
|
|
|
|
UserAccountHelpers.CreateUserWithInventory(scene, m_userId);
|
|
|
|
|
InventoryItemBase attItem = CreateAttachmentItem(m_userId, "att", 0x10, 0x20);
|
|
|
|
|
|
|
|
|
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(m_userId);
|
|
|
|
|
acd.Appearance = new AvatarAppearance();
|
|
|
|
|
acd.Appearance.SetAttachment((int)AttachmentPoint.Chest, attItem.ID, attItem.AssetID);
|
|
|
|
|
ScenePresence sp = SceneHelpers.AddScenePresence(scene, acd);
|
|
|
|
|
|
|
|
|
|
SceneObjectGroup attSo = sp.GetAttachments()[0];
|
|
|
|
|
|
|
|
|
|
Vector3 newPosition = new Vector3(1, 2, 4);
|
|
|
|
|
|
|
|
|
|
scene.SceneGraph.UpdatePrimGroupPosition(attSo.LocalId, newPosition, sp.ControllingClient);
|
|
|
|
|
|
|
|
|
|
Assert.That(attSo.AbsolutePosition, Is.EqualTo(sp.AbsolutePosition));
|
|
|
|
|
Assert.That(attSo.RootPart.AttachedPos, Is.EqualTo(newPosition));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// I'm commenting this test because scene setup NEEDS InventoryService to
|
|
|
|
|