aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs11
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs112
-rw-r--r--OpenSim/Region/Framework/Scenes/UndoState.cs2
3 files changed, 53 insertions, 72 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index b6fb5a4..1417efb 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1650,16 +1650,7 @@ namespace OpenSim.Region.Framework.Scenes
1650 ScenePresence avatar = m_scene.GetScenePresence(rootpart.AttachedAvatar); 1650 ScenePresence avatar = m_scene.GetScenePresence(rootpart.AttachedAvatar);
1651 if (avatar != null) 1651 if (avatar != null)
1652 { 1652 {
1653 List<string> coords = new List<string>(); 1653 avatar.DoMoveToPosition(0, target, null);
1654 uint regionX = 0;
1655 uint regionY = 0;
1656 Utils.LongToUInts(Scene.RegionInfo.RegionHandle, out regionX, out regionY);
1657 target.X += regionX;
1658 target.Y += regionY;
1659 coords.Add(target.X.ToString());
1660 coords.Add(target.Y.ToString());
1661 coords.Add(target.Z.ToString());
1662 avatar.DoMoveToPosition(avatar, "", coords);
1663 } 1654 }
1664 } 1655 }
1665 else 1656 else
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()
diff --git a/OpenSim/Region/Framework/Scenes/UndoState.cs b/OpenSim/Region/Framework/Scenes/UndoState.cs
index 393f42d..d34d8e5 100644
--- a/OpenSim/Region/Framework/Scenes/UndoState.cs
+++ b/OpenSim/Region/Framework/Scenes/UndoState.cs
@@ -35,7 +35,7 @@ namespace OpenSim.Region.Framework.Scenes
35{ 35{
36 public class UndoState 36 public class UndoState
37 { 37 {
38 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 38// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
39 39
40 public Vector3 Position = Vector3.Zero; 40 public Vector3 Position = Vector3.Zero;
41 public Vector3 Scale = Vector3.Zero; 41 public Vector3 Scale = Vector3.Zero;