Merge pull request #717 from WebFreak001/master

InputResample CursorTrail
This commit is contained in:
Dean Herbert
2017-05-08 13:15:48 +09:00
committed by GitHub

View File

@ -14,6 +14,7 @@ using OpenTK.Graphics.ES30;
using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Primitives;
using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Colour;
using osu.Framework.Timing; using osu.Framework.Timing;
using System.Diagnostics;
namespace osu.Game.Graphics.Cursor namespace osu.Game.Graphics.Cursor
{ {
@ -39,6 +40,8 @@ namespace osu.Game.Graphics.Cursor
private Vector2? lastPosition; private Vector2? lastPosition;
private readonly InputResampler resampler = new InputResampler();
protected override DrawNode CreateDrawNode() => new TrailDrawNode(); protected override DrawNode CreateDrawNode() => new TrailDrawNode();
protected override void ApplyDrawNode(DrawNode node) protected override void ApplyDrawNode(DrawNode node)
@ -116,12 +119,15 @@ namespace osu.Game.Graphics.Cursor
if (lastPosition == null) if (lastPosition == null)
{ {
lastPosition = state.Mouse.NativeState.Position; lastPosition = state.Mouse.NativeState.Position;
resampler.AddPosition(lastPosition.Value);
return base.OnMouseMove(state); return base.OnMouseMove(state);
} }
Vector2 pos1 = lastPosition.Value; foreach (Vector2 pos2 in resampler.AddPosition(state.Mouse.NativeState.Position))
Vector2 pos2 = state.Mouse.NativeState.Position; {
Trace.Assert(lastPosition.HasValue);
Vector2 pos1 = lastPosition.Value;
Vector2 diff = pos2 - pos1; Vector2 diff = pos2 - pos1;
float distance = diff.Length; float distance = diff.Length;
Vector2 direction = diff / distance; Vector2 direction = diff / distance;
@ -133,6 +139,7 @@ namespace osu.Game.Graphics.Cursor
lastPosition = pos1 + direction * d; lastPosition = pos1 + direction * d;
addPosition(lastPosition.Value); addPosition(lastPosition.Value);
} }
}
return base.OnMouseMove(state); return base.OnMouseMove(state);
} }