Merge branch 'bigmerge' of ssh://3dhosting.de/var/git/careminster into bigmerge
commit
7c7dd6269a
File diff suppressed because it is too large
Load Diff
|
@ -51,8 +51,7 @@ namespace OpenSim.Framework.Capabilities
|
||||||
/// supplied BaseHttpServer.
|
/// supplied BaseHttpServer.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="httpListener">base HTTP server</param>
|
/// <param name="httpListener">base HTTP server</param>
|
||||||
/// <param name="httpListenerHostname">host name of the HTTP
|
/// <param name="httpListenerHostname">host name of the HTTP server</param>
|
||||||
/// server</param>
|
|
||||||
/// <param name="httpListenerPort">HTTP port</param>
|
/// <param name="httpListenerPort">HTTP port</param>
|
||||||
public CapsHandlers(BaseHttpServer httpListener, string httpListenerHostname, uint httpListenerPort)
|
public CapsHandlers(BaseHttpServer httpListener, string httpListenerHostname, uint httpListenerPort)
|
||||||
: this(httpListener,httpListenerHostname,httpListenerPort, false)
|
: this(httpListener,httpListenerHostname,httpListenerPort, false)
|
||||||
|
@ -87,14 +86,18 @@ namespace OpenSim.Framework.Capabilities
|
||||||
/// <param name="capsName">name of the capability of the cap
|
/// <param name="capsName">name of the capability of the cap
|
||||||
/// handler to be removed</param>
|
/// handler to be removed</param>
|
||||||
public void Remove(string capsName)
|
public void Remove(string capsName)
|
||||||
|
{
|
||||||
|
lock (m_capsHandlers)
|
||||||
{
|
{
|
||||||
m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path);
|
m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path);
|
||||||
m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[capsName].Path);
|
m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[capsName].Path);
|
||||||
m_capsHandlers.Remove(capsName);
|
m_capsHandlers.Remove(capsName);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool ContainsCap(string cap)
|
public bool ContainsCap(string cap)
|
||||||
{
|
{
|
||||||
|
lock (m_capsHandlers)
|
||||||
return m_capsHandlers.ContainsKey(cap);
|
return m_capsHandlers.ContainsKey(cap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,19 +105,22 @@ namespace OpenSim.Framework.Capabilities
|
||||||
/// The indexer allows us to treat the CapsHandlers object
|
/// The indexer allows us to treat the CapsHandlers object
|
||||||
/// in an intuitive dictionary like way.
|
/// in an intuitive dictionary like way.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <Remarks>
|
/// <remarks>
|
||||||
/// The indexer will throw an exception when you try to
|
/// The indexer will throw an exception when you try to
|
||||||
/// retrieve a cap handler for a cap that is not contained in
|
/// retrieve a cap handler for a cap that is not contained in
|
||||||
/// CapsHandlers.
|
/// CapsHandlers.
|
||||||
/// </Remarks>
|
/// </remarks>
|
||||||
public IRequestHandler this[string idx]
|
public IRequestHandler this[string idx]
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
lock (m_capsHandlers)
|
||||||
return m_capsHandlers[idx];
|
return m_capsHandlers[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
set
|
set
|
||||||
|
{
|
||||||
|
lock (m_capsHandlers)
|
||||||
{
|
{
|
||||||
if (m_capsHandlers.ContainsKey(idx))
|
if (m_capsHandlers.ContainsKey(idx))
|
||||||
{
|
{
|
||||||
|
@ -128,6 +134,7 @@ namespace OpenSim.Framework.Capabilities
|
||||||
m_httpListener.AddStreamHandler(value);
|
m_httpListener.AddStreamHandler(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Return the list of cap names for which this CapsHandlers
|
/// Return the list of cap names for which this CapsHandlers
|
||||||
|
@ -136,12 +143,15 @@ namespace OpenSim.Framework.Capabilities
|
||||||
public string[] Caps
|
public string[] Caps
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
{
|
||||||
|
lock (m_capsHandlers)
|
||||||
{
|
{
|
||||||
string[] __keys = new string[m_capsHandlers.Keys.Count];
|
string[] __keys = new string[m_capsHandlers.Keys.Count];
|
||||||
m_capsHandlers.Keys.CopyTo(__keys, 0);
|
m_capsHandlers.Keys.CopyTo(__keys, 0);
|
||||||
return __keys;
|
return __keys;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Return an LLSD-serializable Hashtable describing the
|
/// Return an LLSD-serializable Hashtable describing the
|
||||||
|
@ -157,6 +167,9 @@ namespace OpenSim.Framework.Capabilities
|
||||||
protocol = "https://";
|
protocol = "https://";
|
||||||
|
|
||||||
string baseUrl = protocol + m_httpListenerHostName + ":" + m_httpListenerPort.ToString();
|
string baseUrl = protocol + m_httpListenerHostName + ":" + m_httpListenerPort.ToString();
|
||||||
|
|
||||||
|
lock (m_capsHandlers)
|
||||||
|
{
|
||||||
foreach (string capsName in m_capsHandlers.Keys)
|
foreach (string capsName in m_capsHandlers.Keys)
|
||||||
{
|
{
|
||||||
if (excludeSeed && "SEED" == capsName)
|
if (excludeSeed && "SEED" == capsName)
|
||||||
|
@ -164,6 +177,7 @@ namespace OpenSim.Framework.Capabilities
|
||||||
|
|
||||||
caps[capsName] = baseUrl + m_capsHandlers[capsName].Path;
|
caps[capsName] = baseUrl + m_capsHandlers[capsName].Path;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,8 +77,6 @@ namespace OpenSim.Capabilities.Handlers
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// m_log.Debug("[CAPS]: UploadBakedTexture Request in region: " + m_regionName);
|
|
||||||
|
|
||||||
string capsBase = "/CAPS/" + m_HostCapsObj.CapsObjectPath;
|
string capsBase = "/CAPS/" + m_HostCapsObj.CapsObjectPath;
|
||||||
string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000");
|
string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000");
|
||||||
|
|
||||||
|
|
|
@ -232,9 +232,8 @@ namespace OpenSim.Framework.Console
|
||||||
|
|
||||||
string uri = "/ReadResponses/" + sessionID.ToString() + "/";
|
string uri = "/ReadResponses/" + sessionID.ToString() + "/";
|
||||||
|
|
||||||
m_Server.AddPollServiceHTTPHandler(uri, HandleHttpPoll,
|
m_Server.AddPollServiceHTTPHandler(
|
||||||
new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents,
|
uri, new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents, sessionID));
|
||||||
sessionID));
|
|
||||||
|
|
||||||
XmlDocument xmldoc = new XmlDocument();
|
XmlDocument xmldoc = new XmlDocument();
|
||||||
XmlNode xmlnode = xmldoc.CreateNode(XmlNodeType.XmlDeclaration,
|
XmlNode xmlnode = xmldoc.CreateNode(XmlNodeType.XmlDeclaration,
|
||||||
|
@ -266,11 +265,6 @@ namespace OpenSim.Framework.Console
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Hashtable HandleHttpPoll(Hashtable request)
|
|
||||||
{
|
|
||||||
return new Hashtable();
|
|
||||||
}
|
|
||||||
|
|
||||||
private Hashtable HandleHttpCloseSession(Hashtable request)
|
private Hashtable HandleHttpCloseSession(Hashtable request)
|
||||||
{
|
{
|
||||||
DoExpire();
|
DoExpire();
|
||||||
|
|
|
@ -90,9 +90,9 @@ namespace OpenSim.Framework
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Is the agent denoted by the given agentID a child presence in this scene?
|
/// Is the agent denoted by the given agentID a child presence in this scene?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
///
|
/// <remarks>
|
||||||
/// Used by ClientView when a 'kick everyone' or 'estate message' occurs
|
/// Used by ClientView when a 'kick everyone' or 'estate message' occurs
|
||||||
///
|
/// </remarks>
|
||||||
/// <param name="avatarID">AvatarID to lookup</param>
|
/// <param name="avatarID">AvatarID to lookup</param>
|
||||||
/// <returns>true if the presence is a child agent, false if the presence is a root exception</returns>
|
/// <returns>true if the presence is a child agent, false if the presence is a root exception</returns>
|
||||||
/// <exception cref="System.NullReferenceException">
|
/// <exception cref="System.NullReferenceException">
|
||||||
|
|
|
@ -227,21 +227,17 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
return new List<string>(m_HTTPHandlers.Keys);
|
return new List<string>(m_HTTPHandlers.Keys);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool AddPollServiceHTTPHandler(string methodName, GenericHTTPMethod handler, PollServiceEventArgs args)
|
public bool AddPollServiceHTTPHandler(string methodName, PollServiceEventArgs args)
|
||||||
{
|
{
|
||||||
bool pollHandlerResult = false;
|
|
||||||
lock (m_pollHandlers)
|
lock (m_pollHandlers)
|
||||||
{
|
{
|
||||||
if (!m_pollHandlers.ContainsKey(methodName))
|
if (!m_pollHandlers.ContainsKey(methodName))
|
||||||
{
|
{
|
||||||
m_pollHandlers.Add(methodName, args);
|
m_pollHandlers.Add(methodName, args);
|
||||||
pollHandlerResult = true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pollHandlerResult)
|
|
||||||
return AddHTTPHandler(methodName, handler);
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1871,8 +1867,6 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
{
|
{
|
||||||
lock (m_pollHandlers)
|
lock (m_pollHandlers)
|
||||||
m_pollHandlers.Remove(path);
|
m_pollHandlers.Remove(path);
|
||||||
|
|
||||||
RemoveHTTPHandler(httpMethod, path);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool RemoveAgentHandler(string agent, IHttpAgentHandler handler)
|
public bool RemoveAgentHandler(string agent, IHttpAgentHandler handler)
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
/// </returns>
|
/// </returns>
|
||||||
bool AddHTTPHandler(string methodName, GenericHTTPMethod handler);
|
bool AddHTTPHandler(string methodName, GenericHTTPMethod handler);
|
||||||
|
|
||||||
bool AddPollServiceHTTPHandler(string methodName, GenericHTTPMethod handler, PollServiceEventArgs args);
|
bool AddPollServiceHTTPHandler(string methodName, PollServiceEventArgs args);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a LLSD handler, yay.
|
/// Adds a LLSD handler, yay.
|
||||||
|
|
|
@ -62,6 +62,7 @@ namespace OpenSim
|
||||||
|
|
||||||
// These are the names of the plugin-points extended by this
|
// These are the names of the plugin-points extended by this
|
||||||
// class during system startup.
|
// class during system startup.
|
||||||
|
//
|
||||||
|
|
||||||
private const string PLUGIN_ASSET_CACHE = "/OpenSim/AssetCache";
|
private const string PLUGIN_ASSET_CACHE = "/OpenSim/AssetCache";
|
||||||
private const string PLUGIN_ASSET_SERVER_CLIENT = "/OpenSim/AssetClient";
|
private const string PLUGIN_ASSET_SERVER_CLIENT = "/OpenSim/AssetClient";
|
||||||
|
|
|
@ -361,7 +361,6 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
// This will persist this beyond the expiry of the caps handlers
|
// This will persist this beyond the expiry of the caps handlers
|
||||||
MainServer.Instance.AddPollServiceHTTPHandler(
|
MainServer.Instance.AddPollServiceHTTPHandler(
|
||||||
capsBase + EventQueueGetUUID.ToString() + "/",
|
capsBase + EventQueueGetUUID.ToString() + "/",
|
||||||
EventQueuePoll,
|
|
||||||
new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents, agentID));
|
new PollServiceEventArgs(null, HasEvents, GetEvents, NoEvents, agentID));
|
||||||
|
|
||||||
Random rnd = new Random(Environment.TickCount);
|
Random rnd = new Random(Environment.TickCount);
|
||||||
|
@ -578,11 +577,6 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
// return responsedata;
|
// return responsedata;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
public Hashtable EventQueuePoll(Hashtable request)
|
|
||||||
{
|
|
||||||
return new Hashtable();
|
|
||||||
}
|
|
||||||
|
|
||||||
// public Hashtable EventQueuePath2(Hashtable request)
|
// public Hashtable EventQueuePath2(Hashtable request)
|
||||||
// {
|
// {
|
||||||
// string capuuid = (string)request["uri"]; //path.Replace("/CAPS/EQG/","");
|
// string capuuid = (string)request["uri"]; //path.Replace("/CAPS/EQG/","");
|
||||||
|
|
|
@ -104,7 +104,7 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||||
"UploadBakedTexture",
|
"UploadBakedTexture",
|
||||||
new RestStreamHandler(
|
new RestStreamHandler(
|
||||||
"POST",
|
"POST",
|
||||||
"/CAPS/" + m_uploadBakedTexturePath,
|
"/CAPS/" + caps.CapsObjectPath + m_uploadBakedTexturePath,
|
||||||
new UploadBakedTextureHandler(
|
new UploadBakedTextureHandler(
|
||||||
caps, m_scene.AssetService, m_persistBakedTextures).UploadBakedTexture));
|
caps, m_scene.AssetService, m_persistBakedTextures).UploadBakedTexture));
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,11 +91,6 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
get { return null; }
|
get { return null; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private Hashtable HandleHttpPoll(Hashtable request)
|
|
||||||
{
|
|
||||||
return new Hashtable();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
{
|
{
|
||||||
get { return "UrlModule"; }
|
get { return "UrlModule"; }
|
||||||
|
@ -171,9 +166,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
|
|
||||||
string uri = "/lslhttp/" + urlcode.ToString();
|
string uri = "/lslhttp/" + urlcode.ToString();
|
||||||
|
|
||||||
m_HttpServer.AddPollServiceHTTPHandler(uri,HandleHttpPoll,
|
m_HttpServer.AddPollServiceHTTPHandler(
|
||||||
new PollServiceEventArgs(HttpRequestHandler,HasEvents, GetEvents, NoEvents,
|
uri,
|
||||||
urlcode));
|
new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode));
|
||||||
|
|
||||||
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
|
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
|
||||||
}
|
}
|
||||||
|
@ -213,9 +208,9 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
|
|
||||||
string uri = "/lslhttps/" + urlcode.ToString() + "/";
|
string uri = "/lslhttps/" + urlcode.ToString() + "/";
|
||||||
|
|
||||||
m_HttpsServer.AddPollServiceHTTPHandler(uri,HandleHttpPoll,
|
m_HttpsServer.AddPollServiceHTTPHandler(
|
||||||
new PollServiceEventArgs(HttpRequestHandler,HasEvents, GetEvents, NoEvents,
|
uri,
|
||||||
urlcode));
|
new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode));
|
||||||
|
|
||||||
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
|
engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
|
||||||
}
|
}
|
||||||
|
|
|
@ -3241,12 +3241,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
// Avatar is already disposed :/
|
// Avatar is already disposed :/
|
||||||
}
|
}
|
||||||
|
|
||||||
m_log.Debug("[Scene] Beginning OnRemovePresence");
|
try
|
||||||
|
{
|
||||||
m_eventManager.TriggerOnRemovePresence(agentID);
|
m_eventManager.TriggerOnRemovePresence(agentID);
|
||||||
m_log.Debug("[Scene] Finished OnRemovePresence");
|
|
||||||
|
|
||||||
if (AttachmentsModule != null && !avatar.IsChildAgent && avatar.PresenceType != PresenceType.Npc)
|
|
||||||
AttachmentsModule.SaveChangedAttachments(avatar);
|
|
||||||
|
|
||||||
if (AttachmentsModule != null && !avatar.IsChildAgent && avatar.PresenceType != PresenceType.Npc)
|
if (AttachmentsModule != null && !avatar.IsChildAgent && avatar.PresenceType != PresenceType.Npc)
|
||||||
AttachmentsModule.SaveChangedAttachments(avatar);
|
AttachmentsModule.SaveChangedAttachments(avatar);
|
||||||
|
@ -3264,13 +3261,17 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
agentTransactions.RemoveAgentAssetTransactions(agentID);
|
agentTransactions.RemoveAgentAssetTransactions(agentID);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Remove the avatar from the scene
|
finally
|
||||||
m_log.Debug("[Scene] Begin RemoveScenePresence");
|
{
|
||||||
|
// Always clean these structures up so that any failure above doesn't cause them to remain in the
|
||||||
|
// scene with possibly bad effects (e.g. continually timing out on unacked packets and triggering
|
||||||
|
// the same cleanup exception continually.
|
||||||
|
// TODO: This should probably extend to the whole method, but we don't want to also catch the NRE
|
||||||
|
// since this would hide the underlying failure and other associated problems.
|
||||||
m_sceneGraph.RemoveScenePresence(agentID);
|
m_sceneGraph.RemoveScenePresence(agentID);
|
||||||
m_log.Debug("[Scene] Finished RemoveScenePresence. Removing the client manager");
|
|
||||||
m_clientManager.Remove(agentID);
|
m_clientManager.Remove(agentID);
|
||||||
m_log.Debug("[Scene] Removed the client manager. Firing avatar.close");
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -4470,9 +4471,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return m_sceneGraph.GetGroupByPrim(localID);
|
return m_sceneGraph.GetGroupByPrim(localID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool TryGetScenePresence(UUID avatarId, out ScenePresence avatar)
|
public override bool TryGetScenePresence(UUID agentID, out ScenePresence sp)
|
||||||
{
|
{
|
||||||
return m_sceneGraph.TryGetScenePresence(avatarId, out avatar);
|
return m_sceneGraph.TryGetScenePresence(agentID, out sp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool TryGetAvatarByName(string avatarName, out ScenePresence avatar)
|
public bool TryGetAvatarByName(string avatarName, out ScenePresence avatar)
|
||||||
|
|
|
@ -193,6 +193,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Try to get a scene presence from the scene
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="agentID"></param>
|
||||||
|
/// <param name="scenePresence">null if there is no scene presence with the given agent id</param>
|
||||||
|
/// <returns>true if there was a scene presence with the given id, false otherwise.</returns>
|
||||||
public abstract bool TryGetScenePresence(UUID agentID, out ScenePresence scenePresence);
|
public abstract bool TryGetScenePresence(UUID agentID, out ScenePresence scenePresence);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -545,23 +545,20 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool TryGetAvatarsScene(UUID avatarId, out Scene scene)
|
public bool TryGetRootScenePresence(UUID avatarId, out ScenePresence avatar)
|
||||||
{
|
{
|
||||||
ScenePresence avatar = null;
|
|
||||||
|
|
||||||
lock (m_localScenes)
|
lock (m_localScenes)
|
||||||
{
|
{
|
||||||
foreach (Scene mScene in m_localScenes)
|
foreach (Scene scene in m_localScenes)
|
||||||
{
|
{
|
||||||
if (mScene.TryGetScenePresence(avatarId, out avatar))
|
avatar = scene.GetScenePresence(avatarId);
|
||||||
{
|
|
||||||
scene = mScene;
|
if (avatar != null && !avatar.IsChildAgent)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
scene = null;
|
avatar = null;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -590,6 +587,22 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool TryGetRootScenePresenceByName(string firstName, string lastName, out ScenePresence sp)
|
||||||
|
{
|
||||||
|
lock (m_localScenes)
|
||||||
|
{
|
||||||
|
foreach (Scene scene in m_localScenes)
|
||||||
|
{
|
||||||
|
sp = scene.GetScenePresence(firstName, lastName);
|
||||||
|
if (sp != null && !sp.IsChildAgent)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sp = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public void ForEachScene(Action<Scene> action)
|
public void ForEachScene(Action<Scene> action)
|
||||||
{
|
{
|
||||||
lock (m_localScenes)
|
lock (m_localScenes)
|
||||||
|
|
BIN
bin/Nini.dll
BIN
bin/Nini.dll
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue