Start cleaning WingReferences to be *just* the reference type and no methods

This commit is contained in:
2026-04-07 23:41:04 -04:00
parent 9382ed85f8
commit 9c3fab26c4
8 changed files with 30 additions and 42 deletions

View File

@@ -59,7 +59,7 @@ public:
WingFetcher F(GraphObj, WingOut::Stdout);
UWingPinReference* PinRef = F.Node(Entry.Node).Pin(Entry.Name).Cast<UWingPinReference>();
if (!PinRef) return;
UEdGraphPin* Pin = PinRef->CheckGetPin(WingOut::Stdout);
UEdGraphPin* Pin = WingUtils::CheckGetPin(PinRef->Node, PinRef->PinName, WingOut::Stdout);
if (!Pin) return;
UEdGraphNode* Node = Pin->GetOwningNode();

View File

@@ -67,13 +67,13 @@ public:
WingFetcher FS(G, WingOut::Stdout);
UWingPinReference* SourcePinRef = FS.Walk(Entry.SourcePin).Cast<UWingPinReference>();
if (!SourcePinRef) continue;
UEdGraphPin* SourcePin = SourcePinRef->CheckGetPin(WingOut::Stdout);
UEdGraphPin* SourcePin = WingUtils::CheckGetPin(SourcePinRef->Node, SourcePinRef->PinName, WingOut::Stdout);
if (!SourcePin) continue;
WingFetcher FT(G, WingOut::Stdout);
UWingPinReference* TargetPinRef = FT.Walk(Entry.TargetPin).Cast<UWingPinReference>();
if (!TargetPinRef) continue;
UEdGraphPin* TargetPin = TargetPinRef->CheckGetPin(WingOut::Stdout);
UEdGraphPin* TargetPin = WingUtils::CheckGetPin(TargetPinRef->Node, TargetPinRef->PinName, WingOut::Stdout);
if (!TargetPin) continue;
const UEdGraphSchema* Schema = G->GetSchema();

View File

@@ -66,7 +66,7 @@ public:
WingFetcher FP(G, WingOut::Stdout);
UWingPinReference* PinRef = FP.Walk(Entry.Pin).Cast<UWingPinReference>();
if (!PinRef) continue;
UEdGraphPin* Pin = PinRef->CheckGetPin(WingOut::Stdout);
UEdGraphPin* Pin = WingUtils::CheckGetPin(PinRef->Node, PinRef->PinName, WingOut::Stdout);
if (!Pin) continue;
int32 DisconnectedCount = 0;
@@ -76,7 +76,7 @@ public:
WingFetcher FT(G, WingOut::Stdout);
UWingPinReference* TargetRef = FT.Walk(Entry.TargetPin).Cast<UWingPinReference>();
if (!TargetRef) continue;
UEdGraphPin* Target = TargetRef->CheckGetPin(WingOut::Stdout);
UEdGraphPin* Target = WingUtils::CheckGetPin(TargetRef->Node, TargetRef->PinName, WingOut::Stdout);
if (!Target) continue;
if (!Pin->LinkedTo.Contains(Target))

View File

@@ -3,31 +3,4 @@
#include "EdGraph/EdGraphNode.h"
#include "EdGraph/EdGraphPin.h"
UEdGraphPin* UWingPinReference::GetPin() const
{
if (!Node) return nullptr;
for (UEdGraphPin* Pin : Node->Pins)
{
if (Pin && Pin->GetFName() == PinName) return Pin;
}
return nullptr;
}
UEdGraphPin* UWingPinReference::CheckGetPin(WingOut Errors) const
{
if (!Node)
{
Errors.Print(TEXT("ERROR: Pin reference has no node\n"));
return nullptr;
}
UEdGraphPin* Pin = GetPin();
if (!Pin)
{
Errors.Printf(TEXT("ERROR: Pin '%s' no longer exists on node '%s'\n"),
*WingUtils::ExternalizeID(PinName), *WingUtils::FormatName(Node));
return nullptr;
}
return Pin;
}

View File

@@ -490,6 +490,24 @@ UObject *WingUtils::GetGeneratedCDO(UBlueprint *BP)
return BP->GeneratedClass->GetDefaultObject();
}
// ============================================================
// Graph Pin Helpers
// ============================================================
UEdGraphPin* WingUtils::CheckGetPin(UEdGraphNode* Node, FName PinName, WingOut Errors)
{
for (UEdGraphPin* Pin : Node->Pins)
{
if (Pin && Pin->GetFName() == PinName)
{
return Pin;
}
}
Errors.Printf(TEXT("ERROR: Pin '%s' no longer exists on node '%s'\n"),
*WingUtils::ExternalizeID(PinName), *WingUtils::FormatName(Node));
return nullptr;
}
// ============================================================
// Editor helpers
// ============================================================

View File

@@ -9,10 +9,8 @@ class USCS_Node;
class UActorComponent;
class USimpleConstructionScript;
// a 'Component Reference' is basically just a pointer to a
// blueprint plus a component name. The other fields in here
// are purely for convenience of printing things out, they
// are *never* used for any analysis.
// a 'Component Reference' is just a pointer to a
// blueprint plus a component name.
//
UCLASS()
class UWingComponentReference : public UObject
@@ -37,8 +35,6 @@ public:
static TArray<UWingComponentReference*> GetAll(UBlueprint* BP);
static void PrintAll(UBlueprint* BP, WingOut Out);
static void PrintComponentInfo(const FString& TypeName, const FString& VarName,
const FString& ParentName, bool Inherited, WingOut Out);
static bool CheckValidComponentClass(UClass *Class, WingOut Errors);
private:
@@ -59,4 +55,6 @@ private:
static bool CheckOwnedByBlueprint(FoundComponent FC, UBlueprint *BP, WingOut Errors);
static void AddChildNode(UBlueprint *BP, USCS_Node *Node, FoundComponent Parent);
static TMap<FName, FName> CalculateParentNames(USimpleConstructionScript *Script);
static void PrintComponentInfo(const FString& TypeName, const FString& VarName,
const FString& ParentName, bool Inherited, WingOut Out);
};

View File

@@ -63,7 +63,4 @@ public:
UEdGraphNode* Node = nullptr;
FName PinName;
UEdGraphPin* GetPin() const;
UEdGraphPin* CheckGetPin(WingOut Errors) const;
};

View File

@@ -195,7 +195,6 @@ public:
static FString FormatName(const UWingComponentReference *Ref);
static FString FormatName(const UWidget *Widget);
////////////////////////////////////////////////////////
// static FString ExternalizeID(const FString& InternalID);
static FString ExternalizeID(FName Name);
@@ -248,6 +247,9 @@ public:
static TArray<UBlueprint*> GetAncestorBlueprints(UBlueprint *BP, bool OldestFirst = false);
static UObject *GetGeneratedCDO(UBlueprint *BP);
// ----- Graph pin helpers -----
static UEdGraphPin* CheckGetPin(UEdGraphNode* Node, FName PinName, WingOut Errors);
// ----- Editor helpers -----
static IAssetEditorInstance* CheckOpenEditorForAsset(UObject* Asset, WingOut Errors);