mirror of
https://github.com/opensim/opensim.git
synced 2026-08-08 02:05:34 +08:00
Add OSSL function osForceAttachToAvatarFromInventory()
This works like osForceAttachToAvatar() but allows an object to be directly specified from the script object's inventory rather than forcing it to be rezzed in the scene first. Still only attaches objects to the owner of the script. This allows one to bypass the complicated co-ordination of first rezzing objects in the scene before attaching them. Threat level high.
This commit is contained in:
@@ -186,15 +186,15 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
TestHelpers.InMethod();
|
||||
|
||||
TestScene scene = new SceneHelpers().SetupScene();
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectGroup so = SceneHelpers.AddSceneObject(scene);
|
||||
|
||||
Assert.That(part.ParentGroup.IsDeleted, Is.False);
|
||||
Assert.That(so.IsDeleted, Is.False);
|
||||
|
||||
scene.DeleteSceneObject(part.ParentGroup, false);
|
||||
scene.DeleteSceneObject(so, false);
|
||||
|
||||
Assert.That(part.ParentGroup.IsDeleted, Is.True);
|
||||
Assert.That(so.IsDeleted, Is.True);
|
||||
|
||||
SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId);
|
||||
SceneObjectPart retrievedPart = scene.GetSceneObjectPart(so.LocalId);
|
||||
Assert.That(retrievedPart, Is.Null);
|
||||
}
|
||||
|
||||
@@ -215,22 +215,22 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter;
|
||||
sogd.Enabled = false;
|
||||
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectGroup so = SceneHelpers.AddSceneObject(scene);
|
||||
|
||||
IClientAPI client = SceneHelpers.AddScenePresence(scene, agentId).ControllingClient;
|
||||
scene.DeRezObjects(client, new System.Collections.Generic.List<uint>() { part.LocalId }, UUID.Zero, DeRezAction.Delete, UUID.Zero);
|
||||
scene.DeRezObjects(client, new System.Collections.Generic.List<uint>() { so.LocalId }, UUID.Zero, DeRezAction.Delete, UUID.Zero);
|
||||
|
||||
SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId);
|
||||
SceneObjectPart retrievedPart = scene.GetSceneObjectPart(so.LocalId);
|
||||
|
||||
Assert.That(retrievedPart, Is.Not.Null);
|
||||
|
||||
Assert.That(part.ParentGroup.IsDeleted, Is.False);
|
||||
Assert.That(so.IsDeleted, Is.False);
|
||||
|
||||
sogd.InventoryDeQueueAndDelete();
|
||||
|
||||
Assert.That(part.ParentGroup.IsDeleted, Is.True);
|
||||
Assert.That(so.IsDeleted, Is.True);
|
||||
|
||||
SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(part.LocalId);
|
||||
SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(so.LocalId);
|
||||
Assert.That(retrievedPart2, Is.Null);
|
||||
}
|
||||
|
||||
|
||||
@@ -72,10 +72,10 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
bool debugtest = false;
|
||||
|
||||
Scene scene = new SceneHelpers().SetupScene();
|
||||
SceneObjectPart part1 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectGroup grp1 = part1.ParentGroup;
|
||||
SceneObjectPart part2 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectGroup grp2 = part2.ParentGroup;
|
||||
SceneObjectGroup grp1 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectPart part1 = grp1.RootPart;
|
||||
SceneObjectGroup grp2 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectPart part2 = grp2.RootPart;
|
||||
|
||||
grp1.AbsolutePosition = new Vector3(10, 10, 10);
|
||||
grp2.AbsolutePosition = Vector3.Zero;
|
||||
@@ -154,14 +154,14 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
bool debugtest = false;
|
||||
|
||||
Scene scene = new SceneHelpers().SetupScene();
|
||||
SceneObjectPart part1 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectGroup grp1 = part1.ParentGroup;
|
||||
SceneObjectPart part2 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectGroup grp2 = part2.ParentGroup;
|
||||
SceneObjectPart part3 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectGroup grp3 = part3.ParentGroup;
|
||||
SceneObjectPart part4 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectGroup grp4 = part4.ParentGroup;
|
||||
SceneObjectGroup grp1 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectPart part1 = grp1.RootPart;
|
||||
SceneObjectGroup grp2 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectPart part2 = grp2.RootPart;
|
||||
SceneObjectGroup grp3 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectPart part3 = grp3.RootPart;
|
||||
SceneObjectGroup grp4 = SceneHelpers.AddSceneObject(scene);
|
||||
SceneObjectPart part4 = grp4.RootPart;
|
||||
|
||||
grp1.AbsolutePosition = new Vector3(10, 10, 10);
|
||||
grp2.AbsolutePosition = Vector3.Zero;
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
// log4net.Config.XmlConfigurator.Configure();
|
||||
|
||||
Scene scene = new SceneHelpers().SetupScene();
|
||||
SceneObjectGroup g1 = SceneHelpers.AddSceneObject(scene).ParentGroup;
|
||||
SceneObjectGroup g1 = SceneHelpers.AddSceneObject(scene);
|
||||
|
||||
g1.GroupResize(new Vector3(2, 3, 4));
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
Vector3 startPos = new Vector3(10.1f, 0, 0);
|
||||
m_sp.AbsolutePosition = startPos;
|
||||
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene);
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene).RootPart;
|
||||
|
||||
m_sp.HandleAgentRequestSit(m_sp.ControllingClient, m_sp.UUID, part.UUID, Vector3.Zero);
|
||||
|
||||
@@ -82,7 +82,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
Vector3 startPos = new Vector3(9.9f, 0, 0);
|
||||
m_sp.AbsolutePosition = startPos;
|
||||
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene);
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene).RootPart;
|
||||
|
||||
m_sp.HandleAgentRequestSit(m_sp.ControllingClient, m_sp.UUID, part.UUID, Vector3.Zero);
|
||||
|
||||
@@ -100,7 +100,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
Vector3 startPos = new Vector3(1, 1, 1);
|
||||
m_sp.AbsolutePosition = startPos;
|
||||
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene);
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene).RootPart;
|
||||
|
||||
m_sp.HandleAgentRequestSit(m_sp.ControllingClient, m_sp.UUID, part.UUID, Vector3.Zero);
|
||||
|
||||
@@ -133,7 +133,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
Vector3 startPos = new Vector3(128, 128, 30);
|
||||
m_sp.AbsolutePosition = startPos;
|
||||
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene);
|
||||
SceneObjectPart part = SceneHelpers.AddSceneObject(m_scene).RootPart;
|
||||
part.SitTargetPosition = new Vector3(0, 0, 1);
|
||||
|
||||
m_sp.HandleAgentRequestSit(m_sp.ControllingClient, m_sp.UUID, part.UUID, Vector3.Zero);
|
||||
|
||||
@@ -128,7 +128,9 @@ namespace OpenSim.Region.Framework.Tests
|
||||
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
|
||||
SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID);
|
||||
SceneObjectPart sop1 = sog1.RootPart;
|
||||
TaskInventoryItem sopItem1 = TaskInventoryHelpers.AddNotecard(scene, sop1);
|
||||
TaskInventoryItem sopItem1
|
||||
= TaskInventoryHelpers.AddNotecard(
|
||||
scene, sop1, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900));
|
||||
|
||||
InventoryFolderBase folder
|
||||
= InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, user1.PrincipalID, "Objects")[0];
|
||||
@@ -156,8 +158,11 @@ namespace OpenSim.Region.Framework.Tests
|
||||
Scene scene = new SceneHelpers().SetupScene();
|
||||
UserAccount user1 = UserAccountHelpers.CreateUserWithInventory(scene);
|
||||
SceneObjectGroup sog1 = SceneHelpers.CreateSceneObject(1, user1.PrincipalID);
|
||||
|
||||
SceneObjectPart sop1 = sog1.RootPart;
|
||||
TaskInventoryItem sopItem1 = TaskInventoryHelpers.AddNotecard(scene, sop1);
|
||||
TaskInventoryItem sopItem1
|
||||
= TaskInventoryHelpers.AddNotecard(
|
||||
scene, sop1, "ncItem", TestHelpers.ParseTail(0x800), TestHelpers.ParseTail(0x900));
|
||||
|
||||
// Perform test
|
||||
scene.MoveTaskInventoryItem(user1.PrincipalID, UUID.Zero, sop1, sopItem1.ItemID);
|
||||
|
||||
Reference in New Issue
Block a user