Refactor to fix InterpolateMovements=false

This commit is contained in:
smoogipoo 2021-08-13 12:10:33 +09:00
parent 5241029513
commit 7cc0a2a76f
2 changed files with 14 additions and 17 deletions

View File

@ -79,8 +79,13 @@ protected override void Update()
protected override bool OnMouseMove(MouseMoveEvent e) protected override bool OnMouseMove(MouseMoveEvent e)
{ {
currentPosition = e.ScreenSpaceMousePosition; if (!disjointTrail)
return base.OnMouseMove(e); return base.OnMouseMove(e);
currentPosition = e.ScreenSpaceMousePosition;
// Intentionally block the base call as we're adding the trails ourselves.
return false;
} }
} }
} }

View File

@ -146,33 +146,25 @@ private void resetTime()
protected override bool OnMouseMove(MouseMoveEvent e) protected override bool OnMouseMove(MouseMoveEvent e)
{ {
Vector2 position = e.ScreenSpaceMousePosition; AddTrail(e.ScreenSpaceMousePosition);
if (lastPosition == null)
{
lastPosition = position;
resampler.AddPosition(lastPosition.Value);
return base.OnMouseMove(e);
}
if (InterpolateMovements)
AddTrail(position);
return base.OnMouseMove(e); return base.OnMouseMove(e);
} }
protected void AddTrail(Vector2 position) protected void AddTrail(Vector2 position)
{ {
if (!lastPosition.HasValue)
return;
if (InterpolateMovements) if (InterpolateMovements)
{ {
if (!lastPosition.HasValue)
{
lastPosition = position;
resampler.AddPosition(lastPosition.Value);
return;
}
foreach (Vector2 pos2 in resampler.AddPosition(position)) foreach (Vector2 pos2 in resampler.AddPosition(position))
{ {
Trace.Assert(lastPosition.HasValue); Trace.Assert(lastPosition.HasValue);
// ReSharper disable once PossibleInvalidOperationException
Vector2 pos1 = lastPosition.Value; Vector2 pos1 = lastPosition.Value;
Vector2 diff = pos2 - pos1; Vector2 diff = pos2 - pos1;
float distance = diff.Length; float distance = diff.Length;