Commit Graph

81 Commits

Author SHA1 Message Date
Nick Darnell
b98c648c14 Copying //UE4/Dev-Editor to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================

Change 2756103 on 2015/11/05 by Jamie.Dale

	Implemented UFont::GetResourceSize to work correctly with the Size Map tool

Change 2756104 on 2015/11/05 by Jamie.Dale

	Changed the font used when a font is missing or invalid to be the last resort font, rather than the localized fallback font

	The localized fallback font could cause different results based on your culture, and the last resort font makes it clearer that something is set-up incorrectly as it just draws invalid glyph markers for all of the text.

Change 2756105 on 2015/11/05 by Jamie.Dale

	Fixed a crash when using an empty FKey property with a Data Table

	FKeyStructCustomization was asserting because there were no objects being edited, due to a newly added Data Table containing zero rows.

	I've removed this assert, and also updated SKeySelector to no longer require a separate argument to say whether multiple keys with different values are selected (this is now calculated from the call to get the current key, which will return an empty TOptional for multiple values).

	#jira UE-22897

Change 2757015 on 2015/11/06 by Joe.Tidmarsh

	SSProgressBar marquee tint. Accounts for widget color and opacity.

	PR #1698

Change 2757156 on 2015/11/06 by Joe.Tidmarsh

	Implemented "Go to Variable" functionality for widgets in Widget Blueprint Editor.

	When we switch modes in UMG from Designer to Graph. We select the variable (In "My Blueprint"), if one exists, for the currently selected widget. Additionally we update the details panel.

	* Added SelectGraphActionItemByName to FBlueprintEditor. This selects an item in My Blueprint and also displays it in the details panel of graph mode. SMyBlueprint is not available to FWidgetBlueprintEditor in UMGEditor module as it's privately implemented within Kismet.

	#rb Ben.Cosh
	#jira UE-20170

Change 2757181 on 2015/11/06 by Jamie.Dale

	Cleaned up some duplication in UMG text widgets, and exposed the text shaping options

	The common properties used by all text widgets that are text layout based have been moved into a UTextLayoutWidget base class, and all text layout based widgets now derive from this.

	The options needed to control the text shaping method used by a text based widget have been exposed via the FShapedTextOptions struct. This contains a way to manage these optional (and advanced) overrides. You typically wouldn't change these from the default unless you knew exactly what you were doing (eg, you have a text block containing only numbers).

	This change also updates SRichTextBlock to work with an invalidation panel in the same way that STextBlock does

Change 2757734 on 2015/11/06 by David.Nikdel

	#UE4 #Editor
	- Added support for meta=(TitleProperty="StructPropertyNameHere") on properties of type TArray<FSomeStruct>.
	- This changes the editor rolled-up display of these values from "{0} members" to a stringified version of the specified property (if found).
	#CodeReview: Matt.Kuhlenschmidt

Change 2758786 on 2015/11/09 by Joe.Tidmarsh

	Border widget now correctly synchronizes padding property
	#jira UE-23070

Change 2758791 on 2015/11/09 by Joe.Tidmarsh

	Shadow of FCanvasTextItem should be drawn before the outline color. Consulted with Bruce.N who believes this is not the intended behavior and was an oversight when refactoring FCanvas (CL 1695138)

	#jira UE-21623
	#1608

	#rb Simon.Tovey, Bruce.Nesbit

Change 2758813 on 2015/11/09 by Joe.Tidmarsh

	UMG: Attempting to parent multiple widgets (in Hierarchy tree)  to a widget that can't have multiple children will notify the user and ignore the operation.
	[UE-22921] [CrashReport] Parenting multiple actors under border crashes editor
	#jira UE-22921

Change 2759234 on 2015/11/09 by Nick.Darnell

	Slate - Improving the way we track references to materials in slate to better keep things alive until they're no longer needed for rendering.  Additionally, making it so the we use the material and texture free list when possible when cleaning up things as to not allocate new memory if not required.  Concidentually this can help with problems with corrupted memory on destruct as well, because it means the memory isn't really going to become garbage any more.

	#codereview Matt.Kuhlenschmidt, Bob.Tellez

Change 2760954 on 2015/11/10 by Nick.Darnell

	Slate - A bug in the introduction of custom rendered elements accidentally broke filling out the texture coordinates for standard material usage.  Materials should once again tile correctly just like images do.

	#jira UE-23118

Change 2761129 on 2015/11/10 by Nick.Darnell

	Slate - Removing the Pre-Multiply alpha path the way it was added, introducing it in a way that doesn't require changes inside the shader.  Continuing to improve the SRetainerWidget to no longer have a frame delay between resizes and painting, also working on getting it handle clipping correctly but still not there yet.

