2.2 KiB
2.2 KiB
Serious Issues Remaining in UEWingman Handlers
Breaking API Changes
Several handlers switched from GUID-based node matching to
WingUtils::Identifies(). Since the only caller is our own MCP
bridge (which uses FormatName output from dump commands), this
is actually fine — but it's a one-way door.
- ChangeStructNodeType, SetMaterialExpressionPosition, DeleteMaterialExpression, DisconnectMaterialExpressionPin — node param now expects FormatName identifiers, not GUIDs
- RemoveStructField, AddStructField — switched from MCPAssets (accepts bare names) to WingFetcher (requires full paths)
- SetPinDefaultValues — entry struct changed from
{Blueprint, Node, PinName, Value}to{Pin, Value}where Pin is a full fetcher path - SpawnNodesInGraph — changed from
Blueprint+Graphparams to singleGraphpath
Potential Crashes
- SearchAssets —
Data.GetClass()can return null with.Info()(asset class not loaded). Would crash onFormatName. - SpawnNodesInGraph — assumes
GetOuter()of a graph is always aUBlueprint. Fails for level blueprints.
Silent Error Handling Gaps
- AddAnimStateToMachine, SetAnimStateAnimation,
SetAnimTransitionRule —
FindStateMachineGraphandFindStateByNamelack MCPErrorCallback. If the state machine or state isn't found, error reporting is ad-hoc/incomplete.
Behavioral Changes
- SetBlendSpaceSamplePoints — now aborts on animation lookup failure instead of silently inserting a blank sample. Probably better behavior, but different.
Minor Concerns
- SetNodePositions — node search across all graphs could match wrong node if names collide across graphs
- ReplaceFunctionCallsInBlueprint — connection survival uses pointer comparison; could be unsafe if pins are recreated during the replacement
- DumpMaterialInstanceParameters — parent chain lost class type info (Material vs MaterialInstance)
Design changes
- Saving assets is being done at somewhat unpredictable points. It's not entirely clear that we should be saving things every time an edit is made. It might be better to have an explicit "Save" MCP command.