* 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]
This commit adds the framework APIs, editor and rendering features needed to support live streaming. Along with this, we're working on a new plugin that adds Twitch.tv support (waiting for legal approval to commit.)
- Game live streaming
- Allows general support for live internet streaming of game video and audio
- Web cam video feed can be overlaid onto game viewports automatically
- New 'Broadcast' Blueprint function library allows you to easily start broadcasting from your game
- New IGameLiveStreaming API that allows you to start broadcasting through C++
- Editor live streaming
- The editor UI now displays a "broadcast" button automatically when a live streaming service is available
- Broadcasting of all desktop editor windows is supported (configured in preferences)
- If you have a web cam, video will be displayed automatically while broadcasting in a new editor window
- New "Live Streaming" editor preference tab with many new settings for configuring broadcasting
- New IEditorLiveStreaming API that lets you control editor broadcasting directly, if needed
- Added new 'Broadcast.Start' and 'Broadcast.Stop' console commands
- These allow you to easily test live streaming in games without writing UI code
- Built-in help is available for these new commands
- To implement a live streaming plugin:
- Inherit from the new ILiveStreamingService interface
- Register your "LiveStreaming" feature with the IModularFeatures system
- Other changes:
- Eliminated broken screen quad drawing functions; replaced with publicly-exposed DrawRectangle()
- Slate: Eliminated legacy code for 'marking windows as drawn' (not used anymore)
- Slate: Added Slate rendering callback to find out when a frame buffer is ready to be presented
[CL 2115377 by Mike Fricker in Main branch]
Please note that file comments had no purpose in nearly all cases and just added visual clutter. The two files that had meaningful file comments had their comments moved into the corresponding classes. There are still hundreds of file comments left in other files that will be removed over time.
Also cleaned up some random stuff along the way:
- relative paths to public headers within the same module are no longer necessary (automatically discovered by UBT now)
- header guards are deprecated, use #pragma once instead (all compilers support it now)
- space between multiple template brackets is no longer required (all compilers support >> now)
- NULL to nullptr, OVERRIDE to override
- spelling errors, whitespace, line breaks
[CL 2104067 by Max Preussner in Main branch]
#proj core
#branch UE4
#summary Rename Trunc, Round, Floor, Ceil to TruncToInt, RoundToInt, FloorToInt, CeilToInt. Added *ToFloat versions. Repeated for FGenericPlatformMath and all derived classes for all platforms wherever applicable. Corrected comment in Fractional and added Frac() which does HLSL-style fractional (x - floor(x)). Checked for compilation on all projects (with cooking levels wherever applicable). Didn't change Fractional to Frac, this will be done in second commit.
#codereview robert.manuszewski
[CL 2064306 by Mikolaj Sieluzycki in Main branch]
Other Updates:
- The WidgetReflector is now in its own module as well. It will be converted to a plug-in later.
- The Public API of both Slate and SlateCore has largely been reorganized for better discoverabilty. More cleanup work is needed.
- Added a lot of missing API documentation and fixed existing ones. More and better documentation is needed.
- Removed dead code, fixed a couple things I stubled upon, and conformed to coding guidelines (NULL vs nullptr, line breaks, etc.)
Upgrade Notes:
- The Slate Remote Server is currently disabled - will be re-enabled shortly!
- If your module previously had a module dependency to 'Slate', it now also needs a PrivateModuleDependency to 'SlateCore' in its Build.cs file.
- If your module exposes in any of its Public header files types that are now declared in SlateCore, it needs a PublicModuleDependency to 'SlateCore'
- The ToolTip property type on SWidget has changed from SToolTip to IToolTip; change local variables to TSharedPtr<IToolTip> instead of TSharedPtr<SToolTip> where needed
- IToolTip is not a widget. If you need access to the actual widget that represents the tool tip, use IToolTip::AsWidget(); If you need access to the tool tip's content, use IToolTip::GetContentWidget()
Troubleshooting:
- After syncing to this changelist you may have to clean your /Engine/Intermediate/Build/ directory and rebuild your entire project
- If in your project you are getting linker errors for unresolved types that are now declared in SlateCore, you may be missing a dependency to 'SlateCore'
- If in the Engine code you are getting linker errors for unresolved types that are now declared in SlateCore, you may need to rebuild the entire Engine
[CL 2057118 by Max Preussner in Main branch]
#proj core
#branch UE4
#summary Moved global variables to statics in FApp. Removed unused GUnclampedDeltaTime.
#codereview robert.manuszewski
[CL 2043034 by Mikolaj Sieluzycki in Main branch]