// Copyright Epic Games, Inc. All Rights Reserved. /*=========================================================================== Generated code exported from UnrealHeaderTool. DO NOT modify this manually! Edit the corresponding .h files instead! ===========================================================================*/ #include "UObject/GeneratedCppIncludes.h" #include "Commandlets/DumpMaterialExpressionInfo.h" PRAGMA_DISABLE_DEPRECATION_WARNINGS static_assert(!UE_WITH_CONSTINIT_UOBJECT, "This generated code can only be compiled with !UE_WITH_CONSTINIT_OBJECT"); void EmptyLinkFunctionForGeneratedCodeDumpMaterialExpressionInfo() {} // ********** Begin Cross Module References ******************************************************** ENGINE_API UClass* Z_Construct_UClass_UCommandlet(); UNREALED_API UClass* Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet(); UNREALED_API UClass* Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_NoRegister(); UPackage* Z_Construct_UPackage__Script_UnrealEd(); // ********** End Cross Module References ********************************************************** // ********** Begin Class UDumpMaterialExpressionInfoCommandlet ************************************ FClassRegistrationInfo Z_Registration_Info_UClass_UDumpMaterialExpressionInfoCommandlet; UClass* UDumpMaterialExpressionInfoCommandlet::GetPrivateStaticClass() { using TClass = UDumpMaterialExpressionInfoCommandlet; if (!Z_Registration_Info_UClass_UDumpMaterialExpressionInfoCommandlet.InnerSingleton) { GetPrivateStaticClassBody( TClass::StaticPackage(), TEXT("DumpMaterialExpressionInfoCommandlet"), Z_Registration_Info_UClass_UDumpMaterialExpressionInfoCommandlet.InnerSingleton, StaticRegisterNativesUDumpMaterialExpressionInfoCommandlet, sizeof(TClass), alignof(TClass), TClass::StaticClassFlags, TClass::StaticClassCastFlags(), TClass::StaticConfigName(), (UClass::ClassConstructorType)InternalConstructor, (UClass::ClassVTableHelperCtorCallerType)InternalVTableHelperCtorCaller, UOBJECT_CPPCLASS_STATICFUNCTIONS_FORCLASS(TClass), &TClass::Super::StaticClass, &TClass::WithinClass::StaticClass ); } return Z_Registration_Info_UClass_UDumpMaterialExpressionInfoCommandlet.InnerSingleton; } UClass* Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_NoRegister() { return UDumpMaterialExpressionInfoCommandlet::GetPrivateStaticClass(); } struct Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_Statics { #if WITH_METADATA static constexpr UECodeGen_Private::FMetaDataPairParam Class_MetaDataParams[] = { { "Comment", "/**\n Finds all instances of material expressions and dumps their data to a csv.\n \n # CUSTOM HLSL EXAMPLE\n You can dump all custom hlsl nodes and their code with \n ` -dx12 -run=DumpMaterialExpressionInfo -unattended -expression=MaterialExpressionCustom -columns=Code -csv=C:/output.csv`\n\n The output can then be loaded into sqlite for querying with \n .separator \",\"\n .import C:/output.csv tbl --csv\n .save output.db\n Then you can, for example, order by hlsl snippet length:\n SELECT * FROM tbl ORDER BY length(Code)\n\n This can also be connected to R to do analysis:\n install.packages(\"RSQLite\")\n library(RSQLite)\n conn <- dbConnect(RSQLite::SQLite(), \"output.db\")\n For example, a histogram of snippet length:\n result <- dbGetQuery(conn, \"SELECT length(Code) FROM tbl\")\n hist(result$`length(Code)`)\n Or a treemap showing which folders and assets have the most custom HLSL code nodes\n result <- dbGetQuery(conn, \"SELECT Name,length(Code) FROM tbl\")\n name <- strsplit(result$Name, \"/\")\n -- Get maximum number of path segments\n name_max_length <- max(sapply(name, length))\n -- Make every asset path have the same number of segments (columns)\n name_padded_list <- lapply(name, function(x) {\n length(x) <- name_max_length\n return(x)\n })\n -- Convert to matrix, trim empty space from front\n name_matrix <- do.call(rbind, name_padded_list)\n name_matrix <- name_matrix[,-1]\n -- Make treemap\n df <- as.data.frame(name_matrix)\n -- To weight by volume of code instead of number of nodes, use df$Value <- result$`length(Code)`\n df$Value <- rep(1, times=length(result$`length(Code)`))\n treemap(df, index = c(\"V1\", \"V2\", \"V3\"), vSize=\"Value\")\n */" }, { "IncludePath", "Commandlets/DumpMaterialExpressionInfo.h" }, { "ModuleRelativePath", "Classes/Commandlets/DumpMaterialExpressionInfo.h" }, { "ToolTip", "Finds all instances of material expressions and dumps their data to a csv.\n\n# CUSTOM HLSL EXAMPLE\nYou can dump all custom hlsl nodes and their code with\n` -dx12 -run=DumpMaterialExpressionInfo -unattended -expression=MaterialExpressionCustom -columns=Code -csv=C:/output.csv`\n\nThe output can then be loaded into sqlite for querying with\n .separator \",\"\n .import C:/output.csv tbl --csv\n .save output.db\nThen you can, for example, order by hlsl snippet length:\n SELECT * FROM tbl ORDER BY length(Code)\n\nThis can also be connected to R to do analysis:\n install.packages(\"RSQLite\")\n library(RSQLite)\n conn <- dbConnect(RSQLite::SQLite(), \"output.db\")\nFor example, a histogram of snippet length:\n result <- dbGetQuery(conn, \"SELECT length(Code) FROM tbl\")\n hist(result$`length(Code)`)\nOr a treemap showing which folders and assets have the most custom HLSL code nodes\n result <- dbGetQuery(conn, \"SELECT Name,length(Code) FROM tbl\")\n name <- strsplit(result$Name, \"/\")\n -- Get maximum number of path segments\n name_max_length <- max(sapply(name, length))\n -- Make every asset path have the same number of segments (columns)\n name_padded_list <- lapply(name, function(x) {\n length(x) <- name_max_length\n return(x)\n })\n -- Convert to matrix, trim empty space from front\n name_matrix <- do.call(rbind, name_padded_list)\n name_matrix <- name_matrix[,-1]\n -- Make treemap\n df <- as.data.frame(name_matrix)\n -- To weight by volume of code instead of number of nodes, use df$Value <- result$`length(Code)`\n df$Value <- rep(1, times=length(result$`length(Code)`))\n treemap(df, index = c(\"V1\", \"V2\", \"V3\"), vSize=\"Value\")" }, }; #endif // WITH_METADATA // ********** Begin Class UDumpMaterialExpressionInfoCommandlet constinit property declarations **** // ********** End Class UDumpMaterialExpressionInfoCommandlet constinit property declarations ****** static UObject* (*const DependentSingletons[])(); static constexpr FCppClassTypeInfoStatic StaticCppClassTypeInfo = { TCppClassTypeTraits::IsAbstract, }; static const UECodeGen_Private::FClassParams ClassParams; }; // struct Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_Statics UObject* (*const Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_Statics::DependentSingletons[])() = { (UObject* (*)())Z_Construct_UClass_UCommandlet, (UObject* (*)())Z_Construct_UPackage__Script_UnrealEd, }; static_assert(UE_ARRAY_COUNT(Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_Statics::DependentSingletons) < 16); const UECodeGen_Private::FClassParams Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_Statics::ClassParams = { &UDumpMaterialExpressionInfoCommandlet::StaticClass, "Editor", &StaticCppClassTypeInfo, DependentSingletons, nullptr, nullptr, nullptr, UE_ARRAY_COUNT(DependentSingletons), 0, 0, 0, 0x000000A8u, METADATA_PARAMS(UE_ARRAY_COUNT(Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_Statics::Class_MetaDataParams), Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_Statics::Class_MetaDataParams) }; void UDumpMaterialExpressionInfoCommandlet::StaticRegisterNativesUDumpMaterialExpressionInfoCommandlet() { } UClass* Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet() { if (!Z_Registration_Info_UClass_UDumpMaterialExpressionInfoCommandlet.OuterSingleton) { UECodeGen_Private::ConstructUClass(Z_Registration_Info_UClass_UDumpMaterialExpressionInfoCommandlet.OuterSingleton, Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet_Statics::ClassParams); } return Z_Registration_Info_UClass_UDumpMaterialExpressionInfoCommandlet.OuterSingleton; } DEFINE_VTABLE_PTR_HELPER_CTOR_NS(, UDumpMaterialExpressionInfoCommandlet); UDumpMaterialExpressionInfoCommandlet::~UDumpMaterialExpressionInfoCommandlet() {} // ********** End Class UDumpMaterialExpressionInfoCommandlet ************************************** // ********** Begin Registration ******************************************************************* struct Z_CompiledInDeferFile_FID_Engine_Source_Editor_UnrealEd_Classes_Commandlets_DumpMaterialExpressionInfo_h__Script_UnrealEd_Statics { static constexpr FClassRegisterCompiledInInfo ClassInfo[] = { { Z_Construct_UClass_UDumpMaterialExpressionInfoCommandlet, UDumpMaterialExpressionInfoCommandlet::StaticClass, TEXT("UDumpMaterialExpressionInfoCommandlet"), &Z_Registration_Info_UClass_UDumpMaterialExpressionInfoCommandlet, CONSTRUCT_RELOAD_VERSION_INFO(FClassReloadVersionInfo, sizeof(UDumpMaterialExpressionInfoCommandlet), 3694357617U) }, }; }; // Z_CompiledInDeferFile_FID_Engine_Source_Editor_UnrealEd_Classes_Commandlets_DumpMaterialExpressionInfo_h__Script_UnrealEd_Statics static FRegisterCompiledInInfo Z_CompiledInDeferFile_FID_Engine_Source_Editor_UnrealEd_Classes_Commandlets_DumpMaterialExpressionInfo_h__Script_UnrealEd_1518404091{ TEXT("/Script/UnrealEd"), Z_CompiledInDeferFile_FID_Engine_Source_Editor_UnrealEd_Classes_Commandlets_DumpMaterialExpressionInfo_h__Script_UnrealEd_Statics::ClassInfo, UE_ARRAY_COUNT(Z_CompiledInDeferFile_FID_Engine_Source_Editor_UnrealEd_Classes_Commandlets_DumpMaterialExpressionInfo_h__Script_UnrealEd_Statics::ClassInfo), nullptr, 0, nullptr, 0, }; // ********** End Registration ********************************************************************* PRAGMA_ENABLE_DEPRECATION_WARNINGS