Change 2761391 on 2015/11/10 by Alexis.Matte

	jira UE-20281 and UE-22259
	Fbx scene Re-import workflow
	- First draft of the reimport workflow using a reimport asset in the content browser

	#codereview nick.darnell

Change 2762323 on 2015/11/11 by Alexis.Matte

	fix build compilation

Change 2762407 on 2015/11/11 by Jamie.Dale

	UDataTable::SaveStructData now writes out dummy data when RowStruct is null

	This didn't used to happen, which would cause a miss-match between what UDataTable::LoadStructData was expecting, and would result in a Data Table that could never be loaded again.

	This change also improves the error message when editing a Data Table with a null row struct, and adds the editor-only RowStructName property to cache the name of the last used struct (for error reporting).

	#jira UE-22789

Change 2762508 on 2015/11/11 by Nick.Darnell

	UMG - Making it more obvious what keys do special stuff with anchors in UMG.  Fixing the way snapping to anchors works with Control, it now only zeros out the side you're dragging instead of the entire widget, which was silly.  Enhancing the designer message system to no longer be based on an enum and instead let arbitrary systems push and pop FText messages.  Fixing animations in the anchor drop down to properly animate, broke when we introduced active timers.

Change 2763241 on 2015/11/11 by Nick.Darnell

	Slate - We no longer allow popup windows to be larger than the primary display window for windows where max width/height is unspecified.  This is to prevent accidential creation of tooltip windows that are larger than the driver allows causing crashes.

	#jira UE-20336
2015-12-12 08:54:23 -05:00
Richard TalbotWatkin
35beea5ea2 Fixed issue where SplineComponents added dynamically through the in-world details panel were not editable with the visualizer.
#jira UE-18204 - Spline Components aren't editable if added via in-world component editing.

[CL 2689657 by Richard TalbotWatkin in Main branch]
2015-09-13 12:27:25 -04:00
Richard TalbotWatkin
018991d9ec Fixed selection bug in SplineComponent visualizer. Now correctly selects points on a new spline when a different spline was previously selected.
#jira UE-19279 - Attempted to select 2 spline points from 2 different blueprints

[CL 2662485 by Richard TalbotWatkin in Main branch]
2015-08-20 08:45:24 -04:00
Nick Darnell
d287c6143f More Gamma Correction - Didn't catch this on the previous pass, apparently there was an implicit constructor allowing FLinearColor to FColor that was doing pow(2.2) gamma conversion inversion. Rather than leave the implicit constructor, I'm making it private and making people use ToFColor(true). Which is slightly more expensive, but performs the proper sRGB conversion. While fixing this, I found several terrible uses of the implicit constructor, when Hashing FLinearColors we were converting them to FColors first, when clearing FCanvas we were manually gamma correcting but leaving it as an FLinearColor, then implicitly converting to FColor, double gamma corrrecting. Neither of which should even be required as the RHI Clear command expects an FLinearColor. Additionally fixing a myriad of Slate widgets that were all doing FColor conversions needlessly only to convert back to FLinearColor when queuing slate draw commands.
#codereview nick.penwarden, martin.mittring, andrew.brown, gareth.martin

[CL 2593605 by Nick Darnell in Main branch]
2015-06-19 11:17:11 -04:00
Matt Kuhlenschmidt
4ba9833254 Fixed crash on when enabling Visualize Scale and Roll for a Spline Point
[CL 2578096 by Matt Kuhlenschmidt in Main branch]
2015-06-04 23:58:10 -04:00
Richard TalbotWatkin
f9a4757e27 Fix clang build error.
[CL 2524134 by Richard TalbotWatkin in Main branch]
2015-04-24 07:20:48 -04:00
Richard TalbotWatkin
a3cfc2f2bb Big revamp to SplineComponent (continuing work-in-progress).
#jira UE-11822 - Add up vector, roll and scale properties to USplineComponent which can be used when calculating rotations/transforms at a point on the spline
#jira UE-13333 - BP spline components do not update when setting points
#jira UE-3637 - SplineComponent: Add a get transform at distance accessor

Summary of changes:
- FInterpCurve now natively understands looping. A input key can be set, at which point the spline will loop back to its start point.  Adjusted FInterpCurve methods to take looped curves into account.
- Fixed bugs in FInterpCurve regarding returning default values (T(ForceInit) instead of T() otherwise FVectors and FQuats are not initialized correctly).
- SplineComponent now holds three separate splines (location, rotation and scale).
- The SplineReparamTable is no longer transient, but is built and saved as part of the asset.
- Changed the SplineComponent API. All methods now take a ESplineCoordinateSpace value which specifies whether the values are intended for use in local or world space. The old methods have been deprecated but not removed (for now).
- bAllowSplineEditingPerInstance is deprecated. A new member (bSplineHasBeenEdited) has superseded it, and is set automatically when editing the spline with the visualizer. Added "Reset to Default" option in the visualizer, which restores the archetype defaults.
- SplineComponentVisualizer determines if spline points have been initialized by the user construction script, and, if so, will disallow editing. This is to conform with the general idea that the UCS always overrides property values.
- Fixed a number of bugs in the visualizer, and added new facilities to allow the scale and rotation to be edited (still work-in-progress).

[CL 2524087 by Richard TalbotWatkin in Main branch]
2015-04-24 06:25:50 -04:00
Marc Audy
a425eba9ed Unify Slate's FInputGesture and Engine's FInputChord as FInputChord defined in Slate
[CL 2481648 by Marc Audy in Main branch]
2015-03-17 11:36:28 -04:00
Richard TalbotWatkin
85412a495b Added facility to select multiple spline component keys.
#jira UE-6165 - Ability to multi-select spline component keys

[CL 2388280 by Richard TalbotWatkin in Main branch]
2014-12-15 03:05:31 -05:00
Ben Marsh
149375b14b Update copyright notices to 2015.
[CL 2379638 by Ben Marsh in Main branch]
2014-12-07 19:09:38 -05:00
Matthew Griffin
f1c4513760 Renaming FVector ClampSize and SafeNormal functions for clarity
Used DEPRECATED Macro to keep old names around in case I've missed anything

[CL 2370785 by Matthew Griffin in Main branch]
2014-11-26 10:01:12 -05:00
Richard TalbotWatkin
8adc094be5 Added tangent handles to spline visualization.
#jira UE-2726 - No tangent handle when editing

[CL 2364934 by Richard TalbotWatkin in Main branch]
2014-11-19 10:29:43 -05:00
Richard TalbotWatkin
4a236558c9 Added to SplineComponent: get/set spline point type; set editor colors for selected/unselected spline segments.
#jira UE-5024 - Implement user-definable colors for spline component visualizations

[CL 2354667 by Richard TalbotWatkin in Main branch]
2014-11-10 11:49:45 -05:00
Richard TalbotWatkin
c4eab00971 Added spline component Modify() calls in the various transactions, so that native components are undoable.
#jira UE-3418 - EDITOR: SPRITES: Cannot undo the duplicating of a 2D terrain spline point

[CL 2351387 by Richard TalbotWatkin in Main branch]
2014-11-06 15:09:39 -05:00
Richard TalbotWatkin
4257b9ad67 Added a closed loop property to SplineComponent. Also fixed small rendering bug (local space widget) in SplineComponent visualizer.
#ttp 338259 - SplineComponent: Add an option flag to close the spline
#branch UE4
#proj Editor.ComponentVisualizers, Runtime.Engine

[CL 2315996 by Richard TalbotWatkin in Main branch]
2014-10-01 11:14:01 -04:00
Richard TalbotWatkin
21f4bd5f3f Miscellaneous improvements to SplineComponentVisualizer.
#ttp 341724 - FEATURE REQUEST: PAPER2D: Add or insert a key into a terrain spline
#ttp 341720 - FEATURE REQUEST: PAPER2D: Rename Key on terrain splines
#ttp 341378 - Spline Component/Meshs: Controls points only editable in worldspace. no localpace transformation
#reviewedby James.Golding

[CL 2228433 by Richard TalbotWatkin in Main branch]
2014-07-23 09:40:19 -04:00
Richard TalbotWatkin
8515ee0486 Further SplineComponent improvements:
- Changed USplineComponent::SplineReparamTable to a transient member and force rebuild each time in PostLoad() / PostDuplicate().
- Initialize the SplineReparamTable size at the start to save needless reallocations (as its size is known from the beginning).
- Added menu options to set spline key types (curve, linear, constant)
- Added Reset to Automatic Tangent to allow resetting to either a clamped or an unclamped tangent.
#branch UE4
#proj Runtime.Engine, Editor.ComponentVisualizers
#reviewedby James.Golding, Michael.Noland

[CL 2119717 by Richard TalbotWatkin in Main branch]
2014-06-27 14:18:10 -04:00
Richard TalbotWatkin
24345aa70c Improvements to SplineComponent, and added a new way of handling UI Command Lists.
#add Added a new FUICommandList::ProcessCommandBindings overload, which can be called from a Viewport Client's InputKey() method (in the absence of an FKeyboardEvent object).
#add Fixed key binding handling in SplineComponentVisualizer so that it works through the FUICommandList, instead of being hardcoded.
#change USplineComponent - changed method by which spline reparam table is created (now uses the old method of splitting each segment into a fixed number of steps, instead of using fixed arc length reparameterization, which doesn't lead to such good results where the distance between control points varies largely throughout the spline).  The ReparamStepsPerSegment parameter remains, although I'd like to remove it when I can hit upon a better way to adaptively step through the spline.  Merged UpdateSplineReparamTable and AutoSetTangents into a single UpdateSpline method.
#add Added a parameter to FInterpCurve::AutoSetTangents - bStationaryEndpoints - which determines whether the endpoints should be assigned zero tangents, or whether the tangents should be set in order to extrapolate the curve beyond the endpoints, essentially providing a constant velocity at the start/end.
#add Added bStationaryEndpoints as an editable parameter to USplineComponent.  Use this if you only wish to traverse the spline at constant velocity, as it will lead to more accurate results.
#codereview James.Golding, Michael.Noland

[CL 2112073 by Richard TalbotWatkin in Main branch]
2014-06-20 14:38:07 -04:00
Andrew Rodham
ba3528c9d4 Made it possible for asset editors to maintain their own FEditorModeTools lists
Breaking changes include:
    * Rename of GEditorModeTools -> GLevelEditorModeTools to signify that it applies only to the level editor modes
    * Addition of FEditorModeRegistry, responsible for managing and creating new editor modes. Modes are no longer registered with an instance of the mode, instead with a mode factory that is able to create a new mode of that type.
    * Editor modes now operate on FEditorViewportClients rather than FLevelEditorViewportClients
    * Added ability to specify an FEditorModeTools when creating an FEditorViewport

Moved component vizualiser manager handling outside of individual editor modes, and into FLevelEditorViewportClient. This should make it easier to transplant in future.

This work addresses TTP#334640 - EDITOR: Investigate making editor modes a per-'editor' concept

Reviewed by Michael Noland, Matt Kuhlenschmidt

[CL 2109245 by Andrew Rodham in Main branch]
2014-06-18 10:16:16 -04:00
Jaroslaw Palczynski
ebce413232 UE4 Refactoring. Changed OVERRIDE and FINAL macros to keywords override and final.
[CL 2104397 by Jaroslaw Palczynski in Main branch]
2014-06-13 06:14:46 -04:00
Michael Noland
d165a31e16 Editor: Make spline editing widgets draw in foreground mode
#codereview james.golding

[CL 2102708 by Michael Noland in Main branch]
2014-06-12 00:41:53 -04:00
Michael Noland
4e77d916bf Editor: Splines now trigger a PostEditChangeProperty on the component when modified via the component visualizer
#codereview james.golding

[CL 2101367 by Michael Noland in Main branch]
2014-06-11 00:20:55 -04:00
Richard TalbotWatkin
2647b4ead2 Improvements to SplineComponent and its visualization.
#branch UE4
#proj Editor.ComponentVisualizers, Editor.UnrealEd, Runtime.Core, Runtime.Engine
#change FInterpCurve now uses a binary search to obtain the correct key. Removed the optional out-parameter on Eval, EvalDerivative, etc. Removed  FORCEINLINEs on large methods.
#change USplineComponent now builds the remap table with points spaced at equal distances, which leads to better results.  Added internal methods to obtain the segment length, and the interpolation parameter along the segment at a given distance.
#add Added Duration to USplineComponent.
#add Added a number of different methods for obtaining position, tangent and rotation at a specified distance, or a specified time (optionally at constant velocity).
#add Added methods for building the spline procedurally.
#add Supports right-click context menu on ComponentVisualizers in the standard interface.
#add Key tangents can be manually edited.
#change FLevelEditorViewportClient::ProcessClick now handles right clicks to the Unreal gizmo in the same manner as left clicks, i.e. the method recurses using a version of the hit proxy with the gizmo removed, so we can look at what's underneath.  This allows for "genuine" context menus, i.e. depending on what was clicked, instead of using a single default provided by the current level editor.
#reviewedby James.Golding

[CL 2089561 by Richard TalbotWatkin in Main branch]
2014-05-30 07:58:16 -04:00
James Golding
8429c9502c Improve spline remap table resolution
Notify actor of changes as we modify spline

[CL 2077748 by James Golding in Main branch]
2014-05-19 11:37:55 -04:00
James Golding
3833381459 Pass FComponentInstanceDataCache into OnConstruction, allowing us to apply data before running UCS
Remove ComponentInstanceDataCache.h from ActorComponent.h
Remove SplineComponent.h from Engine.h
Change splinecomp funcs to get get location/direction at point on spline to be world space (and normalized direction vector)
Update reparam table when editing spline
#codereview marc.audy

[CL 2077607 by James Golding in Main branch]
2014-05-19 09:42:46 -04:00