Add new files
This commit is contained in:
80
Script Tests/Script tests/Object/KanEd-Test09.lsl
Normal file
80
Script Tests/Script tests/Object/KanEd-Test09.lsl
Normal file
@@ -0,0 +1,80 @@
|
||||
// :CATEGORY:Scripting
|
||||
// :AUTHOR:Justin Clark-Casey (justincc)
|
||||
// :KEYWORDS:Opensim
|
||||
// :REV:1
|
||||
// :WORLD:Opensim
|
||||
// :DESCRIPTION:
|
||||
// One of many tests for Opensim
|
||||
// :CODE:
|
||||
|
||||
vector startPos;
|
||||
vector curPos;
|
||||
vector curForce;
|
||||
integer second;
|
||||
|
||||
default
|
||||
{
|
||||
state_entry()
|
||||
{
|
||||
llSay( 0, "Hello, Avatar! Touch to launch me straight up.");
|
||||
llSetStatus( 1, TRUE );
|
||||
startPos = < 0, 0, 0 >;
|
||||
}
|
||||
|
||||
touch_start(integer total_number)
|
||||
{
|
||||
startPos = llGetPos();
|
||||
curPos = startPos;
|
||||
curForce = < 0, 0, 0 >;
|
||||
second = 0;
|
||||
|
||||
llSetColor( < 1.0, 0.0, 0.0 > , ALL_SIDES ); // set color to red.
|
||||
|
||||
float objMass = llGetMass();
|
||||
float Z_force = 10.2 * objMass;
|
||||
|
||||
llSetForce( < 0.0, 0.0, Z_force >, FALSE );
|
||||
|
||||
llSay( 0, "Force of " + (string)Z_force + " being applied." );
|
||||
llSetTimerEvent(1);
|
||||
}
|
||||
|
||||
timer()
|
||||
{
|
||||
second++;
|
||||
curPos = llGetPos();
|
||||
float curDisplacement = llVecMag( curPos - startPos );
|
||||
|
||||
if( ( curDisplacement > 30. ) && // then object is too far away, and
|
||||
( llGetForce() != < 0.0, 0.0, 0.0 > ) ) // force not already zero,
|
||||
{ // then let gravity take over, and change color to green.
|
||||
llSetForce( < 0.0, 0.0, 0.0 >, FALSE );
|
||||
llSetColor( < 0, 1.0, 0 >, ALL_SIDES );
|
||||
llSay( 0, "Force removed; object in free flight." );
|
||||
}
|
||||
|
||||
if ( second > 19 ) // then time to wrap this up.
|
||||
{
|
||||
// turn object blue and zero force to be safe....
|
||||
llSetColor( < 0, 0, 1.0 >, ALL_SIDES ); // change color to blue.
|
||||
llSetForce( < 0, 0, 0 >, FALSE );
|
||||
|
||||
// ...move object back to starting position...
|
||||
// ...after saving current status of Physics attribute.
|
||||
integer savedStatus = llGetStatus( 1 );
|
||||
llSetStatus( 1, FALSE ); // turn physics off.
|
||||
while ( llVecDist( llGetPos(), startPos ) > 0.001)
|
||||
{
|
||||
llSetPos( startPos );
|
||||
}
|
||||
llSetStatus( 1, savedStatus ); // restore Physics status.
|
||||
|
||||
//...and then turn color to black and Reset the script.
|
||||
llSetColor( < 1, 1, 1 >, ALL_SIDES );
|
||||
llSetTimerEvent( 0 ); // turn off timer events.
|
||||
llSay( 0, "Done and resetting script." );
|
||||
llResetScript(); // return object to ready state.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user