/// <summary> /// Передает команду на рендеринг отображения модели /// </summary> public override void Render() { lock (_currentGameWindow.NextRenderTaskLock) { if (ActualViewEventsHandler.RendereringDataWasUpdatedFlag) { ActualViewEventsHandler.RendereringDataWasUpdatedFlag = false; //сортировка по глубине List <RenderingData?> renderingData = ActualViewEventsHandler.GetRenderingData(); renderingData.RemoveAll(parX => parX == null); renderingData = renderingData.OrderByDescending(parX => parX.Value.Depth).ToList(); foreach (var renderTaskDescr in renderingData) { foreach (var renderTask in renderTaskDescr.Value.RenderingTasks) { _currentGameWindow.AddTask(renderTask); } } } } while (!_currentGameWindow.RenderReady) { } //необходимо также дождаться обновления _currentGameWindow.WaitingForUpdateFlag = false; while (!_currentGameWindow.WaitingForUpdateFlag) { } }
/// <summary> /// Сигнал обновления компонентов вида /// </summary> /// <param name="parDeltaTime">Время кадра</param> public override void ViewUpdateSignal(double parDeltaTime) { ActualViewEventsHandler.ViewUpdate(parDeltaTime); }
/// <summary> /// Получение сообщения об обновлении компонента /// </summary> /// <param name="parTargetComponent">Обновленный компонент</param> public override void ReceiveNotificationUpdated(ViewProviderComponent parTargetComponent) { ActualViewEventsHandler.OnComponentUpdated(parTargetComponent); }