internal override bool MouseMoved(IGameViewport viewport, MessageMouseArgs args) { ClearResults(); if (WallState == WallState.StartPoint || WallState == WallState.CenterPoint) { // get startpoint location from mouse SetResultLocationFromMouse(args); return(true); } var mouseLoc = GameViews.Primary.ScreenToTile(args.X, args.Y); Trace.Assert(Result.HasLocation); var maxRange = (float)(Picker.range * locXY.INCH_PER_FEET); var dist = Result.location.DistanceTo(mouseLoc); if (maxRange > dist) { maxRange = dist; } if (WallState == WallState.EndPoint) { // get radius and range up to mouse (trimmed by walls and such) var radiusInch = Picker.radiusTarget * locXY.INCH_PER_FEET / 2.0f; Picker.GetTrimmedRange(Result.location, mouseLoc, radiusInch, maxRange, locXY.INCH_PER_FEET * 5.0f); // TODO: the 2.35 might be unneeded Picker.degreesTarget = 2.3561945f - Result.location.RotationTo(mouseLoc); // putting this in radians, unlike the usual usage Picker.GetTargetsInPath(Result.location, mouseLoc, radiusInch); Picker.DoExclusions(); return(true); } else if (WallState == WallState.Radius) { // todo } return(false); }