Jump to content

llSetKeyframedMotion fails with continuous use


Kayaker Magic
 Share

You are about to reply to a thread that has been inactive for 4331 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

    I have a bunch of swimming and flying critters that used to move in a jerky llSetPos way, I upgraded some of them to llMoveToTarget with poor results. So I was happy to see llSetKeyframedMotion and I started converting scripts over to it. It works great at first, the motion is smooth and the velocity is linear. So I left a few critters swimming around, making another llSetKeyframedMotion call once every second.

    After a few weeks, I discovered all the critters that use llSetKeyframedMotion were frozen in the water! Resetting the script didn't get them going again, I had to delete them and rez fresh ones out of inventory. Has anyone else had llSetKeyframedMotion fail after a long time? Could there be some sort of memory leak problem that slowly accumulates errors until it locks up? Or was there a server upgrade that changed llSetKeyframedMotion and required re-starting all scripts that use it?

    I'm waiting for another few weeks to see if they freeze up again.

 

Link to comment
Share on other sites

Maybe Objects with llSetKeyframedMotion() stop running after region restarts ?

ETA: My experience with that particular bug is limited to objects that run a continuous keyframed motion loop, not that call the function over and over again, so that could be an independent cause of some different problem. Don't know. Also, I've changed a lot of things since I had that problem, such that I end up re-rezzing the object and starting the motion every time the sim restarts. That was to work around a different problem (the objects getting auto-returned from Linden land), but with the side-effect of no longer exercising that bug.

Link to comment
Share on other sites

Thanks for drawing this to our attention, Qie.   It's certainly anticipated a problem that I'd otherwise have run into.

From what you're saying,  I'm guessing that something like 

 

changed(integer change)	{		if(change & CHANGED_REGION_START){			if(toggle){				llSetKeyframedMotion( [], []);				llSetKeyframedMotion(KFLList,[KFM_MODE, KFM_LOOP]);			}		}	}

 isn't going to do any good?

Link to comment
Share on other sites

I can't honestly say for sure, but my hunch is that it wouldn't help because even a (manual) script reset wouldn't get things started again.  It didn't seem to replicate every time, either, but YMMV.  All told, llSetKeyframedMotion() has been as flaky a function as I've encountered in LSL -- except when it's not.

Link to comment
Share on other sites

  • 4 weeks later...
You are about to reply to a thread that has been inactive for 4331 days.

Please take a moment to consider if this thread is worth bumping.

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...