Search Issue Tracker

Won't Fix

Votes

0

Found in

Issue ID

389497

Regression

No

There is a problem with animation timing precision.

Animation

-

There is a problem with precision of animation times. We use two counters for counting animation time:
1) float m_WrappedTime; // [0, 1]
2) double m_Time; // (-inf, inf)

Because of different precision and operational boundaries you can end up in situation where m_Time goes over 1 and m_WrappedTime doesn't, which leads to not triggered events... The problem can be replicated by AnimationTimePrecision test in AniamtionEventCanPauseAndContinue.cs file.

The solution would be to get rid do two counters and use just one. For example have these members:
1) float m_WrappedTime; // [0, 1]
2) int m_WrapTimes; // (-inf, inf). We could use long/double for bigger boundaries

Or just:
double m_Time;

I have a suspicion that there is another bug: if you change wrapMode to PingPong m_WrappedTime is not recalculated correctly.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.