void TimeMeasure::Dump(FunctionMeasure * function, uint32 level) { #if defined(__DAVAENGINE_ENABLE_DEBUG_STATS__) if (level == 0) { Logger::Debug("Stats for frame: %d", Core::Instance()->GetGlobalFrameIndex()); for (List<FunctionMeasure*>::iterator it = mainThread.topFunctions.begin(); it != mainThread.topFunctions.end(); ++it) { FunctionMeasure * function = *it; if (function->frameCounter == Core::Instance()->GetGlobalFrameIndex()) Dump(function, level + 1); } }else { Logger::Debug("%s %s %0.9llf seconds", GetIndentString('-', level + 1), function->name.c_str(), (double)function->timeSpent / 1e+9); for (HashMap<FunctionMeasure *, FunctionMeasure *>::Iterator it = function->children.Begin(); it != function->children.End(); ++it) { FunctionMeasure * childFunction = it.GetValue(); if (childFunction->frameCounter == Core::Instance()->GetGlobalFrameIndex()) Dump(childFunction, level + 1); } } #endif }
//------------------------------------------------------------------------------ static int32 GetShowCategories(uint32 Indent, UClass* Class, FString& JsonOut) { FString IndentString = GetIndentString(Indent); JsonOut += IndentString + TEXT("\"ShownCategories\" : ["); TArray<FString> ShowCategories; FEditorCategoryUtils::GetClassShowCategories(Class, ShowCategories); for (FString const& Category : ShowCategories) { JsonOut += TEXT("\n\t") + IndentString + TEXT("\"") + Category + TEXT("\","); } if (ShowCategories.Num() > 0) { JsonOut.RemoveAt(JsonOut.Len() - 1); // remove the last comma } JsonOut += TEXT("\n") + IndentString + TEXT("]"); return ShowCategories.Num(); }
//------------------------------------------------------------------------------ static int32 GetHiddenProperties(uint32 Indent, UClass* Class, FString& JsonOut) { int32 HiddenPropCount = 0; FString IndentString = GetIndentString(Indent); JsonOut += IndentString + TEXT("\"HiddenProperties\" : ["); for (TFieldIterator<UProperty> PropertyIt(Class, EFieldIteratorFlags::IncludeSuper); PropertyIt; ++PropertyIt) { UProperty* Property = *PropertyIt; if (FObjectEditorUtils::IsVariableCategoryHiddenFromClass(Property, Class)) { ++HiddenPropCount; JsonOut += TEXT("\n\t") + IndentString + TEXT("\"") + Property->GetPathName() + TEXT("\","); } } if (HiddenPropCount > 0) { JsonOut.RemoveAt(JsonOut.Len() - 1); // remove the last comma } JsonOut += TEXT("\n") + IndentString + TEXT("]"); return HiddenPropCount; }
//------------------------------------------------------------------------------ static int32 GetHiddenFunctions(uint32 Indent, UClass* Class, bool bShowFunLibs, FString& JsonOut) { int32 HiddenFuncCount = 0; FString IndentString = GetIndentString(Indent); JsonOut += IndentString + TEXT("\"HiddenFunctions\" : ["); FString& OutputString = JsonOut; UClass* CallingClass = Class; auto FindHiddenFuncs = [&IndentString, &CallingClass, &HiddenFuncCount, &OutputString] (UClass* FunctionClass) { for (TFieldIterator<UFunction> FunctionIt(FunctionClass, EFieldIteratorFlags::IncludeSuper); FunctionIt; ++FunctionIt) { UFunction* Function = *FunctionIt; if (FObjectEditorUtils::IsFunctionHiddenFromClass(Function, CallingClass)) { ++HiddenFuncCount; OutputString += TEXT("\n\t") + IndentString + TEXT("\"") + Function->GetPathName() + TEXT("\","); } } /*for (TFieldIterator<UObjectProperty> PropIt(FuncClass, EFieldIteratorFlags::IncludeSuper); PropIt; ++PropIt) { UClass* PropClass = PropIt->PropertyClass; for (TFieldIterator<UFunction> FunctionIt(PropClass, EFieldIteratorFlags::IncludeSuper); FunctionIt; ++FunctionIt) { if (FObjectEditorUtils::IsFunctionHiddenFromClass(*FunctionIt, ThisClass)) { ++HiddenFuncCount; OutputString += TEXT("\n\t\t\t\"") + FunctionIt->GetPathName() + TEXT("\","); } } }*/ }; FindHiddenFuncs(CallingClass); // find all this class's functions if (bShowFunLibs) { for (TObjectIterator<UClass> ClassIt; ClassIt; ++ClassIt) // find all functions in each function library { UClass* TestClass = *ClassIt; // if this is a skeleton class, don't bother if (FKismetEditorUtilities::IsClassABlueprintSkeleton(TestClass)) { continue; } if (TestClass->IsChildOf(UBlueprintFunctionLibrary::StaticClass())) { FindHiddenFuncs(TestClass); } } } if (HiddenFuncCount > 0) { OutputString.RemoveAt(OutputString.Len() - 1); // remove the last comma } OutputString += TEXT("\n") + IndentString + TEXT("]"); return HiddenFuncCount; }