Commit Graph

1868 Commits

Author SHA1 Message Date
jamie dale
29b79bcaf6 Audited existing usage of FText::FindText
[FYI] Leon.Huang
#rnx

[CL 36756757 by jamie dale in 5.5 branch]
2024-10-01 19:24:00 -04:00
dan oconnor
c02e0a68c6 <saved by Perforce>
#jira UE-225268
#rb dave.jones2
#rnx

[CL 36753640 by dan oconnor in 5.5 branch]
2024-10-01 18:52:24 -04:00
ben zeigler
fc4832b020 Add the ability to set DeprecatedFunction="Note" (and DeprecatedVariable) metadata in C++ to lower the severity of a blueprint deprecation message.
Add a utility function and DeprecatedVariable static name to support this.
Use this to replace an old hack that ignored warnings for BeginSpawningActorFromBlueprint.
#jira UE-160577
#rb dan.oconnor

[CL 36448949 by ben zeigler in 5.5 branch]
2024-09-19 15:54:42 -04:00
ben hoffman
2c703fd02e Set bAutomaticallyRegisterInputOnConstruction to true on every legacy input node as well to ensure that they get bound during compilation. This is required to allow the use of these legacy key nodes in widget blueprints after the changes made in 35418847 to automatically create the widget blueprint bindings during Blueprint compilation.
#rb dan.oconnor
#rnx

[CL 36334764 by ben hoffman in 5.5 branch]
2024-09-17 10:46:25 -04:00
Ryan Hummer
4af2fd066d Updating Dev-Release-5.5 from Main at CL #36144969
#okforversepublic

[CL 36146571 by Ryan Hummer in Dev-5.5 branch]
2024-09-10 10:26:02 -04:00
mark meijer
df1cc5402b Gather text from source, resolve macro has an empty source text (.cpp files)
#jira UE-176755
#rb eric.boucher, Leon.Huang, Jamie.Dale

[CL 35914164 by mark meijer in ue5-main branch]
2024-08-30 01:19:51 -04:00
MagForceSeven
b84693e177 PR #12256: Native support for UK2Node_AsyncAction
Adds function to UK2Node_AsyncAction so that its members (really protected members of UK2Node_BaseAsyncTask) can be initialized properly from native. We can also do this via node spawners, but they tend to be clumsy when spawning async action nodes as intermediates.

#jira UE-222399
#rb dave.jones2
#rnx

[CL 35870402 by MagForceSeven in ue5-main branch]
2024-08-28 11:59:13 -04:00
MagForceSeven
1ad46243cf PR #12257: UK2Node_ConvertAsset improvement
Adds two functions to the UK2Node_ConvertAsset implementation that act as accessors to the pins created by that node.

#rb dave.jones2
#jira UE-222400

[CL 35797193 by MagForceSeven in ue5-main branch]
2024-08-26 09:41:47 -04:00
jodon karlik
1164c206ac [Backout] - CL35773939
Partial back-out of this CL (MessageNodes still allow hookups to redirected static functions so as not to break potentially submitted content).

[FYI] jodon.karlik
Original CL Desc
-----------------------------------------------------------------
K2Nodes now allow a CoreRedirect from the "self" pin if (and only if) the new function changes the visibility of the "self" pin.  This allows you to redirect member functions to non-member static functions (which will hide the self pin).  For example:

If the original call was a member function Foo.Bar(123) you could redirect that to a static function Bar(Foo, 123).

