void FVisualLoggerCanvasRenderer::DrawOnCanvas(class UCanvas* Canvas, class APlayerController*) { if (GEngine == NULL || CurrentTimeLine.IsValid() == false) { return; } UWorld* World = FLogVisualizer::Get().GetWorld(); if (World == NULL) { return; } UFont* Font = GEngine->GetSmallFont(); FCanvasTextItem TextItem(FVector2D::ZeroVector, FText::GetEmpty(), Font, FLinearColor::White); const FString TimeStampString = FString::Printf(TEXT("%.2f"), SelectedEntry.TimeStamp); LogVisualizer::DrawTextShadowed(Canvas, Font, TimeStampString, SelectedEntry.Location); for (const auto CurrentData : SelectedEntry.DataBlocks) { const FName TagName = CurrentData.TagName; const bool bIsValidByFilter = FCategoryFiltersManager::Get().MatchCategoryFilters(CurrentData.Category.ToString(), ELogVerbosity::All) && FCategoryFiltersManager::Get().MatchCategoryFilters(CurrentData.TagName.ToString(), ELogVerbosity::All); FVisualLogExtensionInterface* Extension = FVisualLogger::Get().GetExtensionForTag(TagName); if (!Extension) { continue; } if (!bIsValidByFilter) { Extension->DisableDrawingForData(FLogVisualizer::Get().GetWorld(), Canvas, NULL, TagName, CurrentData, SelectedEntry.TimeStamp); } else { Extension->DrawData(FLogVisualizer::Get().GetWorld(), Canvas, NULL, TagName, CurrentData, SelectedEntry.TimeStamp); } } if (ULogVisualizerSessionSettings::StaticClass()->GetDefaultObject<ULogVisualizerSessionSettings>()->bEnableGraphsVisualization) { DrawHistogramGraphs(Canvas, NULL); } }
void SVisualLoggerLogsList::LogEntryLineSelectionChanged(TSharedPtr<FLogEntryItem> SelectedItem, ESelectInfo::Type SelectInfo) { TMap<FName, FVisualLogExtensionInterface*>& AllExtensions = FVisualLogger::Get().GetAllExtensions(); for (auto Iterator = AllExtensions.CreateIterator(); Iterator; ++Iterator) { FVisualLogExtensionInterface* Extension = (*Iterator).Value; if (Extension != NULL) { if (SelectedItem.IsValid() == true) { Extension->LogEntryLineSelectionChanged(SelectedItem, SelectedItem->UserData, SelectedItem->TagName); } else { Extension->LogEntryLineSelectionChanged(SelectedItem, 0, NAME_None); } } } }
void SVisualLogger::OnLogLineSelectionChanged(TSharedPtr<struct FLogEntryItem> SelectedItem, int64 UserData, FName TagName) { const TMap<FName, FVisualLogExtensionInterface*>& AllExtensions = FVisualLogger::Get().GetAllExtensions(); for (auto Iterator = AllExtensions.CreateConstIterator(); Iterator; ++Iterator) { FVisualLogExtensionInterface* Extension = (*Iterator).Value; if (Extension != NULL) { Extension->LogEntryLineSelectionChanged(SelectedItem, UserData, TagName); } } AVisualLoggerRenderingActor* HelperActor = Cast<AVisualLoggerRenderingActor>(FLogVisualizer::Get().GetVisualLoggerHelperActor()); if (HelperActor) { HelperActor->OnItemSelectionChanged(LogsList->GetCurrentLogEntry()); HelperActor->MarkComponentsRenderStateDirty(); } }