Jump to content

llSetKeyframedMotion fails with continuous use


You are about to reply to a thread that has been inactive for 3283 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 post
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 post
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 post
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 post
Share on other sites
  • 4 weeks later...
You are about to reply to a thread that has been inactive for 3283 days.

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...