Attempting to trigger llTargetOmega from a link message, I found that the object will not start moving until I edit and let go of the object, or I force an update by sending an llSetPos with a slight offset to it's current position.
root object script:
integer MSG_GO_NUM = 1810;
string MSG_GO = "GO";
string MSG_STOP = "STOP";
string msg = MSG_GO;
default
{
touch_start(integer total_number)
{
llMessageLinked(LINK_SET, MSG_GO_NUM, msg, NULL_KEY);
if (msg == MSG_GO)
{
msg = MSG_STOP;
}
else
{
msg = MSG_GO;
}
}
}
script in child prim to apply llTargetOmega to:
// STATIC
integer MSG_GO_NUM = 1810;
string MSG_GO = "GO";
string MSG_STOP = "STOP";
// GLOBAL
integer go = FALSE;
string msg = MSG_GO;
default
{
link_message(integer sender_num, integer num, string msg, key id)
// touch_start(integer num)
{
// if (sender_num == 1 && MSG_GO_NUM == num)
// {
if (msg == MSG_GO)
{
llOwnerSay("Starting");
llTargetOmega(<-1, 0, 0>, 2, 2);
// add this line to make it work
// llSetPos(llGetLocalPos() + <0.001, 0.0, 0.0>);
msg = MSG_STOP;
}
else if (msg == MSG_STOP)
{
llOwnerSay("Stoping");
llTargetOmega(<0, 0, 0>, 1, 1);
// add this line to make it work
// llSetPos(llGetLocalPos() - <0.001, 0.0, 0.0>);
// adding this line does not help
// llSetPos(llGetLocalPos());
msg = MSG_GO;
}
// }
}
}
–
Note that the work around is to force an update by slightly adjusting the local prim position.
Without the update to the position, the target omega will not show on the client until an AV interacts with it by "editing" it and then letting it go.