Syntax in BaseEngine.ini [[CoreRedirects] looks something like:
; Redirect the Member Function to a Static Function
+FunctionRedirects=(OldName="/Script/PluginName.Foo.Bar", NewName="FooBlueprintLibrary.Bar")
; Redirect the Self Pin to a Parameter Pin named "InFoo"
+PropertyRedirects=(OldName="FooBlueprintLibrary.Bar.Self", NewName="InFoo")

#rb ben.zeigler

[CL 35787966 by jodon karlik in ue5-main branch]
2024-08-23 22:04:23 -04:00
dave jones2
64ae24ec12 Removed extraneous GetSelfPin implementations.
Since GetThenPin was added to UK2Node in 5.x, derived classes don't need to provide their own implementations. These were largely identical to the one in UK2Node. Additionally, overriding non-virtual functions can be error prone if there's an expectation of polymorphic behavior.

#rb dan.oconnor, jodon.karlik
#rnx
[FYI] George.Rolfe

[CL 35782464 by dave jones2 in ue5-main branch]
2024-08-23 16:46:50 -04:00
jodon karlik
748191cbe9 K2Nodes now allow a CoreRedirect from the "self" pin if (and only if) the new function changes the visibility of the "self" pin. This allows you to redirect member functions to non-member static functions (which will hide the self pin). For example:
If the original call was a member function Foo.Bar(123) you could redirect that to a static function Bar(Foo, 123).

Syntax in BaseEngine.ini [[CoreRedirects] looks something like:
; Redirect the Member Function to a Static Function
+FunctionRedirects=(OldName="/Script/PluginName.Foo.Bar", NewName="FooBlueprintLibrary.Bar")
; Redirect the Self Pin to a Parameter Pin named "InFoo"
+PropertyRedirects=(OldName="FooBlueprintLibrary.Bar.Self", NewName="InFoo")

#rb ben.zeigler

[CL 35774031 by jodon karlik in ue5-main branch]
2024-08-23 12:28:32 -04:00
daren cheng
9121acc4c1 Add Async Node support to MVVM
Add generated ubergraph / multicast support to MVVM.
Some MVVM conversion function compilation refactoring, param / result structs, duplicate method extraction.

#tests PIE, Standalone, Cooked
#rb dan.oconnor, Patrick.Boutot

[CL 35532573 by daren cheng in ue5-main branch]
2024-08-14 09:59:16 -04:00
dave jones2
1052d3b56c Ensure that function parameter names can't be renamed to any local variables.
We already have a check that prevents renaming local variables to parameters, but we don't have the opposite check. Since renames first test the pin rename with RenameUserDefinedPin, we need an implementation in the function entry node that ensures that the new name doesn't collide with the local variable names.

#rb ben.hoffman

[CL 35426907 by dave jones2 in ue5-main branch]
2024-08-09 12:30:24 -04:00
dave jones2
945b5b43f8 Fixed double exec pins with message nodes
Prior to CL 35309066, CreateExecPinsForFunctionCall would only create exec pins if the underlying function had FUNC_BlueprintPure set. However, since message nodes are always impure, the AllocateDefaultPins override would force exec pins to show even if the function is pure.

CL 35309066 changed the logic in CreateExecPinsForFunctionCall to use IsNodePure for determining if exec pins should display. Since the message node overrides IsNodePure to false, we could get a scenario where both the overridden AllocateDefaultPins and CreateExecPinsForFunctionCall would create exec pins. The most straightforward fix is to remove the AllocateDefaultPins override, and let CreateExecPinsForFunctionCall handle exec pin creation.

Also resaved affected content that needed nodes refreshed.

#rb dan.oconnor
#rnx


#changelist validated
#virtualized

[CL 35420300 by dave jones2 in ue5-main branch]
2024-08-09 09:39:56 -04:00
dan oconnor
0acc4b4dc4 Re-enable smart macro inference (which handles more than one connected type of pin), but be less eager to propagate wildcards when in a macro graph
#rb jodon.karlik
#jira UE-219696
#rnx

[CL 35384693 by dan oconnor in ue5-main branch]
2024-08-07 18:30:21 -04:00
dave jones2
fec5a44899 Added project setting to control toggling of impure Blueprint functions to pure ones (disabled by default).
(Follow up change to CL 35309066)

If enabled, a function that isn't marked as pure can be converted to a pure node in a graph. While this provides flexibility for controlling graph layouts, pure nodes can introduce hidden performance costs. If an impure function is expensive, its conversion to a pure can introduce multiple calls for each connected output. Since Blueprint graphs don't do a great job of visualizing executions of pure nodes, we're defaulting this feature to off. Teams are free to decide if they wish to use it.

Additionally, this will issue a compiler warning if a illegal pure override is discovered in a node. This can occur if a user locally enables the project setting and checks in converted nodes.

#rb ben.hoffman

[CL 35315964 by dave jones2 in ue5-main branch]
2024-08-05 16:09:57 -04:00
dave jones2
c4107f5283 UE-196156 - Add exec toggle for pure nodes
Blueprint pure nodes were initially intended to be similar to "functional pure". In other words, they're deterministic and produce no side effects (eg: doesn't mutate state). However, pure nodes have violated both conditions for a while now.

Instead, pure nodes are simply function nodes with output values and no visible exec pins. While this can be convenient, they come with a downside: the pure node is evaluated for each connected output. This can lead to unexpected performance issues if the node is expensive to evaluate. In the case of non-deterministic nodes, this can lead to unexpected behavior. In both cases, the user often needs to cull multiple outputs of a pure node and cache the result manually.

The solution here is to add support for toggling purity at the call site. When a function node is placed, right-clicking on it and selecting either "Hide Exec pins" or "Show Exec Pins" will toggle purity. Additionally, the meaning of BlueprintPure and the "Pure" check box changes slightly: it now means that the function node _defaults_ to a pure state when placed in a graph. However, it can be toggled to show its exec pins.

In future changes, we'll also reevaluate which common library functions should continue to default as pure.

#jira UE-196156
#rb dan.oconnor, jodon.karlik, ben.zeigler

[CL 35309072 by dave jones2 in ue5-main branch]
2024-08-05 11:58:15 -04:00
dan oconnor
579c4c4fcd Fixup ResolvedWildcardType when we have wildcardpins but it is not set, and we're using simple inference.
#rb dan.oconnor
#rnx

[CL 35127270 by dan oconnor in ue5-main branch]
2024-07-27 04:31:34 -04:00
dan oconnor
910534eeef Disable smart macro inference while I work on a solution for delaying inference to allow for making macros that delay inference
#jira UE-220284
#rb dan.oconnor
#rnx

[CL 35126090 by dan oconnor in ue5-main branch]
2024-07-26 21:31:38 -04:00
jodon karlik
383187026f Removing the usage of "Friendly Names" from the Functions and (Event Graphs/Overrides Menu). This reverts a previous change which introduced consistency to the Friendly Names feature in those windows. The reasoning is that there is a long-term goal of removing Friendly Names entirely from the Editor. It interferes with the users being able to properly name their Functions/Events and have that name consistent through the interface. I have kept the Friendly Names when *calling* a function in Blueprints as well as the Blueprints Action list. The reasoning behind that is the nodes are very hard to decipher when zoomed out on the graph unless there are spaces between the names.
#jira UE-220228
#rb ben.hoffman
[FYI] will.strohmeyer

[CL 35120419 by jodon karlik in ue5-main branch]
2024-07-26 17:29:30 -04:00
dan oconnor
6bfe64f634 More fixes for 'smart' macro wildcard inference, specifically around TMap value parameters, which historically have been left in an unknown 'wildcard' state until compilation
#rb ben.hoffman
#jira UE-219696
#rnx

[CL 35065087 by dan oconnor in ue5-main branch]
2024-07-24 16:36:58 -04:00
ben hoffman
07e68f570d Add the missing "Replicated" node title to K2Node_TImeline
#rnx
#rb jodon.karlik

[CL 35030499 by ben hoffman in ue5-main branch]
2024-07-23 15:34:04 -04:00
dan oconnor
7210e0e188 Disable smart inference while I work through issues with partial wildcards (e.g. TMaps with only wildcard keys or values)
#jira UE-219778
#rb Dan.Oconnor
#rnx

[CL 35008794 by dan oconnor in ue5-main branch]
2024-07-22 20:39:06 -04:00
dan oconnor
8d79149497 Rework wildcard inference to infer types, rather than just find the first connected pin that isn't a wildcard
#rb ben.hoffman
#jira UE-219696
[RN] Blueprint macros can now infer more than one type of pin, especially useful for TMap related macros

[CL 34910045 by dan oconnor in ue5-main branch]
2024-07-18 14:42:07 -04:00
phillip kavan
0eeb7ee0b8 Fix spawn object nodes with linked class inputs to always generate assignments for unlinked exposed parameter inputs even when the pin's value matches the underlying type's default value, since the class may not be resolved until runtime.
#jira UE-210315, FORT-764126
#rb Dan.OConnor, Kelby.Gamble

[CL 34908597 by phillip kavan in ue5-main branch]
2024-07-18 14:17:10 -04:00