Пример #1
0
        /// <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)
            {
            }
        }
Пример #2
0
 /// <summary>
 /// Сигнал обновления компонентов вида
 /// </summary>
 /// <param name="parDeltaTime">Время кадра</param>
 public override void ViewUpdateSignal(double parDeltaTime)
 {
     ActualViewEventsHandler.ViewUpdate(parDeltaTime);
 }
Пример #3
0
 /// <summary>
 /// Получение сообщения об обновлении компонента
 /// </summary>
 /// <param name="parTargetComponent">Обновленный компонент</param>
 public override void ReceiveNotificationUpdated(ViewProviderComponent parTargetComponent)
 {
     ActualViewEventsHandler.OnComponentUpdated(parTargetComponent);
 }