Add new files
This commit is contained in:
75
Script Tests/Script tests/Object/KanEd-Test16.lsl
Normal file
75
Script Tests/Script tests/Object/KanEd-Test16.lsl
Normal file
@@ -0,0 +1,75 @@
|
||||
// :CATEGORY:Scripting
|
||||
// :AUTHOR:Justin Clark-Casey (justincc)
|
||||
// :KEYWORDS:Opensim
|
||||
// :REV:1
|
||||
// :WORLD:Opensim
|
||||
// :DESCRIPTION:
|
||||
// One of many tests for Opensim
|
||||
// :CODE:
|
||||
|
||||
// This is a script designed to orbit its owner.
|
||||
vector startPos;
|
||||
vector curPos;
|
||||
|
||||
vector offset; // offset from Agent
|
||||
integer iteration;
|
||||
float rotationRate; // degrees of rotation per iteration
|
||||
float sensorInterval; // seconds between sensor scan.
|
||||
|
||||
default
|
||||
{
|
||||
state_entry()
|
||||
{
|
||||
llOwnerSay( "Hello, Avatar! Touch to start orbiting." );
|
||||
llSetStatus( 1, FALSE ); // turn Physics off.
|
||||
offset = < 2, 2, 1 >;
|
||||
iteration = 0;
|
||||
rotationRate = .5;
|
||||
sensorInterval = .3;
|
||||
}
|
||||
|
||||
touch_start(integer total_number)
|
||||
{
|
||||
startPos = llGetPos();
|
||||
curPos = startPos;
|
||||
|
||||
llSleep( .1 );
|
||||
|
||||
key id = llGetOwner();
|
||||
llSensorRepeat( "", id, AGENT, 96, PI, sensorInterval );
|
||||
}
|
||||
|
||||
sensor(integer total_number)
|
||||
{
|
||||
iteration++;
|
||||
|
||||
if( iteration > 300 )
|
||||
{
|
||||
llResetScript();
|
||||
}
|
||||
|
||||
if( llDetectedOwner( 0 ) == llGetOwner() )
|
||||
{ // the detected Agent is my owner.
|
||||
vector position = llDetectedPos(0); // find Owner position.
|
||||
|
||||
// calculate next object position relative both to the Owner's
|
||||
// position and the current time interval counter. That is,
|
||||
// use the iteration counter to define a rotation, multiply
|
||||
// the rotation by the constant offset to get a rotated offset
|
||||
// vector, and add that rotated offset to the current position
|
||||
// to defne the new position.
|
||||
|
||||
float degreeRotation = llRound( rotationRate * iteration ) % 360;
|
||||
rotation Rotation =
|
||||
llEuler2Rot( < 0, 0, degreeRotation * DEG_TO_RAD > );
|
||||
vector rotatedOffset = offset * Rotation;
|
||||
position += rotatedOffset;
|
||||
|
||||
// change the location of the object and save the current (rotated)
|
||||
// offset for use during the next iteration.
|
||||
llSetPos( position );
|
||||
offset = rotatedOffset;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user