Editor plugin that detects geometrically-identical sibling StaticMeshes across a level, rebases each placement onto one canonical mesh with a corrected transform (W' = D * W, verified by exact vertex matching), and can collapse groups into HISM. Native Slate tool panel + BlueprintCallable UOptimizerSubsystem. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
// Copyright IHY.
|
|
|
|
using UnrealBuildTool;
|
|
|
|
public class OptimizerEditor : ModuleRules
|
|
{
|
|
public OptimizerEditor(ReadOnlyTargetRules Target) : base(Target)
|
|
{
|
|
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
|
|
|
|
PublicDependencyModuleNames.AddRange(new string[]
|
|
{
|
|
"Core",
|
|
"CoreUObject",
|
|
"Engine", // UStaticMesh, UStaticMeshComponent, AActor, FTransform
|
|
});
|
|
|
|
PrivateDependencyModuleNames.AddRange(new string[]
|
|
{
|
|
// --- editor core ---
|
|
"UnrealEd", // GEditor, FScopedTransaction, UEditorActorSubsystem, editor world context
|
|
"EditorSubsystem", // UEditorSubsystem (base of UOptimizerSubsystem)
|
|
"Slate", // notifications / future Slate bits
|
|
"SlateCore",
|
|
"InputCore",
|
|
"ToolMenus", // UToolMenus — Tools menu entry
|
|
"Projects", // IPluginManager
|
|
"UMG", // UWidgetBlueprint chain pulled in by the EUW headers
|
|
"UMGEditor", // WidgetBlueprint.h include path (transitive via EditorUtilityWidgetBlueprint.h)
|
|
"Blutility", // UEditorUtilitySubsystem / UEditorUtilityWidgetBlueprint (open the EUW panel)
|
|
|
|
// --- mesh geometry & asset discovery (load-bearing for fingerprinting) ---
|
|
"MeshDescription", // FMeshDescription — LOD0 source vertex/poly data
|
|
"StaticMeshDescription", // FStaticMeshAttributes, UStaticMesh::GetMeshDescription
|
|
"AssetRegistry", // enumerate UStaticMesh assets when needed
|
|
"AssetTools", // asset metadata helpers
|
|
});
|
|
}
|
|
}
|