Copying //UE4/Dev-Sequencer to //UE4/Main

==========================
MAJOR FEATURES + CHANGES
==========================

Change 2875025 on 2016/02/20 by Andrew.Rodham

	Sequencer: Cinematic viewport improvements
	  - Added optional letterbox overlay (defaults to 2.35:1)
	  - Added ability to change safe frame colors
	  - Added selected tracks' keys to the transport range
	  - Added buttons for jumping between selected tracks' keyframes on the transport controls
	  - Removed black padding around the viewport where possible
	  - Added ability to specify whether a combo button/menu anchor should close when its parent receives focus
	  - Separated logic of FGroupedKeyArea into FSequencerKeyCollection, so it can be used independently
	  - Added playback range to the viewport frame numbers
	  - All frame numbers are now spin boxes

	#jira UE-26429

Change 2875026 on 2016/02/20 by Thomas.Sarkanen

	Added console commands for recording sequences

	Changed plugin to a developer plugin so we can load it when the editor is in -game mode.
	Added Exec commands.
	Added some more logging to help diagnose problems when using commands.
	Added loading/saving of config for recorder settings (stored in Editor.ini).
	Also disabled controls in recorder window when recording.
	Added auto-saving of assets when in non-editor modes.
	Moved animation settings from UnrealEd to Engine module.

Change 2875036 on 2016/02/20 by Max.Chen

	Sequencer: Call RedrawAllViewports instead of RedrawLevelEditingViewports. In particular, this fixes some update issues when editing values in the key editors.

	#jira UE-26960

Change 2875046 on 2016/02/20 by Max.Preussner

	Sequencer: Fix so that clicking on UMG Animations doesn't dirty the scene.

	#jira UE-26249

Change 2875047 on 2016/02/20 by Max.Chen

	Sequencer: Add option to toggle display of channel colors/lines. View->Channel Colors

Change 2877138 on 2016/02/23 by Max.Chen

	Sequencer: Select corresponding track node when selecting key or section. Removed active/inactive selection since it was only being used in deletion and the rules for deletion are now dependent upon what is selected - delete keys and sections before deleting outliner nodes.

Change 2877143 on 2016/02/23 by Thomas.Sarkanen

	Added new math function: WindRelativeAnglesDegrees

	Given two angles in degrees, 'wind' the angle in Angle1 so that it avoids >180 degree flips.
	Good for winding rotations previously expressed as quaternions into a euler-angle representation.

Change 2877147 on 2016/02/23 by Thomas.Sarkanen

	Added the ability to import sequencer transforms from the root node of an animation sequence

	Intended for use after re-importing animations from DCC tools.
	Available in the right-click menu for transform tracks.
	Also added FindTrackBinding to UMovieScene so track bindings can be recovered from tracks.

Change 2877163 on 2016/02/23 by Max.Chen

	Sequencer: Add option to create keyframe sections as infinite. Sequencer defaults to true, UMG defaults to false.

Change 2877165 on 2016/02/23 by Max.Preussner

	Sequencer: Drawing vertical position lines when dragging keys

Change 2878748 on 2016/02/23 by Max.Chen

	Curve Editor: Switch curve type to user when flatting or straightening tangents.

	#jira UE-27277

Change 2878799 on 2016/02/23 by Frank.Fella

	Sequencer - Add folders support to the outliner.

Change 2880769 on 2016/02/24 by Andrew.Rodham

	Sequencer: Added ability to override runtime spawnable ownership in sequencer
	  - This is exposed as an option on spawnables "Keep Alive Outside Playback Range (In Sequencer)"
	  - Enabling this will stop spawnables from being destroyed when scrubbing outside of the playback range

	#jira UE-27205

Change 2880770 on 2016/02/24 by Thomas.Sarkanen

	Sequencer: Added countdown and recording indicator display when recording

	Also fixed extra popups added post-PIE when animation recordings auto shutdown.

Change 2880782 on 2016/02/24 by Max.Chen

	Sequencer: Snapping now also uses the current time as a possible snap time.

	#jira UE-26306

Change 2880793 on 2016/02/24 by Max.Chen

	Sequencer: Add +Animation to Animation track so that it's consistent with all other tracks that have a + button.

Change 2880812 on 2016/02/24 by Max.Chen

	Sequencer: Fix adjusting the leading edge of a shot section so that it cuts into the shot rather than adjusts the start time.

	#jira UE-26306

