public override MapObjectHoverData GetHoverDataTopDownView(bool isForObjectDrag, bool forceCursorPosition) { Point?relPosMaybe = MapObjectHoverData.GetPositionMaybe(isForObjectDrag, forceCursorPosition); if (!relPosMaybe.HasValue) { return(null); } Point relPos = relPosMaybe.Value; (float inGameX, float inGameZ) = MapUtilities.ConvertCoordsForInGameTopDownView(relPos.X, relPos.Y); var quadList = GetQuadList(null); for (int i = quadList.Count - 1; i >= 0; i--) { var quad = quadList[i]; var simpleQuad = quad.ConvertAll(q => (q.x, q.y, q.z)); if (MapUtilities.IsWithinRectangularQuad(simpleQuad, inGameX, inGameZ) || forceCursorPosition) { double xMin = quad.Min(p => p.x); double xMax = quad.Max(p => p.x); double zMin = quad.Min(p => p.z); double zMax = quad.Max(p => p.z); string info = string.Format("{0}<x<{1} {2}<z<{3}", xMin, xMax, zMin, zMax); return(new MapObjectHoverData(this, 0, 0, 0, index: i, info: info)); } } return(null); }
public override MapObjectHoverData GetHoverDataTopDownView(bool isForObjectDrag, bool forceCursorPosition) { Point?relPosMaybe = MapObjectHoverData.GetPositionMaybe(isForObjectDrag, forceCursorPosition); if (!relPosMaybe.HasValue) { return(null); } Point relPos = relPosMaybe.Value; (float inGameX, float inGameZ) = MapUtilities.ConvertCoordsForInGameTopDownView(relPos.X, relPos.Y); var quadList = GetQuadList(null); for (int i = quadList.Count - 1; i >= 0; i--) { var quad = quadList[i]; var simpleQuad = quad.ConvertAll(q => (q.x, q.y, q.z)); if (MapUtilities.IsWithinRectangularQuad(simpleQuad, inGameX, inGameZ) || forceCursorPosition) { (float x, float z) = GetQuadMidpoint(quad); return(new MapObjectHoverData(this, x, GetHeight(), z, index: i)); } } return(null); }