[JIRA] Updated: (SNOW-421) double-click teleport: tweaks and fixes

Thickbrick Sleaford (JIRA) no-reply at lindenlab.cascadeo.com
Mon Jan 11 10:03:32 PST 2010


     [ http://jira.secondlife.com/browse/SNOW-421?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thickbrick Sleaford updated SNOW-421:
-------------------------------------

        Summary: double-click teleport: tweaks and fixes  (was: double-click teleport: don't interfere with click actions, and allow Cancel when tping between sims)
    Description: 
This patch fixes these issues with the double-click teleport feature, as implemented in SNOW-352:
# Double-click-tp interferes with touch-scripted objects (scripts may use double-click for user interaction.)
# Interacting with an object that has click actions (sit, pay, etc.) can accidentally trigger a teleport if the user accidentally double-clicked (or was impatient and single-clicked too fast.)
# Teleporting across a sim border doesn't show the teleport progress screen, so the user has no indication, and can't cancel if something went wrong.
# Teleporting across a sim border loses look-at direction.
# Before opening the map for the first time, the avatar will always be facing east after teleport.


This is what causes the look-at being lost on TPs between sims:
* When a sim-local teleport is finished, the sim sends a {{TeleportLocal}} message, which has a look-at information block. This case works.
* When a cross-sim teleport is finished, the sim sends a {{TeleportFinish}} message, which *doesn't* have the look-at information, and eventually also a {{AgentMovementComplete}} which *does* have look-at info. The problem is that the LookAt block of the {{AgentMovementCompelte}} message (as seen by {{process_agent_movement_complete}}) contains random-seeming data, which I'm guessing comes from a server bug.

The reason for losing look-at before opening the map is that {{LLAgent::teleportViaLocation}} branches between using 2 inconsistent behaviors depending on whether the target region has been seen by the map (differing in both look-at behavior (one case being broken) and progress screen hiding,) even if teleporting within the same sim.


My patch does the following for this:
* Remove the {{mbHideTeleport}} flag from {{LLAgent}}, and instead adds another flag: {{mbTeleportKeepsLookAt}}. This flag is set and cleared only in {{LLAgent}} methods.
* Remove changes to {{llviewerdisplay.cpp}} - (progress hiding is taken care by {{LLAgent::teleportCore(TRUE)}}, see below)
* Add a check for same-sim teleports to {{LLAgent::teleportRequest}} that results in {{gTeleportDisplay}} being set to false. This progress-hiding behaviour is pre-existing code, but was used only when teleporting in same sim, but sim was not seen by the map prior to teleport, because {{LLAgent::teleportViaLocation}} is weird like that(!).
* Prevent {{process_agent_movement_complete}} from stomping look-at when not wanted.
* Adding a new method {{LLAgent::teleportViaLocationLookAt}}, which prepares for the teleport and calls {{LLAgent::teleportRequest}}.



  was:
This patch fixes these 4 issues with the double-click teleport feature, as implemented in SNOW-352

# Double-click-tp interferes with touch-scripted objects (scripts may use double-click for user interaction.)
# Interacting with an object that has click actions (sit, pay, etc.) can accidentally trigger a teleport if the user accidentally double-clicked (or was impatient and single-clicked too fast.)
# Teleporting across a sim border doesn't show the teleport progress screen, so the user has no indication, and can't cancel if something went wrong. Also look-at is getting lost in this case.
# Before opening the map for the first time, the avatar will always be facing east after teleport.

Points 1 and 2 above are pretty straight forward, IMO, and contained in {{LLToolPie::handleDoubleClick}}.

For points 3, the question is whether we want to hide the world when doing cross-sim teleport. 

This is what I think happens:
* When a sim-local teleport is finished, the sim sends a {{TeleportLocal}} message, which has a look-at information block. This case works.
* When a cross-sim teleport is finished, the sim sends a {{TeleportFinish}} message, which *doesn't* have the look-at information, and eventually also a {{AgentMovementComplete}} which *does* have look-at info. The problem is that the LookAt block of the {{AgentMovementCompelte}} message (as seen by {{process_agent_movement_complete}}) contains random-seeming data, which I'm guessing comes from a server bug.


My patch does the following for this:
* Remove the {{mbHideTeleport}} flag from {{LLAgent}}, and instead adds another flag: {{mbTeleportKeepsLookAt}}.
* Remove changes to {{llviewerdisplay.cpp}}.
* Prevent {{process_agent_movement_complete}} from stomping look-at when not wanted.
* Add a check for same-sim teleports to {{LLAgent::teleportRequest}} that results in {{gTeleportDisplay}} being set to false. This progress-hiding behaviour is pre-existing code, but was used only when teleporting in same sim, but sim was not seen by the map prior to teleport, because {{LLAgent::teleportViaLocation}} is weird like that(!).
* Make sure {{LLAgent::teleportRequest}} is always used when doing doubleclick-tp by adding a new method {{LLAgent::teleportViaLocationLookAt}} (again, because {{LLAgent::teleportViaLocation}} is unpredictable.)

The problem with using {{LLAgent::teleportViaLocation}} is that it branches between using 2 inconsistent behaviors depending on whether the target region has been seen by the map (differing in both look-at behavior and progress screen hiding,) even if target region == this region.



> double-click teleport: tweaks and fixes
> ---------------------------------------
>
>                 Key: SNOW-421
>                 URL: http://jira.secondlife.com/browse/SNOW-421
>             Project: 6. Second Life Snowglobe - SNOW
>          Issue Type: Bug
>          Components: User Interface
>    Affects Versions: Snowglobe 1.3
>            Reporter: Thickbrick Sleaford
>            Assignee: Soft Linden
>             Fix For: Snowglobe 1.3
>
>         Attachments: SNOW-421_doubleclick_tp_tweaks_2.diff, SNOW-421_doubleclick_tp_tweaks_3.diff
>
>
> This patch fixes these issues with the double-click teleport feature, as implemented in SNOW-352:
> # Double-click-tp interferes with touch-scripted objects (scripts may use double-click for user interaction.)
> # Interacting with an object that has click actions (sit, pay, etc.) can accidentally trigger a teleport if the user accidentally double-clicked (or was impatient and single-clicked too fast.)
> # Teleporting across a sim border doesn't show the teleport progress screen, so the user has no indication, and can't cancel if something went wrong.
> # Teleporting across a sim border loses look-at direction.
> # Before opening the map for the first time, the avatar will always be facing east after teleport.
> This is what causes the look-at being lost on TPs between sims:
> * When a sim-local teleport is finished, the sim sends a {{TeleportLocal}} message, which has a look-at information block. This case works.
> * When a cross-sim teleport is finished, the sim sends a {{TeleportFinish}} message, which *doesn't* have the look-at information, and eventually also a {{AgentMovementComplete}} which *does* have look-at info. The problem is that the LookAt block of the {{AgentMovementCompelte}} message (as seen by {{process_agent_movement_complete}}) contains random-seeming data, which I'm guessing comes from a server bug.
> The reason for losing look-at before opening the map is that {{LLAgent::teleportViaLocation}} branches between using 2 inconsistent behaviors depending on whether the target region has been seen by the map (differing in both look-at behavior (one case being broken) and progress screen hiding,) even if teleporting within the same sim.
> My patch does the following for this:
> * Remove the {{mbHideTeleport}} flag from {{LLAgent}}, and instead adds another flag: {{mbTeleportKeepsLookAt}}. This flag is set and cleared only in {{LLAgent}} methods.
> * Remove changes to {{llviewerdisplay.cpp}} - (progress hiding is taken care by {{LLAgent::teleportCore(TRUE)}}, see below)
> * Add a check for same-sim teleports to {{LLAgent::teleportRequest}} that results in {{gTeleportDisplay}} being set to false. This progress-hiding behaviour is pre-existing code, but was used only when teleporting in same sim, but sim was not seen by the map prior to teleport, because {{LLAgent::teleportViaLocation}} is weird like that(!).
> * Prevent {{process_agent_movement_complete}} from stomping look-at when not wanted.
> * Adding a new method {{LLAgent::teleportViaLocationLookAt}}, which prepares for the teleport and calls {{LLAgent::teleportRequest}}.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.secondlife.com/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the Jira-notify mailing list