Skip to content

Hypergrid Teleport

lickx edited this page Sep 8, 2023 · 38 revisions

Here's what happens when arriving via hypergrid teleport to a region running opensim-lickx:

(NB. If the destination and departure region are both in the same foreign grid, that foreign grid handles the entity transfer as it is a local teleport (EntityTransfer.cs))

If the destination region is in a different grid than the departure grid (HGEntityTransfer.cs):

    1. All wearable textures, and any assets (sounds, animations, textures etc) on or inside (object contents) attachments are downloaded
    1. The downloaded assets are checked against duplicates and not stored again if duplicate (grid using FSAssets)
    1. The LSL code is compiled into object code your ScriptEngine uses
    1. Attachments are set to the group you have active for this particular grid (if the grid, like most grids, uses Groups V2)
    1. Scripts are loaded, event handlers (such as touch_end) connected and the state (memory) of the scripts are being restored
    1. Finally, scripts are set to resume their running state

Up until strep vi., only your system avi was visible, without any attachments. Now that your avi is fully transferred, you fully appear rendered to any other avatars including attachments.

On slow destination grids (such as OsGrid), step i. and ii. can take a few minutes, but will complete eventually.

On grids that use a 3rd party Groups module (such as OsGrid), step iv. fails, resulting in the attachments left being set to a group that doesn't exist in that destination grid. If this happens, scripts that rely on llSameGroup() can show unreliable behaviour.

Mainstream OpenSim doesn't execute step iv., v, and vi. at all, resulting in nonfunctional attachments. You would appear fully rendered including attachments, but scripts wouldn't run. If this happened, whenever scripts would get the chance to run again (by a local crossing, local teleport or a HG teleport back to the home grid), scripts would start from zero with all memory lost.

This fork fixes all that. Unfortunately, literally nobody sees the urgency to fix this bug in their regions (or run my fork) so 99.9% of the hypergrid will still be broken :(

Clone this wiki locally