#jira UE-10651 - Rework "Create Blueprint Class" dialog in Class Viewer
#reviewedby Matt.Kuhlenschmidt
[CL 2472012 by Richard TalbotWatkin in Main branch]
Redundant (now) test removed from FUnrealSourceFile::GetFileId.
PLATFORM_COMPILER_HAS_RANGED_FOR_LOOP macro removed.
#codereview robert.manuszewski,leigh.swift
[CL 2468804 by Steve Robb in Main branch]
The class wizard now filters out non-Blueprintable component types when adding a new BP component
UE-9604 - Add Blueprint Component dialog ignores Blueprintable metadata, allowing you to create a blueprint from any component at all
This vastly limits the selection until UE-8946 has been addressed.
This change also makes the class wizard verify that its featured classes pass the active class filter (as some featured component classes aren't currently Blueprintable).
[CL 2448686 by Matthew Griffin in Main branch]
Generalized "Add Code to Project" dialog to allow creation of both c++ and blueprint class types.
The add component option when blueprintable components is enabled, now opens up this dialog rather than the parent class picker.
UE-8491 - IWCE: New C++ Component and New Blueprint Component should prompt you for a component type to subclass
[CL 2446735 by Matthew Griffin in Main branch]
Relabeled "Class Blueprint" as "Blueprint Class" throughout the editor and documentation.
#jira UE-7187 - "Class Blueprint" should be renamed to "Blueprint Class" throughout the editor and docs
[CL 2419450 by Ben Marsh in Main branch]
UE-7184 - Show game c++ classes and engine c++ classes in the content browser
The Content Browser now has extra entries for "Game C++ Classes" and "Engine C++ Classes" (with "Game" and "Engine" being renamed to "Game Content" and "Engine Content" respectively). These new folders serve as hosts for the list of available C++ modules, with each module internally mirroring the folder structure on disk.
For example:
- Game C++ Classes
- ShooterGame
- Classes
- Bots
- ShooterBot
- ShooterAIController
- [...]
- [...]
The Content Browser allows you to navigate and search these classes like you can with assets, and provides convenient access to either edit an existing class, or create a new class (either within a selected folder, or derived from a selected class).
As the Content Browser only shows you known UClass types, any new classes need to be compiled into a loaded module before they will appear. This means that adding a new class will now automatically hot-reload your target module. Should you prefer to handle building and loading your modules manually, you can disable the automatic hot-reload via "Editor Settings" -> "Miscellaneous" -> "Hot Reload" -> "Automatically Hot Reload New Classes" (see UEditorUserSettings::bAutomaticallyHotReloadNewClasses).
[CL 2409386 by Jamie Dale in Main branch]
#jira UE-7179 - User-created Object Blueprints do not appear as an option when using Create > Class Blueprint
#jira UE-7548 - Cannot Reparent new blueprints in 4.7 and 4.8
[CL 2407759 by Michael Schoell in Main branch]
* Multicast delegate Add* calls now return FDelegateHandles, and Remove* calls are now all deprecated, except for a new Remove function which takes a FDelegateHandle.
* New FConsoleManager::RegisterConsoleVariableSink_Handle and UnregisterConsoleVariableSink_Handle functions which work in terms of FConsoleVariableSinkHandle.
* Timer calls which don't take FTimerHandles are deprecated.
* FTicker::AddTicker now returns an FDelegateHandle and is removed by an overloaded Remove function.
* DEFINE_ONLINE_DELEGATE* macros now define _Handle variants of the Add/Remove functions which return/take handles.
* Various other handle-based registration changes.
* Some unity build fixes.
* Some simplification of delegate code.
* Fixes for lots of existing code to use handle-based registration and unregistration.
#codereview robert.manuszewski
[CL 2400883 by Steve Robb in Main branch]
UETOOL-213 - Minimize Slate FString -> FText conversion (remove SLATE_TEXT_ATTRIBUTE)
This fixes any editor/engine specific code that was passing text to Slate as FString rather than FText.
[CL 2399803 by Jamie Dale in Main branch]
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.
While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
- Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.
- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
- Examples include animation, async operations that update periodically, progress updates, loading bars, etc.
- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.
- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
- There are THREE ways to unregister an active tick:
1. Return EActiveTickReturnType::StopTicking from the active tick function
2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
3. Destroy the widget responsible for the active tick
- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
- The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)
- The FCurveSequence API has been updated to work with the active tick system
- Playing a curve sequence now requires that you pass the widget being animated by the sequence
- The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
- GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.
[CL 2391669 by Dan Hertzka in Main branch]
Changed: Content Browser, Class Viewer, and workflow when generating a Class Blueprint from a selection of actors.
#jira UE-6294 - UI pass in the editor to make sure "Class Blueprint" terminology is used appropriately
[CL 2391117 by Michael Schoell in Main branch]
Made sure everything was using FText rather than FString, and also updated the property editor API to return tooltips as FText rather than FString.
[CL 2373917 by Jamie Dale in Main branch]
#UE4 Loading the class viewer or class pickers is now 60% faster.
--------
Integrated using branch Ue4-To-UE4-Fortnite-Simple (reversed) of change#2370492 by Bob.Tellez on 2014/11/25 21:54:13.
[CL 2370495 by Bob Tellez in Main branch]
#jira UE-1234 - BP: Able to give a blueprint a blank name with space characters through the class viewer
#reviewedby Matt.Kuhlenschmidt
[CL 2364637 by Richard TalbotWatkin in Main branch]
Class Picker or Content Picker is not created when creating a pin of class/object type, instead it is generated when clicking to drop down the combo box.
#jira UE-5358 - BLUEPRINTS: Class picker dropdown (on nodes like GetAllActorsOfClass) should handle arrow keys.
[CL 2360634 by Michael Schoell in Main branch]
* Moved Slate.h into SlateBasics.h and began shifting less commonly used headers into SlateExtras.h.
* Slate.h now simply includes SlateBasics.h and SlateExtras.h.
* Slate.h includes a deprecated warning now to indicate that SlateBasics.h + specific includes should be used instead.
* Moved dozens of inlined functions using Slate widgets into .cpp files to avoid header dependencies.
* All code samples now include SlateBasics.h and SlateExtras.h so future shifts will not break most those projects, but not trigger the deprecation warning of including Slate.h.
#BUN
[CL 2329610 by Wes Hunt in Main branch]
OnlyPlaceable metadata added. Indicates whether only placeable classes should be shown in the class picker.
More robust AGameMode::PreInitializeComponents
ttp345655 CRITICAL: CRASH: BLUEPRINT: adding GameMode blueprint as a child actor
[CL 2295026 by Maciej Mroz in Main branch]
#ttp 345524: HotReload: Strange temporary class names are visible in Placement Browser's "All Classes" list after a HotReload
[CL 2293652 by Robert Manuszewski in Main branch]
#ttp 345524: HotReload: Strange temporary class names are visible in Placement Browser's "All Classes" list after a HotReload
#change Marked old classes as transient, made sure they're not in root set
#change Made sure class picker rejects transient UClass objects
[CL 2292085 by Robert Manuszewski in Main branch]