Projects the point from 3D world-space to viewport coordinates. The input world-space location (XYZ in world). The output viewport window coordinates (XY in screen pixels).
(Vector3 worldSpaceLocation, out Float2 viewportSpaceLocation)
| 1512 | /// <param name="worldSpaceLocation">The input world-space location (XYZ in world).</param> |
| 1513 | /// <param name="viewportSpaceLocation">The output viewport window coordinates (XY in screen pixels).</param> |
| 1514 | public void ProjectPoint(Vector3 worldSpaceLocation, out Float2 viewportSpaceLocation) |
| 1515 | { |
| 1516 | viewportSpaceLocation = Float2.Minimum; |
| 1517 | var viewport = new FlaxEngine.Viewport(0, 0, Width, Height); |
| 1518 | if (viewport.Width < Mathf.Epsilon || viewport.Height < Mathf.Epsilon) |
| 1519 | return; |
| 1520 | Vector3 viewOrigin = Task.View.Origin; |
| 1521 | Float3 position = ViewPosition - viewOrigin; |
| 1522 | CreateProjectionMatrix(out var p); |
| 1523 | CreateViewMatrix(position, out var v); |
| 1524 | Matrix.Multiply(ref v, ref p, out var vp); |
| 1525 | viewport.Project(ref worldSpaceLocation, ref vp, out var projected); |
| 1526 | viewportSpaceLocation = new Float2((float)projected.X, (float)projected.Y); |
| 1527 | } |
| 1528 | |
| 1529 | /// <summary> |
| 1530 | /// Called when mouse control begins. |