llSetLinkPrimitiveParams() was (yet again) throttled back to only work in a 54m radius sphere from the root object in a linkset. This breaks many newer teleporters and personal avatar movement devices, and is not acceptable.
Here is some demo code for anyone who wants to see this for themselves.
///////////////////////////
vector key2pos(key in_target)
{
return llList2Vector(llGetObjectDetails(in_target, [OBJECT_POS]), 0);
}
default
{
state_entry()
{
llSitTarget(<0.0, 0.0, 1.0>, ZERO_ROTATION);
}
touch_start(integer total_number)
{
if (llAvatarOnSitTarget() == llDetectedKey(0))
{
vector position_a = key2pos(llAvatarOnSitTarget());
llSay(0, "You are currently located at " + (string)position_a + ". Attempting to move your position up 70.0m, keeping this root object stationary.");
llSetLinkPrimitiveParams(llGetNumberOfPrims(), [PRIM_POSITION, <0.0, 0.0, 70.0>]);
vector position_b = key2pos(llAvatarOnSitTarget());
llShout(0, "Now you are located at " + (string)position_b + ". You SHOULD be located at " + (string)(position_a + <0.0, 0.0, 70.0>) + ". You are offset from the root prim by " + (string)llVecDist(position_a, position_b) + " meters.");
}
}
changed(integer change)
{
if (change & CHANGED_LINK)
{
if (llAvatarOnSitTarget())
{
llSay(0, "Click the box to run the demo.");
llSetLinkPrimitiveParams(llGetNumberOfPrims(), [PRIM_POSITION, ZERO_VECTOR]);
}
}
}
}
Benefits of 54m:
Force teleporter makers to use warpPos() , multiple llSetPos() , or client based teleporter for any distance over 300m on an axis
Benefits of Full Sim:
Simple teleporter to anywhere in the sim, without having to use memory intensive/looped functions.
Conclusion: I hope this is not intentional