Files
LSL-Scripts/Butterflies/Butterflies/Object/flight.lsl
Fred Beckhusen 5a21e18d9e Fred Beckhusen
2019-03-17 23:41:07 -05:00

81 lines
1.7 KiB
Plaintext

// :CATEGORY:Butterflies
// :NAME:Butterflies
// :AUTHOR:Fred Beckhusen (Ferd Frederix)
// :CREATED:2013-09-06
// :EDITED:2013-09-18 15:38:49
// :ID:133
// :NUM:198
// :REV:1
// :WORLD:Second Life
// :DESCRIPTION:
// Butterflies
// :CODE:
// flight
////////////////////////////////////////////
// Follow Me Script segment
//
// Written by Fred Beckhusen (Ferd Frederix)
///////////////////////////////////////// ///
float RADIUS = 2.0;
/////////////// CONSTANTS ///////////////////
string FWD_DIRECTION = "-x";
vector START;
float distance = 5;
float MOVEfTO_INCREMENT = 1;
float timerval = .5;
float gTau = .2; // move
float rTau = 1; // rotation
vector Pos;
integer height = 1;
/////////// END GLOBAL VARIABLES /////////////
NewPos()
{
Pos.x = START.x + llFrand(distance*2)- distance;
Pos.y = START.y + llFrand(distance*2)- distance;
Pos.z = START.z + llFrand(height);
}
default
{
state_entry()
{
llSetStatus(STATUS_PHYSICS, FALSE);
llCollisionSound("",0.0);
}
on_rez(integer startparam)
{
llStopMoveToTarget();
distance = (startparam >> 4) & 0xff;
height = (startparam >> 16) & 0xff;
llSetStatus(STATUS_PHYSICS, TRUE);
START = llGetPos();
Pos = START;
NewPos();
llSetTimerEvent(timerval);
}
timer()
{
vector up = llRot2Up( llGetRot() );
llLookAt(Pos, gTau * 5.0, gTau);
if (llVecDist(llGetPos(),Pos) < 0.5)
NewPos();
vector Dest = llGetPos() + llVecNorm(Pos - llGetPos()) * (llFrand(0.5) + .2);
llMoveToTarget(Dest, gTau);
}
}