Some more changes to catch up with core
parent
cc8e693fb9
commit
0f279b1187
|
@ -146,6 +146,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
private bool m_flyingOld; // add for fly velocity control
|
private bool m_flyingOld; // add for fly velocity control
|
||||||
public bool m_wasFlying; // add for fly velocity control
|
public bool m_wasFlying; // add for fly velocity control
|
||||||
|
|
||||||
|
private int m_lastColCount = -1; //KF: Look for Collision chnages
|
||||||
|
private int m_updateCount = 0; //KF: Update Anims for a while
|
||||||
|
private static readonly int UPDATE_COUNT = 10; // how many frames to update for
|
||||||
|
private List<uint> m_lastColliders = new List<uint>();
|
||||||
|
|
||||||
private TeleportFlags m_teleportFlags;
|
private TeleportFlags m_teleportFlags;
|
||||||
public TeleportFlags TeleportFlags
|
public TeleportFlags TeleportFlags
|
||||||
{
|
{
|
||||||
|
@ -208,13 +213,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
private bool m_followCamAuto;
|
private bool m_followCamAuto;
|
||||||
|
|
||||||
private int m_movementUpdateCount;
|
private int m_movementUpdateCount;
|
||||||
private int m_lastColCount = -1; //KF: Look for Collision chnages
|
|
||||||
private int m_updateCount = 0; //KF: Update Anims for a while
|
|
||||||
private static readonly int UPDATE_COUNT = 10; // how many frames to update for
|
|
||||||
private const int NumMovementsBetweenRayCast = 5;
|
private const int NumMovementsBetweenRayCast = 5;
|
||||||
private List<uint> m_lastColliders = new List<uint>();
|
|
||||||
|
|
||||||
private object m_syncRoot = new Object();
|
|
||||||
|
|
||||||
private bool CameraConstraintActive;
|
private bool CameraConstraintActive;
|
||||||
//private int m_moveToPositionStateStatus;
|
//private int m_moveToPositionStateStatus;
|
||||||
|
@ -255,7 +254,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS,
|
DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS,
|
||||||
DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG,
|
DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG,
|
||||||
DIR_CONTROL_FLAG_FORWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS,
|
DIR_CONTROL_FLAG_FORWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS,
|
||||||
DIR_CONTROL_FLAG_BACK_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG,
|
DIR_CONTROL_FLAG_BACKWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG,
|
||||||
DIR_CONTROL_FLAG_LEFT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS,
|
DIR_CONTROL_FLAG_LEFT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS,
|
||||||
DIR_CONTROL_FLAG_RIGHT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG,
|
DIR_CONTROL_FLAG_RIGHT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG,
|
||||||
DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG
|
DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG
|
||||||
|
@ -496,11 +495,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
PhysicsActor actor = m_physicsActor;
|
if (PhysicsActor != null && m_parentID == 0)
|
||||||
// if (actor != null)
|
{
|
||||||
if ((actor != null) && (m_parentID == 0)) // KF Do NOT update m_pos here if Av is sitting!
|
m_pos = PhysicsActor.Position;
|
||||||
{
|
|
||||||
m_pos = actor.Position;
|
|
||||||
|
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
// "[SCENE PRESENCE]: Set position {0} for {1} in {2} via getting AbsolutePosition!",
|
// "[SCENE PRESENCE]: Set position {0} for {1} in {2} via getting AbsolutePosition!",
|
||||||
|
@ -551,10 +548,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Changed this to update unconditionally to make npose work
|
m_pos = value;
|
||||||
// if (m_parentID == 0) // KF Do NOT update m_pos here if Av is sitting!
|
ParentPosition = Vector3.Zero;
|
||||||
m_pos = value;
|
|
||||||
m_parentPosition = Vector3.Zero;
|
|
||||||
|
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
// "[ENTITY BASE]: In {0} set AbsolutePosition of {1} to {2}",
|
// "[ENTITY BASE]: In {0} set AbsolutePosition of {1} to {2}",
|
||||||
|
@ -637,15 +632,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
set { m_isChildAgent = value; }
|
set { m_isChildAgent = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private uint m_parentID;
|
|
||||||
|
|
||||||
|
|
||||||
public uint ParentID
|
public uint ParentID
|
||||||
{
|
{
|
||||||
get { return m_parentID; }
|
get { return m_parentID; }
|
||||||
set { m_parentID = value; }
|
set { m_parentID = value; }
|
||||||
}
|
}
|
||||||
|
private uint m_parentID;
|
||||||
|
|
||||||
public float Health
|
public float Health
|
||||||
{
|
{
|
||||||
|
@ -797,7 +789,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_reprioritization_timer.AutoReset = false;
|
m_reprioritization_timer.AutoReset = false;
|
||||||
|
|
||||||
AdjustKnownSeeds();
|
AdjustKnownSeeds();
|
||||||
|
|
||||||
|
// TODO: I think, this won't send anything, as we are still a child here...
|
||||||
Animator.TrySetMovementAnimation("STAND");
|
Animator.TrySetMovementAnimation("STAND");
|
||||||
|
|
||||||
// we created a new ScenePresence (a new child agent) in a fresh region.
|
// we created a new ScenePresence (a new child agent) in a fresh region.
|
||||||
// Request info about all the (root) agents in this region
|
// Request info about all the (root) agents in this region
|
||||||
// Note: This won't send data *to* other clients in that region (children don't send)
|
// Note: This won't send data *to* other clients in that region (children don't send)
|
||||||
|
@ -861,7 +856,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
vector[10] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_NUDGE
|
vector[10] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_NUDGE
|
||||||
return vector;
|
return vector;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public uint GenerateClientFlags(UUID ObjectID)
|
public uint GenerateClientFlags(UUID ObjectID)
|
||||||
|
@ -876,8 +871,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SendPrimUpdates()
|
public void SendPrimUpdates()
|
||||||
{
|
{
|
||||||
m_sceneViewer.SendPrimUpdates();
|
|
||||||
|
|
||||||
SceneViewer.SendPrimUpdates();
|
SceneViewer.SendPrimUpdates();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1117,11 +1110,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_physicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients;
|
PhysicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients;
|
||||||
m_physicsActor.OnOutOfBounds -= OutOfBoundsCall;
|
PhysicsActor.OnOutOfBounds -= OutOfBoundsCall;
|
||||||
m_physicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate;
|
|
||||||
m_scene.PhysicsScene.RemoveAvatar(PhysicsActor);
|
m_scene.PhysicsScene.RemoveAvatar(PhysicsActor);
|
||||||
m_physicsActor.UnSubscribeEvents();
|
PhysicsActor.UnSubscribeEvents();
|
||||||
|
PhysicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate;
|
||||||
PhysicsActor = null;
|
PhysicsActor = null;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
@ -1146,7 +1139,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
AddToPhysicalScene(isFlying);
|
AddToPhysicalScene(isFlying);
|
||||||
|
|
||||||
SendTerseUpdateToAllClients();
|
SendTerseUpdateToAllClients();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TeleportWithMomentum(Vector3 pos)
|
public void TeleportWithMomentum(Vector3 pos)
|
||||||
|
@ -1361,15 +1353,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This is the event handler for client movement. If a client is moving, this event is triggering.
|
|
||||||
/// </summary>
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This is the event handler for client movement. If a client is moving, this event is triggering.
|
/// This is the event handler for client movement. If a client is moving, this event is triggering.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData)
|
public void HandleAgentUpdate(IClientAPI remoteClient, AgentUpdateArgs agentData)
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE PRESENCE]: Received agent update from {0}", remoteClient.Name);
|
// m_log.DebugFormat(
|
||||||
|
// "[SCENE PRESENCE]: In {0} received agent update from {1}",
|
||||||
|
// Scene.RegionInfo.RegionName, remoteClient.Name);
|
||||||
|
|
||||||
//if (IsChildAgent)
|
//if (IsChildAgent)
|
||||||
//{
|
//{
|
||||||
|
@ -1570,7 +1561,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if ((MovementFlag & (byte)(uint)DCF) == 0)
|
if ((MovementFlag & (byte)(uint)DCF) == 0)
|
||||||
{
|
{
|
||||||
if (DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACK_NUDGE)
|
if (DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE)
|
||||||
{
|
{
|
||||||
MovementFlag |= (byte)nudgehack;
|
MovementFlag |= (byte)nudgehack;
|
||||||
}
|
}
|
||||||
|
@ -1582,13 +1573,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ((m_movementflag & (byte)(uint)DCF) != 0 ||
|
if ((MovementFlag & (byte)(uint)DCF) != 0 ||
|
||||||
((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACK_NUDGE)
|
((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE)
|
||||||
&& ((m_movementflag & (byte)nudgehack) == nudgehack))
|
&& ((MovementFlag & (byte)nudgehack) == nudgehack))
|
||||||
) // This or is for Nudge forward
|
) // This or is for Nudge forward
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE PRESENCE]: Updating m_movementflag for {0} with lack of {1}", Name, DCF);
|
// m_log.DebugFormat("[SCENE PRESENCE]: Updating MovementFlag for {0} with lack of {1}", Name, DCF);
|
||||||
m_movementflag -= ((byte)(uint)DCF);
|
MovementFlag -= ((byte)(uint)DCF);
|
||||||
update_movementflag = true;
|
update_movementflag = true;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1818,9 +1809,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (SitGround)
|
if (SitGround)
|
||||||
StandUp();
|
StandUp();
|
||||||
|
|
||||||
// m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
// "[SCENE PRESENCE]: Avatar {0} received request to move to position {1} in {2}",
|
"[SCENE PRESENCE]: Avatar {0} received request to move to position {1} in {2}",
|
||||||
// Name, pos, m_scene.RegionInfo.RegionName);
|
Name, pos, m_scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
if (pos.X < 0 || pos.X >= Constants.RegionSize
|
if (pos.X < 0 || pos.X >= Constants.RegionSize
|
||||||
|| pos.Y < 0 || pos.Y >= Constants.RegionSize
|
|| pos.Y < 0 || pos.Y >= Constants.RegionSize
|
||||||
|
@ -1846,9 +1837,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (pos.Z - terrainHeight < 0.2)
|
if (pos.Z - terrainHeight < 0.2)
|
||||||
pos.Z = terrainHeight;
|
pos.Z = terrainHeight;
|
||||||
|
|
||||||
// m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
// "[SCENE PRESENCE]: Avatar {0} set move to target {1} (terrain height {2}) in {3}",
|
"[SCENE PRESENCE]: Avatar {0} set move to target {1} (terrain height {2}) in {3}",
|
||||||
// Name, pos, terrainHeight, m_scene.RegionInfo.RegionName);
|
Name, pos, terrainHeight, m_scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
if (noFly)
|
if (noFly)
|
||||||
PhysicsActor.Flying = false;
|
PhysicsActor.Flying = false;
|
||||||
|
@ -1884,7 +1875,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void ResetMoveToTarget()
|
public void ResetMoveToTarget()
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("[SCENE PRESENCE]: Resetting move to target for {0}", Name);
|
m_log.DebugFormat("[SCENE PRESENCE]: Resetting move to target for {0}", Name);
|
||||||
|
|
||||||
MovingToTarget = false;
|
MovingToTarget = false;
|
||||||
MoveToPositionTarget = Vector3.Zero;
|
MoveToPositionTarget = Vector3.Zero;
|
||||||
|
@ -2548,9 +2539,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
CheckForSignificantMovement(); // sends update to the modules.
|
CheckForSignificantMovement(); // sends update to the modules.
|
||||||
}
|
}
|
||||||
|
|
||||||
//Sending prim updates AFTER the avatar terse updates are sent
|
|
||||||
SendPrimUpdates();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -3268,7 +3256,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_callbackURI = cAgent.CallbackURI;
|
m_callbackURI = cAgent.CallbackURI;
|
||||||
|
|
||||||
m_pos = cAgent.Position;
|
m_pos = cAgent.Position;
|
||||||
|
|
||||||
m_velocity = cAgent.Velocity;
|
m_velocity = cAgent.Velocity;
|
||||||
CameraPosition = cAgent.Center;
|
CameraPosition = cAgent.Center;
|
||||||
CameraAtAxis = cAgent.AtAxis;
|
CameraAtAxis = cAgent.AtAxis;
|
||||||
|
@ -3415,14 +3402,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
//if ((Math.Abs(Velocity.X) > 0.1e-9f) || (Math.Abs(Velocity.Y) > 0.1e-9f))
|
//if ((Math.Abs(Velocity.X) > 0.1e-9f) || (Math.Abs(Velocity.Y) > 0.1e-9f))
|
||||||
// The Physics Scene will send updates every 500 ms grep: PhysicsActor.SubscribeEvents(
|
// The Physics Scene will send updates every 500 ms grep: PhysicsActor.SubscribeEvents(
|
||||||
// as of this comment the interval is set in AddToPhysicalScene
|
// as of this comment the interval is set in AddToPhysicalScene
|
||||||
if (Animator!=null)
|
if (Animator != null)
|
||||||
{
|
{
|
||||||
if (m_updateCount > 0) //KF: DO NOT call UpdateMovementAnimations outside of the m_updateCount wrapper,
|
if (m_updateCount > 0)
|
||||||
{ // else its will lock out other animation changes, like ground sit.
|
{
|
||||||
Animator.UpdateMovementAnimations();
|
Animator.UpdateMovementAnimations();
|
||||||
m_updateCount--;
|
m_updateCount--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CollisionEventUpdate collisionData = (CollisionEventUpdate)e;
|
CollisionEventUpdate collisionData = (CollisionEventUpdate)e;
|
||||||
Dictionary<uint, ContactPoint> coldata = collisionData.m_objCollisionList;
|
Dictionary<uint, ContactPoint> coldata = collisionData.m_objCollisionList;
|
||||||
|
@ -3431,12 +3418,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
// No collisions at all means we may be flying. Update always
|
// No collisions at all means we may be flying. Update always
|
||||||
// to make falling work
|
// to make falling work
|
||||||
if (m_lastColCount != coldata.Count || coldata.Count == 0)
|
if (m_lastColCount != coldata.Count || coldata.Count == 0)
|
||||||
{
|
{
|
||||||
m_updateCount = UPDATE_COUNT;
|
m_updateCount = UPDATE_COUNT;
|
||||||
m_lastColCount = coldata.Count;
|
m_lastColCount = coldata.Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (coldata.Count != 0 && Animator != null)
|
if (coldata.Count != 0 && Animator != null)
|
||||||
{
|
{
|
||||||
switch (Animator.CurrentMovementAnimation)
|
switch (Animator.CurrentMovementAnimation)
|
||||||
|
@ -4047,15 +4034,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Vector3 Quat2Euler(Quaternion rot){
|
|
||||||
float x = Utils.RAD_TO_DEG * (float)Math.Atan2((double)((2.0f * rot.X * rot.W) - (2.0f * rot.Y * rot.Z)) ,
|
|
||||||
(double)(1 - (2.0f * rot.X * rot.X) - (2.0f * rot.Z * rot.Z)));
|
|
||||||
float y = Utils.RAD_TO_DEG * (float)Math.Asin ((double)((2.0f * rot.X * rot.Y) + (2.0f * rot.Z * rot.W)));
|
|
||||||
float z = Utils.RAD_TO_DEG * (float)Math.Atan2(((double)(2.0f * rot.Y * rot.W) - (2.0f * rot.X * rot.Z)) ,
|
|
||||||
(double)(1 - (2.0f * rot.Y * rot.Y) - (2.0f * rot.Z * rot.Z)));
|
|
||||||
return(new Vector3(x,y,z));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CheckLandingPoint(ref Vector3 pos)
|
private void CheckLandingPoint(ref Vector3 pos)
|
||||||
{
|
{
|
||||||
// Never constrain lures
|
// Never constrain lures
|
||||||
|
|
Loading…
Reference in New Issue