Any and all insight will be greatly appreciated.
Cheers, Moose
integer stop = TRUE;
integer bounces = 0;
float pulse = 10.0;
integer collisionUnderway = FALSE;
setVel(vector velocity)
{
llOwnerSay("Start setVel: "+(string)llGetVel());
llApplyImpulse(llGetMass() * (velocity - llGetVel()), FALSE);
llOwnerSay("End setVel: "+(string)llGetVel());
}
bounce()
{
if(stop)
{
// llOwnerSay("STOPPED: "+(string)llGetPos()+"/"+(string)llGetVel()+"/"+(string)llGetEnergy());
return;
}
else if(bounces > 5)
{
llOwnerSay("STOPPING"
;llApplyImpulse(-llGetMass()*llGetVel(), FALSE);
stop = TRUE;
return;
}
else
{
bounces++;
setVel(<0,0,1>
;return;
}
}
default
{
on_rez(integer arg)
{
llResetScript();
llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, FALSE);
collisionUnderway = FALSE;
bounces = 0;
stop = TRUE;
}
state_entry()
{
llSetStatus(STATUS_ROTATE_X | STATUS_ROTATE_Y | STATUS_ROTATE_Z, FALSE);
llListen(0, "", llGetOwner(), ""
; collisionUnderway = FALSE;
}
touch(integer num_detected)
{
bounces = 0;
stop = FALSE;
collisionUnderway = FALSE;
llSetPos(llGetPos()+<0, 0, 1.0>
;}
listen(integer channel, string name, key id, string message)
{
list command = llParseString2List(llToLower(message), [" "], []);
if ((llGetListLength(command) > 1) && (llList2String(command, 0) == "hop"
){
bounces = 0;
stop = FALSE;
collisionUnderway = FALSE;
llSetPos(llGetPos()+<0, 0, llList2Float(command, 1)>
;bounce();
}
}
collision_start(integer num_detected)
{
if(!collisionUnderway)
{
collisionUnderway = TRUE;
bounce();
}
}
collision_end(integer num_detected)
{
collisionUnderway = FALSE;
}
}
