zinnschlag/openmw — pull request #1244 by mrcheko (2014-02-02 15:01:33+00:00)
Title: several animation logic fixes (in game mechanics)

1. actor could fall in knockdown several times in a row (from 1 hit);
2. this bug was observed on centurion movement: in the end of each step animation doesn't have any movement for short time, so centurion was sliding unrealistically at those moments.
About creatures' speed: as I was comparing this to vanilla, I made a conclusion that animation speed = 1.0 give correct results. Also you can see here http://www.uesp.net/morrow/monsters/mwmonsters.shtml that atronach_frost has speed = 14 and centurion speed = 12. But in vanilla atronach_frost move slower than centurion. If you'll try speed = 1.0f for creatures, than you'll see that it acts just like in MW.
Important note: there is some problem with "ascended_sleeper" (it moves extremely slow in MW). In openMW he moves like he has no animation accumulation and this is NOT depends of my current commit.

3. the same code for whole-body animations which I suggested some time ago. I remind you of one problem with that: when accum root of the animation system doesn't have active animation (mPlaying = true) than updatePosition isn't called. That causes bug - body pos desync - when holding lmb while attacking and sneaking/jumping. The solution I suggest is just launching infinite minAttackToMaxAttack animation play with speed = 0. The other solution I tried was adding some additional loop through all mStates in animation::runAnimation if accumRoot wasn't updated, but that gave some fps loss (e.g. 220 -> 204).