Add epsilon clamping for keyframes adding in timeline
This commit is contained in:
@@ -1026,15 +1026,21 @@ namespace FlaxEditor.GUI
|
||||
/// <returns>The index of the keyframe.</returns>
|
||||
public int AddKeyframe(LinearCurve<T>.Keyframe k)
|
||||
{
|
||||
var eps = Mathf.Epsilon;
|
||||
if (FPS.HasValue)
|
||||
{
|
||||
float fps = FPS.Value;
|
||||
k.Time = Mathf.Floor(k.Time * fps) / fps;
|
||||
eps = 1.0f / fps;
|
||||
}
|
||||
|
||||
int pos = 0;
|
||||
while (pos < _keyframes.Count && _keyframes[pos].Time < k.Time)
|
||||
pos++;
|
||||
_keyframes.Insert(pos, k);
|
||||
if (_keyframes.Count > pos && Mathf.Abs(_keyframes[pos].Time - k.Time) < eps)
|
||||
_keyframes[pos] = k;
|
||||
else
|
||||
_keyframes.Insert(pos, k);
|
||||
|
||||
OnKeyframesChanged();
|
||||
OnEdited();
|
||||
@@ -1513,15 +1519,21 @@ namespace FlaxEditor.GUI
|
||||
/// <returns>The index of the keyframe.</returns>
|
||||
public int AddKeyframe(BezierCurve<T>.Keyframe k)
|
||||
{
|
||||
var eps = Mathf.Epsilon;
|
||||
if (FPS.HasValue)
|
||||
{
|
||||
float fps = FPS.Value;
|
||||
k.Time = Mathf.Floor(k.Time * fps) / fps;
|
||||
eps = 1.0f / fps;
|
||||
}
|
||||
|
||||
int pos = 0;
|
||||
while (pos < _keyframes.Count && _keyframes[pos].Time < k.Time)
|
||||
pos++;
|
||||
_keyframes.Insert(pos, k);
|
||||
if (_keyframes.Count > pos && Mathf.Abs(_keyframes[pos].Time - k.Time) < eps)
|
||||
_keyframes[pos] = k;
|
||||
else
|
||||
_keyframes.Insert(pos, k);
|
||||
|
||||
OnKeyframesChanged();
|
||||
OnEdited();
|
||||
|
||||
Reference in New Issue
Block a user