LizTail wrote:I think that's probably the correct way to do it. Most likely Z translation is never accumulated. In Gamebryo's later exporters, this would have been done by only moving the X and Y animation to the accumulated node, but perhaps Bethesda implemented this themselves by simply ignoring the Z component of translation.
My only real doubt with this is that the "area" for an actor does change when they get knocked down or killed. When they're killed, you have to look down at them to loot them, and when they're knocked down IIRC you have to aim your attacks down to hit them (might be wrong on that; anyone confirm?). Maybe this is special-cased though, and/or you're interacting with something else other than the normal collision shape.
In any case, the latest code is pushed to my repo. The movement solver was moved to mwworld/physicssystem.cpp, and the actual movement stuff is handled like it used to be; a vector of objects and their movements is built, then it's handed off to World::doPhysics to do the actual moving. A copy of the Ptr and list of actors is used, so there shouldn't be an issue with objects moving out of the scene, and the player is handled last so external cell transitions work. I also fixed the input handling, so you move left and right correctly.
I do notice some issues, though:
1) There's trouble walking up the stairs/slopes in Beshara. You seem to get stuck like it's too steep or something. Perhaps the step size should be increased, or the max slope increased?
2) Movement is sometimes rotated wrong. If you kill certain NPCs, they move in the wrong direction. Also when TCL'ing, looking up while walking will move you downward.
3) NPCs don't seem to be getting affected by gravity. Haven't looked into this much yet, but either they don't have an associated PhysicActor, it's failing to properly look up their PhysicActor, or they're in noclip mode.
At this point, I think all the pmove stuff can probably be deleted. I don't think it's being called at all anymore.