There are a lot of tricks out there to get prims to change in size, position, rotation and color gradually. Things like a an animated door swinging open in steps would require many updates in a small period of time to keep updating its rotation.
Wouldn't it be great if the llSetPrimitiveParams method accepted an extra parameter to identifiy a smooth animation period and a value identifying how long it should take to change the values? All of the animation is done on the client instead, and the server just has to deal with the before and after states rather then animating each individual step.
llSetPrimitiveParams([PRIM_SIZE, <1, 1, 1>, PRIM_CHANGE_DURATION, 3.0]);
So the above code would let the prim change from its current size to 1 meter cubed in the course of three seconds. The server instantly changes, but tells all clients in the area that the change happens gradually over a 3 second period. (sort of like how llTargetOmega works - objects never move on the server, but server tells clients that they move).
You couldn't do this for all prim parameters, but I imagine that the change could apply to the following parameters:
PRIM_COLOR - fade from current color to new color (think dance floors)
PRIM_FULLBRIGHT - fade from self glowing to not glowing (neat for lights turning on and off)
PRIM_POSISTION - slide prim to new position (non-physics vehicles move more smothly)
PRIM_ROTATION - slide prim to new rotation (nice for clocks with hands and swings)
PRIM_SIZE - smoth scaling (nice for those sliding curtains)
PRIM_TEXTURE - fade one texture out while another texture fades in (slide shows and vendors)