Get rid of IScene.PresenceChildStatus() which always had to execute a lookup in favour of IClientAPI.ISceneAgent.IsChildAgent instead.

0.7.2-post-fixes
Justin Clark-Casey (justincc) 2011-12-09 23:07:53 +00:00
parent 61df0da7f9
commit c3d16955a7
7 changed files with 16 additions and 60 deletions

View File

@ -89,19 +89,6 @@ namespace OpenSim.Framework
string GetSimulatorVersion(); string GetSimulatorVersion();
/// <summary>
/// Is the agent denoted by the given agentID a child presence in this scene?
/// </summary>
/// <remarks>
/// Used by ClientView when a 'kick everyone' or 'estate message' occurs
/// </remarks>
/// <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>
/// <exception cref="System.NullReferenceException">
/// Thrown if the agent does not exist.
/// </exception>
bool PresenceChildStatus(UUID agentId);
bool TryGetScenePresence(UUID agentID, out object scenePresence); bool TryGetScenePresence(UUID agentID, out object scenePresence);
/// <summary> /// <summary>

View File

@ -47,6 +47,13 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
PresenceType PresenceType { get; } PresenceType PresenceType { get; }
/// <summary>
/// If true, then the agent has no avatar in the scene.
/// The agent exists to relay data from a region that neighbours the current position of the user's avatar.
/// Occasionally data is relayed, such as which a user clicks an item in a neighbouring region.
/// </summary>
bool IsChildAgent { get; }
/// <summary> /// <summary>
/// Avatar appearance data. /// Avatar appearance data.
/// </summary> /// </summary>

View File

@ -525,7 +525,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void Kick(string message) public void Kick(string message)
{ {
if (!ChildAgentStatus()) if (!SceneAgent.IsChildAgent)
{ {
KickUserPacket kupack = (KickUserPacket)PacketPool.Instance.GetPacket(PacketType.KickUser); KickUserPacket kupack = (KickUserPacket)PacketPool.Instance.GetPacket(PacketType.KickUser);
kupack.UserInfo.AgentID = AgentId; kupack.UserInfo.AgentID = AgentId;
@ -2443,7 +2443,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
/// <param name="Message"></param> /// <param name="Message"></param>
public void SendBlueBoxMessage(UUID FromAvatarID, String FromAvatarName, String Message) public void SendBlueBoxMessage(UUID FromAvatarID, String FromAvatarName, String Message)
{ {
if (!ChildAgentStatus()) if (!SceneAgent.IsChildAgent)
SendInstantMessage(new GridInstantMessage(null, FromAvatarID, FromAvatarName, AgentId, 1, Message, false, new Vector3())); SendInstantMessage(new GridInstantMessage(null, FromAvatarID, FromAvatarName, AgentId, 1, Message, false, new Vector3()));
//SendInstantMessage(FromAvatarID, fromSessionID, Message, AgentId, SessionId, FromAvatarName, (byte)21,(uint) Util.UnixTimeSinceEpoch()); //SendInstantMessage(FromAvatarID, fromSessionID, Message, AgentId, SessionId, FromAvatarName, (byte)21,(uint) Util.UnixTimeSinceEpoch());
@ -5049,14 +5049,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return 0; return 0;
} }
/// <summary>
/// This is a utility method used by single states to not duplicate kicks and blue card of death messages.
/// </summary>
public bool ChildAgentStatus()
{
return m_scene.PresenceChildStatus(AgentId);
}
#endregion #endregion
/// <summary> /// <summary>
@ -11617,7 +11609,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (logPacket) if (logPacket)
m_log.DebugFormat( m_log.DebugFormat(
"[CLIENT]: PACKET OUT to {0} ({1}) in {2} - {3}", "[CLIENT]: PACKET OUT to {0} ({1}) in {2} - {3}",
Name, ChildAgentStatus() ? "child" : "root ", m_scene.RegionInfo.RegionName, packet.Type); Name, SceneAgent.IsChildAgent ? "child" : "root ", m_scene.RegionInfo.RegionName, packet.Type);
} }
m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting, method); m_udpServer.SendPacket(m_udpClient, packet, throttlePacketType, doAutomaticSplitting, method);
@ -11674,7 +11666,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (logPacket) if (logPacket)
m_log.DebugFormat( m_log.DebugFormat(
"[CLIENT]: PACKET IN from {0} ({1}) in {2} - {3}", "[CLIENT]: PACKET IN from {0} ({1}) in {2} - {3}",
Name, ChildAgentStatus() ? "child" : "root ", m_scene.RegionInfo.RegionName, packet.Type); Name, SceneAgent.IsChildAgent ? "child" : "root ", m_scene.RegionInfo.RegionName, packet.Type);
} }
if (!ProcessPacketMethod(packet)) if (!ProcessPacketMethod(packet))

View File

@ -4193,20 +4193,6 @@ namespace OpenSim.Region.Framework.Scenes
return m_sceneGraph.GetScenePresence(localID); return m_sceneGraph.GetScenePresence(localID);
} }
public override bool PresenceChildStatus(UUID avatarID)
{
ScenePresence cp = GetScenePresence(avatarID);
// FIXME: This is really crap - some logout code is relying on a NullReferenceException to halt its processing
// This needs to be fixed properly by cleaning up the logout code.
//if (cp != null)
// return cp.IsChildAgent;
//return false;
return cp.IsChildAgent;
}
/// <summary> /// <summary>
/// Performs action on all ROOT (not child) scene presences. /// Performs action on all ROOT (not child) scene presences.
/// This is just a shortcut function since frequently actions only appy to root SPs /// This is just a shortcut function since frequently actions only appy to root SPs

View File

@ -211,11 +211,6 @@ namespace OpenSim.Region.Framework.Scenes
} }
#region admin stuff #region admin stuff
public virtual bool PresenceChildStatus(UUID avatarID)
{
return false;
}
public abstract void OtherRegionUp(GridRegion otherRegion); public abstract void OtherRegionUp(GridRegion otherRegion);

View File

@ -589,19 +589,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
/// <summary> public bool IsChildAgent { get; set; }
/// If this is true, agent doesn't have a representation in this scene.
/// this is an agent 'looking into' this scene from a nearby scene(region)
///
/// if False, this agent has a representation in this scene
/// </summary>
private bool m_isChildAgent = true;
public bool IsChildAgent
{
get { return m_isChildAgent; }
set { m_isChildAgent = value; }
}
public uint ParentID public uint ParentID
{ {
@ -730,6 +718,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
AttachmentsSyncLock = new Object(); AttachmentsSyncLock = new Object();
IsChildAgent = true;
m_sendCourseLocationsMethod = SendCoarseLocationsDefault; m_sendCourseLocationsMethod = SendCoarseLocationsDefault;
m_sceneViewer = new SceneViewer(this); m_sceneViewer = new SceneViewer(this);
m_animator = new ScenePresenceAnimator(this); m_animator = new ScenePresenceAnimator(this);

View File

@ -219,7 +219,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
{ {
if (client is LLClientView) if (client is LLClientView)
{ {
bool isChild = scene.PresenceChildStatus(client.AgentId); bool isChild = client.SceneAgent.IsChildAgent;
if (isChild && !showChildren) if (isChild && !showChildren)
return; return;
@ -308,7 +308,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
{ {
if (client is IStatsCollector) if (client is IStatsCollector)
{ {
bool isChild = scene.PresenceChildStatus(client.AgentId); bool isChild = client.SceneAgent.IsChildAgent;
if (isChild && !showChildren) if (isChild && !showChildren)
return; return;
@ -404,7 +404,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
firstClient = false; firstClient = false;
} }
bool isChild = scene.PresenceChildStatus(client.AgentId); bool isChild = client.SceneAgent.IsChildAgent;
if (isChild && !showChildren) if (isChild && !showChildren)
return; return;