This addresses a crash when trying to draw text from the render thread.
The extra font cache is managed by FEngineFontServices, and its creation is delayed until it is first needed. In Canvas you now use FEngineFontServices (rather than FSlateApplication directly) which will automatically return the correct cache for the current thread.
#codereview Matt.Kuhlenschmidt
[CL 2350206 by Jamie Dale in Main branch]
These let you specify the purpose of the font family, rather than them all being called "Sub-Font Family #X".
[CL 2347377 by Jamie Dale in Main branch]
Includes following engine changes:
Getting display metrics only once at construct time when using SSafeZone. GetDisplayMetrics is expensive in Windows so it is impractical to call it every frame.
- Some AI API improvements, mostly switchig pointer function parameters to references.
- minor refactor of UCrowdFollowingComponent's queryinf functions:
- IsCrowd*Enabled functions refactored to IsCrowd*Active
- implemented IsCrowd*Enabled that return acrual values of relevant properties
- Added a function to CrowdManager to query for location of agents neighbouring given agent
Added support for PS4 touchpad-based cursor
You can now choose to skip synchronously scanning for asset data in object libraries and just use the data that is currently in the asset registry. The data will be refereshed automatically later once the global scan completes. The only applies to non-commandlet editor instances.
Crash fixes for trying to access NULL Metal surfaces on IOS
Slate: Cleaned up some atlas code related to padding and corrected some comments
[CL 2347323 by Ben Zeigler in Main branch]
UE-4766 - Text actors don't render on mobile devices
Fixed places where the baseline was being converted between signed and unsigned values. Baselines are typically negative, and there was a case where arithmetic was being performed on an unsigned baseline value that was causing the text to be entirely clipped on mobile platforms.
The baseline adjustment was also the wrong way around, and were letting positive shadow offsets clip the text off the top of its clipping region. This should only be done for negative shadow offsets (to move the baseline to compensate for the shadow). This was causing noticable clipping issues in UMG.
Shadow offsets also weren't repecting scale, which was most noticable when zooming in UMG. The shadow offset now takes scale into account so that it remains consistent at different zoom levels.
ReviewedBy Justin.Sargent
[CL 2345276 by Jamie Dale in Main branch]
#jira UE-1389 - EDITOR: MATERIAL EDITOR: Closing a material without saving prompts user to save twice
[CL 2345102 by Richard TalbotWatkin in Main branch]
This allows the data to be compressed and lazy loaded, so the embedded font data is now only loaded when FreeType needs to load it into a face.
[CL 2344987 by Jamie Dale in Main branch]
Slate now has the concept of composite fonts and font families (via FCompositeFont and FTypeface). A composite font is a font that contains a default font family, as well as any number of sub-font families which should be used for a given set of character ranges. This change will greatly improve the localization support for fonts.
UFont assets can now use two forms of caching "offline" (which is the way they have always worked historically), and "runtime" (which utilizes the Slate font cache to cache glyphs on demand). These runtime cached UFont assets are now the only way to specify which font to use for a UMG widget, and address the previous issues about ensuring that the required font files were staged for your game.
The Slate font cache now works on FFontData instances, rather than filenames. This allows the UFont asset to embed a blob of TTF or OTF font data inside it, rather than require the fonts be loaded from files on disk.
The Canvas text renderer has been updated to support runtime cached UFont assets. This gives our legacy Canvas based tools the same improved font localization support as the rest of the Slate-based editor UI.
UFont asset creation has been changed to use runtime caching by default, and additionally, you can now import a TTF or OTF file via the Content Browser and it will automatically create a UFont asset. If you still want an offline cached UFont asset, you can just change the cache type in the font editor, and the usual font picker dialog will appear and allow you to generate a font texture atlas.
[CL 2342203 by Jamie Dale in Main branch]
- All event types are now routed by FEventRouter.
- All replies are now based on a single FReplyBase, s.t. we can reason about them uniformly.
- Unified Focus and Pointer path routing.
- Removed all instances of TransformPointerEvent outside of FEventRouter.
[CL 2342192 by Nick Atamas in Main branch]
- Renamed FVirtualCursorPosition to FVirtualPointerPosition; we are going with Pointer as a generic name for all things Mouse, Touch, and Stylus.
- Slate's FArrangedWidget no longer has a VirtualPointerPosition; this is now stored in FWidgetAndPointer.
- WidgetPaths are aware of a virtual pointer position associated with every arranged widget.
[CL 2340420 by Nick Atamas in Main branch]