Merge branch 'master' into careminster

Conflicts:
	OpenSim/Region/CoreModules/Avatar/AvatarFactory/AvatarFactoryModule.cs
avinationmerge
Melanie 2011-12-10 00:40:41 +00:00
commit 3f42183797
11 changed files with 58 additions and 105 deletions

View File

@ -311,7 +311,7 @@ namespace OpenSim.Framework
if (args.ContainsKey("packed_appearance") && (args["packed_appearance"].Type == OSDType.Map)) if (args.ContainsKey("packed_appearance") && (args["packed_appearance"].Type == OSDType.Map))
{ {
Appearance.Unpack((OSDMap)args["packed_appearance"]); Appearance.Unpack((OSDMap)args["packed_appearance"]);
m_log.InfoFormat("[AGENTCIRCUITDATA] unpacked appearance"); // m_log.InfoFormat("[AGENTCIRCUITDATA] unpacked appearance");
} }
else else
{ {

View File

@ -335,7 +335,7 @@ namespace OpenSim.Framework
public virtual OSDMap Pack() public virtual OSDMap Pack()
{ {
m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Pack data"); // m_log.InfoFormat("[CHILDAGENTDATAUPDATE] Pack data");
OSDMap args = new OSDMap(); OSDMap args = new OSDMap();
args["message_type"] = OSD.FromString("AgentData"); args["message_type"] = OSD.FromString("AgentData");

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

@ -548,7 +548,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;
@ -2465,7 +2465,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());
@ -5112,14 +5112,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>
@ -11750,7 +11742,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);
@ -11807,7 +11799,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

@ -320,10 +320,8 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
defonly = false; // found a non-default texture reference defonly = false; // found a non-default texture reference
if (!CheckBakedTextureAsset(sp, face.TextureID, idx)) if (m_scene.AssetService.Get(face.TextureID.ToString()) == null)
{ {
// the asset didn't exist if we are only checking, then we found a bad
// one and we're done otherwise, ask for a rebake
if (checkonly) if (checkonly)
return false; return false;
@ -337,24 +335,6 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
return (defonly ? false : true); return (defonly ? false : true);
} }
/// <summary>
/// Checks for the existance of a baked texture asset and
/// requests the viewer rebake if the asset is not found
/// </summary>
/// <param name="sp"></param>
/// <param name="textureID"></param>
/// <param name="idx"></param>
private bool CheckBakedTextureAsset(IScenePresence sp, UUID textureID, int idx)
{
if (m_scene.AssetService.Get(textureID.ToString()) == null)
{
m_log.InfoFormat("[AVFACTORY]: Missing baked texture {0} ({1}) for avatar {2}",
textureID, idx, sp.Name);
return false;
}
return true;
}
private Dictionary<BakeType, Primitive.TextureEntryFace> GetBakedTextureFaces(ScenePresence sp) private Dictionary<BakeType, Primitive.TextureEntryFace> GetBakedTextureFaces(ScenePresence sp)
{ {
if (sp.IsChildAgent) if (sp.IsChildAgent)

View File

@ -787,7 +787,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
m_log.Info("[SCENE]: Using the " + m_priorityScheme + " prioritization scheme"); m_log.InfoFormat("[SCENE]: Using the {0} prioritization scheme", m_priorityScheme);
#endregion Interest Management #endregion Interest Management
@ -918,9 +918,9 @@ namespace OpenSim.Region.Framework.Scenes
} }
else else
{ {
m_log.Info("[INTERGRID]: Got notice about far away Region: " + otherRegion.RegionName.ToString() + m_log.InfoFormat(
" at (" + otherRegion.RegionLocX.ToString() + ", " + "[INTERGRID]: Got notice about far away Region: {0} at ({1}, {2})",
otherRegion.RegionLocY.ToString() + ")"); otherRegion.RegionName, otherRegion.RegionLocX, otherRegion.RegionLocY);
} }
} }
} }
@ -1414,7 +1414,9 @@ namespace OpenSim.Region.Framework.Scenes
} }
catch (AccessViolationException e) catch (AccessViolationException e)
{ {
m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); m_log.ErrorFormat(
"[REGION]: Failed on region {0} with exception {1}{2}",
RegionInfo.RegionName, e.Message, e.StackTrace);
} }
//catch (NullReferenceException e) //catch (NullReferenceException e)
//{ //{
@ -1422,11 +1424,15 @@ namespace OpenSim.Region.Framework.Scenes
//} //}
catch (InvalidOperationException e) catch (InvalidOperationException e)
{ {
m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); m_log.ErrorFormat(
"[REGION]: Failed on region {0} with exception {1}{2}",
RegionInfo.RegionName, e.Message, e.StackTrace);
} }
catch (Exception e) catch (Exception e)
{ {
m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); m_log.ErrorFormat(
"[REGION]: Failed on region {0} with exception {1}{2}",
RegionInfo.RegionName, e.Message, e.StackTrace);
} }
maintc = Util.EnvironmentTickCountSubtract(maintc); maintc = Util.EnvironmentTickCountSubtract(maintc);
@ -1652,7 +1658,9 @@ namespace OpenSim.Region.Framework.Scenes
} }
catch (IOException e) catch (IOException e)
{ {
m_log.Warn("[TERRAIN]: Scene.cs: LoadWorldMap() - Failed with exception " + e.ToString() + " Regenerating"); m_log.WarnFormat(
"[TERRAIN]: Scene.cs: LoadWorldMap() - Regenerating as failed with exception {0}{1}",
e.Message, e.StackTrace);
// Non standard region size. If there's an old terrain in the database, it might read past the buffer // Non standard region size. If there's an old terrain in the database, it might read past the buffer
#pragma warning disable 0162 #pragma warning disable 0162
@ -1665,7 +1673,8 @@ namespace OpenSim.Region.Framework.Scenes
} }
catch (Exception e) catch (Exception e)
{ {
m_log.Warn("[TERRAIN]: Scene.cs: LoadWorldMap() - Failed with exception " + e.ToString()); m_log.WarnFormat(
"[TERRAIN]: Scene.cs: LoadWorldMap() - Failed with exception {0}{1}", e.Message, e.StackTrace);
} }
} }
@ -1739,7 +1748,7 @@ namespace OpenSim.Region.Framework.Scenes
List<SceneObjectGroup> PrimsFromDB = SimulationDataService.LoadObjects(regionID); List<SceneObjectGroup> PrimsFromDB = SimulationDataService.LoadObjects(regionID);
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count + " objects from the datastore"); m_log.InfoFormat("[SCENE]: Loaded {0} objects from the datastore", PrimsFromDB.Count);
foreach (SceneObjectGroup group in PrimsFromDB) foreach (SceneObjectGroup group in PrimsFromDB)
{ {
@ -1753,7 +1762,6 @@ namespace OpenSim.Region.Framework.Scenes
// group.CheckSculptAndLoad(); // group.CheckSculptAndLoad();
} }
m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)");
LoadingPrims = false; LoadingPrims = false;
EventManager.TriggerPrimsLoaded(this); EventManager.TriggerPrimsLoaded(this);
} }
@ -2413,7 +2421,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
catch (Exception e) catch (Exception e)
{ {
m_log.WarnFormat("[SCENE]: Problem casting object: " + e.ToString()); m_log.WarnFormat("[SCENE]: Problem casting object, exception {0}{1}", e.Message, e.StackTrace);
return false; return false;
} }
@ -2496,8 +2504,7 @@ namespace OpenSim.Region.Framework.Scenes
int flags = GetUserFlags(sceneObject.OwnerID); int flags = GetUserFlags(sceneObject.OwnerID);
if (m_regInfo.EstateSettings.IsBanned(sceneObject.OwnerID, flags)) if (m_regInfo.EstateSettings.IsBanned(sceneObject.OwnerID, flags))
{ {
m_log.Info("[INTERREGION]: Denied prim crossing for " + m_log.InfoFormat("[INTERREGION]: Denied prim crossing for banned avatar {0}", sceneObject.OwnerID);
"banned avatar");
return false; return false;
} }
@ -2565,8 +2572,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
// Deny non attachments based on parcel settings // Deny non attachments based on parcel settings
// //
m_log.Info("[INTERREGION]: Denied prim crossing " + m_log.Info("[INTERREGION]: Denied prim crossing because of parcel settings");
"because of parcel settings");
DeleteSceneObject(sceneObject, false); DeleteSceneObject(sceneObject, false);
@ -2629,7 +2635,8 @@ namespace OpenSim.Region.Framework.Scenes
// connected. // connected.
if (sp == null) if (sp == null)
{ {
m_log.Debug("[SCENE]: Adding new child scene presence " + client.Name + " to scene " + RegionInfo.RegionName); m_log.DebugFormat(
"[SCENE]: Adding new child scene presence {0} to scene {1}", client.Name, RegionInfo.RegionName);
m_clientManager.Add(client); m_clientManager.Add(client);
SubscribeToClientEvents(client); SubscribeToClientEvents(client);
@ -3277,7 +3284,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
catch (Exception e) catch (Exception e)
{ {
m_log.Error("[SCENE] Scene.cs:RemoveClient exception: " + e.ToString()); m_log.ErrorFormat("[SCENE] Scene.cs:RemoveClient exception {0}{1}", e.Message, e.StackTrace);
} }
m_log.Debug("[Scene] Done. Firing RemoveCircuit"); m_log.Debug("[Scene] Done. Firing RemoveCircuit");
m_authenticateHandler.RemoveCircuit(avatar.ControllingClient.CircuitCode); m_authenticateHandler.RemoveCircuit(avatar.ControllingClient.CircuitCode);
@ -3426,7 +3433,8 @@ namespace OpenSim.Region.Framework.Scenes
} }
catch (Exception e) catch (Exception e)
{ {
m_log.ErrorFormat("[CONNECTION BEGIN]: Exception verifying presence " + e.ToString()); m_log.ErrorFormat(
"[CONNECTION BEGIN]: Exception verifying presence {0}{1}", e.Message, e.StackTrace);
return false; return false;
} }
} }
@ -3443,7 +3451,8 @@ namespace OpenSim.Region.Framework.Scenes
} }
catch (Exception e) catch (Exception e)
{ {
m_log.ErrorFormat("[CONNECTION BEGIN]: Exception authorizing user " + e.ToString()); m_log.ErrorFormat(
"[CONNECTION BEGIN]: Exception authorizing user {0}{1}", e.Message, e.StackTrace);
return false; return false;
} }
@ -3664,7 +3673,9 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
else else
{
m_log.ErrorFormat("[CONNECTION BEGIN]: Estate Settings is null!"); m_log.ErrorFormat("[CONNECTION BEGIN]: Estate Settings is null!");
}
IGroupsModule groupsModule = IGroupsModule groupsModule =
RequestModuleInterface<IGroupsModule>(); RequestModuleInterface<IGroupsModule>();
@ -3682,8 +3693,10 @@ namespace OpenSim.Region.Framework.Scenes
agentGroups.Add(GroupMembership[i].GroupID); agentGroups.Add(GroupMembership[i].GroupID);
} }
else else
{
m_log.ErrorFormat("[CONNECTION BEGIN]: GroupMembership is null!"); m_log.ErrorFormat("[CONNECTION BEGIN]: GroupMembership is null!");
} }
}
bool groupAccess = false; bool groupAccess = false;
UUID[] estateGroups = m_regInfo.EstateSettings.EstateGroups; UUID[] estateGroups = m_regInfo.EstateSettings.EstateGroups;
@ -3700,7 +3713,9 @@ namespace OpenSim.Region.Framework.Scenes
} }
} }
else else
{
m_log.ErrorFormat("[CONNECTION BEGIN]: EstateGroups is null!"); m_log.ErrorFormat("[CONNECTION BEGIN]: EstateGroups is null!");
}
if (!m_regInfo.EstateSettings.PublicAccess && if (!m_regInfo.EstateSettings.PublicAccess &&
!m_regInfo.EstateSettings.HasAccess(agent.AgentID) && !m_regInfo.EstateSettings.HasAccess(agent.AgentID) &&
@ -3817,7 +3832,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
catch (Exception e) catch (Exception e)
{ {
m_log.ErrorFormat("[SCENE]: Unable to do agent crossing, exception {0}", e); m_log.ErrorFormat("[SCENE]: Unable to do agent crossing, exception {0}{1}", e.Message, e.StackTrace);
} }
} }
else else
@ -4143,7 +4158,7 @@ namespace OpenSim.Region.Framework.Scenes
/// <param name="cmdparams"></param> /// <param name="cmdparams"></param>
public void HandleEditCommand(string[] cmdparams) public void HandleEditCommand(string[] cmdparams)
{ {
m_log.Debug("Searching for Primitive: '" + cmdparams[2] + "'"); m_log.DebugFormat("Searching for Primitive: '{0}'", cmdparams[2]);
EntityBase[] entityList = GetEntities(); EntityBase[] entityList = GetEntities();
foreach (EntityBase ent in entityList) foreach (EntityBase ent in entityList)
@ -4159,7 +4174,7 @@ namespace OpenSim.Region.Framework.Scenes
new Vector3(Convert.ToSingle(cmdparams[3]), Convert.ToSingle(cmdparams[4]), new Vector3(Convert.ToSingle(cmdparams[3]), Convert.ToSingle(cmdparams[4]),
Convert.ToSingle(cmdparams[5]))); Convert.ToSingle(cmdparams[5])));
m_log.Debug("Edited scale of Primitive: " + part.Name); m_log.DebugFormat("Edited scale of Primitive: {0}", part.Name);
} }
} }
} }
@ -4188,7 +4203,6 @@ namespace OpenSim.Region.Framework.Scenes
return LandChannel.GetLandObject((int)x, (int)y).LandData; return LandChannel.GetLandObject((int)x, (int)y).LandData;
} }
#endregion #endregion
#region Script Engine #region Script Engine
@ -4367,17 +4381,6 @@ namespace OpenSim.Region.Framework.Scenes
return m_sceneGraph.GetScenePresence(localID); return m_sceneGraph.GetScenePresence(localID);
} }
/// <summary>
/// Returns true if scene presence is a child (no avatar in this scene)
/// </summary>
/// <param name="avatarID"></param>
/// <returns></returns>
public override bool PresenceChildStatus(UUID avatarID)
{
ScenePresence sp;
return TryGetScenePresence(avatarID, out sp) && sp.IsChildAgent;
}
/// <summary> /// <summary>
/// Performs action on all avatars in the scene (root scene presences) /// Performs action on all avatars in the scene (root scene presences)
/// Avatars may be an NPC or a 'real' client. /// Avatars may be an NPC or a 'real' client.

View File

@ -214,11 +214,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);
public virtual string GetSimulatorVersion() public virtual string GetSimulatorVersion()

View File

@ -624,19 +624,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
{ {
@ -753,6 +741,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
AttachmentsSyncLock = new Object(); AttachmentsSyncLock = new Object();
IsChildAgent = true;
m_sendCourseLocationsMethod = SendCoarseLocationsDefault; m_sendCourseLocationsMethod = SendCoarseLocationsDefault;
Animator = new ScenePresenceAnimator(this); Animator = new ScenePresenceAnimator(this);
PresenceType = type; PresenceType = type;

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;

View File

@ -53,7 +53,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
public const string SHOW_APPEARANCE_FORMAT = "{0,-9} {1}"; public const string SHOW_APPEARANCE_FORMAT = "{0,-9} {1}";
private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>(); private Dictionary<UUID, Scene> m_scenes = new Dictionary<UUID, Scene>();
private IAvatarFactoryModule m_avatarFactory; // private IAvatarFactoryModule m_avatarFactory;
public string Name { get { return "Appearance Information Module"; } } public string Name { get { return "Appearance Information Module"; } }