Merge branch 'master' into careminster
Conflicts: OpenSim/Region/Framework/Scenes/Scene.cs OpenSim/Services/LLLoginService/LLLoginResponse.cs OpenSim/Services/LLLoginService/LLLoginService.cs OpenSim/Tests/Common/Mock/TestClient.csavinationmerge
commit
13cd8c17d7
|
@ -1909,7 +1909,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
m_log.Info("[RADMIN]: Received Estate Reload Request");
|
m_log.Info("[RADMIN]: Received Estate Reload Request");
|
||||||
|
|
||||||
Hashtable responseData = (Hashtable)response.Value;
|
Hashtable responseData = (Hashtable)response.Value;
|
||||||
Hashtable requestData = (Hashtable)request.Params[0];
|
// Hashtable requestData = (Hashtable)request.Params[0];
|
||||||
|
|
||||||
m_application.SceneManager.ForEachScene(s =>
|
m_application.SceneManager.ForEachScene(s =>
|
||||||
s.RegionInfo.EstateSettings = m_application.EstateDataService.LoadEstateSettings(s.RegionInfo.RegionID, false)
|
s.RegionInfo.EstateSettings = m_application.EstateDataService.LoadEstateSettings(s.RegionInfo.RegionID, false)
|
||||||
|
|
|
@ -77,5 +77,11 @@ BEGIN;
|
||||||
ALTER TABLE estate_settings AUTO_INCREMENT = 100;
|
ALTER TABLE estate_settings AUTO_INCREMENT = 100;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
|
:VERSION 33 #---------------------
|
||||||
|
|
||||||
|
BEGIN;
|
||||||
|
ALTER TABLE estate_settings ADD COLUMN `AllowLandmark` tinyint(4) NOT NULL default '1';
|
||||||
|
ALTER TABLE estate_settings ADD COLUMN `AllowParcelChanges` tinyint(4) NOT NULL default '1';
|
||||||
|
ALTER TABLE estate_settings ADD COLUMN `AllowSetHome` tinyint(4) NOT NULL default '1';
|
||||||
|
COMMIT;
|
||||||
|
|
||||||
|
|
|
@ -86,3 +86,12 @@ begin;
|
||||||
alter table estate_settings add column DenyMinors tinyint not null default 0;
|
alter table estate_settings add column DenyMinors tinyint not null default 0;
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
|
|
||||||
|
:VERSION 9
|
||||||
|
|
||||||
|
begin;
|
||||||
|
alter table estate_settings add column AllowLandmark tinyint not null default '1';
|
||||||
|
alter table estate_settings add column AllowParcelChanges tinyint not null default '1';
|
||||||
|
alter table estate_settings add column AllowSetHome tinyint not null default '1';
|
||||||
|
commit;
|
||||||
|
|
||||||
|
|
|
@ -420,6 +420,21 @@ namespace OpenSim.Framework.Console
|
||||||
SetCursorLeft(0);
|
SetCursorLeft(0);
|
||||||
m_cursorYPosition = SetCursorTop(m_cursorYPosition);
|
m_cursorYPosition = SetCursorTop(m_cursorYPosition);
|
||||||
|
|
||||||
|
if (m_echo)
|
||||||
|
System.Console.Write("{0}{1} ", prompt, m_commandLine);
|
||||||
|
else
|
||||||
|
System.Console.Write("{0}", prompt);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case ConsoleKey.Delete:
|
||||||
|
if (m_cursorXPosition == m_commandLine.Length)
|
||||||
|
break;
|
||||||
|
|
||||||
|
m_commandLine.Remove(m_cursorXPosition, 1);
|
||||||
|
|
||||||
|
SetCursorLeft(0);
|
||||||
|
m_cursorYPosition = SetCursorTop(m_cursorYPosition);
|
||||||
|
|
||||||
if (m_echo)
|
if (m_echo)
|
||||||
System.Console.Write("{0}{1} ", prompt, m_commandLine);
|
System.Console.Write("{0}{1} ", prompt, m_commandLine);
|
||||||
else
|
else
|
||||||
|
|
|
@ -430,6 +430,5 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
return l_EstateGroups.Contains(groupID);
|
return l_EstateGroups.Contains(groupID);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1109,9 +1109,8 @@ namespace OpenSim.Framework
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tell the client that an object has been deleted
|
/// Tell the client that an object has been deleted
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="regionHandle"></param>
|
|
||||||
/// <param name="localID"></param>
|
/// <param name="localID"></param>
|
||||||
void SendKillObject(ulong regionHandle, List<uint> localID);
|
void SendKillObject(List<uint> localID);
|
||||||
|
|
||||||
void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs);
|
void SendAnimations(UUID[] animID, int[] seqs, UUID sourceAgentId, UUID[] objectIDs);
|
||||||
void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args);
|
void SendRegionHandshake(RegionInfo regionInfo, RegionHandshakeArgs args);
|
||||||
|
|
|
@ -1580,7 +1580,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
OutPacket(pc, ThrottleOutPacketType.Unknown);
|
OutPacket(pc, ThrottleOutPacketType.Unknown);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendKillObject(ulong regionHandle, List<uint> localIDs)
|
public void SendKillObject(List<uint> localIDs)
|
||||||
{
|
{
|
||||||
// foreach (uint id in localIDs)
|
// foreach (uint id in localIDs)
|
||||||
// m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, id, regionHandle);
|
// m_log.DebugFormat("[CLIENT]: Sending KillObjectPacket to {0} for {1} in {2}", Name, id, regionHandle);
|
||||||
|
@ -11961,8 +11961,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
if (part == null)
|
if (part == null)
|
||||||
{
|
{
|
||||||
// It's a ghost! tell the client to delete it from view.
|
// It's a ghost! tell the client to delete it from view.
|
||||||
simClient.SendKillObject(Scene.RegionInfo.RegionHandle,
|
simClient.SendKillObject(new List<uint> { localId });
|
||||||
new List<uint> { localId });
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -841,7 +841,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
m_scene.ForEachClient(
|
m_scene.ForEachClient(
|
||||||
client =>
|
client =>
|
||||||
{ if (client.AgentId != so.AttachedAvatar)
|
{ if (client.AgentId != so.AttachedAvatar)
|
||||||
client.SendKillObject(m_scene.RegionInfo.RegionHandle, new List<uint>() { so.LocalId });
|
client.SendKillObject(new List<uint>() { so.LocalId });
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -833,11 +833,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments.Tests
|
||||||
UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(sceneA, 0x1);
|
UserAccount ua1 = UserAccountHelpers.CreateUserWithInventory(sceneA, 0x1);
|
||||||
|
|
||||||
AgentCircuitData acd = SceneHelpers.GenerateAgentData(ua1.PrincipalID);
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(ua1.PrincipalID);
|
||||||
TestClient tc = new TestClient(acd, sceneA, sh.SceneManager);
|
TestClient tc = new TestClient(acd, sceneA);
|
||||||
List<TestClient> destinationTestClients = new List<TestClient>();
|
List<TestClient> destinationTestClients = new List<TestClient>();
|
||||||
EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients);
|
EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients);
|
||||||
|
|
||||||
ScenePresence beforeTeleportSp = SceneHelpers.AddScenePresence(sceneA, tc, acd, sh.SceneManager);
|
ScenePresence beforeTeleportSp = SceneHelpers.AddScenePresence(sceneA, tc, acd);
|
||||||
beforeTeleportSp.AbsolutePosition = new Vector3(30, 31, 32);
|
beforeTeleportSp.AbsolutePosition = new Vector3(30, 31, 32);
|
||||||
|
|
||||||
InventoryItemBase attItem = CreateAttachmentItem(sceneA, ua1.PrincipalID, "att", 0x10, 0x20);
|
InventoryItemBase attItem = CreateAttachmentItem(sceneA, ua1.PrincipalID, "att", 0x10, 0x20);
|
||||||
|
|
|
@ -104,14 +104,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// better than losing the object for now.
|
// better than losing the object for now.
|
||||||
if (permissionToDelete)
|
if (permissionToDelete)
|
||||||
{
|
{
|
||||||
List<uint> killIDs = new List<uint>();
|
|
||||||
|
|
||||||
foreach (SceneObjectGroup g in objectGroups)
|
foreach (SceneObjectGroup g in objectGroups)
|
||||||
{ killIDs.Add(g.LocalId);
|
g.DeleteGroupFromScene(false);
|
||||||
g.DeleteGroupFromScene(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_scene.SendKillObject(killIDs);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,7 +154,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (x.permissionToDelete)
|
if (x.permissionToDelete)
|
||||||
{
|
{
|
||||||
foreach (SceneObjectGroup g in x.objectGroups)
|
foreach (SceneObjectGroup g in x.objectGroups)
|
||||||
m_scene.DeleteSceneObject(g, false);
|
m_scene.DeleteSceneObject(g, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
|
|
|
@ -485,7 +485,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
item.SaleType = itemUpd.SaleType;
|
item.SaleType = itemUpd.SaleType;
|
||||||
|
|
||||||
InventoryService.UpdateItem(item);
|
InventoryService.UpdateItem(item);
|
||||||
remoteClient.SendBulkUpdateInventory(item);
|
|
||||||
|
// We cannot send out a bulk update here, since this will cause editing of clothing to start
|
||||||
|
// failing frequently. Possibly this is a race with a separate transaction that uploads the asset.
|
||||||
|
// remoteClient.SendBulkUpdateInventory(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UUID.Zero != transactionID)
|
if (UUID.Zero != transactionID)
|
||||||
|
|
|
@ -3648,7 +3648,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
delegate(IClientAPI client)
|
delegate(IClientAPI client)
|
||||||
{
|
{
|
||||||
//We can safely ignore null reference exceptions. It means the avatar is dead and cleaned up anyway
|
//We can safely ignore null reference exceptions. It means the avatar is dead and cleaned up anyway
|
||||||
try { client.SendKillObject(avatar.RegionHandle, new List<uint> { avatar.LocalId }); }
|
try { client.SendKillObject(new List<uint> { avatar.LocalId }); }
|
||||||
catch (NullReferenceException) { }
|
catch (NullReferenceException) { }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -3729,7 +3729,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
deleteIDs.Add(localID);
|
deleteIDs.Add(localID);
|
||||||
}
|
}
|
||||||
ForEachClient(delegate(IClientAPI client) { client.SendKillObject(m_regionHandle, deleteIDs); });
|
|
||||||
|
ForEachClient(c => c.SendKillObject(deleteIDs));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -4382,8 +4383,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[SCENE]: Incoming child agent update for {0} in {1}", cAgentData.AgentID, RegionInfo.RegionName);
|
"[SCENE]: Incoming child agent update for {0} in {1}", cAgentData.AgentID, RegionInfo.RegionName);
|
||||||
|
|
||||||
// XPTO: if this agent is not allowed here as root, always return false
|
|
||||||
|
|
||||||
// We have to wait until the viewer contacts this region after receiving EAC.
|
// We have to wait until the viewer contacts this region after receiving EAC.
|
||||||
// That calls AddNewClient, which finally creates the ScenePresence
|
// That calls AddNewClient, which finally creates the ScenePresence
|
||||||
int flags = GetUserFlags(cAgentData.AgentID);
|
int flags = GetUserFlags(cAgentData.AgentID);
|
||||||
|
|
|
@ -1857,11 +1857,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Delete this group from its scene.
|
/// Delete this group from its scene.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
///
|
/// <remarks>
|
||||||
/// This only handles the in-world consequences of deletion (e.g. any avatars sitting on it are forcibly stood
|
/// This only handles the in-world consequences of deletion (e.g. any avatars sitting on it are forcibly stood
|
||||||
/// up and all avatars receive notification of its removal. Removal of the scene object from database backup
|
/// up and all avatars receive notification of its removal. Removal of the scene object from database backup
|
||||||
/// must be handled by the caller.
|
/// must be handled by the caller.
|
||||||
///
|
/// </remarks>
|
||||||
/// <param name="silent">If true then deletion is not broadcast to clients</param>
|
/// <param name="silent">If true then deletion is not broadcast to clients</param>
|
||||||
public void DeleteGroupFromScene(bool silent)
|
public void DeleteGroupFromScene(bool silent)
|
||||||
{
|
{
|
||||||
|
@ -1875,10 +1875,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
SceneObjectPart part = parts[i];
|
SceneObjectPart part = parts[i];
|
||||||
|
|
||||||
Scene.ForEachRootScenePresence(delegate(ScenePresence avatar)
|
Scene.ForEachScenePresence(sp =>
|
||||||
{
|
{
|
||||||
if (avatar.ParentID == LocalId)
|
if (!sp.IsChildAgent && sp.ParentID == LocalId)
|
||||||
avatar.StandUp();
|
sp.StandUp();
|
||||||
|
|
||||||
if (!silent)
|
if (!silent)
|
||||||
{
|
{
|
||||||
|
@ -1886,9 +1886,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (part == m_rootPart)
|
if (part == m_rootPart)
|
||||||
{
|
{
|
||||||
if (!IsAttachment
|
if (!IsAttachment
|
||||||
|| AttachedAvatar == avatar.ControllingClient.AgentId
|
|| AttachedAvatar == sp.UUID
|
||||||
|| !HasPrivateAttachmentPoint)
|
|| !HasPrivateAttachmentPoint)
|
||||||
avatar.ControllingClient.SendKillObject(m_regionHandle, new List<uint> { part.LocalId });
|
sp.ControllingClient.SendKillObject(new List<uint> { part.LocalId });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -33,7 +33,9 @@ using NUnit.Framework;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Communications;
|
using OpenSim.Framework.Communications;
|
||||||
|
using OpenSim.Region.CoreModules.Framework.EntityTransfer;
|
||||||
using OpenSim.Region.CoreModules.Framework.InventoryAccess;
|
using OpenSim.Region.CoreModules.Framework.InventoryAccess;
|
||||||
|
using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
|
||||||
using OpenSim.Region.CoreModules.World.Permissions;
|
using OpenSim.Region.CoreModules.World.Permissions;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Services.Interfaces;
|
using OpenSim.Services.Interfaces;
|
||||||
|
@ -52,6 +54,24 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class SceneObjectDeRezTests : OpenSimTestCase
|
public class SceneObjectDeRezTests : OpenSimTestCase
|
||||||
{
|
{
|
||||||
|
[TestFixtureSetUp]
|
||||||
|
public void FixtureInit()
|
||||||
|
{
|
||||||
|
// Don't allow tests to be bamboozled by asynchronous events. Execute everything on the same thread.
|
||||||
|
// This facility was added after the original async delete tests were written, so it may be possible now
|
||||||
|
// to not bother explicitly disabling their async (since everything will be running sync).
|
||||||
|
Util.FireAndForgetMethod = FireAndForgetMethod.RegressionTest;
|
||||||
|
}
|
||||||
|
|
||||||
|
[TestFixtureTearDown]
|
||||||
|
public void TearDown()
|
||||||
|
{
|
||||||
|
// We must set this back afterwards, otherwise later tests will fail since they're expecting multiple
|
||||||
|
// threads. Possibly, later tests should be rewritten so none of them require async stuff (which regression
|
||||||
|
// tests really shouldn't).
|
||||||
|
Util.FireAndForgetMethod = Util.DefaultFireAndForgetMethod;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Test deleting an object from a scene.
|
/// Test deleting an object from a scene.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -59,46 +79,96 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
public void TestDeRezSceneObject()
|
public void TestDeRezSceneObject()
|
||||||
{
|
{
|
||||||
TestHelpers.InMethod();
|
TestHelpers.InMethod();
|
||||||
// log4net.Config.XmlConfigurator.Configure();
|
|
||||||
|
|
||||||
UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001");
|
UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001");
|
||||||
|
|
||||||
TestScene scene = new SceneHelpers().SetupScene();
|
TestScene scene = new SceneHelpers().SetupScene();
|
||||||
IConfigSource configSource = new IniConfigSource();
|
SceneHelpers.SetupSceneModules(scene, new PermissionsModule());
|
||||||
IConfig config = configSource.AddConfig("Startup");
|
TestClient client = (TestClient)SceneHelpers.AddScenePresence(scene, userId).ControllingClient;
|
||||||
config.Set("serverside_object_permissions", true);
|
|
||||||
SceneHelpers.SetupSceneModules(scene, configSource, new object[] { new PermissionsModule() });
|
|
||||||
IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient;
|
|
||||||
|
|
||||||
// Turn off the timer on the async sog deleter - we'll crank it by hand for this test.
|
// Turn off the timer on the async sog deleter - we'll crank it by hand for this test.
|
||||||
AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter;
|
AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter;
|
||||||
sogd.Enabled = false;
|
sogd.Enabled = false;
|
||||||
|
|
||||||
SceneObjectPart part
|
SceneObjectGroup so = SceneHelpers.AddSceneObject(scene, "so1", userId);
|
||||||
= new SceneObjectPart(userId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero);
|
uint soLocalId = so.LocalId;
|
||||||
part.Name = "obj1";
|
|
||||||
scene.AddNewSceneObject(new SceneObjectGroup(part), false);
|
|
||||||
|
|
||||||
List<uint> localIds = new List<uint>();
|
List<uint> localIds = new List<uint>();
|
||||||
localIds.Add(part.LocalId);
|
localIds.Add(so.LocalId);
|
||||||
scene.DeRezObjects(client, localIds, UUID.Zero, DeRezAction.Delete, UUID.Zero);
|
scene.DeRezObjects(client, localIds, UUID.Zero, DeRezAction.Delete, UUID.Zero);
|
||||||
|
|
||||||
// Check that object isn't deleted until we crank the sogd handle.
|
// Check that object isn't deleted until we crank the sogd handle.
|
||||||
SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId);
|
SceneObjectPart retrievedPart = scene.GetSceneObjectPart(so.LocalId);
|
||||||
Assert.That(retrievedPart, Is.Not.Null);
|
Assert.That(retrievedPart, Is.Not.Null);
|
||||||
Assert.That(retrievedPart.ParentGroup.IsDeleted, Is.False);
|
Assert.That(retrievedPart.ParentGroup.IsDeleted, Is.False);
|
||||||
|
|
||||||
sogd.InventoryDeQueueAndDelete();
|
sogd.InventoryDeQueueAndDelete();
|
||||||
|
|
||||||
SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(part.LocalId);
|
SceneObjectPart retrievedPart2 = scene.GetSceneObjectPart(so.LocalId);
|
||||||
Assert.That(retrievedPart2, Is.Null);
|
Assert.That(retrievedPart2, Is.Null);
|
||||||
|
|
||||||
|
Assert.That(client.ReceivedKills.Count, Is.EqualTo(1));
|
||||||
|
Assert.That(client.ReceivedKills[0], Is.EqualTo(soLocalId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Test that child and root agents correctly receive KillObject notifications.
|
||||||
|
/// </summary>
|
||||||
|
[Test]
|
||||||
|
public void TestDeRezSceneObjectToAgents()
|
||||||
|
{
|
||||||
|
TestHelpers.InMethod();
|
||||||
|
// TestHelpers.EnableLogging();
|
||||||
|
|
||||||
|
SceneHelpers sh = new SceneHelpers();
|
||||||
|
TestScene sceneA = sh.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000);
|
||||||
|
TestScene sceneB = sh.SetupScene("sceneB", TestHelpers.ParseTail(0x200), 1000, 999);
|
||||||
|
|
||||||
|
// We need this so that the creation of the root client for userB in sceneB can trigger the creation of a child client in sceneA
|
||||||
|
LocalSimulationConnectorModule lscm = new LocalSimulationConnectorModule();
|
||||||
|
EntityTransferModule etmB = new EntityTransferModule();
|
||||||
|
IConfigSource config = new IniConfigSource();
|
||||||
|
IConfig modulesConfig = config.AddConfig("Modules");
|
||||||
|
modulesConfig.Set("EntityTransferModule", etmB.Name);
|
||||||
|
modulesConfig.Set("SimulationServices", lscm.Name);
|
||||||
|
SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm);
|
||||||
|
SceneHelpers.SetupSceneModules(sceneB, config, etmB);
|
||||||
|
|
||||||
|
// We need this for derez
|
||||||
|
SceneHelpers.SetupSceneModules(sceneA, new PermissionsModule());
|
||||||
|
|
||||||
|
UserAccount uaA = UserAccountHelpers.CreateUserWithInventory(sceneA, "Andy", "AAA", 0x1, "");
|
||||||
|
UserAccount uaB = UserAccountHelpers.CreateUserWithInventory(sceneA, "Brian", "BBB", 0x2, "");
|
||||||
|
|
||||||
|
TestClient clientA = (TestClient)SceneHelpers.AddScenePresence(sceneA, uaA).ControllingClient;
|
||||||
|
|
||||||
|
// This is the more long-winded route we have to take to get a child client created for userB in sceneA
|
||||||
|
// rather than just calling AddScenePresence() as for userA
|
||||||
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(uaB);
|
||||||
|
TestClient clientB = new TestClient(acd, sceneB);
|
||||||
|
List<TestClient> childClientsB = new List<TestClient>();
|
||||||
|
EntityTransferHelpers.SetUpInformClientOfNeighbour(clientB, childClientsB);
|
||||||
|
|
||||||
|
SceneHelpers.AddScenePresence(sceneB, clientB, acd);
|
||||||
|
|
||||||
|
SceneObjectGroup so = SceneHelpers.AddSceneObject(sceneA);
|
||||||
|
uint soLocalId = so.LocalId;
|
||||||
|
|
||||||
|
sceneA.DeleteSceneObject(so, false);
|
||||||
|
|
||||||
|
Assert.That(clientA.ReceivedKills.Count, Is.EqualTo(1));
|
||||||
|
Assert.That(clientA.ReceivedKills[0], Is.EqualTo(soLocalId));
|
||||||
|
|
||||||
|
Assert.That(childClientsB[0].ReceivedKills.Count, Is.EqualTo(1));
|
||||||
|
Assert.That(childClientsB[0].ReceivedKills[0], Is.EqualTo(soLocalId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Test deleting an object from a scene where the deleter is not the owner
|
/// Test deleting an object from a scene where the deleter is not the owner
|
||||||
/// </summary>
|
/// </summary>
|
||||||
///
|
/// <remarks>
|
||||||
/// This test assumes that the deleter is not a god.
|
/// This test assumes that the deleter is not a god.
|
||||||
|
/// </remarks>
|
||||||
[Test]
|
[Test]
|
||||||
public void TestDeRezSceneObjectNotOwner()
|
public void TestDeRezSceneObjectNotOwner()
|
||||||
{
|
{
|
||||||
|
@ -109,10 +179,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
UUID objectOwnerId = UUID.Parse("20000000-0000-0000-0000-000000000001");
|
UUID objectOwnerId = UUID.Parse("20000000-0000-0000-0000-000000000001");
|
||||||
|
|
||||||
TestScene scene = new SceneHelpers().SetupScene();
|
TestScene scene = new SceneHelpers().SetupScene();
|
||||||
IConfigSource configSource = new IniConfigSource();
|
SceneHelpers.SetupSceneModules(scene, new PermissionsModule());
|
||||||
IConfig config = configSource.AddConfig("Startup");
|
|
||||||
config.Set("serverside_object_permissions", true);
|
|
||||||
SceneHelpers.SetupSceneModules(scene, configSource, new object[] { new PermissionsModule() });
|
|
||||||
IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient;
|
IClientAPI client = SceneHelpers.AddScenePresence(scene, userId).ControllingClient;
|
||||||
|
|
||||||
// Turn off the timer on the async sog deleter - we'll crank it by hand for this test.
|
// Turn off the timer on the async sog deleter - we'll crank it by hand for this test.
|
||||||
|
|
|
@ -95,11 +95,11 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB);
|
SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB);
|
||||||
|
|
||||||
AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId);
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId);
|
||||||
TestClient tc = new TestClient(acd, sceneA, sh.SceneManager);
|
TestClient tc = new TestClient(acd, sceneA);
|
||||||
List<TestClient> destinationTestClients = new List<TestClient>();
|
List<TestClient> destinationTestClients = new List<TestClient>();
|
||||||
EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients);
|
EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients);
|
||||||
|
|
||||||
ScenePresence originalSp = SceneHelpers.AddScenePresence(sceneA, tc, acd, sh.SceneManager);
|
ScenePresence originalSp = SceneHelpers.AddScenePresence(sceneA, tc, acd);
|
||||||
originalSp.AbsolutePosition = new Vector3(128, 32, 10);
|
originalSp.AbsolutePosition = new Vector3(128, 32, 10);
|
||||||
|
|
||||||
// originalSp.Flying = true;
|
// originalSp.Flying = true;
|
||||||
|
|
|
@ -139,7 +139,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
Vector3 teleportPosition = new Vector3(10, 11, 12);
|
Vector3 teleportPosition = new Vector3(10, 11, 12);
|
||||||
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
||||||
|
|
||||||
ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager);
|
ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId);
|
||||||
sp.AbsolutePosition = new Vector3(30, 31, 32);
|
sp.AbsolutePosition = new Vector3(30, 31, 32);
|
||||||
|
|
||||||
List<TestClient> destinationTestClients = new List<TestClient>();
|
List<TestClient> destinationTestClients = new List<TestClient>();
|
||||||
|
@ -224,7 +224,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
Vector3 teleportPosition = new Vector3(10, 11, 12);
|
Vector3 teleportPosition = new Vector3(10, 11, 12);
|
||||||
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
||||||
|
|
||||||
ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager);
|
ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId);
|
||||||
sp.AbsolutePosition = preTeleportPosition;
|
sp.AbsolutePosition = preTeleportPosition;
|
||||||
|
|
||||||
// Make sceneB return false on query access
|
// Make sceneB return false on query access
|
||||||
|
@ -300,7 +300,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
Vector3 teleportPosition = new Vector3(10, 11, 12);
|
Vector3 teleportPosition = new Vector3(10, 11, 12);
|
||||||
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
||||||
|
|
||||||
ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager);
|
ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId);
|
||||||
sp.AbsolutePosition = preTeleportPosition;
|
sp.AbsolutePosition = preTeleportPosition;
|
||||||
|
|
||||||
// Make sceneB refuse CreateAgent
|
// Make sceneB refuse CreateAgent
|
||||||
|
@ -389,7 +389,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
Vector3 teleportPosition = new Vector3(10, 11, 12);
|
Vector3 teleportPosition = new Vector3(10, 11, 12);
|
||||||
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
||||||
|
|
||||||
ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager);
|
ScenePresence sp = SceneHelpers.AddScenePresence(sceneA, userId);
|
||||||
sp.AbsolutePosition = preTeleportPosition;
|
sp.AbsolutePosition = preTeleportPosition;
|
||||||
|
|
||||||
sceneA.RequestTeleportLocation(
|
sceneA.RequestTeleportLocation(
|
||||||
|
@ -428,7 +428,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
public void TestSameSimulatorNeighbouringRegions()
|
public void TestSameSimulatorNeighbouringRegions()
|
||||||
{
|
{
|
||||||
TestHelpers.InMethod();
|
TestHelpers.InMethod();
|
||||||
TestHelpers.EnableLogging();
|
// TestHelpers.EnableLogging();
|
||||||
|
|
||||||
UUID userId = TestHelpers.ParseTail(0x1);
|
UUID userId = TestHelpers.ParseTail(0x1);
|
||||||
|
|
||||||
|
@ -458,11 +458,11 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
||||||
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
Vector3 teleportLookAt = new Vector3(20, 21, 22);
|
||||||
|
|
||||||
AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId);
|
AgentCircuitData acd = SceneHelpers.GenerateAgentData(userId);
|
||||||
TestClient tc = new TestClient(acd, sceneA, sh.SceneManager);
|
TestClient tc = new TestClient(acd, sceneA);
|
||||||
List<TestClient> destinationTestClients = new List<TestClient>();
|
List<TestClient> destinationTestClients = new List<TestClient>();
|
||||||
EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients);
|
EntityTransferHelpers.SetUpInformClientOfNeighbour(tc, destinationTestClients);
|
||||||
|
|
||||||
ScenePresence beforeSceneASp = SceneHelpers.AddScenePresence(sceneA, tc, acd, sh.SceneManager);
|
ScenePresence beforeSceneASp = SceneHelpers.AddScenePresence(sceneA, tc, acd);
|
||||||
beforeSceneASp.AbsolutePosition = new Vector3(30, 31, 32);
|
beforeSceneASp.AbsolutePosition = new Vector3(30, 31, 32);
|
||||||
|
|
||||||
Assert.That(beforeSceneASp, Is.Not.Null);
|
Assert.That(beforeSceneASp, Is.Not.Null);
|
||||||
|
|
|
@ -955,7 +955,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendKillObject(ulong regionHandle, List<uint> localID)
|
public void SendKillObject(List<uint> localID)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -596,7 +596,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SendKillObject(ulong regionHandle, List<uint> localID)
|
public virtual void SendKillObject(List<uint> localID)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -368,9 +368,10 @@ public class BSShapeMesh : BSShape
|
||||||
|
|
||||||
// Check to see if mesh was created (might require an asset).
|
// Check to see if mesh was created (might require an asset).
|
||||||
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
||||||
if (!newShape.isNativeShape)
|
if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
|
||||||
{
|
{
|
||||||
// If a mesh was what was created, remember the built shape for later sharing.
|
// If a mesh was what was created, remember the built shape for later sharing.
|
||||||
|
// Also note that if meshing failed we put it in the mesh list as there is nothing else to do about the mesh.
|
||||||
Meshes.Add(newMeshKey, retMesh);
|
Meshes.Add(newMeshKey, retMesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -483,8 +484,11 @@ public class BSShapeMesh : BSShape
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Force the asset condition to 'failed' so we won't try to keep fetching and processing this mesh.
|
||||||
|
prim.PrimAssetState = BSPhysObject.PrimAssetCondition.Failed;
|
||||||
physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}",
|
physicsScene.Logger.DebugFormat("{0} All mesh triangles degenerate. Prim {1} at {2} in {3}",
|
||||||
LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name);
|
LogHeader, prim.PhysObjectName, prim.RawPosition, physicsScene.Name);
|
||||||
|
physicsScene.DetailLog("{0},BSShapeMesh.CreatePhysicalMesh,allDegenerate,key={1}", prim.LocalID, newMeshKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
newShape.shapeKey = newMeshKey;
|
newShape.shapeKey = newMeshKey;
|
||||||
|
@ -523,7 +527,7 @@ public class BSShapeHull : BSShape
|
||||||
|
|
||||||
// Check to see if hull was created (might require an asset).
|
// Check to see if hull was created (might require an asset).
|
||||||
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
newShape = VerifyMeshCreated(physicsScene, newShape, prim);
|
||||||
if (!newShape.isNativeShape)
|
if (!newShape.isNativeShape || prim.PrimAssetState == BSPhysObject.PrimAssetCondition.Failed)
|
||||||
{
|
{
|
||||||
// If a mesh was what was created, remember the built shape for later sharing.
|
// If a mesh was what was created, remember the built shape for later sharing.
|
||||||
Hulls.Add(newHullKey, retHull);
|
Hulls.Add(newHullKey, retHull);
|
||||||
|
|
|
@ -233,7 +233,7 @@ namespace OpenSim.Services.LLLoginService
|
||||||
GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService,
|
GridRegion destination, List<InventoryFolderBase> invSkel, FriendInfo[] friendsList, ILibraryService libService,
|
||||||
string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message,
|
string where, string startlocation, Vector3 position, Vector3 lookAt, List<InventoryItemBase> gestures, string message,
|
||||||
GridRegion home, IPEndPoint clientIP, string mapTileURL, string profileURL, string openIDURL, string searchURL, string currency,
|
GridRegion home, IPEndPoint clientIP, string mapTileURL, string profileURL, string openIDURL, string searchURL, string currency,
|
||||||
string DSTZone, UUID realID)
|
string DSTZone, string destinationsURL, string avatarsURL, UUID realID)
|
||||||
: this()
|
: this()
|
||||||
{
|
{
|
||||||
FillOutInventoryData(invSkel, libService);
|
FillOutInventoryData(invSkel, libService);
|
||||||
|
@ -253,6 +253,8 @@ namespace OpenSim.Services.LLLoginService
|
||||||
MapTileURL = mapTileURL;
|
MapTileURL = mapTileURL;
|
||||||
ProfileURL = profileURL;
|
ProfileURL = profileURL;
|
||||||
OpenIDURL = openIDURL;
|
OpenIDURL = openIDURL;
|
||||||
|
DestinationsURL = destinationsURL;
|
||||||
|
AvatarsURL = avatarsURL;
|
||||||
|
|
||||||
SearchURL = searchURL;
|
SearchURL = searchURL;
|
||||||
Currency = currency;
|
Currency = currency;
|
||||||
|
@ -543,6 +545,12 @@ namespace OpenSim.Services.LLLoginService
|
||||||
if (profileURL != String.Empty)
|
if (profileURL != String.Empty)
|
||||||
responseData["profile-server-url"] = profileURL;
|
responseData["profile-server-url"] = profileURL;
|
||||||
|
|
||||||
|
if (DestinationsURL != String.Empty)
|
||||||
|
responseData["destination_guide_url"] = DestinationsURL;
|
||||||
|
|
||||||
|
if (AvatarsURL != String.Empty)
|
||||||
|
responseData["avatar_picker_url"] = AvatarsURL;
|
||||||
|
|
||||||
// We need to send an openid_token back in the response too
|
// We need to send an openid_token back in the response too
|
||||||
if (openIDURL != String.Empty)
|
if (openIDURL != String.Empty)
|
||||||
responseData["openid_url"] = openIDURL;
|
responseData["openid_url"] = openIDURL;
|
||||||
|
@ -1073,6 +1081,16 @@ namespace OpenSim.Services.LLLoginService
|
||||||
set { currency = value; }
|
set { currency = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string DestinationsURL
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AvatarsURL
|
||||||
|
{
|
||||||
|
get; set;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public class UserInfo
|
public class UserInfo
|
||||||
|
|
|
@ -78,6 +78,8 @@ namespace OpenSim.Services.LLLoginService
|
||||||
protected string m_OpenIDURL;
|
protected string m_OpenIDURL;
|
||||||
protected string m_SearchURL;
|
protected string m_SearchURL;
|
||||||
protected string m_Currency;
|
protected string m_Currency;
|
||||||
|
protected string m_DestinationGuide;
|
||||||
|
protected string m_AvatarPicker;
|
||||||
|
|
||||||
protected string m_AllowedClients;
|
protected string m_AllowedClients;
|
||||||
protected string m_DeniedClients;
|
protected string m_DeniedClients;
|
||||||
|
@ -117,6 +119,8 @@ namespace OpenSim.Services.LLLoginService
|
||||||
m_OpenIDURL = m_LoginServerConfig.GetString("OpenIDServerURL", String.Empty);
|
m_OpenIDURL = m_LoginServerConfig.GetString("OpenIDServerURL", String.Empty);
|
||||||
m_SearchURL = m_LoginServerConfig.GetString("SearchURL", string.Empty);
|
m_SearchURL = m_LoginServerConfig.GetString("SearchURL", string.Empty);
|
||||||
m_Currency = m_LoginServerConfig.GetString("Currency", string.Empty);
|
m_Currency = m_LoginServerConfig.GetString("Currency", string.Empty);
|
||||||
|
m_DestinationGuide = m_LoginServerConfig.GetString ("DestinationGuide", string.Empty);
|
||||||
|
m_AvatarPicker = m_LoginServerConfig.GetString ("AvatarPicker", string.Empty);
|
||||||
|
|
||||||
m_AllowedClients = m_LoginServerConfig.GetString("AllowedClients", string.Empty);
|
m_AllowedClients = m_LoginServerConfig.GetString("AllowedClients", string.Empty);
|
||||||
m_DeniedClients = m_LoginServerConfig.GetString("DeniedClients", string.Empty);
|
m_DeniedClients = m_LoginServerConfig.GetString("DeniedClients", string.Empty);
|
||||||
|
@ -461,7 +465,8 @@ namespace OpenSim.Services.LLLoginService
|
||||||
= new LLLoginResponse(
|
= new LLLoginResponse(
|
||||||
account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService,
|
account, aCircuit, guinfo, destination, inventorySkel, friendsList, m_LibraryService,
|
||||||
where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP,
|
where, startLocation, position, lookAt, gestures, m_WelcomeMessage, home, clientIP,
|
||||||
m_MapTileURL, m_ProfileURL, m_OpenIDURL, m_SearchURL, m_Currency, m_DSTZone, realID);
|
m_MapTileURL, m_ProfileURL, m_OpenIDURL, m_SearchURL, m_Currency, m_DSTZone,
|
||||||
|
m_DestinationGuide, m_AvatarPicker, realID);
|
||||||
|
|
||||||
m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to {0} {1}", firstName, lastName);
|
m_log.DebugFormat("[LLOGIN SERVICE]: All clear. Sending login response to {0} {1}", firstName, lastName);
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@ namespace OpenSim.Tests.Common
|
||||||
Scene neighbourScene;
|
Scene neighbourScene;
|
||||||
SceneManager.Instance.TryGetScene(x, y, out neighbourScene);
|
SceneManager.Instance.TryGetScene(x, y, out neighbourScene);
|
||||||
|
|
||||||
TestClient neighbourTc = new TestClient(newAgent, neighbourScene, SceneManager.Instance);
|
TestClient neighbourTc = new TestClient(newAgent, neighbourScene);
|
||||||
neighbourTcs.Add(neighbourTc);
|
neighbourTcs.Add(neighbourTc);
|
||||||
neighbourScene.AddNewClient(neighbourTc, PresenceType.User);
|
neighbourScene.AddNewClient(neighbourTc, PresenceType.User);
|
||||||
};
|
};
|
||||||
|
|
|
@ -447,9 +447,6 @@ namespace OpenSim.Tests.Common
|
||||||
/// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test
|
/// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
/// <remarks>
|
||||||
/// This can be used for tests where there is only one region or where there are multiple non-neighbour regions
|
|
||||||
/// and teleport doesn't take place.
|
|
||||||
///
|
|
||||||
/// XXX: Use the version of this method that takes the UserAccount structure wherever possible - this will
|
/// XXX: Use the version of this method that takes the UserAccount structure wherever possible - this will
|
||||||
/// make the agent circuit data (e.g. first, lastname) consistent with the user account data.
|
/// make the agent circuit data (e.g. first, lastname) consistent with the user account data.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
|
@ -461,22 +458,6 @@ namespace OpenSim.Tests.Common
|
||||||
return AddScenePresence(scene, GenerateAgentData(agentId));
|
return AddScenePresence(scene, GenerateAgentData(agentId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add a root agent where the details of the agent connection (apart from the id) are unimportant for the test
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// XXX: Use the version of this method that takes the UserAccount structure wherever possible - this will
|
|
||||||
/// make the agent circuit data (e.g. first, lastname) consistent with the user account data.
|
|
||||||
/// </remarks>
|
|
||||||
/// <param name="scene"></param>
|
|
||||||
/// <param name="agentId"></param>
|
|
||||||
/// <param name="sceneManager"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static ScenePresence AddScenePresence(Scene scene, UUID agentId, SceneManager sceneManager)
|
|
||||||
{
|
|
||||||
return AddScenePresence(scene, GenerateAgentData(agentId), sceneManager);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Add a root agent.
|
/// Add a root agent.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -508,7 +489,7 @@ namespace OpenSim.Tests.Common
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static ScenePresence AddScenePresence(Scene scene, AgentCircuitData agentData)
|
public static ScenePresence AddScenePresence(Scene scene, AgentCircuitData agentData)
|
||||||
{
|
{
|
||||||
return AddScenePresence(scene, agentData, null);
|
return AddScenePresence(scene, new TestClient(agentData, scene), agentData);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -528,34 +509,9 @@ namespace OpenSim.Tests.Common
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// <param name="scene"></param>
|
/// <param name="scene"></param>
|
||||||
/// <param name="agentData"></param>
|
/// <param name="agentData"></param>
|
||||||
/// <param name="sceneManager"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
public static ScenePresence AddScenePresence(Scene scene, AgentCircuitData agentData, SceneManager sceneManager)
|
|
||||||
{
|
|
||||||
return AddScenePresence(scene, new TestClient(agentData, scene, sceneManager), agentData, sceneManager);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Add a root agent.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// This function
|
|
||||||
///
|
|
||||||
/// 1) Tells the scene that an agent is coming. Normally, the login service (local if standalone, from the
|
|
||||||
/// userserver if grid) would give initial login data back to the client and separately tell the scene that the
|
|
||||||
/// agent was coming.
|
|
||||||
///
|
|
||||||
/// 2) Connects the agent with the scene
|
|
||||||
///
|
|
||||||
/// This function performs actions equivalent with notifying the scene that an agent is
|
|
||||||
/// coming and then actually connecting the agent to the scene. The one step missed out is the very first
|
|
||||||
/// </remarks>
|
|
||||||
/// <param name="scene"></param>
|
|
||||||
/// <param name="agentData"></param>
|
|
||||||
/// <param name="sceneManager"></param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static ScenePresence AddScenePresence(
|
public static ScenePresence AddScenePresence(
|
||||||
Scene scene, IClientAPI client, AgentCircuitData agentData, SceneManager sceneManager)
|
Scene scene, IClientAPI client, AgentCircuitData agentData)
|
||||||
{
|
{
|
||||||
// We emulate the proper login sequence here by doing things in four stages
|
// We emulate the proper login sequence here by doing things in four stages
|
||||||
|
|
||||||
|
@ -578,10 +534,6 @@ namespace OpenSim.Tests.Common
|
||||||
/// Introduce an agent into the scene by adding a new client.
|
/// Introduce an agent into the scene by adding a new client.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>The scene presence added</returns>
|
/// <returns>The scene presence added</returns>
|
||||||
/// <param name='sceneManager'>
|
|
||||||
/// Scene manager. Can be null if there is only one region in the test or multiple regions that are not
|
|
||||||
/// neighbours and where no teleporting takes place.
|
|
||||||
/// </param>
|
|
||||||
/// <param name='scene'></param>
|
/// <param name='scene'></param>
|
||||||
/// <param name='testClient'></param>
|
/// <param name='testClient'></param>
|
||||||
/// <param name='agentData'></param>
|
/// <param name='agentData'></param>
|
||||||
|
@ -607,7 +559,7 @@ namespace OpenSim.Tests.Common
|
||||||
acd.child = true;
|
acd.child = true;
|
||||||
|
|
||||||
// XXX: ViaLogin may not be correct for child agents
|
// XXX: ViaLogin may not be correct for child agents
|
||||||
TestClient client = new TestClient(acd, scene, null);
|
TestClient client = new TestClient(acd, scene);
|
||||||
return IntroduceClientToScene(scene, client, acd, TeleportFlags.ViaLogin);
|
return IntroduceClientToScene(scene, client, acd, TeleportFlags.ViaLogin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,9 +47,9 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
EventWaitHandle wh = new EventWaitHandle (false, EventResetMode.AutoReset, "Crossing");
|
EventWaitHandle wh = new EventWaitHandle (false, EventResetMode.AutoReset, "Crossing");
|
||||||
|
|
||||||
private Scene m_scene;
|
private Scene m_scene;
|
||||||
private SceneManager m_sceneManager;
|
|
||||||
|
|
||||||
// Properties so that we can get at received data for test purposes
|
// Properties so that we can get at received data for test purposes
|
||||||
|
public List<uint> ReceivedKills { get; private set; }
|
||||||
public List<UUID> ReceivedOfflineNotifications { get; private set; }
|
public List<UUID> ReceivedOfflineNotifications { get; private set; }
|
||||||
public List<UUID> ReceivedOnlineNotifications { get; private set; }
|
public List<UUID> ReceivedOnlineNotifications { get; private set; }
|
||||||
public List<UUID> ReceivedFriendshipTerminations { get; private set; }
|
public List<UUID> ReceivedFriendshipTerminations { get; private set; }
|
||||||
|
@ -434,36 +434,24 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
get { return new IPEndPoint(IPAddress.Loopback, (ushort)m_circuitCode); }
|
get { return new IPEndPoint(IPAddress.Loopback, (ushort)m_circuitCode); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Constructor
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Can be used for a test where there is only one region or where there are multiple regions that are not
|
|
||||||
/// neighbours and where no teleporting takes place. In other situations, the constructor that takes in a
|
|
||||||
/// scene manager should be used.
|
|
||||||
/// </remarks>
|
|
||||||
/// <param name="agentData"></param>
|
|
||||||
/// <param name="scene"></param>
|
|
||||||
public TestClient(AgentCircuitData agentData, Scene scene) : this(agentData, scene, null) {}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor
|
/// Constructor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="agentData"></param>
|
/// <param name="agentData"></param>
|
||||||
/// <param name="scene"></param>
|
/// <param name="scene"></param>
|
||||||
/// <param name="sceneManager"></param>
|
/// <param name="sceneManager"></param>
|
||||||
public TestClient(AgentCircuitData agentData, Scene scene, SceneManager sceneManager)
|
public TestClient(AgentCircuitData agentData, Scene scene)
|
||||||
{
|
{
|
||||||
m_agentId = agentData.AgentID;
|
m_agentId = agentData.AgentID;
|
||||||
m_firstName = agentData.firstname;
|
m_firstName = agentData.firstname;
|
||||||
m_lastName = agentData.lastname;
|
m_lastName = agentData.lastname;
|
||||||
m_circuitCode = agentData.circuitcode;
|
m_circuitCode = agentData.circuitcode;
|
||||||
m_scene = scene;
|
m_scene = scene;
|
||||||
m_sceneManager = sceneManager;
|
|
||||||
SessionId = agentData.SessionID;
|
SessionId = agentData.SessionID;
|
||||||
SecureSessionId = agentData.SecureSessionID;
|
SecureSessionId = agentData.SecureSessionID;
|
||||||
CapsSeedUrl = agentData.CapsPath;
|
CapsSeedUrl = agentData.CapsPath;
|
||||||
|
|
||||||
|
ReceivedKills = new List<uint>();
|
||||||
ReceivedOfflineNotifications = new List<UUID>();
|
ReceivedOfflineNotifications = new List<UUID>();
|
||||||
ReceivedOnlineNotifications = new List<UUID>();
|
ReceivedOnlineNotifications = new List<UUID>();
|
||||||
ReceivedFriendshipTerminations = new List<UUID>();
|
ReceivedFriendshipTerminations = new List<UUID>();
|
||||||
|
@ -532,11 +520,11 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
|
|
||||||
public virtual void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
|
public virtual void SendAgentDataUpdate(UUID agentid, UUID activegroupid, string firstname, string lastname, ulong grouppowers, string groupname, string grouptitle)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SendKillObject(ulong regionHandle, List<uint> localID)
|
public virtual void SendKillObject(List<uint> localID)
|
||||||
{
|
{
|
||||||
|
ReceivedKills.AddRange(localID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void SetChildAgentThrottle(byte[] throttle)
|
public virtual void SetChildAgentThrottle(byte[] throttle)
|
||||||
|
@ -545,15 +533,13 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
|
|
||||||
public void SetAgentThrottleSilent(int throttle, int setting)
|
public void SetAgentThrottleSilent(int throttle, int setting)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] GetThrottlesPacked(float multiplier)
|
public byte[] GetThrottlesPacked(float multiplier)
|
||||||
{
|
{
|
||||||
return new byte[0];
|
return new byte[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public virtual void SendAnimations(UUID[] animations, int[] seqs, UUID sourceAgentId, UUID[] objectIDs)
|
public virtual void SendAnimations(UUID[] animations, int[] seqs, UUID sourceAgentId, UUID[] objectIDs)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,8 +118,8 @@ namespace OpenSim.Tests.Common.Mock
|
||||||
|
|
||||||
folder.parentFolderID = new UUID(newParent);
|
folder.parentFolderID = new UUID(newParent);
|
||||||
|
|
||||||
XInventoryFolder[] newParentFolders
|
// XInventoryFolder[] newParentFolders
|
||||||
= GetFolders(new string[] { "folderID" }, new string[] { folder.parentFolderID.ToString() });
|
// = GetFolders(new string[] { "folderID" }, new string[] { folder.parentFolderID.ToString() });
|
||||||
|
|
||||||
// Console.WriteLine(
|
// Console.WriteLine(
|
||||||
// "Moved folder {0} {1}, to {2} {3}",
|
// "Moved folder {0} {1}, to {2} {3}",
|
||||||
|
|
|
@ -325,6 +325,12 @@ HGAssetServiceConnector = "HGAssetService@8002/OpenSim.Server.Handlers.dll:Asset
|
||||||
; For V2/V3 webapp authentication SSO
|
; For V2/V3 webapp authentication SSO
|
||||||
; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/"
|
; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/"
|
||||||
|
|
||||||
|
; For V3 destination guide
|
||||||
|
; DestinationGuide = "http://127.0.0.1/guide"
|
||||||
|
|
||||||
|
; For V3 avatar picker (( work in progress ))
|
||||||
|
; AvatarPicker = "http://127.0.0.1/avatars"
|
||||||
|
|
||||||
; If you run this login server behind a proxy, set this to true
|
; If you run this login server behind a proxy, set this to true
|
||||||
; HasProxy = false
|
; HasProxy = false
|
||||||
|
|
||||||
|
|
|
@ -288,6 +288,12 @@ MapGetServiceConnector = "8002/OpenSim.Server.Handlers.dll:MapGetServiceConnecto
|
||||||
; For V2/V3 webapp authentication SSO
|
; For V2/V3 webapp authentication SSO
|
||||||
; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/"
|
; OpenIDServerURL = "http://127.0.0.1/openid/openidserver/"
|
||||||
|
|
||||||
|
; For V3 destination guide
|
||||||
|
; DestinationGuide = "http://127.0.0.1/guide"
|
||||||
|
|
||||||
|
; For V3 avatar picker (( work in progress ))
|
||||||
|
; AvatarPicker = "http://127.0.0.1/avatars"
|
||||||
|
|
||||||
; If you run this login server behind a proxy, set this to true
|
; If you run this login server behind a proxy, set this to true
|
||||||
; HasProxy = false
|
; HasProxy = false
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue