- If a corrupt index is detected, do a retry but collect and log more information along the way to help diagnose the issue.
#rb stefan.boberg
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: graeme.thornton
#ROBOMERGE-SOURCE: CL 6685180 via CL 6685186 via CL 6751170 via CL 6751664
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim) (v365-6733468)
[CL 6795050 by graeme thornton in Dev-Anim branch]
* Now extracted from sub levels and brought in the main map to be rendered as instanced static meshes.
* Impostors meshes created during proxy creation.
#rb jeanfrancois.dube, jurre.debaare
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: sebastien.lussier
#ROBOMERGE-SOURCE: CL 6675359 via CL 6675861 via CL 6675880
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim) (v365-6733468)
[CL 6789616 by sebastien lussier in Dev-Anim branch]
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-OWNER: lina.halper
#ROBOMERGE-AUTHOR: matt.hoffman
#ROBOMERGE-SOURCE: CL 6631811 via CL 6633746 via CL 6633863
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim) (v365-6733468)
[CL 6751117 by matt hoffman in Dev-Anim branch]
Live++ reads object files at startup for game modules, and assigns unique ids to each compiland (used to disambiguate static variables). When compiling the patch, these compilands are modified to reference a unique id for the unity blob, causing the variables to be reconstructed.
Solution is to generate a JSON file to each output directory containing object files containing the mapping, and to use that to assign compiland ids at startup.
#rb none
#jira UE-74036
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 6455253 in //UE4/Release-4.22/... via CL 6455273
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim)
[CL 6474667 by ben marsh in Dev-Anim branch]
This manifested itself in a game when textures ended up rebuilding every single run of the game but suddenly stopped building and coming from the DDC as they should have after the first run.
When a texture was being requested from the DDC, the in-memory DDC cache space ran out, and FMemoryDerivedDataBackend::CachedDataProbablyExists() returned true. FDerivedDataBackendAsyncPutWrapper::PutCachedData() assumes the data is already on its way, so it doesn't send it again and exits the function. Unfortunately, the data is not really on the disk, and FCachePutAsyncWorker never gets a chance to put it there.
Because of changing memory requirements from run to run, this game was eventually able to write all of the texture data to disk, but it took dozens of runs to do so, as it generally would only write a single mip from a mipchain in any given run. When all of the mips were finally written, the texture would be fully retrieved from the DDC, and no build would be necessary.
With this fix, no early abort is had, and all textures write themselves fully to the disk.
#rb Jack.Porter
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: josh.jensen
#ROBOMERGE-SOURCE: CL 6345014 via CL 6346145 via CL 6346238
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim)
[CL 6357287 by josh jensen in Dev-Anim branch]
#JIRA UE-74226
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: ben.salem
#ROBOMERGE-SOURCE: CL 6344919 via CL 6344926 via CL 6345880 via CL 6346025
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim)
[CL 6356798 by ben salem in Dev-Anim branch]
Fix functional test UI screenshot when running with a window dpi scale != 1.
#jira UE-60541
#rb Matt.Kuhlenschmidt
#ROBOMERGE-OWNER: lina.halper
#ROBOMERGE-AUTHOR: dave.belanger
#ROBOMERGE-SOURCE: CL 6327380 in //UE4/Main/...
#ROBOMERGE-BOT: ANIM (Main -> Dev-Anim)
[CL 6333747 by dave belanger in Dev-Anim branch]