private void UpdateElementsOnScreen(double roll, double pitch, double yaw)
{
try
{
foreach (var element in world.Elements)
{
var poiMarker = poiMarkers[element.Element];
if (poiMarker.ActualHeight == 0 || poiMarker.ActualWidth == 0) continue;
var offset = world.CalculateOffset(element, (int)poiMarker.ActualWidth, (int)poiMarker.ActualHeight, roll, pitch, yaw);
if (offset == null)
{
continue;
}
poiMarker.Text = element.Element.DistanceAway;
if (offset.TranslateX < -ActualWidth)
{
offset.TranslateX = -ActualWidth;
}
if (offset.TranslateX > ActualWidth * 2)
{
offset.TranslateX = ActualWidth * 2;
}
offset.TranslateY = ActualHeight / 2;
poiMarker.RenderTransform = new CompositeTransform
{
TranslateX = offset.TranslateX,
TranslateY = offset.TranslateY,
ScaleY = offset.Scale,
ScaleX = offset.Scale
};
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
}
}