Merge branch 'master' of /home/opensim/var/repo/opensim
commit
d4a6ed3d98
|
@ -561,12 +561,18 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
// Finally, kill the agent we just created at the destination.
|
// Finally, kill the agent we just created at the destination.
|
||||||
m_aScene.SimulationService.CloseAgent(finalDestination, sp.UUID);
|
m_aScene.SimulationService.CloseAgent(finalDestination, sp.UUID);
|
||||||
|
|
||||||
|
sp.Scene.EventManager.TriggerTeleportFail(sp.ControllingClient, logout);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual bool CreateAgent(ScenePresence sp, GridRegion reg, GridRegion finalDestination, AgentCircuitData agentCircuit, uint teleportFlags, out string reason, out bool logout)
|
protected virtual bool CreateAgent(ScenePresence sp, GridRegion reg, GridRegion finalDestination, AgentCircuitData agentCircuit, uint teleportFlags, out string reason, out bool logout)
|
||||||
{
|
{
|
||||||
logout = false;
|
logout = false;
|
||||||
return m_aScene.SimulationService.CreateAgent(finalDestination, agentCircuit, teleportFlags, out reason);
|
bool success = m_aScene.SimulationService.CreateAgent(finalDestination, agentCircuit, teleportFlags, out reason);
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
sp.Scene.EventManager.TriggerTeleportStart(sp.ControllingClient, reg, finalDestination, teleportFlags, logout);
|
||||||
|
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual bool UpdateAgent(GridRegion reg, GridRegion finalDestination, AgentData agent)
|
protected virtual bool UpdateAgent(GridRegion reg, GridRegion finalDestination, AgentData agent)
|
||||||
|
|
|
@ -51,8 +51,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
private bool m_Initialized = false;
|
private bool m_Initialized = false;
|
||||||
|
|
||||||
private bool m_RestrictInventoryAccessAbroad = false;
|
|
||||||
|
|
||||||
private GatekeeperServiceConnector m_GatekeeperConnector;
|
private GatekeeperServiceConnector m_GatekeeperConnector;
|
||||||
|
|
||||||
#region ISharedRegionModule
|
#region ISharedRegionModule
|
||||||
|
@ -71,10 +69,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
if (name == Name)
|
if (name == Name)
|
||||||
{
|
{
|
||||||
InitialiseCommon(source);
|
InitialiseCommon(source);
|
||||||
IConfig transferConfig = source.Configs["HGEntityTransferModule"];
|
|
||||||
if (transferConfig != null)
|
|
||||||
m_RestrictInventoryAccessAbroad = transferConfig.GetBoolean("RestrictInventoryAccessAbroad", false);
|
|
||||||
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: {0} enabled.", Name);
|
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: {0} enabled.", Name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -94,44 +88,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
client.OnTeleportHomeRequest += TeleportHome;
|
client.OnTeleportHomeRequest += TeleportHome;
|
||||||
client.OnTeleportLandmarkRequest += RequestTeleportLandmark;
|
client.OnTeleportLandmarkRequest += RequestTeleportLandmark;
|
||||||
client.OnConnectionClosed += new Action<IClientAPI>(OnConnectionClosed);
|
client.OnConnectionClosed += new Action<IClientAPI>(OnConnectionClosed);
|
||||||
client.OnCompleteMovementToRegion += new Action<IClientAPI, bool>(OnCompleteMovementToRegion);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void OnCompleteMovementToRegion(IClientAPI client, bool arg2)
|
|
||||||
{
|
|
||||||
// HACK HACK -- just seeing how the viewer responds
|
|
||||||
// Let's send the Suitcase or the real root folder folder for incoming HG agents
|
|
||||||
// Visiting agents get their suitcase contents; incoming local users get their real root folder's content
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: OnCompleteMovementToRegion of user {0}", client.AgentId);
|
|
||||||
object sp = null;
|
|
||||||
if (client.Scene.TryGetScenePresence(client.AgentId, out sp))
|
|
||||||
{
|
|
||||||
if (sp is ScenePresence)
|
|
||||||
{
|
|
||||||
AgentCircuitData aCircuit = ((ScenePresence)sp).Scene.AuthenticateHandler.GetAgentCircuitData(client.AgentId);
|
|
||||||
if ((aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0)
|
|
||||||
{
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: ViaHGLogin");
|
|
||||||
if (m_RestrictInventoryAccessAbroad)
|
|
||||||
{
|
|
||||||
IUserManagement uMan = m_Scenes[0].RequestModuleInterface<IUserManagement>();
|
|
||||||
if (uMan.IsLocalGridUser(client.AgentId))
|
|
||||||
{
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is local");
|
|
||||||
RestoreRootFolderContents(client);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is foreign");
|
|
||||||
RestoreSuitcaseFolderContents(client);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public override void RegionLoaded(Scene scene)
|
public override void RegionLoaded(Scene scene)
|
||||||
{
|
{
|
||||||
base.RegionLoaded(scene);
|
base.RegionLoaded(scene);
|
||||||
|
@ -141,12 +99,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
m_GatekeeperConnector = new GatekeeperServiceConnector(scene.AssetService);
|
m_GatekeeperConnector = new GatekeeperServiceConnector(scene.AssetService);
|
||||||
m_Initialized = true;
|
m_Initialized = true;
|
||||||
|
|
||||||
scene.AddCommand(
|
|
||||||
"HG", this, "send inventory",
|
|
||||||
"send inventory",
|
|
||||||
"Don't use this",
|
|
||||||
HandleSendInventory);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -219,21 +171,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
bool success = connector.LoginAgentToGrid(agentCircuit, reg, finalDestination, out reason);
|
bool success = connector.LoginAgentToGrid(agentCircuit, reg, finalDestination, out reason);
|
||||||
logout = success; // flag for later logout from this grid; this is an HG TP
|
logout = success; // flag for later logout from this grid; this is an HG TP
|
||||||
|
|
||||||
if (success && m_RestrictInventoryAccessAbroad)
|
if (success)
|
||||||
{
|
sp.Scene.EventManager.TriggerTeleportStart(sp.ControllingClient, reg, finalDestination, teleportFlags, logout);
|
||||||
IUserManagement uMan = m_aScene.RequestModuleInterface<IUserManagement>();
|
|
||||||
if (uMan != null && uMan.IsLocalGridUser(sp.UUID))
|
|
||||||
{
|
|
||||||
// local grid user
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is local");
|
|
||||||
RemoveRootFolderContents(sp.ControllingClient);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: User is foreign");
|
|
||||||
RemoveSuitcaseFolderContents(sp.ControllingClient);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
@ -244,7 +183,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_aScene.SimulationService.CreateAgent(reg, agentCircuit, teleportFlags, out reason);
|
return base.CreateAgent(sp, reg, finalDestination, agentCircuit, teleportFlags, out reason, out logout);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void TeleportHome(UUID id, IClientAPI client)
|
public override void TeleportHome(UUID id, IClientAPI client)
|
||||||
|
@ -348,15 +287,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fail(ScenePresence sp, GridRegion finalDestination, bool logout)
|
|
||||||
{
|
|
||||||
base.Fail(sp, finalDestination, logout);
|
|
||||||
if (logout && m_RestrictInventoryAccessAbroad)
|
|
||||||
{
|
|
||||||
RestoreRootFolderContents(sp.ControllingClient);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region IUserAgentVerificationModule
|
#region IUserAgentVerificationModule
|
||||||
|
@ -411,71 +341,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void RemoveRootFolderContents(IClientAPI client)
|
|
||||||
{
|
|
||||||
// TODO tell the viewer to remove the root folder's content
|
|
||||||
if (client is IClientCore)
|
|
||||||
{
|
|
||||||
IClientCore core = (IClientCore)client;
|
|
||||||
IClientInventory inv;
|
|
||||||
|
|
||||||
if (core.TryGet<IClientInventory>(out inv))
|
|
||||||
{
|
|
||||||
InventoryFolderBase root = m_Scenes[0].InventoryService.GetRootFolder(client.AgentId);
|
|
||||||
if (root != null)
|
|
||||||
{
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Removing root inventory for user {0}", client.Name);
|
|
||||||
InventoryCollection content = m_Scenes[0].InventoryService.GetFolderContent(client.AgentId, root.ID);
|
|
||||||
List<UUID> fids = new List<UUID>();
|
|
||||||
List<UUID> iids = new List<UUID>();
|
|
||||||
List<InventoryFolderBase> keep = new List<InventoryFolderBase>();
|
|
||||||
|
|
||||||
foreach (InventoryFolderBase f in content.Folders)
|
|
||||||
{
|
|
||||||
if (f.Name != "My Suitcase")
|
|
||||||
{
|
|
||||||
f.Name = f.Name + " (Unavailable)";
|
|
||||||
keep.Add(f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// items directly under the root folder
|
|
||||||
foreach (InventoryItemBase it in content.Items)
|
|
||||||
it.Name = it.Name + " (Unavailable)"; ;
|
|
||||||
|
|
||||||
// Send the new names
|
|
||||||
inv.SendBulkUpdateInventory(keep.ToArray(), content.Items.ToArray());
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RemoveSuitcaseFolderContents(IClientAPI client)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RestoreRootFolderContents(IClientAPI client)
|
|
||||||
{
|
|
||||||
m_log.DebugFormat("[HG ENTITY TRANSFER MODULE]: Restoring root folder");
|
|
||||||
if (client is IClientCore)
|
|
||||||
{
|
|
||||||
IClientCore core = (IClientCore)client;
|
|
||||||
IClientInventory inv;
|
|
||||||
|
|
||||||
if (core.TryGet<IClientInventory>(out inv))
|
|
||||||
{
|
|
||||||
InventoryFolderBase root = m_Scenes[0].InventoryService.GetRootFolder(client.AgentId);
|
|
||||||
InventoryCollection content = m_Scenes[0].InventoryService.GetFolderContent(client.AgentId, root.ID);
|
|
||||||
|
|
||||||
inv.SendBulkUpdateInventory(content.Folders.ToArray(), content.Items.ToArray());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void RestoreSuitcaseFolderContents(IClientAPI client)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private GridRegion MakeRegion(AgentCircuitData aCircuit)
|
private GridRegion MakeRegion(AgentCircuitData aCircuit)
|
||||||
{
|
{
|
||||||
|
@ -494,13 +359,5 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
return region;
|
return region;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void HandleSendInventory(string module, string[] cmd)
|
|
||||||
{
|
|
||||||
m_Scenes[0].ForEachClient(delegate(IClientAPI client)
|
|
||||||
{
|
|
||||||
RestoreRootFolderContents(client);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Framework.Client;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Services.Connectors.Hypergrid;
|
using OpenSim.Services.Connectors.Hypergrid;
|
||||||
|
@ -57,6 +58,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
private string m_HomeURI;
|
private string m_HomeURI;
|
||||||
private bool m_OutboundPermission;
|
private bool m_OutboundPermission;
|
||||||
private string m_ThisGatekeeper;
|
private string m_ThisGatekeeper;
|
||||||
|
private bool m_RestrictInventoryAccessAbroad;
|
||||||
|
|
||||||
// private bool m_Initialized = false;
|
// private bool m_Initialized = false;
|
||||||
|
|
||||||
|
@ -90,6 +92,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
m_HomeURI = thisModuleConfig.GetString("HomeURI", m_HomeURI);
|
m_HomeURI = thisModuleConfig.GetString("HomeURI", m_HomeURI);
|
||||||
m_OutboundPermission = thisModuleConfig.GetBoolean("OutboundPermission", true);
|
m_OutboundPermission = thisModuleConfig.GetBoolean("OutboundPermission", true);
|
||||||
m_ThisGatekeeper = thisModuleConfig.GetString("Gatekeeper", string.Empty);
|
m_ThisGatekeeper = thisModuleConfig.GetString("Gatekeeper", string.Empty);
|
||||||
|
m_RestrictInventoryAccessAbroad = thisModuleConfig.GetBoolean("RestrictInventoryAccessAbroad", false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_log.Warn("[HG INVENTORY ACCESS MODULE]: HGInventoryAccessModule configs not found. ProfileServerURI not set!");
|
m_log.Warn("[HG INVENTORY ACCESS MODULE]: HGInventoryAccessModule configs not found. ProfileServerURI not set!");
|
||||||
|
@ -105,13 +108,79 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
base.AddRegion(scene);
|
base.AddRegion(scene);
|
||||||
m_assMapper = new HGAssetMapper(scene, m_HomeURI);
|
m_assMapper = new HGAssetMapper(scene, m_HomeURI);
|
||||||
scene.EventManager.OnNewInventoryItemUploadComplete += UploadInventoryItem;
|
scene.EventManager.OnNewInventoryItemUploadComplete += UploadInventoryItem;
|
||||||
|
scene.EventManager.OnTeleportStart += TeleportStart;
|
||||||
|
scene.EventManager.OnTeleportFail += TeleportFail;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Event handlers
|
#region Event handlers
|
||||||
|
|
||||||
|
protected override void OnNewClient(IClientAPI client)
|
||||||
|
{
|
||||||
|
base.OnNewClient(client);
|
||||||
|
client.OnCompleteMovementToRegion += new Action<IClientAPI, bool>(OnCompleteMovementToRegion);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void OnCompleteMovementToRegion(IClientAPI client, bool arg2)
|
||||||
|
{
|
||||||
|
//m_log.DebugFormat("[HG INVENTORY ACCESS MODULE]: OnCompleteMovementToRegion of user {0}", client.Name);
|
||||||
|
object sp = null;
|
||||||
|
if (client.Scene.TryGetScenePresence(client.AgentId, out sp))
|
||||||
|
{
|
||||||
|
if (sp is ScenePresence)
|
||||||
|
{
|
||||||
|
AgentCircuitData aCircuit = ((ScenePresence)sp).Scene.AuthenticateHandler.GetAgentCircuitData(client.AgentId);
|
||||||
|
if ((aCircuit.teleportFlags & (uint)Constants.TeleportFlags.ViaHGLogin) != 0)
|
||||||
|
{
|
||||||
|
if (m_RestrictInventoryAccessAbroad)
|
||||||
|
{
|
||||||
|
IUserManagement uMan = m_Scene.RequestModuleInterface<IUserManagement>();
|
||||||
|
if (uMan.IsLocalGridUser(client.AgentId))
|
||||||
|
ProcessInventoryForComingHome(client);
|
||||||
|
else
|
||||||
|
ProcessInventoryForArriving(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void TeleportStart(IClientAPI client, GridRegion destination, GridRegion finalDestination, uint teleportFlags, bool gridLogout)
|
||||||
|
{
|
||||||
|
if (gridLogout && m_RestrictInventoryAccessAbroad)
|
||||||
|
{
|
||||||
|
IUserManagement uMan = m_Scene.RequestModuleInterface<IUserManagement>();
|
||||||
|
if (uMan != null && uMan.IsLocalGridUser(client.AgentId))
|
||||||
|
{
|
||||||
|
// local grid user
|
||||||
|
ProcessInventoryForHypergriding(client);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Foreigner
|
||||||
|
ProcessInventoryForLeaving(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void TeleportFail(IClientAPI client, bool gridLogout)
|
||||||
|
{
|
||||||
|
if (gridLogout && m_RestrictInventoryAccessAbroad)
|
||||||
|
{
|
||||||
|
IUserManagement uMan = m_Scene.RequestModuleInterface<IUserManagement>();
|
||||||
|
if (uMan.IsLocalGridUser(client.AgentId))
|
||||||
|
{
|
||||||
|
ProcessInventoryForComingHome(client);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ProcessInventoryForArriving(client);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void UploadInventoryItem(UUID avatarID, UUID assetID, string name, int userlevel)
|
public void UploadInventoryItem(UUID avatarID, UUID assetID, string name, int userlevel)
|
||||||
{
|
{
|
||||||
string userAssetServer = string.Empty;
|
string userAssetServer = string.Empty;
|
||||||
|
@ -236,8 +305,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
protected override InventoryItemBase GetItem(UUID agentID, UUID itemID)
|
protected override InventoryItemBase GetItem(UUID agentID, UUID itemID)
|
||||||
{
|
{
|
||||||
InventoryItemBase item = base.GetItem(agentID, itemID);
|
InventoryItemBase item = base.GetItem(agentID, itemID);
|
||||||
|
@ -248,5 +315,84 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Inventory manipulation upon arriving/leaving
|
||||||
|
|
||||||
|
//
|
||||||
|
// These 2 are for local and foreign users coming back, respectively
|
||||||
|
//
|
||||||
|
|
||||||
|
private void ProcessInventoryForComingHome(IClientAPI client)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[HG INVENTORY ACCESS MODULE]: Restoring root folder for local user {0}", client.Name);
|
||||||
|
if (client is IClientCore)
|
||||||
|
{
|
||||||
|
IClientCore core = (IClientCore)client;
|
||||||
|
IClientInventory inv;
|
||||||
|
|
||||||
|
if (core.TryGet<IClientInventory>(out inv))
|
||||||
|
{
|
||||||
|
InventoryFolderBase root = m_Scene.InventoryService.GetRootFolder(client.AgentId);
|
||||||
|
InventoryCollection content = m_Scene.InventoryService.GetFolderContent(client.AgentId, root.ID);
|
||||||
|
|
||||||
|
inv.SendBulkUpdateInventory(content.Folders.ToArray(), content.Items.ToArray());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessInventoryForArriving(IClientAPI client)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// These 2 are for local and foreign users going away respectively
|
||||||
|
//
|
||||||
|
|
||||||
|
private void ProcessInventoryForHypergriding(IClientAPI client)
|
||||||
|
{
|
||||||
|
if (client is IClientCore)
|
||||||
|
{
|
||||||
|
IClientCore core = (IClientCore)client;
|
||||||
|
IClientInventory inv;
|
||||||
|
|
||||||
|
if (core.TryGet<IClientInventory>(out inv))
|
||||||
|
{
|
||||||
|
InventoryFolderBase root = m_Scene.InventoryService.GetRootFolder(client.AgentId);
|
||||||
|
if (root != null)
|
||||||
|
{
|
||||||
|
m_log.DebugFormat("[HG INVENTORY ACCESS MODULE]: Changing root inventory for user {0}", client.Name);
|
||||||
|
InventoryCollection content = m_Scene.InventoryService.GetFolderContent(client.AgentId, root.ID);
|
||||||
|
List<UUID> fids = new List<UUID>();
|
||||||
|
List<UUID> iids = new List<UUID>();
|
||||||
|
List<InventoryFolderBase> keep = new List<InventoryFolderBase>();
|
||||||
|
|
||||||
|
foreach (InventoryFolderBase f in content.Folders)
|
||||||
|
{
|
||||||
|
if (f.Name != "My Suitcase")
|
||||||
|
{
|
||||||
|
f.Name = f.Name + " (Unavailable)";
|
||||||
|
keep.Add(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// items directly under the root folder
|
||||||
|
foreach (InventoryItemBase it in content.Items)
|
||||||
|
it.Name = it.Name + " (Unavailable)"; ;
|
||||||
|
|
||||||
|
// Send the new names
|
||||||
|
inv.SendBulkUpdateInventory(keep.ToArray(), content.Items.ToArray());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessInventoryForLeaving(IClientAPI client)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -502,6 +502,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public delegate void PrimsLoaded(Scene s);
|
public delegate void PrimsLoaded(Scene s);
|
||||||
public event PrimsLoaded OnPrimsLoaded;
|
public event PrimsLoaded OnPrimsLoaded;
|
||||||
|
|
||||||
|
public delegate void TeleportStart(IClientAPI client, GridRegion destination, GridRegion finalDestination, uint teleportFlags, bool gridLogout);
|
||||||
|
public event TeleportStart OnTeleportStart;
|
||||||
|
|
||||||
|
public delegate void TeleportFail(IClientAPI client, bool gridLogout);
|
||||||
|
public event TeleportFail OnTeleportFail;
|
||||||
|
|
||||||
public class MoneyTransferArgs : EventArgs
|
public class MoneyTransferArgs : EventArgs
|
||||||
{
|
{
|
||||||
public UUID sender;
|
public UUID sender;
|
||||||
|
@ -2463,5 +2469,48 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void TriggerTeleportStart(IClientAPI client, GridRegion destination, GridRegion finalDestination, uint teleportFlags, bool gridLogout)
|
||||||
|
{
|
||||||
|
TeleportStart handler = OnTeleportStart;
|
||||||
|
|
||||||
|
if (handler != null)
|
||||||
|
{
|
||||||
|
foreach (TeleportStart d in handler.GetInvocationList())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
d(client, destination, finalDestination, teleportFlags, gridLogout);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("[EVENT MANAGER]: Delegate for TeleportStart failed - continuing {0} - {1}",
|
||||||
|
e.Message, e.StackTrace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TriggerTeleportFail(IClientAPI client, bool gridLogout)
|
||||||
|
{
|
||||||
|
TeleportFail handler = OnTeleportFail;
|
||||||
|
|
||||||
|
if (handler != null)
|
||||||
|
{
|
||||||
|
foreach (TeleportFail d in handler.GetInvocationList())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
d(client, gridLogout);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("[EVENT MANAGER]: Delegate for TeleportFail failed - continuing {0} - {1}",
|
||||||
|
e.Message, e.StackTrace);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue