[JIRA] Updated: (SNOW-421) double-click teleport: don't interfere with click actions, and allow Cancel when tping between sims

Thickbrick Sleaford (JIRA) no-reply at lindenlab.cascadeo.com
Sun Jan 10 15:17:32 PST 2010


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

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

    Description: 
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.


  was:
This patch fixes these 3 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.

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

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

As far as I could determine, the look-at direction is lost on cross-sim teleports anyway. 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.)




> double-click teleport: don't interfere with click actions, and allow Cancel when tping between sims
> ---------------------------------------------------------------------------------------------------
>
>                 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
>
>
> 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.

-- 
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