aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs112
1 files changed, 51 insertions, 61 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 4739f5b..a508813 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -116,7 +116,7 @@ namespace OpenSim.Region.Framework.Scenes
116 private ScriptControlled IgnoredControls = ScriptControlled.CONTROL_ZERO; 116 private ScriptControlled IgnoredControls = ScriptControlled.CONTROL_ZERO;
117 private ScriptControlled LastCommands = ScriptControlled.CONTROL_ZERO; 117 private ScriptControlled LastCommands = ScriptControlled.CONTROL_ZERO;
118 private bool MouseDown = false; 118 private bool MouseDown = false;
119 private SceneObjectGroup proxyObjectGroup; 119// private SceneObjectGroup proxyObjectGroup;
120 //private SceneObjectPart proxyObjectPart = null; 120 //private SceneObjectPart proxyObjectPart = null;
121 public Vector3 lastKnownAllowedPosition; 121 public Vector3 lastKnownAllowedPosition;
122 public bool sentMessageAboutRestrictedParcelFlyingDown; 122 public bool sentMessageAboutRestrictedParcelFlyingDown;
@@ -779,8 +779,7 @@ namespace OpenSim.Region.Framework.Scenes
779 m_controllingClient.OnStartAnim += HandleStartAnim; 779 m_controllingClient.OnStartAnim += HandleStartAnim;
780 m_controllingClient.OnStopAnim += HandleStopAnim; 780 m_controllingClient.OnStopAnim += HandleStopAnim;
781 m_controllingClient.OnForceReleaseControls += HandleForceReleaseControls; 781 m_controllingClient.OnForceReleaseControls += HandleForceReleaseControls;
782 m_controllingClient.OnAutoPilotGo += DoAutoPilot; 782 m_controllingClient.OnAutoPilotGo += DoMoveToPosition;
783 m_controllingClient.AddGenericPacketHandler("autopilot", DoMoveToPosition);
784 783
785 // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); 784 // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
786 // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); 785 // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
@@ -1480,6 +1479,7 @@ namespace OpenSim.Region.Framework.Scenes
1480 bAllowUpdateMoveToPosition = true; 1479 bAllowUpdateMoveToPosition = true;
1481 } 1480 }
1482 } 1481 }
1482
1483 i++; 1483 i++;
1484 } 1484 }
1485 1485
@@ -1492,12 +1492,21 @@ namespace OpenSim.Region.Framework.Scenes
1492 bAllowUpdateMoveToPosition = false; 1492 bAllowUpdateMoveToPosition = false;
1493 } 1493 }
1494 1494
1495 m_log.DebugFormat(
1496 "[SCENE PRESENCE]: bAllowUpdateMoveToPosition {0}, m_moveToPositionInProgress {1}, m_autopilotMoving {2}",
1497 bAllowUpdateMoveToPosition, m_moveToPositionInProgress, m_autopilotMoving);
1498
1495 if (bAllowUpdateMoveToPosition && (m_moveToPositionInProgress && !m_autopilotMoving)) 1499 if (bAllowUpdateMoveToPosition && (m_moveToPositionInProgress && !m_autopilotMoving))
1496 { 1500 {
1497 //Check the error term of the current position in relation to the target position 1501 double distanceToTarget = Util.GetDistanceTo(AbsolutePosition, m_moveToPositionTarget);
1498 if (Util.GetDistanceTo(AbsolutePosition, m_moveToPositionTarget) <= 0.5f) 1502// m_log.DebugFormat(
1503// "[SCENE PRESENCE]: Abs pos of {0} is {1}, target {2}, distance {3}",
1504// Name, AbsolutePosition, m_moveToPositionTarget, distanceToTarget);
1505
1506 // Check the error term of the current position in relation to the target position
1507 if (distanceToTarget <= 1)
1499 { 1508 {
1500 // we are close enough to the target 1509 // We are close enough to the target
1501 m_moveToPositionTarget = Vector3.Zero; 1510 m_moveToPositionTarget = Vector3.Zero;
1502 m_moveToPositionInProgress = false; 1511 m_moveToPositionInProgress = false;
1503 update_movementflag = true; 1512 update_movementflag = true;
@@ -1608,8 +1617,6 @@ namespace OpenSim.Region.Framework.Scenes
1608 // "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3); 1617 // "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3);
1609 1618
1610 AddNewMovement(agent_control_v3, q); 1619 AddNewMovement(agent_control_v3, q);
1611
1612
1613 } 1620 }
1614 } 1621 }
1615 1622
@@ -1621,61 +1628,44 @@ namespace OpenSim.Region.Framework.Scenes
1621 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); 1628 m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS));
1622 } 1629 }
1623 1630
1624 public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client) 1631// public void DoAutoPilot(uint not_used, Vector3 Pos, IClientAPI remote_client)
1625 { 1632// {
1626 m_autopilotMoving = true; 1633// m_autopilotMoving = true;
1627 m_autoPilotTarget = Pos; 1634// m_autoPilotTarget = Pos;
1628 m_sitAtAutoTarget = false; 1635// m_sitAtAutoTarget = false;
1629 PrimitiveBaseShape proxy = PrimitiveBaseShape.Default; 1636// PrimitiveBaseShape proxy = PrimitiveBaseShape.Default;
1630 //proxy.PCode = (byte)PCode.ParticleSystem; 1637// //proxy.PCode = (byte)PCode.ParticleSystem;
1638//
1639// proxyObjectGroup = new SceneObjectGroup(UUID, Pos, Rotation, proxy);
1640// proxyObjectGroup.AttachToScene(m_scene);
1641//
1642// // Commented out this code since it could never have executed, but might still be informative.
1643//// if (proxyObjectGroup != null)
1644//// {
1645// proxyObjectGroup.SendGroupFullUpdate();
1646// remote_client.SendSitResponse(proxyObjectGroup.UUID, Vector3.Zero, Quaternion.Identity, true, Vector3.Zero, Vector3.Zero, false);
1647// m_scene.DeleteSceneObject(proxyObjectGroup, false);
1648//// }
1649//// else
1650//// {
1651//// m_autopilotMoving = false;
1652//// m_autoPilotTarget = Vector3.Zero;
1653//// ControllingClient.SendAlertMessage("Autopilot cancelled");
1654//// }
1655// }
1631 1656
1632 proxyObjectGroup = new SceneObjectGroup(UUID, Pos, Rotation, proxy); 1657 /// <summary>
1633 proxyObjectGroup.AttachToScene(m_scene); 1658 /// Move this presence to the given position over time.
1634 1659 /// </summary>
1635 // Commented out this code since it could never have executed, but might still be informative. 1660 /// <param name="pos"></param>
1636// if (proxyObjectGroup != null) 1661 public void DoMoveToPosition(uint not_used, Vector3 pos, IClientAPI remote_client)
1637// {
1638 proxyObjectGroup.SendGroupFullUpdate();
1639 remote_client.SendSitResponse(proxyObjectGroup.UUID, Vector3.Zero, Quaternion.Identity, true, Vector3.Zero, Vector3.Zero, false);
1640 m_scene.DeleteSceneObject(proxyObjectGroup, false);
1641// }
1642// else
1643// {
1644// m_autopilotMoving = false;
1645// m_autoPilotTarget = Vector3.Zero;
1646// ControllingClient.SendAlertMessage("Autopilot cancelled");
1647// }
1648 }
1649
1650 public void DoMoveToPosition(Object sender, string method, List<String> args)
1651 { 1662 {
1652 try 1663 m_log.DebugFormat(
1653 { 1664 "[SCENE PRESENCE]: Avatar {0} received request to move to position {1} in {2}",
1654 float locx = 0f; 1665 Name, pos, m_scene.RegionInfo.RegionName);
1655 float locy = 0f; 1666
1656 float locz = 0f; 1667 m_moveToPositionInProgress = true;
1657 uint regionX = 0; 1668 m_moveToPositionTarget = pos;
1658 uint regionY = 0;
1659 try
1660 {
1661 Utils.LongToUInts(Scene.RegionInfo.RegionHandle, out regionX, out regionY);
1662 locx = Convert.ToSingle(args[0]) - (float)regionX;
1663 locy = Convert.ToSingle(args[1]) - (float)regionY;
1664 locz = Convert.ToSingle(args[2]);
1665 }
1666 catch (InvalidCastException)
1667 {
1668 m_log.Error("[CLIENT]: Invalid autopilot request");
1669 return;
1670 }
1671 m_moveToPositionInProgress = true;
1672 m_moveToPositionTarget = new Vector3(locx, locy, locz);
1673 }
1674 catch (Exception ex)
1675 {
1676 //Why did I get this error?
1677 m_log.Error("[SCENEPRESENCE]: DoMoveToPosition" + ex);
1678 }
1679 } 1669 }
1680 1670
1681 private void CheckAtSitTarget() 1671 private void CheckAtSitTarget()