Commit Graph

109 Commits

Author SHA1 Message Date
brooke hubert
48113fc77e Adding EditorFramework to build.cs files
#rnx
#Jira UE-96448
#rb chris.gagnon

[CL 14114839 by brooke hubert in ue5-main branch]
2020-08-14 13:24:16 -04:00
Marc Audy
a7c9001a94 Merging //UE5/Release-Engine-Staging to Main (//UE5/Main) @ 14075166
#rb
#rnx

[CL 14075271 by Marc Audy in ue5-main branch]
2020-08-11 01:36:57 -04:00
nick darnell
6ee6c782bb Cache off the value of slate global invalidation mode when using Pick against painted widgets, and then turns it off while picking painted widgets. Eventually this should be modified to work against proxies and cached elements instead.
#ROBOMERGE-SOURCE: CL 11964108 via CL 11964109 via CL 11964110 via CL 11964114
#ROBOMERGE-BOT: (v656-11643781)

[CL 11964117 by nick darnell in Main branch]
2020-03-05 16:29:47 -05:00
rex hill
4511728f09 Tab manager filter can now block tab spawn
#rb chris.gagnon


#ROBOMERGE-OWNER: rex.hill
#ROBOMERGE-AUTHOR: rex.hill
#ROBOMERGE-SOURCE: CL 11604269 via CL 11604360 via CL 11604439
#ROBOMERGE-BOT: (v656-11643781)

[CL 11743509 by rex hill in Main branch]
2020-02-28 11:30:46 -05:00
nick darnell
fd881a89b8 Slate - Avoid a rare crash in the Widget Reflector when the clipping states don't match.
#ROBOMERGE-SOURCE: CL 11566549 via CL 11566555 via CL 11566562
#ROBOMERGE-BOT: (v654-11333218)

[CL 11566567 by nick darnell in Main branch]
2020-02-20 12:05:42 -05:00
Max Chen
b4881d8bf8 Copying //UE4/Dev-Editor to Dev-Tools-Staging (//UE4/Dev-Tools-Staging) @11123875
#rb none
#jira none

[CL 11123880 by Max Chen in Dev-Tools-Staging branch]
2020-01-27 20:11:15 -05:00
ryan durand
471d972e62 Updating copyright for Engine Developer.
#rnx
#rb none


#ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870584 by ryan durand in Main branch]
2019-12-26 15:32:37 -05:00
jamie dale
6bdb3390a0 Added support for rendering TTF/OTF fonts containing bitmaps, including color fonts (like Emoji)
Note: Bitmap fonts require FreeType 2.10, and support is compiled out if using an older version.

Font Rendering:
 - ApplySizeAndScale now computes the desired pixel size manually (using our desired DPI) rather than calling FT_Set_Char_Size.
   - This also includes the font scale, which avoids the call to FT_Set_Transform and lets us remove some workarounds for inconsistent scaling from FreeType.
   - For scalable fonts the desired pixel size is passed to FT_Set_Pixel_Sizes.
   - For bitmap fonts the desired pixel size is used to find the most suitable strike size (set via FT_Select_Size) and the ratio needed to scale that strike to the desired size (see GetBitmapAtlasScale and GetBitmapRenderScale).
 - AppendGlyphFlags has been updated to load color data (when available), and to only exclude bitmap data for fonts that also have scalable data.
 - FSlateFontRenderer::GetRenderDataInternal has been updated to handle color bitmap rendering (BGRA, sRGB) in addition to the existing grayscale rendering.
   - It will also handle scaling down bitmap font strikes that are larger than the desired size, which saves space in the atlas (see GetBitmapAtlasScale).
   - It won't scale up any bitmaps, as that is handled by the transform applied when batching the glyph quads for rendering (see GetBitmapRenderScale).
 - Added support for disabling outline and tint for bitmap fonts (in Slate and Canvas).
 - Added support for batching both grayscale (8-bit alpha-only) and color (8-bit per-channel BGRA) font quads from a font texture atlas (in RHI, D3D, and OpenGL).
 - Removed unused data from FCharacterRenderData.

#jira
#rb Matt.Kuhlenschmidt


#ROBOMERGE-SOURCE: CL 8177432 via CL 8197318
#ROBOMERGE-BOT: (v401-8057353)

[CL 8197520 by jamie dale in Main branch]
2019-08-21 17:23:59 -04:00
nick darnell
95fc2a339e SlateGI - Simages now cache their last assigned image, if they don't it's possible the memory changed out from under them, and they have no idea if they actually need to invalidate. Can still further improve images by checking if the image size changed to perform a paint instead of a layout invalidate. Adding a SetAttribute function on SWidget that makes setting values and invalidation an easier pattern to repeat effiecently and not need to overinvalidate things like volatility. Updating several places in the widget reflector so that we can capture the tick/volatility/indirectvolatility/has active timers, state of widgets in the widget tree.
Matt.Kuhlenschmidt


