Code cleanup related to ScenePresence.PhysicsActor and OdeScene/OdeCharacter

Stop hiding RemoveAvatar failure, add log messages when characters are removed through defects or re-added unexpectedly.
Add commented out log lines for future use.
Use automatic property for PhysicsActor for better code readability and simplicity
This commit is contained in:
Justin Clark-Casey (justincc)
2011-12-15 21:57:22 +00:00
parent 6f2d80cc93
commit 937c06db54
3 changed files with 56 additions and 35 deletions

View File

@@ -285,16 +285,10 @@ namespace OpenSim.Region.Framework.Scenes
#region Properties
protected PhysicsActor m_physicsActor;
/// <summary>
/// Physical scene representation of this Avatar.
/// </summary>
public PhysicsActor PhysicsActor
{
set { m_physicsActor = value; }
get { return m_physicsActor; }
}
public PhysicsActor PhysicsActor { get; private set; }
private byte m_movementflag;
@@ -1032,18 +1026,19 @@ namespace OpenSim.Region.Framework.Scenes
{
if (PhysicsActor != null)
{
try
{
PhysicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients;
PhysicsActor.OnOutOfBounds -= OutOfBoundsCall;
m_scene.PhysicsScene.RemoveAvatar(PhysicsActor);
PhysicsActor.UnSubscribeEvents();
PhysicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate;
PhysicsActor = null;
}
catch
{ }
// PhysicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients;
PhysicsActor.OnOutOfBounds -= OutOfBoundsCall;
m_scene.PhysicsScene.RemoveAvatar(PhysicsActor);
PhysicsActor.UnSubscribeEvents();
PhysicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate;
PhysicsActor = null;
}
// else
// {
// m_log.ErrorFormat(
// "[SCENE PRESENCE]: Attempt to remove physics actor for {0} on {1} but this scene presence has no physics actor",
// Name, Scene.RegionInfo.RegionName);
// }
}
/// <summary>
@@ -1925,7 +1920,7 @@ namespace OpenSim.Region.Framework.Scenes
// m_log.DebugFormat("[SCENE PRESENCE]: {0} {1}", SitTargetisSet, SitTargetUnOccupied);
if (PhysicsActor != null)
m_sitAvatarHeight = m_physicsActor.Size.Z;
m_sitAvatarHeight = PhysicsActor.Size.Z;
bool canSit = false;
pos = part.AbsolutePosition + offset;
@@ -2570,7 +2565,10 @@ namespace OpenSim.Region.Framework.Scenes
// only send update from root agents to other clients; children are only "listening posts"
if (IsChildAgent)
{
m_log.Warn("[SCENE PRESENCE]: Attempt to send avatar data from a child agent");
m_log.WarnFormat(
"[SCENE PRESENCE]: Attempt to send avatar data from a child agent for {0} in {1}",
Name, Scene.RegionInfo.RegionName);
return;
}
@@ -2628,7 +2626,10 @@ namespace OpenSim.Region.Framework.Scenes
// only send update from root agents to other clients; children are only "listening posts"
if (IsChildAgent)
{
m_log.Warn("[SCENE PRESENCE]: Attempt to send avatar data from a child agent");
m_log.WarnFormat(
"[SCENE PRESENCE]: Attempt to send avatar data from a child agent for {0} in {1}",
Name, Scene.RegionInfo.RegionName);
return;
}
@@ -3039,8 +3040,6 @@ namespace OpenSim.Region.Framework.Scenes
CameraPosition = cAgentData.Center + offset;
//SetHeight(cAgentData.AVHeight);
if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0)
ControllingClient.SetChildAgentThrottle(cAgentData.Throttles);
@@ -3251,6 +3250,13 @@ namespace OpenSim.Region.Framework.Scenes
// "[SCENE PRESENCE]: Adding physics actor for {0}, ifFlying = {1} in {2}",
// Name, isFlying, Scene.RegionInfo.RegionName);
if (PhysicsActor != null)
{
m_log.ErrorFormat(
"[SCENE PRESENCE]: Adding physics actor for {0} to {1} but this scene presence already has a physics actor",
Name, Scene.RegionInfo.RegionName);
}
if (Appearance.AvatarHeight == 0)
Appearance.SetHeight();
@@ -3258,11 +3264,10 @@ namespace OpenSim.Region.Framework.Scenes
Vector3 pVec = AbsolutePosition;
// Old bug where the height was in centimeters instead of meters
PhysicsActor = scene.AddAvatar(LocalId, Firstname + "." + Lastname, pVec,
new Vector3(0f, 0f, Appearance.AvatarHeight), isFlying);
PhysicsActor = scene.AddAvatar(
LocalId, Firstname + "." + Lastname, pVec,
new Vector3(0f, 0f, Appearance.AvatarHeight), isFlying);
scene.AddPhysicsActorTaint(PhysicsActor);
//PhysicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients;
PhysicsActor.OnCollisionUpdate += PhysicsCollisionUpdate;
PhysicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong