php
float distance = .25
;
float timetotake = 2.4;
float speed;
rotation backrot;
rotation forerot;
rotation stoprot;
startSwing()
{
vector vDir;
speed = distance / timetotake;
// llOwnerSay("Speed = " + (string)speed + " at start"
;llSetTimerEvent(timetotake);
vDir = llRot2Up(llGetRot());
llSetRot(stoprot);
llTargetOmega( vDir, -distance / ( 2 * timetotake ), 1.0 );
}
swingchange()
{
vector vDir = llRot2Up(llGetRot());
// llOwnerSay("timer(): gain=" + (string)gain);
// llTargetOmega( <0,0,0>, speed, 1.0 );
if( speed < 0 ) {
llSetRot(backrot);
} else {
llSetRot(forerot);
}
llTargetOmega( vDir, speed, 1.0 );
speed = 0 - speed;
}
integer swinging = 0;
default
{
on_rez(integer sp)
{
llResetScript();
}
state_entry()
{
rotation rrot = llGetRot();
vector vrot = llRot2Euler( rrot );
stoprot = rrot;
vrot.z += distance/2;
backrot = llEuler2Rot( vrot );
vrot.z -= distance;
forerot = llEuler2Rot( vrot );
// vector vrot = llRot2Euler( llGetRot() );
// vrot.z = (distance/2);//2 * speed;
// backrot = llEuler2Rot( vrot );
// vrot.z = -(distance/2);//-2 * speed;
// forerot = llEuler2Rot( vrot );
llTargetOmega(<0,0,0>, 0, 0.0);
swinging = 1;
// vrot.z = 0;
// stoprot = llEuler2Rot( vrot );
// llSetRot( stoprot );
// llOwnerSay("Backrot: " + (string)backrot + ", forerot: " + (string)forerot);
}
timer()
{
swingchange();
}
touch_start(integer vNull)
(I added the null, it was total_number, and the state sMoving and commented the swinging info.)
{
state sMoving;
}
}
state sMoving{
//if( swinging > 0 ) {
//swinging = 0;
//llSetTimerEvent(0.0);
//llTargetOmega(<0,0,0>, 0, 0.0 );
//llSetRot(stoprot);
//llTargetOmega(<0,0,0>, 0, 0.0 );
//} else {
//swinging = 1;
//startSwing();
(took out }
} here)
moving_end()
{
llSleep(2.0);
llResetScript();
}
}
/php