[CF-Devel] synchronizing multipart animation
crossfire-devel-admin at archives.real-time.com
crossfire-devel-admin at archives.real-time.com
Sun May 25 11:44:31 CDT 2003
There is an age-old bug in the Crossfire server which causes
multi-part animations to ge out of sunchronization.
I have noticed that it happens a lot more often nowadays,
to the point where it really gets annoying.
I manage to reproduce it reliably when I enter scorn zoo
(downstairs) repeadedly and run around there.
I have no idea what is really causing the sync error,
but the root problems is obvious: Multi part animations
start in the same state, but they don't run synchronized.
I've written a trivial change which makes all multi-tails
copy the animation state from their head, instead of
running their own animation cycles.
I've tested it and have never again seen multi-parts getting
out of synchronization.
AndreasV
Below is the new, modified code from the animate_object()
function of "common/anim.c":
void animate_object(object *op, int dir) {
int max_state; /* Max animation state object should be drawn in */
int base_state; /* starting index # to draw from */
if(!op->animation_id || !NUM_ANIMATIONS(op)) {
LOG(llevError,"Object lacks animation.\n");
dump_object(op);
return;
}
if (op->head && op->head != op) {
/* all multi-tail parts run synchronized with their head */
dir = op->head->direction;
if (NUM_ANIMATIONS(op) == NUM_ANIMATIONS(op->head))
op->state = op->head->state;
else
++op->state;
}
else {
++op->state; /* increase draw state */
}
/* If object is turning, then max animation state is half through the
* animations. Otherwise, we can use all the animations.
*/
max_state=NUM_ANIMATIONS(op)/ NUM_FACINGS(op);
base_state=0;
...
...
[rest of the funtion stay the same]
--
+++ GMX - Mail, Messaging & more
http://www.gmx.net
+++
Bitte lächeln! Fotogalerie online mit GMX ohne eigene Homepage!
_______________________________________________
crossfire-devel mailing list
crossfire-devel at lists.real-time.com
https://mailman.real-time.com/mailman/listinfo/crossfire-devel
More information about the crossfire
mailing list