#ROBOMERGE-SOURCE: CL 7451853 via CL 7461937 via CL 7467264
#ROBOMERGE-BOT: (v371-7306989)

[CL 7467333 by nick darnell in Main branch]
2019-07-20 02:14:13 -04:00
matt kuhlenschmidt
c64ca632c7 Slate Global Invalidation System
This change makes it possible to remove the layout and painting overhead that Slate performs every frame.  The system is off by default as we continue to iterate on it.

However, this includes massive changes to batching, rendering, hit testing, and invalidation panels which are permanent changes and cannot be disabled.

#rb chris.gagnon, nick.darnell
[CODEREVIEW] nick.darnell


#ROBOMERGE-OWNER: matt.kuhlenschmidt
#ROBOMERGE-AUTHOR: matt.kuhlenschmidt
#ROBOMERGE-SOURCE: CL 7232617 via CL 7235502
#ROBOMERGE-BOT: (v367-6836689)

[CL 7235503 by matt kuhlenschmidt in Main branch]
2019-07-08 23:50:34 -04:00
matt hoffman
5fc20eb45d This is a significant overhaul to the Curve Editor used by Sequencer which adds a plugin-based architecture and extensibility. New tools and toolbar buttons can be added to all usages of the curve editor via user plugins, and the different views for data can be created modularly so new implementations of the editor can register their own way of drawing their data and the tools should just work. Additionally, you can now write your own filters to operate on curve editor data for custom implementations of smoothing, key generation, etc.
The curve editor supports three view types by default - an absolute view (default, matches old behavior), a stacked view and a normalized view. Stacked views draw each curve separately (so non-overlapping) and normalized against their own min/max values. The normalized view draws all curves overlapping with each one normalized against its own min/max values.

A tree view has been added to help effectively manage large numbers of curves. Selecting curves in the treeview controls which curves are visible in the view area. The treeview also supports pinning curves. These pinned curves will always be visible regardless of your selection in the tree view.

A transform tool and a retiming tool have been implemented (via a plugin) which is enabled by default. The transform tool allows you to do a marquee selection of keys and then translate and scale the positions of these keys. The retiming tool allows you to create a 1 dimensional lattice to adjust the timing of your keys with a linear falloff between each lattice point. These tools work across multiple views at the same time which is especially useful if you are representing one dimensional data (such as event keys) in a view, as it allows you to adjust this data at the same time as your animation curves. A smoothing filter has been implemented (via a plugin) to allow running highpass and lowpass filters on your keys.

Opening the curve editor in Sequencer/UMG now creates a separate dockable tab which can be resized and docked as desired. A time slider has been added to the Curve Editor which is synchronized to the playback time in Sequencer. This allows you to scrub time in the curve editor without having to find the Sequencer window and adjust time there while looking at your keys and previewing your animation in the viewport at the same time.

Rudimentary support has been added for saving and later restoring a set of curves in your current session. This allows you to do a rudimentary copy/paste of entire curves but can also be useful for saving a curve, making adjustments to it and then deciding you want to go back - simply reapply the saved curve! Each curve added supports an intention name (such as "Location.X" or "FieldOfView"), and these intention names will be used when trying to apply curves. This allows you to reliably take all of the curves of a transform on one object and apply them to another object (and ensure that Location.X gets applied to the new Location.X, etc.) this can be helpful if you have a mixed set of curves buffered (such as a location and a field of view). In the event that no curves match by intention you can store and apply a single curve at a time from any intention to any other intention.

The Curve Asset editors (float, vector and color curve assets) have been changed to use the new editor. They support the same treeviews, filtering and tools that the Sequencer editor does. In addition, the Color Curve asset editor adds an additional view which provides a 1 dimensional gradient editor as an easier way to visualize and edit colors instead of the channels individually.


#rb Max.Chen, Andrew.Rodham


#ROBOMERGE-SOURCE: CL 6631811 via CL 6633746
#ROBOMERGE-BOT: (vundefined-6620334)

[CL 6633863 by matt hoffman in Main branch]
2019-05-24 14:42:05 -04:00
nick darnell
061ecbdf63 Slate - Introducing a metadata you can attach to widgets to make it be ignored by the picker in Widget Reflector for paint hit testing. The debug paint canvas can ruin the experience when you're trying to pick against painted widgets, so now it gets ignored.
Matt.Kuhlenschmidt


#ROBOMERGE-SOURCE: CL 5830878 via CL 5830881 via CL 5835228

