diff options
author | Justin Clark-Casey (justincc) | 2011-08-02 23:41:12 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2011-08-02 23:41:12 +0100 |
commit | c122489e0947300753281e88771b7a74d49869c7 (patch) | |
tree | c8b0f67e85f883cd1e9a1ff3ff411c7eca08e64f /OpenSim/Region/ClientStack | |
parent | If GetRegionByName can't match something in the local db, then search the hyp... (diff) | |
download | opensim-SC_OLD-c122489e0947300753281e88771b7a74d49869c7.zip opensim-SC_OLD-c122489e0947300753281e88771b7a74d49869c7.tar.gz opensim-SC_OLD-c122489e0947300753281e88771b7a74d49869c7.tar.bz2 opensim-SC_OLD-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.cs | 79 |
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 | ||