I'm working on an alternative elevator for a friend's store whereby the avatar sits on a freestanding non-physics pose ball which then uses multiple iterations of llSetPos to move up through a hole in the ceiling while playing an anim that makes it look as if the avatar is climbing up a prim rope just next to it. On reaching the end of its route it stops moving, stops playing the anim and unsits him.. and this is where I'm having problems.
What's a recommended way of giving him a gentle shove away from the ball when I unsit him? My experiments so far with llPushObject are giving unpredictable results (that is, I don't know enough about what I'm doing to predict the outcome). I don't want to send my friend's customers flying half-way across the room but nor do i want to drop them straight back down the hole from which they've just emerged. Ideally, I'd like to move the customer about 1 metre away from the ball's centre when I stop the anim (the ball's rotation is <0.0, 0.0, 0.0>, if that simplifies matters).
Or is there another way of doing it without using llPushObject? I've thought of moving the poseball away from the rope when I reach the top, unsitting the rider, and then moving back to the rope, and I'm considering llSetLinkPrimitivePos, though I gather that's a bit broken when it comes to moving sitting avatars. Any suggestions?
And, on a possibly related matter, what does vector angular_impulse in llPushObject do? All the examples I've seen have it set to zero and I can't find any discussion of what happens when it isn't.