-->

FoxSan's 3D Tools and LSL Script Repository

Tons of LSL scripts, examples and 3D tools, free for all. There are currently 207 scripts and articles in this database.

Sleep animation without action (bvh)

// Francis wuz here
integer broadcast = 20;
 
// A More Neutral Sleeping Position
//vector target = <-1.06585, 0.71774, 0.18293>;
//rotation targetRot = <0.50028, -0.49972, -0.50028, 0.49972>;
 
// A More relaxed sleeping position
vector target = <-1.15419, 0.56328, -0.25744>;
rotation targetRot = <0.52105, -0.49829, -0.46875, 0.51038>;
 
integer debugRotation = FALSE;
key sitAgent = NULL_KEY;
integer gotPermission = FALSE;
 
integer time = 0;
default
{
    state_entry()
    {
        llSetSitText( "Sleep" );
        llSitTarget( target, targetRot );
        if ( debugRotation ) {
            llListen( 1977, "Rotation Broadcaster", NULL_KEY, "" );
            llListen( 1978, "Rotation Broadcaster", NULL_KEY, "" );
        }
    }
    listen(integer channel, string name, key id, string message ) {
        if ( channel == 1977 )
            targetRot = (rotation) message;
        else
            target = (vector) message;
 
        llSitTarget( target, targetRot );
        if ( time == 0 )
            llSay(0, (string) targetRot + ", " + (string)target );
        time = (time +1) % 50;
    }
    changed(integer change) {
        if (change & CHANGED_LINK)
        {
            key agent = llAvatarOnSitTarget();
            if ( sitAgent == NULL_KEY && agent != NULL_KEY ) {
                // Someone new sitting down
                sitAgent = agent;
                llRequestPermissions(sitAgent,PERMISSION_TRIGGER_ANIMATION);
            }
            else if ( sitAgent != NULL_KEY && agent == NULL_KEY) {
                // sitting down person got up - wake up :)
                if ( gotPermission )
                    llStopAnimation("sleep");
                // Reset the script because we don't have a way of releasing permissions :)
                llResetScript();
            }
        }
    }
    run_time_permissions(integer parm) {
        if(parm == PERMISSION_TRIGGER_ANIMATION) {
            gotPermission = TRUE;
            llStartAnimation("sleep");
        }
    }
 
}

Comments are closed.