private void UpdateTrackConditionMeterPosition(HudTrackConditionsViewModelInfo trackConditionViewModelInfo, FrameworkElement trackConditionView) { double left = 0; double top = 0; if (trackerConditionsMeterPosition != null) { left = trackerConditionsMeterPosition.Value.X; top = trackerConditionsMeterPosition.Value.Y; } else { Tuple <double, double> positions; if (trackConditionViewModelInfo.Position.HasValue) { positions = new Tuple <double, double>(trackConditionViewModelInfo.Position.Value.X, trackConditionViewModelInfo.Position.Value.Y); } else { positions = hudPanelService.GetInitialTrackConditionMeterPosition(); } left = positions.Item1; top = positions.Item2; trackerConditionsMeterPosition = new Point(positions.Item1, positions.Item2); trackerConditionsMeterPositionOffset = new Point(0, 0); } SetTrackConditionMeterPosition(trackConditionView, left, top); }
private void BuildTrackConditionsMeter(HudTrackConditionsViewModelInfo trackConditionViewModelInfo) { if (trackConditionViewModelInfo == null) { return; } try { var trackConditionViewModel = new HudTrackConditionsViewModel(trackConditionViewModelInfo) { OffsetX = trackerConditionsMeterPositionOffset.X, OffsetY = trackerConditionsMeterPositionOffset.Y }; var trackConditionView = new TrackConditionsMeterView { DataContext = trackConditionViewModel }; dgCanvas.Children.Add(trackConditionView); UpdateTrackConditionMeterPosition(trackConditionViewModelInfo, trackConditionView); } catch (Exception e) { LogProvider.Log.Error(this, "Failed to initialize track condition meter.", e); } }