internal override bool MouseMoved(IGameViewport viewport, MessageMouseArgs args) { ClearResults(); SetResultLocationFromMouse(args); if (Picker.flagsTarget.HasFlag(UiPickerFlagsTarget.Radius)) { TrimRangeOfPicker(Result.location); using var rayPkt = CreateRaycast(Result.location); rayPkt.Raycast(); foreach (var resultItem in rayPkt) { if (resultItem.obj != null) { if (Result.objList == null) { Result.objList = new List <GameObject>(); } Result.objList.Add(resultItem.obj); } } if (Result.objList != null) { Result.flags |= PickerResultFlags.PRF_HAS_MULTI_OBJ; } } Picker.DoExclusions(); return(true); }
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); }