* Remove redundancies in ScenePresence

0.6.5-rc1
Teravus Ovares 2009-03-28 02:41:51 +00:00
parent f5812b3702
commit 67be0213d4
1 changed files with 59 additions and 63 deletions

View File

@ -28,10 +28,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Reflection; using System.Reflection;
using System.Runtime.Serialization;
using System.Security.Permissions;
using OpenMetaverse; using OpenMetaverse;
using OpenMetaverse.Packets;
using log4net; using log4net;
using OpenSim.Framework; using OpenSim.Framework;
using OpenSim.Framework.Client; using OpenSim.Framework.Client;
@ -39,7 +36,6 @@ using OpenSim.Framework.Communications.Cache;
using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes.Types; using OpenSim.Region.Framework.Scenes.Types;
using OpenSim.Region.Physics.Manager; using OpenSim.Region.Physics.Manager;
using OSD = OpenMetaverse.StructuredData.OSD;
namespace OpenSim.Region.Framework.Scenes namespace OpenSim.Region.Framework.Scenes
{ {
@ -83,24 +79,24 @@ namespace OpenSim.Region.Framework.Scenes
private ScriptControlled IgnoredControls = ScriptControlled.CONTROL_ZERO; private ScriptControlled IgnoredControls = ScriptControlled.CONTROL_ZERO;
private ScriptControlled LastCommands = ScriptControlled.CONTROL_ZERO; private ScriptControlled LastCommands = ScriptControlled.CONTROL_ZERO;
private bool MouseDown = false; private bool MouseDown = false;
private SceneObjectGroup proxyObjectGroup = null; private SceneObjectGroup proxyObjectGroup;
//private SceneObjectPart proxyObjectPart = null; //private SceneObjectPart proxyObjectPart = null;
public Vector3 lastKnownAllowedPosition = new Vector3(); public Vector3 lastKnownAllowedPosition;
public bool sentMessageAboutRestrictedParcelFlyingDown = false; public bool sentMessageAboutRestrictedParcelFlyingDown;
private bool m_updateflag = false; private bool m_updateflag;
private byte m_movementflag = 0; private byte m_movementflag;
private readonly List<NewForce> m_forcesList = new List<NewForce>(); private readonly List<NewForce> m_forcesList = new List<NewForce>();
private short m_updateCount = 0; private short m_updateCount;
private uint m_requestedSitTargetID = 0; private uint m_requestedSitTargetID;
private UUID m_requestedSitTargetUUID = UUID.Zero; private UUID m_requestedSitTargetUUID = UUID.Zero;
private bool m_startAnimationSet = false; private bool m_startAnimationSet;
//private Vector3 m_requestedSitOffset = new Vector3(); //private Vector3 m_requestedSitOffset = new Vector3();
private Vector3 m_LastFinitePos = new Vector3(); private Vector3 m_LastFinitePos;
private float m_sitAvatarHeight = 2.0f; private float m_sitAvatarHeight = 2.0f;
@ -111,26 +107,26 @@ namespace OpenSim.Region.Framework.Scenes
// rotation, prim cut, prim twist, prim taper, and prim shear. See mantis // rotation, prim cut, prim twist, prim taper, and prim shear. See mantis
// issue #1716 // issue #1716
private static readonly Vector3 m_sitTargetCorrectionOffset = new Vector3(0.1f, 0.0f, 0.3f); private static readonly Vector3 m_sitTargetCorrectionOffset = new Vector3(0.1f, 0.0f, 0.3f);
private float m_godlevel = 0; private float m_godlevel;
private bool m_invulnerable = true; private bool m_invulnerable = true;
private Vector3 m_LastChildAgentUpdatePosition = new Vector3(); private Vector3 m_LastChildAgentUpdatePosition;
private int m_perfMonMS = 0; private int m_perfMonMS;
private bool m_sitStatus = false; private bool m_sitStatus;
private bool m_setAlwaysRun = false; private bool m_setAlwaysRun;
private Quaternion m_bodyRot= Quaternion.Identity; private Quaternion m_bodyRot= Quaternion.Identity;
public bool IsRestrictedToRegion = false; public bool IsRestrictedToRegion;
public string JID = string.Empty; public string JID = string.Empty;
// Agent moves with a PID controller causing a force to be exerted. // Agent moves with a PID controller causing a force to be exerted.
private bool m_newForce = false; private bool m_newForce;
private bool m_newCoarseLocations = true; private bool m_newCoarseLocations = true;
private float m_health = 100f; private float m_health = 100f;
@ -140,7 +136,7 @@ namespace OpenSim.Region.Framework.Scenes
private float m_avHeight = 127.0f; private float m_avHeight = 127.0f;
protected RegionInfo m_regionInfo; protected RegionInfo m_regionInfo;
protected ulong crossingFromRegion = 0; protected ulong crossingFromRegion;
private readonly Vector3[] Dir_Vectors = new Vector3[6]; private readonly Vector3[] Dir_Vectors = new Vector3[6];
@ -162,27 +158,27 @@ namespace OpenSim.Region.Framework.Scenes
protected Vector3 m_CameraAtAxis = Vector3.Zero; protected Vector3 m_CameraAtAxis = Vector3.Zero;
protected Vector3 m_CameraLeftAxis = Vector3.Zero; protected Vector3 m_CameraLeftAxis = Vector3.Zero;
protected Vector3 m_CameraUpAxis = Vector3.Zero; protected Vector3 m_CameraUpAxis = Vector3.Zero;
private uint m_AgentControlFlags = 0; private uint m_AgentControlFlags;
private Quaternion m_headrotation = Quaternion.Identity; private Quaternion m_headrotation = Quaternion.Identity;
private byte m_state = 0; private byte m_state;
//Reuse the Vector3 instead of creating a new one on the UpdateMovement method //Reuse the Vector3 instead of creating a new one on the UpdateMovement method
private Vector3 movementvector = Vector3.Zero; private Vector3 movementvector = Vector3.Zero;
private bool m_autopilotMoving = false; private bool m_autopilotMoving;
private Vector3 m_autoPilotTarget = Vector3.Zero; private Vector3 m_autoPilotTarget = Vector3.Zero;
private bool m_sitAtAutoTarget = false; private bool m_sitAtAutoTarget;
private string m_nextSitAnimation = String.Empty; private string m_nextSitAnimation = String.Empty;
//PauPaw:Proper PID Controler for autopilot************ //PauPaw:Proper PID Controler for autopilot************
private bool m_moveToPositionInProgress = false; private bool m_moveToPositionInProgress;
private Vector3 m_moveToPositionTarget = Vector3.Zero; private Vector3 m_moveToPositionTarget = Vector3.Zero;
//private int m_moveToPositionStateStatus = 0; //private int m_moveToPositionStateStatus = 0;
//***************************************************** //*****************************************************
// Agent's Draw distance. // Agent's Draw distance.
protected float m_DrawDistance = 0f; protected float m_DrawDistance;
protected AvatarAppearance m_appearance; protected AvatarAppearance m_appearance;
@ -209,10 +205,10 @@ namespace OpenSim.Region.Framework.Scenes
/// <summary> /// <summary>
/// Position at which a significant movement was made /// Position at which a significant movement was made
/// </summary> /// </summary>
private Vector3 posLastSignificantMove = new Vector3(); private Vector3 posLastSignificantMove;
private UpdateQueue m_partsUpdateQueue = new UpdateQueue(); private UpdateQueue m_partsUpdateQueue = new UpdateQueue();
private Queue<SceneObjectGroup> m_pendingObjects = null; private Queue<SceneObjectGroup> m_pendingObjects;
private Dictionary<UUID, ScenePartUpdate> m_updateTimes = new Dictionary<UUID, ScenePartUpdate>(); private Dictionary<UUID, ScenePartUpdate> m_updateTimes = new Dictionary<UUID, ScenePartUpdate>();
@ -374,7 +370,7 @@ namespace OpenSim.Region.Framework.Scenes
get { return (IClientCore) m_controllingClient; } get { return (IClientCore) m_controllingClient; }
} }
protected Vector3 m_parentPosition = new Vector3(); protected Vector3 m_parentPosition;
public Vector3 ParentPosition public Vector3 ParentPosition
{ {
get { return m_parentPosition; } get { return m_parentPosition; }
@ -472,7 +468,7 @@ namespace OpenSim.Region.Framework.Scenes
set { m_isChildAgent = value; } set { m_isChildAgent = value; }
} }
private uint m_parentID = 0; private uint m_parentID;
public uint ParentID public uint ParentID
{ {
@ -693,7 +689,7 @@ namespace OpenSim.Region.Framework.Scenes
// this.UpdateQuadTreeNode(); // this.UpdateQuadTreeNode();
//this.RefreshQuadObject(); //this.RefreshQuadObject();
//} //}
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
if (m_pendingObjects == null) if (m_pendingObjects == null)
{ {
@ -811,7 +807,7 @@ namespace OpenSim.Region.Framework.Scenes
break; break;
} }
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
} }
#region Status Methods #region Status Methods
@ -1129,7 +1125,7 @@ namespace OpenSim.Region.Framework.Scenes
//} //}
//} //}
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
uint flags = agentData.ControlFlags; uint flags = agentData.ControlFlags;
Quaternion bodyRotation = agentData.BodyRotation; Quaternion bodyRotation = agentData.BodyRotation;
@ -1167,7 +1163,7 @@ namespace OpenSim.Region.Framework.Scenes
if (scriptedcontrols.Count > 0) if (scriptedcontrols.Count > 0)
{ {
SendControlToScripts(flags); SendControlToScripts(flags);
flags = this.RemoveIgnoredControls(flags, IgnoredControls); flags = RemoveIgnoredControls(flags, IgnoredControls);
} }
} }
@ -1394,7 +1390,7 @@ namespace OpenSim.Region.Framework.Scenes
m_scene.EventManager.TriggerOnClientMovement(this); m_scene.EventManager.TriggerOnClientMovement(this);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
} }
public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client) public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client)
@ -1450,7 +1446,7 @@ namespace OpenSim.Region.Framework.Scenes
catch (Exception ex) catch (Exception ex)
{ {
//Why did I get this error? //Why did I get this error?
m_log.Error("[SCENEPRESENCE]: DoMoveToPosition" + ex.ToString()); m_log.Error("[SCENEPRESENCE]: DoMoveToPosition" + ex);
} }
} }
@ -1473,6 +1469,7 @@ namespace OpenSim.Region.Framework.Scenes
//ControllingClient.SendSitResponse(m_requestedSitTargetID, m_requestedSitOffset, Quaternion.Identity, false, Vector3.Zero, Vector3.Zero, false); //ControllingClient.SendSitResponse(m_requestedSitTargetID, m_requestedSitOffset, Quaternion.Identity, false, Vector3.Zero, Vector3.Zero, false);
m_requestedSitTargetUUID = UUID.Zero; m_requestedSitTargetUUID = UUID.Zero;
} }
/*
else else
{ {
//ControllingClient.SendAlertMessage("Autopilot cancelled"); //ControllingClient.SendAlertMessage("Autopilot cancelled");
@ -1489,7 +1486,7 @@ namespace OpenSim.Region.Framework.Scenes
//m_scene.DeleteSceneObject(proxyObjectGroup); //m_scene.DeleteSceneObject(proxyObjectGroup);
//} //}
} }
*/
m_autoPilotTarget = Vector3.Zero; m_autoPilotTarget = Vector3.Zero;
m_autopilotMoving = false; m_autopilotMoving = false;
} }
@ -1724,7 +1721,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
else else
{ {
m_log.Warn("Sit requested on unknown object: " + targetID.ToString()); m_log.Warn("Sit requested on unknown object: " + targetID);
} }
SendSitResponse(remoteClient, targetID, offset); SendSitResponse(remoteClient, targetID, offset);
@ -1796,12 +1793,12 @@ namespace OpenSim.Region.Framework.Scenes
/// Event handler for the 'Always run' setting on the client /// Event handler for the 'Always run' setting on the client
/// Tells the physics plugin to increase speed of movement. /// Tells the physics plugin to increase speed of movement.
/// </summary> /// </summary>
public void HandleSetAlwaysRun(IClientAPI remoteClient, bool SetAlwaysRun) public void HandleSetAlwaysRun(IClientAPI remoteClient, bool pSetAlwaysRun)
{ {
m_setAlwaysRun = SetAlwaysRun; m_setAlwaysRun = pSetAlwaysRun;
if (PhysicsActor != null) if (PhysicsActor != null)
{ {
PhysicsActor.SetAlwaysRun = SetAlwaysRun; PhysicsActor.SetAlwaysRun = pSetAlwaysRun;
} }
} }
public BinBVHAnimation GenerateRandomAnimation() public BinBVHAnimation GenerateRandomAnimation()
@ -2036,7 +2033,7 @@ namespace OpenSim.Region.Framework.Scenes
return; return;
} }
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
m_rotation = rotation; m_rotation = rotation;
NewForce newVelocity = new NewForce(); NewForce newVelocity = new NewForce();
@ -2079,7 +2076,7 @@ namespace OpenSim.Region.Framework.Scenes
newVelocity.Z = direc.Z; newVelocity.Z = direc.Z;
m_forcesList.Add(newVelocity); m_forcesList.Add(newVelocity);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
} }
#endregion #endregion
@ -2142,16 +2139,16 @@ namespace OpenSim.Region.Framework.Scenes
// server. // server.
if (remoteClient.IsActive) if (remoteClient.IsActive)
{ {
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
Vector3 pos = m_pos; Vector3 pos = m_pos;
Vector3 vel = Velocity; Vector3 vel = Velocity;
Quaternion rot = m_bodyRot; Quaternion rot = m_bodyRot;
pos.Z -= m_appearance.HipOffset; pos.Z -= m_appearance.HipOffset;
remoteClient.SendAvatarTerseUpdate(m_regionHandle, (ushort)(m_scene.TimeDilation * (float)ushort.MaxValue), LocalId, new Vector3(pos.X, pos.Y, pos.Z), remoteClient.SendAvatarTerseUpdate(m_regionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId, new Vector3(pos.X, pos.Y, pos.Z),
new Vector3(vel.X, vel.Y, vel.Z), rot); new Vector3(vel.X, vel.Y, vel.Z), rot);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
m_scene.AddAgentUpdates(1); m_scene.AddAgentUpdates(1);
} }
} }
@ -2161,7 +2158,7 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
public void SendTerseUpdateToAllClients() public void SendTerseUpdateToAllClients()
{ {
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
m_scene.Broadcast(SendTerseUpdateToClient); m_scene.Broadcast(SendTerseUpdateToClient);
@ -2169,13 +2166,13 @@ namespace OpenSim.Region.Framework.Scenes
lastPhysPos = AbsolutePosition; lastPhysPos = AbsolutePosition;
lastPhysRot = m_bodyRot; lastPhysRot = m_bodyRot;
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
} }
public void SendCoarseLocations() public void SendCoarseLocations()
{ {
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
List<Vector3> CoarseLocations = new List<Vector3>(); List<Vector3> CoarseLocations = new List<Vector3>();
List<UUID> AvatarUUIDs = new List<UUID>(); List<UUID> AvatarUUIDs = new List<UUID>();
@ -2210,7 +2207,7 @@ namespace OpenSim.Region.Framework.Scenes
m_controllingClient.SendCoarseLocationUpdate(AvatarUUIDs, CoarseLocations); m_controllingClient.SendCoarseLocationUpdate(AvatarUUIDs, CoarseLocations);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
} }
public void CoarseLocationChange() public void CoarseLocationChange()
@ -2252,7 +2249,7 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
public void SendInitialFullUpdateToAllClients() public void SendInitialFullUpdateToAllClients()
{ {
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
List<ScenePresence> avatars = m_scene.GetScenePresences(); List<ScenePresence> avatars = m_scene.GetScenePresences();
foreach (ScenePresence avatar in avatars) foreach (ScenePresence avatar in avatars)
@ -2269,24 +2266,23 @@ namespace OpenSim.Region.Framework.Scenes
{ {
if (!avatar.IsChildAgent) if (!avatar.IsChildAgent)
{ {
m_log.Debug(DateTime.Now.ToString());
avatar.SendFullUpdateToOtherClient(this); avatar.SendFullUpdateToOtherClient(this);
avatar.SendAppearanceToOtherAgent(this); avatar.SendAppearanceToOtherAgent(this);
if (m_sitStatus) if (m_sitStatus)
GenerateRandomAnimation(); GenerateRandomAnimation();
avatar.SendAnimPackToClient(this.ControllingClient); avatar.SendAnimPackToClient(ControllingClient);
} }
} }
} }
m_scene.AddAgentUpdates(avatars.Count); m_scene.AddAgentUpdates(avatars.Count);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
//SendAnimPack(); //SendAnimPack();
} }
public void SendFullUpdateToAllClients() public void SendFullUpdateToAllClients()
{ {
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
if (m_sitStatus) if (m_sitStatus)
GenerateRandomAnimation(); GenerateRandomAnimation();
@ -2298,7 +2294,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
m_scene.AddAgentUpdates(avatars.Count); m_scene.AddAgentUpdates(avatars.Count);
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
SendAnimPack(); SendAnimPack();
} }
@ -2333,7 +2329,6 @@ namespace OpenSim.Region.Framework.Scenes
/// <summary> /// <summary>
/// Tell the client for this scene presence what items it should be wearing now /// Tell the client for this scene presence what items it should be wearing now
/// </summary> /// </summary>
/// <param name="client"></param>
public void SendWearables() public void SendWearables()
{ {
ControllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++); ControllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++);
@ -2344,7 +2339,7 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
public void SendAppearanceToAllOtherAgents() public void SendAppearanceToAllOtherAgents()
{ {
m_perfMonMS = System.Environment.TickCount; m_perfMonMS = Environment.TickCount;
m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
{ {
@ -2354,7 +2349,7 @@ namespace OpenSim.Region.Framework.Scenes
} }
}); });
m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); m_scene.AddAgentTime(Environment.TickCount - m_perfMonMS);
} }
/// <summary> /// <summary>
@ -2421,6 +2416,7 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary> /// </summary>
/// <param name="animations"></param> /// <param name="animations"></param>
/// <param name="seqs"></param> /// <param name="seqs"></param>
/// <param name="objectIDs"></param>
public void SendAnimPack(UUID[] animations, int[] seqs, UUID[] objectIDs) public void SendAnimPack(UUID[] animations, int[] seqs, UUID[] objectIDs)
{ {
if (m_isChildAgent) if (m_isChildAgent)
@ -2759,7 +2755,7 @@ namespace OpenSim.Region.Framework.Scenes
int innacurateNeighbors = m_scene.GetInaccurateNeighborCount(); int innacurateNeighbors = m_scene.GetInaccurateNeighborCount();
if (innacurateNeighbors != 0) if (innacurateNeighbors != 0)
{ {
multiplier = 1f / (float)innacurateNeighbors; multiplier = 1f / innacurateNeighbors;
} }
if (multiplier <= 0f) if (multiplier <= 0f)
{ {
@ -3369,7 +3365,7 @@ namespace OpenSim.Region.Framework.Scenes
LastCommands = allflags; LastCommands = allflags;
} }
internal uint RemoveIgnoredControls(uint flags, ScriptControlled Ignored) internal static uint RemoveIgnoredControls(uint flags, ScriptControlled Ignored)
{ {
if (Ignored == ScriptControlled.CONTROL_ZERO) if (Ignored == ScriptControlled.CONTROL_ZERO)
return flags; return flags;
@ -3460,7 +3456,7 @@ namespace OpenSim.Region.Framework.Scenes
{ {
// Attach from world, if not already attached // Attach from world, if not already attached
if (att.ParentGroup != null && !att.IsAttachment) if (att.ParentGroup != null && !att.IsAttachment)
m_scene.AttachObject(ControllingClient, att.ParentGroup.LocalId, (uint)0, Quaternion.Identity, att.ParentGroup.AbsolutePosition, false); m_scene.AttachObject(ControllingClient, att.ParentGroup.LocalId, 0, Quaternion.Identity, att.ParentGroup.AbsolutePosition, false);
} }
catch (NullReferenceException) catch (NullReferenceException)
{ {