MaKiPL / OpenVIII-monogame

Open source Final Fantasy VIII engine implementation in C# working on Windows and Linux (Android and iOS planned too!) [Monogame]
MIT License
631 stars 58 forks source link

Battle Camera shakes at end of animation. #168

Closed Sebanisu closed 4 years ago

Sebanisu commented 4 years ago

The camera near end or end of animation in battle it shakes. I almost think somehow the value of the one of two vectors changes or the fov before coming to rest.

Sebanisu commented 4 years ago

In the last 7 or so frames of animation. Seems at some point CameraTarget == CameraPosition which results in NaN's in the Matrixes. Then the camera Target becomes negative z value for like 3 frames as it goes back to the value it was in like 3 more frames.

Sebanisu commented 4 years ago

Okay so I dumped the raw short values from _cameraLookAt and in the last like 7 frames the starting point becomes 0 but the ending point stays the same.

(151, -1891, -1277) // start
(-453, -293, 260) //end

becomes

(0, 0, 0) // start
(-453, -293, 260) // end
Sebanisu commented 4 years ago

seems the starting position for _cameraWorld is also set to 0. So what I think I'll do is if both are detected to be 0 I'll just assume camera animation is done.

Sebanisu commented 4 years ago
public bool Done => CurrentTime >= TotalTime || (_cameraLookAtX[0], _cameraLookAtY[0], _cameraLookAtZ[0],_cameraWorldX[0], _cameraWorldY[0], _cameraWorldZ[0]) == (0, 0, 0, 0, 0, 0);

This seems to work well. Hopefully this isn't more complicated than that. :)