private bool TryGetPoint(IViewport viewport, IntVector2 pixelPos, out Vector2 point) { point = default(Vector2); // todo: search for a placement plane in indirect parents var cPlacement = entity.ParentNode?.PresentationInfra().Placement; if (cPlacement == null) { return(false); } var globalRay = viewport.GetGlobalRayForPixelPos(pixelPos); if (!cPlacement.PlacementSurface2D.TryFindPoint2D(globalRay, out var layoutPoint)) { return(false); } var entityRect = rectangleAspect.Rectangle; point = layoutPoint - entityRect.Center; point.X /= entityRect.HalfWidth; point.Y /= entityRect.HalfHeight; return(true); }