mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 17:55:48 +08:00
Merge branch 'avination' into careminster
Conflicts: OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
This commit is contained in:
@@ -40,19 +40,19 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||
/// </summary>
|
||||
/// <param name="agentId"></param>
|
||||
/// <param name="capsObjectPath"></param>
|
||||
void CreateCaps(UUID agentId);
|
||||
void CreateCaps(UUID agentId, uint circuitCode);
|
||||
|
||||
/// <summary>
|
||||
/// Remove the caps handler for a given agent.
|
||||
/// </summary>
|
||||
/// <param name="agentId"></param>
|
||||
void RemoveCaps(UUID agentId);
|
||||
void RemoveCaps(UUID agentId, uint circuitCode);
|
||||
|
||||
/// <summary>
|
||||
/// Will return null if the agent doesn't have a caps handler registered
|
||||
/// </summary>
|
||||
/// <param name="agentId"></param>
|
||||
Caps GetCapsForUser(UUID agentId);
|
||||
Caps GetCapsForUser(uint circuitCode);
|
||||
|
||||
void SetAgentCapsSeeds(AgentCircuitData agent);
|
||||
|
||||
@@ -65,5 +65,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||
void DropChildSeed(UUID agentID, ulong handle);
|
||||
|
||||
string GetCapsPath(UUID agentId);
|
||||
|
||||
void ActivateCaps(uint circuitCode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -276,6 +276,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
|
||||
newMotion.m_timerStopped = false;
|
||||
newMotion.m_running = true;
|
||||
newMotion.m_isCrossing = false;
|
||||
newMotion.m_waitingCrossing = false;
|
||||
}
|
||||
|
||||
@@ -2758,8 +2758,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
if (newPosition != Vector3.Zero)
|
||||
newObject.RootPart.GroupPosition = newPosition;
|
||||
if (newObject.RootPart.KeyframeMotion != null)
|
||||
newObject.RootPart.KeyframeMotion.UpdateSceneObject(newObject);
|
||||
|
||||
if (!AddSceneObject(newObject))
|
||||
{
|
||||
@@ -2787,6 +2785,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// before we restart the scripts, or else some functions won't work.
|
||||
newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, GetStateSource(newObject));
|
||||
newObject.ResumeScripts();
|
||||
|
||||
if (newObject.RootPart.KeyframeMotion != null)
|
||||
newObject.RootPart.KeyframeMotion.UpdateSceneObject(newObject);
|
||||
}
|
||||
|
||||
// Do this as late as possible so that listeners have full access to the incoming object
|
||||
@@ -3611,7 +3612,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// TODO: We shouldn't use closeChildAgents here - it's being used by the NPC module to stop
|
||||
// unnecessary operations. This should go away once NPCs have no accompanying IClientAPI
|
||||
if (closeChildAgents && CapsModule != null)
|
||||
CapsModule.RemoveCaps(agentID);
|
||||
CapsModule.RemoveCaps(agentID, avatar.ControllingClient.CircuitCode);
|
||||
|
||||
// // REFACTORING PROBLEM -- well not really a problem, but just to point out that whatever
|
||||
// // this method is doing is HORRIBLE!!!
|
||||
@@ -3842,20 +3843,36 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
ScenePresence sp = GetScenePresence(agent.AgentID);
|
||||
|
||||
if (sp != null && !sp.IsChildAgent)
|
||||
// If we have noo presence here or if that presence is a zombie root
|
||||
// presence that will be kicled, we need a new CAPS object.
|
||||
if (sp == null || (sp != null && !sp.IsChildAgent))
|
||||
{
|
||||
// We have a zombie from a crashed session.
|
||||
// Or the same user is trying to be root twice here, won't work.
|
||||
// Kill it.
|
||||
m_log.WarnFormat(
|
||||
"[SCENE]: Existing root scene presence detected for {0} {1} in {2} when connecting. Removing existing presence.",
|
||||
sp.Name, sp.UUID, RegionInfo.RegionName);
|
||||
if (CapsModule != null)
|
||||
{
|
||||
lock (agent)
|
||||
{
|
||||
CapsModule.SetAgentCapsSeeds(agent);
|
||||
CapsModule.CreateCaps(agent.AgentID, agent.circuitcode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sp.ControllingClient.Close(true, true);
|
||||
sp = null;
|
||||
if (sp != null)
|
||||
{
|
||||
if (!sp.IsChildAgent)
|
||||
{
|
||||
// We have a zombie from a crashed session.
|
||||
// Or the same user is trying to be root twice here, won't work.
|
||||
// Kill it.
|
||||
m_log.WarnFormat(
|
||||
"[SCENE]: Existing root scene presence detected for {0} {1} in {2} when connecting. Removing existing presence.",
|
||||
sp.Name, sp.UUID, RegionInfo.RegionName);
|
||||
|
||||
sp.ControllingClient.Close(true, true);
|
||||
sp = null;
|
||||
}
|
||||
}
|
||||
|
||||
lock (agent)
|
||||
@@ -3896,7 +3913,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (vialogin || (!m_seeIntoBannedRegion))
|
||||
{
|
||||
if (!AuthorizeUser(agent, out reason))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
@@ -3911,11 +3930,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
RegionInfo.RegionName, (agent.child ? "child" : "root"), agent.firstname, agent.lastname,
|
||||
agent.AgentID, agent.circuitcode);
|
||||
|
||||
if (CapsModule != null)
|
||||
{
|
||||
CapsModule.SetAgentCapsSeeds(agent);
|
||||
CapsModule.CreateCaps(agent.AgentID);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3941,6 +3955,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
agent.teleportFlags = teleportFlags;
|
||||
m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent);
|
||||
|
||||
if (CapsModule != null)
|
||||
{
|
||||
CapsModule.ActivateCaps(agent.circuitcode);
|
||||
}
|
||||
|
||||
if (vialogin)
|
||||
{
|
||||
// CleanDroppedAttachments();
|
||||
|
||||
Reference in New Issue
Block a user