Change 2881624 on 2016/02/25 by Andrew.Rodham

	Changing shader version GUID to fix corrupt shaders in ddc

Change 2882408 on 2016/02/25 by Thomas.Sarkanen

	Asset/actors stored in TLazyObjectPtrs can now reference game content from engine

	This is a legitimate use case as lazy object ptrs are designed to reference assets/actors cross-domain.

Change 2882409 on 2016/02/25 by Thomas.Sarkanen

[CL 2899785 by Max Chen in Main branch]
This commit is contained in:
Max Chen
2016-03-08 16:55:04 -05:00
committed by Max.Chen@epicgames.com
parent 9c8b57b891
commit 4cde9c20a0
440 changed files with 16466 additions and 6125 deletions
@@ -9,7 +9,31 @@
#include "LevelEditor.h"
#include "LevelViewportActions.h"
class ILevelEditor;
class SLevelViewport;
class FLevelViewportLayout;
/** Arguments for constructing a viewport */
struct FViewportConstructionArgs
{
FViewportConstructionArgs()
: ViewportType(LVT_Perspective)
, bRealtime(false)
{}
/** The viewport's parent layout */
TSharedPtr<FLevelViewportLayout> ParentLayout;
/** The viewport's parent level editor */
TWeakPtr<ILevelEditor> ParentLevelEditor;
/** The viewport's desired type */
ELevelViewportType ViewportType;
/** Whether the viewport should default to realtime */
bool bRealtime;
/** A config key for loading/saving settings for the viewport */
FString ConfigKey;
/** Widget enabled attribute */
TAttribute<bool> IsEnabled;
};
/** Interface that defines an entity within a viewport layout */
class IViewportLayoutEntity : public TSharedFromThis<IViewportLayoutEntity>
@@ -24,6 +48,9 @@ public:
/** Optionally return this entity as an SLevelViewport. Legacy function for interop with code that used to deal directly with SLevelViewports */
virtual TSharedPtr<SLevelViewport> AsLevelViewport() const { return nullptr; }
/** Get this viewport's level editor viewport client */
virtual FLevelEditorViewportClient& GetLevelViewportClient() const = 0;
/** Check if this entity has an active play in editor viewport */
virtual bool IsPlayInEditorViewportActive() const = 0;
@@ -38,26 +65,9 @@ public:
/** Called to save this item's settings in the specified config section */
virtual void SaveConfig(const FString& ConfigSection) = 0;
};
class LEVELEDITOR_API FLevelViewportLayoutEntity : public IViewportLayoutEntity
{
public:
FLevelViewportLayoutEntity(TSharedRef<SLevelViewport> InLevelViewport);
virtual TSharedRef<SWidget> AsWidget() const override;
virtual TSharedPtr<SLevelViewport> AsLevelViewport() const override;
bool IsPlayInEditorViewportActive() const;
void RegisterGameViewportIfPIE();
void SetKeyboardFocus();
void OnLayoutDestroyed();
void SaveConfig(const FString& ConfigSection);
protected:
/** This entity's level viewport */
TSharedRef<SLevelViewport> LevelViewport;
/** Get the type of this viewport as a name */
virtual FName GetType() const = 0;
};
/**
@@ -85,7 +95,7 @@ public:
* @param LayoutString The layout string loaded from file to custom build the layout with
* @param InParentLevelEditor Optional level editor parent to use for new viewports
*/
TSharedRef<SWidget> BuildViewportLayout( TSharedPtr<SDockTab> InParentDockTab, TSharedPtr<class FLevelViewportTabContent> InParentTab, const FString& LayoutString, TWeakPtr<class SLevelEditor> InParentLevelEditor = NULL );
TSharedRef<SWidget> BuildViewportLayout( TSharedPtr<SDockTab> InParentDockTab, TSharedPtr<class FLevelViewportTabContent> InParentTab, const FString& LayoutString, TWeakPtr<ILevelEditor> InParentLevelEditor = NULL );
/**
* Makes a request to maximize a specific viewport and hide the others in this layout
@@ -258,7 +268,7 @@ protected:
TWeakPtr< class FLevelViewportTabContent > ParentTabContent;
/** The optional parent level editor for this layout */
TWeakPtr< class SLevelEditor > ParentLevelEditor;
TWeakPtr< ILevelEditor > ParentLevelEditor;
/** The current maximized viewport if any */
FName MaximizedViewport;