[CL 5836028 by nick darnell in Main branch]
2019-04-12 10:07:05 -04:00
nick darnell
f3cdc69725 Slate - Adding improvements to the widget reflector so that we can tell if a zero size widget is present, as it may have padding around it, so now a line will appear if it's zero sized, rather than nothing.
#ROBOMERGE-SOURCE: CL 5377109 via CL 5377110 via CL 5377221

[CL 5378967 by nick darnell in Main branch]
2019-03-12 23:33:10 -04:00
Josh Adams
d0bf843c9c - Merging Dev-Kairos/Engine/... to Main/Engine/...
- Brings over the necessary engine changes for embedding UE4 mobile as a dylib/so in native mobile app
- Various changes for facial animation, screen recording, others
- ARKit and ARCore plugins were removed, as deemed "not ready"
#rb many people


#ROBOMERGE-OWNER: josh.adams
#ROBOMERGE-AUTHOR: josh.adams
#ROBOMERGE-SOURCE: CL 5201138 via CL 5203024

[CL 5226277 by Josh Adams in Main branch]
2019-02-27 11:57:17 -05:00
Robert Manuszewski
cfa01c09c7 Merging //UE4/Dev-Main to Dev-Core (//UE4/Dev-Core)
#rb none

[CL 4731457 by Robert Manuszewski in Dev-Core branch]
2019-01-16 04:23:12 -05:00
nick darnell
96a936ca71 WidgetReflector - Make sure to reset the visual tree capture after switching to hittesting reflecting, otherwise, it gets stuck in visual picking mode, which we don't want.
[FYI] Aaron.Johnson


#ROBOMERGE-SOURCE: CL 4712887

[CL 4712895 by nick darnell in Main branch]
2019-01-11 15:17:17 -05:00
matt kuhlenschmidt
5b8e44471c Properly compile out slate debugging code unless WITH_SLATE_DEBUGGING is true
#ROBOMERGE-SOURCE: CL 4692393

[CL 4692395 by matt kuhlenschmidt in Main branch]
2019-01-09 10:50:38 -05:00
Marc Audy
ab108c215e Copying to Dev-Main @ CL# 4688301
#rb
#rnx

[CL 4688816 by Marc Audy in Main branch]
2019-01-08 11:38:48 -05:00
Robert Manuszewski
2752c82adc Merging //UE4/Dev-Main @ 4664414 to Dev-Core (//UE4/Dev-Core)
#rb none

[CL 4675693 by Robert Manuszewski in Dev-Core branch]
2019-01-02 00:55:51 -05:00
Ben Marsh
7598af0532 Update copyright notices to 2019.
#rb none
#lockdown Nick.Penwarden

[CL 4662404 by Ben Marsh in Main branch]
2018-12-14 13:41:00 -05:00
Robert Manuszewski
1685ed0b2e Merging //UE4/Dev-Main @ 4620382 to Dev-Core (//UE4/Dev-Core)
#rb none

[CL 4631078 by Robert Manuszewski in Dev-Core branch]
2018-12-04 23:30:42 -05:00
Ben Marsh
ea340d3fbf Copying //UE4/Fortnite-Staging to Dev-Main (//UE4/Dev-Main)
#rb none
#lockdown Nick.Penwarden

[CL 4567513 by Ben Marsh in Main branch]
2018-11-14 19:05:13 -05:00
Josh Adams
4f63a76b48 - Changed compression methods to be an FName instead of hardcoded enum
- Added support for compression plugins
- Removed the Custom compression concept, now using plugins properly
- Modified UnrealPak to use FNames, and allow for multiple compression methods (fallbacks on error or unavailability, etc)
- Added project settings for compression method selection for UnrealPak, and additional settings to be passed to UnrealPak (for instance, to control compression size/speed, etc)
- Deprecated a bunch of old function calls
- Improved pak file "old format" reading ability
- Brought over some changes from Fortnite for pak file encryption and memory savings
- Implemented a parallel compression pull request (#4129) to speed up pak file compression
#jira UE-51294
#rb ben.marsh

[CL 4480944 by Josh Adams in Dev-Core branch]
2018-10-17 14:18:10 -04:00
Robert Manuszewski
02ba9f72df Merging //UE4/Dev-Main @ 4397329 to Dev-Core (//UE4/Dev-Core)
#rb none

[CL 4397828 by Robert Manuszewski in Dev-Core branch]
2018-09-26 08:22:54 -04:00
Marc Audy
af90b7bcd4 Copying //UE4/Fortnite-Staging to Dev-Main (//UE4/Dev-Main) @ 4395008
#rb
#rnx
#lockdown Nick.Penwarden

[CL 4395058 by Marc Audy in Main branch]
2018-09-25 10:11:35 -04:00