aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-08-02 23:41:12 +0100
committerJustin Clark-Casey (justincc)2011-08-02 23:41:12 +0100
commitc122489e0947300753281e88771b7a74d49869c7 (patch)
treec8b0f67e85f883cd1e9a1ff3ff411c7eca08e64f /OpenSim/Region/ClientStack
parentIf GetRegionByName can't match something in the local db, then search the hyp... (diff)
downloadopensim-SC-c122489e0947300753281e88771b7a74d49869c7.zip
opensim-SC-c122489e0947300753281e88771b7a74d49869c7.tar.gz
opensim-SC-c122489e0947300753281e88771b7a74d49869c7.tar.bz2
opensim-SC-c122489e0947300753281e88771b7a74d49869c7.tar.xz
Partially fix autopilot/go here
This now works again except that it requires a click or avatar mvmt to get going This is because the ScenePresence.HandleAgentUpdate() method doesn't trigger until the client does something significant, at which point autopilot takes over. Even clicking is enough to trigger. This will be improved presently.
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs79
1 files changed, 34 insertions, 45 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 60f0075..bb491a1 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -5266,6 +5266,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5266 AddLocalPacketHandler(PacketType.GroupVoteHistoryRequest, HandleGroupVoteHistoryRequest); 5266 AddLocalPacketHandler(PacketType.GroupVoteHistoryRequest, HandleGroupVoteHistoryRequest);
5267 AddLocalPacketHandler(PacketType.SimWideDeletes, HandleSimWideDeletes); 5267 AddLocalPacketHandler(PacketType.SimWideDeletes, HandleSimWideDeletes);
5268 AddLocalPacketHandler(PacketType.SendPostcard, HandleSendPostcard); 5268 AddLocalPacketHandler(PacketType.SendPostcard, HandleSendPostcard);
5269
5270 AddGenericPacketHandler("autopilot", HandleAutopilot);
5269 } 5271 }
5270 5272
5271 #region Packet Handlers 5273 #region Packet Handlers
@@ -5308,7 +5310,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5308 ); 5310 );
5309 } 5311 }
5310 else 5312 else
5313 {
5311 update = true; 5314 update = true;
5315 }
5312 5316
5313 // These should be ordered from most-likely to 5317 // These should be ordered from most-likely to
5314 // least likely to change. I've made an initial 5318 // least likely to change. I've made an initial
@@ -5316,6 +5320,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
5316 5320
5317 if (update) 5321 if (update)
5318 { 5322 {
5323// m_log.DebugFormat("[LLCLIENTVIEW]: Triggered AgentUpdate for {0}", sener.Name);
5324
5319 AgentUpdateArgs arg = new AgentUpdateArgs(); 5325 AgentUpdateArgs arg = new AgentUpdateArgs();
5320 arg.AgentID = x.AgentID; 5326 arg.AgentID = x.AgentID;
5321 arg.BodyRotation = x.BodyRotation; 5327 arg.BodyRotation = x.BodyRotation;
@@ -11609,54 +11615,37 @@ namespace OpenSim.Region.ClientStack.LindenUDP
11609 return false; 11615 return false;
11610 } 11616 }
11611 11617
11612 /// <summary> 11618 protected void HandleAutopilot(Object sender, string method, List<String> args)
11613 /// Breaks down the genericMessagePacket into specific events
11614 /// </summary>
11615 /// <param name="gmMethod"></param>
11616 /// <param name="gmInvoice"></param>
11617 /// <param name="gmParams"></param>
11618 public void DecipherGenericMessage(string gmMethod, UUID gmInvoice, GenericMessagePacket.ParamListBlock[] gmParams)
11619 { 11619 {
11620 switch (gmMethod) 11620 try
11621 { 11621 {
11622 case "autopilot": 11622 float locx = 0f;
11623 float locx; 11623 float locy = 0f;
11624 float locy; 11624 float locz = 0f;
11625 float locz; 11625 uint regionX = 0;
11626 11626 uint regionY = 0;
11627 try 11627 try
11628 { 11628 {
11629 uint regionX; 11629 Utils.LongToUInts(m_scene.RegionInfo.RegionHandle, out regionX, out regionY);
11630 uint regionY; 11630 locx = Convert.ToSingle(args[0]) - (float)regionX;
11631 Utils.LongToUInts(Scene.RegionInfo.RegionHandle, out regionX, out regionY); 11631 locy = Convert.ToSingle(args[1]) - (float)regionY;
11632 locx = Convert.ToSingle(Utils.BytesToString(gmParams[0].Parameter)) - regionX; 11632 locz = Convert.ToSingle(args[2]);
11633 locy = Convert.ToSingle(Utils.BytesToString(gmParams[1].Parameter)) - regionY; 11633 }
11634 locz = Convert.ToSingle(Utils.BytesToString(gmParams[2].Parameter)); 11634 catch (InvalidCastException)
11635 } 11635 {
11636 catch (InvalidCastException) 11636 m_log.Error("[CLIENT]: Invalid autopilot request");
11637 { 11637 return;
11638 m_log.Error("[CLIENT]: Invalid autopilot request"); 11638 }
11639 return;
11640 }
11641
11642 UpdateVector handlerAutoPilotGo = OnAutoPilotGo;
11643 if (handlerAutoPilotGo != null)
11644 {
11645 handlerAutoPilotGo(0, new Vector3(locx, locy, locz), this);
11646 }
11647 m_log.InfoFormat("[CLIENT]: Client Requests autopilot to position <{0},{1},{2}>", locx, locy, locz);
11648
11649
11650 break;
11651 default:
11652 m_log.Debug("[CLIENT]: Unknown Generic Message, Method: " + gmMethod + ". Invoice: " + gmInvoice + ". Dumping Params:");
11653 for (int hi = 0; hi < gmParams.Length; hi++)
11654 {
11655 Console.WriteLine(gmParams[hi].ToString());
11656 }
11657 //gmpack.MethodData.
11658 break;
11659 11639
11640 UpdateVector handlerAutoPilotGo = OnAutoPilotGo;
11641 if (handlerAutoPilotGo != null)
11642 {
11643 handlerAutoPilotGo(0, new Vector3(locx, locy, locz), this);
11644 }
11645 }
11646 catch (Exception e)
11647 {
11648 m_log.ErrorFormat("[LLCLIENTVIEW]: HandleAutopilot exception {0} {1}", e.Message, e.StackTrace);
11660 } 11649 }
11661 } 11650 }
11662 11651