OsTeleportObject
From OpenSimulator
(Difference between revisions)
JeffKelley (Talk | contribs) m (osObjectTeleport -> osTeleportObject) |
|||
(9 intermediate revisions by 2 users not shown) | |||
Line 3: | Line 3: | ||
||permissions=${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER | ||permissions=${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER | ||
|delay=0 | |delay=0 | ||
− | |function_syntax=integer osTeleportObject(key | + | |function_syntax=integer osTeleportObject(key objectID, vector targetPos, rotation rot, integer flags) |
|csharp_syntax= | |csharp_syntax= | ||
|ossl_example=<source lang="lsl"> | |ossl_example=<source lang="lsl"> | ||
Line 19: | Line 19: | ||
vector target =<873.911926, 879.844910, 21.332354>; | vector target =<873.911926, 879.844910, 21.332354>; | ||
rotation rot =<0,0,0.707,.707>; | rotation rot =<0,0,0.707,.707>; | ||
− | + | osTeleportObject(llGetKey(),target,rot,1); | |
} | } | ||
} | } | ||
Line 26: | Line 26: | ||
===== Arguments: ===== | ===== Arguments: ===== | ||
− | * | + | * objectID the id of the linkset to teleport |
− | * targetPos target position | + | * targetPos target position in region local coords |
+ | |||
* rot a rotation. | * rot a rotation. | ||
* flags | * flags | ||
Line 41: | Line 42: | ||
* Zero means that a teleport to another region was started. result needs to be checked by other means (?) | * Zero means that a teleport to another region was started. result needs to be checked by other means (?) | ||
* 1 did a local teleport | * 1 did a local teleport | ||
+ | |||
+ | This can do region crossings if the target position is on another region. | ||
+ | |||
+ | Since target position is in start region local coords, some simple math is needed | ||
+ | |||
+ | - on the target region, use llgetregioncorner to get its global coords | ||
+ | - add to that vector the target position you want on that region local coords | ||
+ | |||
+ | - on the start region use llgetregioncorner to get its global coords | ||
+ | - subtract that vector from the previus one. | ||
+ | - result is the needed value for target position | ||
+ | |||
+ | you may notice that this may work also on regions that are far apart. | ||
+ | |||
+ | but since it uses normal regions crossing code the operation is not pretty to see on viewer of sitting avatars, so do avoid it | ||
+ | |||
+ | make sure there is enough clear space on target position for the object to rez | ||
===== Restrictions: ===== | ===== Restrictions: ===== | ||
Line 49: | Line 67: | ||
* has a cool down time. retries before expire reset it, and tp is ignored with error -2 | * has a cool down time. retries before expire reset it, and tp is ignored with error -2 | ||
* the object can not be selected at tp time | * the object can not be selected at tp time | ||
− | + | ||
− | }} | + | |additional_info=This function was added in 0.9.0.1}} |
Revision as of 18:32, 1 February 2019
integer osTeleportObject(key objectID, vector targetPos, rotation rot, integer flags)
| |
...
Arguments:
Flags:
| |
Threat Level | Severe |
Permissions | ${XEngine|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER |
Extra Delay | 0 seconds |
Example(s) | |
// Example of osTeleportObject default { state_entry() { llSay(0, "Script running"); } touch_start(integer num) { // target position in region local coords vector target =<873.911926, 879.844910, 21.332354>; rotation rot =<0,0,0.707,.707>; osTeleportObject(llGetKey(),target,rot,1); } } | |
Notes | |
This function was added in 0.9.0.1 |