Teleport Functional

= Functional Spec - Teleport =
== General Description ==
What does this feature do?
* Moves the agent directly to a location as quickly as possible.
== Interface Requirements ==
How does the user use/activate this feature?
* Clicking the world map
* Landmark
* Accepting teleport invite
* Teleporting home
* being ejected from an estate
* Godlike teleport invite
* "Dying"
* SLURL
* llTeleportHome
* (some other LSL call?)
* Via listings in Finder
* (upcoming LSL teleport call?)
== Performance Requirements ==
Will this feature affect:
* Client FPS? YES, must dowload and draw surroundings and agents (similar to StartupFPSTest)
* Simulator FPS? YES, sending and receiving agent and attachment data
* Database? Maybe?
* Asset server? NO
* Network load? Yes, between the sending and receiving regions
* Any other system? (User server? Presence?)
== Design Constraints ==
Will this feature be unavailable on certain hardware? NO
Is this feature consistent with other features? YES
Is this feature well integrated? YES
Is this feature discoverable? Somewhat. "How do I go to my friend? How do I go to my friend's house?" 
Is this feature Safe, Predictable, and Responsive? llTeleportHome is not predictable.
== Feature Dependencies ==
=== Features that this feature will affect ===
SLURL
=== Features that affect this feature ===
* World Map
* Landmarks
* Finder
* Estate Tools
* Telehubs
* Parcel landing points
* SLURL
== Security risks ==
Does this feature give access to something it should not?
llTeleportHome annoys people flying across the world.
== Usage Rules ==
There are 4 rules that affect where you will end up after teleport
estate access rule
telehub rule
parcel access rule
parcel landing point rule
Teleporting follows visibility/access rules. You can teleport to places visible on the world map (exception - if the region you are on has "Mainland Visible from Here = NO", you may still be able to teleport to places you cannot see on the world map)
Teleporting rules:
Estate access = NO
* teleport fails with error message
Estate access = YES
* P2P = OFF
** TH is present
*** Go to nearest TH on estate, (to a random spawn point?)
** TH is not present
*** Follow parcel's landing point rules
***** If no landing point rules, arrive directly at your target.
If in god mode, invited by a god, teleporting home, Died
* Go directly to the target location, bypassing estate, telehub, and parcel rules
If teleport invited
* Follow estate rule, bypass TH rule, follow Parcel landing point rule
(Expand explaination when estates w/ different P2P configurations are adjacent)
(Explain what a "safe" alternate region is, how it is determined, how often it is determined, and what it's used for)
(Teleport to a location underground, near ground, in the air. What is your animation state?)
When you teleport arrive:
* What do you look like to you?
* What do you look like to observers?
Facing direction:
You should face direction the landing point has set.
If no landing point, you should be facing your target
= Test Script - Feature name =
* Requirements
* Test Setup
* Old features this feature will interact with
* Variables to test (ie. different types of things that generate test permutations)
== Test script steps ==
* Rule to check
*# Step
*# Step
* Corner case to rule
*# Step
*# Step
Most common usage section
* Game - require the user to stay within boundaries
* Event - make sure people arrive at the correct place
* Private - deny entry to uninvited guests