2016-12-08 08:52:44 -05:00
// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
# include "Widgets/Testing/STestSuite.h"
# include "HAL/PlatformProcess.h"
# include "Misc/Paths.h"
# include "Misc/Attribute.h"
# include "Modules/ModuleManager.h"
# include "InputCoreTypes.h"
# include "SlateGlobals.h"
# include "Layout/Visibility.h"
# include "Types/ISlateMetaData.h"
# include "Layout/Margin.h"
# include "Math/TransformCalculus2D.h"
# include "Rendering/SlateLayoutTransform.h"
# include "Animation/CurveHandle.h"
# include "Animation/CurveSequence.h"
# include "Styling/SlateColor.h"
# include "Textures/SlateShaderResource.h"
# include "Fonts/SlateFontInfo.h"
# include "Fonts/FontMeasure.h"
# include "Brushes/SlateDynamicImageBrush.h"
# include "Brushes/SlateImageBrush.h"
# include "Styling/SlateStyle.h"
# include "Input/Events.h"
# include "Input/Reply.h"
# include "Rendering/RenderingCommon.h"
# include "Rendering/DrawElements.h"
# include "Widgets/SWidget.h"
# include "Widgets/DeclarativeSyntaxSupport.h"
# include "Widgets/SCompoundWidget.h"
# include "Widgets/SBoxPanel.h"
# include "Widgets/SOverlay.h"
# include "Styling/SlateTypes.h"
# include "Styling/CoreStyle.h"
# include "Widgets/SWindow.h"
# include "Widgets/SUserWidget.h"
# include "Layout/WidgetPath.h"
# include "SlateOptMacros.h"
# include "Framework/Application/MenuStack.h"
# include "Framework/Application/SlateApplication.h"
# include "Textures/SlateIcon.h"
# include "Framework/Commands/InputChord.h"
# include "Framework/Commands/Commands.h"
# include "Framework/Commands/UICommandList.h"
# include "Framework/Text/TextRange.h"
# include "Framework/Text/IRun.h"
# include "Framework/Text/TextLayout.h"
# include "Framework/Text/ISlateRun.h"
# include "Framework/Text/SlateTextRun.h"
# include "Framework/Text/SlateHyperlinkRun.h"
# include "Framework/Text/SlateWidgetRun.h"
# include "Widgets/Layout/SFxWidget.h"
# include "Widgets/Layout/SBorder.h"
# include "Widgets/Layout/SSpacer.h"
# include "Widgets/Images/SImage.h"
# include "Widgets/Text/STextBlock.h"
# include "Framework/Text/ITextDecorator.h"
# include "Framework/Text/TextDecorators.h"
# include "Widgets/Text/SRichTextBlock.h"
# include "Widgets/Layout/SBox.h"
# include "Widgets/Layout/SGridPanel.h"
# include "Widgets/Layout/SUniformGridPanel.h"
# include "Framework/MultiBox/MultiBoxBuilder.h"
# include "Widgets/Input/SMultiLineEditableTextBox.h"
# include "Widgets/Input/SEditableText.h"
# include "Widgets/Input/SEditableTextBox.h"
# include "Widgets/Input/SButton.h"
# include "Widgets/SToolTip.h"
# include "Widgets/Notifications/SErrorText.h"
# include "Widgets/Input/SComboButton.h"
# include "Widgets/Layout/SSplitter.h"
# include "Widgets/Views/STableViewBase.h"
# include "Widgets/Views/STableRow.h"
# include "Widgets/Views/SListView.h"
# include "Widgets/Layout/SScrollBox.h"
# include "Widgets/Colors/SColorBlock.h"
# include "Widgets/Input/SCheckBox.h"
# include "Widgets/Input/SSpinBox.h"
# include "Widgets/Input/SComboBox.h"
# include "Framework/Docking/WorkspaceItem.h"
# include "Framework/Docking/TabManager.h"
2015-08-19 07:53:45 -04:00
# if !UE_BUILD_SHIPPING
Added the ability to take, save, and load widget snapshots via the widget reflector (Epic Friday)
Major changes:
- The widget reflector UI now uses tabs. The hierarchy and stats views have been moved to tabs, and new tabs have been added to support picking widgets from a snapshot.
- The widget reflector node trees are no longer using UObject types. The idea here was to make the serialization easier, but it didn't work and I ended up using JSON instead.
- When you take or load a widget snapshot, you're now shown the screenshot of the window associated with that snapshot, and are able to pick widgets from it as you would do with a live tree.
API changes:
- The tab spawners for the widget reflector and atlas visualizers are now registered automatically when the SlateReflector module is loaded. These are now the only way to create these windows.
- The tabbed layout within the widget reflector has made it impossible to create the widget reflector unless spawned via a tab manager. To this end, the following functions have been removed from ISlateReflectorModule:
- GetWidgetReflector
- GetAtlasVisualizer
- GetTextureAtlasVisualizer
- GetFontAtlasVisualizer
- These functions used to be used to create a raw widget reflector or atlas viewer widget.
- If you were doing this because you were placing it into your own window, you can take advantage of the fact that the widget reflector tab spawner is always available, and use the global tab manager to create your window and place a spawned widget reflector tab inside it - SummonPerfTestSuite in SPerfSuite.cpp provides an example of this.
- If you were doing this in the handler of your own widget reflector tab spawner, you can either just use the standard widget reflector tab spawner instead (you need to load the SlateReflector module once, and then "WidgetReflector" will be available to spawn via the global tab manager), or you can just use the DisplayWidgetReflector function of ISlateReflectorModule (which will internally do the same thing).
[CL 2661609 by Jamie Dale in Main branch]
2015-08-19 16:30:27 -04:00
# include "ISlateReflectorModule.h"
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
# include "Framework/Testing/STableViewTesting.h"
# include "Widgets/Input/SSearchBox.h"
# include "Widgets/Input/SVolumeControl.h"
# include "Widgets/Input/STextEntryPopup.h"
# include "Widgets/Notifications/SNotificationList.h"
# include "Widgets/Input/SNumericEntryBox.h"
# include "Widgets/Layout/SDPIScaler.h"
# include "Widgets/Text/SInlineEditableTextBlock.h"
# include "Widgets/Docking/SDockTab.h"
# include "Framework/Testing/SLayoutExample.h"
# include "Framework/Testing/SWidgetGallery.h"
# include "Framework/Testing/TestStyle.h"
# include "Framework/Text/RichTextLayoutMarshaller.h"
# include "Framework/Text/SyntaxHighlighterTextLayoutMarshaller.h"
# include "Widgets/Layout/SScissorRectBox.h"
# include "Math/TransformCalculus3D.h"
# include "Widgets/Layout/SResponsiveGridPanel.h"
# include "Widgets/Colors/SColorPicker.h"
# include "Widgets/Notifications/INotificationWidget.h"
# include "Widgets/SInvalidationPanel.h"
2014-04-26 20:23:08 -04:00
2014-03-14 14:13:41 -04:00
# define LOCTEXT_NAMESPACE "STestSuite"
2015-01-30 10:13:53 -05:00
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
2014-10-24 21:08:08 -04:00
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
namespace
{
/**
* A set of syntax tests for transform calculus to ensure that the basic primitives are supported properly .
* Does NOT test for correctness , purely syntax !
*/
bool TestTransformCalculus ( )
{
float uniScale = 5.8f ;
FVector trans ( 5 , 6 , 7 ) ;
2014-11-26 10:01:12 -05:00
FQuat quat ( FVector ( 1 , 2 , 3 ) . GetSafeNormal ( ) , 33.5f ) ;
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
FRotator rot ( 7 , 8 , 9 ) ;
FMatrix mat = FRotationMatrix : : Make ( rot ) ;
// Identity casts
const float & uniScale2 = TransformCast < float > ( uniScale ) ;
const FVector & trans2 = TransformCast < FVector > ( trans ) ;
const FQuat & quat2 = TransformCast < FQuat > ( quat ) ;
const FRotator & rot2 = TransformCast < FRotator > ( rot ) ;
const FMatrix & mat2 = TransformCast < FMatrix > ( mat ) ;
// rotation casts
auto quat3 = TransformCast < FQuat > ( rot ) ;
auto rot3 = TransformCast < FRotator > ( quat ) ;
2015-04-09 16:42:44 -04:00
// PVS-Studio complains about double initialization, but that's something we're testing
// so we disable the warning:
rot3 = TransformCast < FRotator > ( mat ) ; //-V519
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
// higher level transform casts
auto mat3 = TransformCast < FMatrix > ( uniScale ) ;
mat3 = TransformCast < FMatrix > ( trans ) ;
mat3 = TransformCast < FMatrix > ( quat ) ;
mat3 = TransformCast < FMatrix > ( rot ) ;
// basic concatenation
auto uniScale4 = Concatenate ( uniScale , uniScale2 ) ;
auto trans4 = Concatenate ( trans , trans2 ) ;
auto quat4 = Concatenate ( quat , quat2 ) ;
auto rot4 = Concatenate ( rot , rot2 ) ;
auto mat4 = Concatenate ( mat , mat2 ) ;
// matrix conversion
FMatrix mat5 ;
FQuat quat5 ;
mat5 = Concatenate ( uniScale4 , trans4 ) ;
mat5 = Concatenate ( trans4 , uniScale4 ) ;
mat5 = Concatenate ( uniScale4 , quat4 ) ;
mat5 = Concatenate ( quat4 , uniScale4 ) ;
mat5 = Concatenate ( uniScale4 , rot4 ) ;
mat5 = Concatenate ( rot4 , uniScale4 ) ;
mat5 = Concatenate ( uniScale4 , mat4 ) ;
mat5 = Concatenate ( mat4 , uniScale4 ) ;
mat5 = Concatenate ( trans4 , quat4 ) ;
mat5 = Concatenate ( quat4 , trans4 ) ;
mat5 = Concatenate ( trans4 , rot4 ) ;
mat5 = Concatenate ( rot4 , trans4 ) ;
mat5 = Concatenate ( trans4 , mat4 ) ;
mat5 = Concatenate ( mat4 , trans4 ) ;
quat5 = Concatenate ( quat4 , rot4 ) ;
2015-03-31 20:12:31 -04:00
quat5 = Concatenate ( rot4 , quat4 ) ; //-V519
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
mat5 = Concatenate ( quat4 , mat4 ) ;
mat5 = Concatenate ( mat4 , quat4 ) ;
mat5 = Concatenate ( rot4 , mat4 ) ;
mat5 = Concatenate ( mat4 , rot4 ) ;
mat5 = Concatenate ( Inverse ( trans ) , rot , trans ) ;
mat5 = Concatenate ( Inverse ( trans ) , rot , uniScale , trans ) ;
FScale2D scale2D ( 1.4f , 3.2f ) ;
FShear2D shear2D ( - 3.5f , - 4.6f ) ;
FVector2D trans2D ( 7 , 8 ) ;
FQuat2D rot2D ( 1.4f ) ;
FMatrix2x2 mat2D ( 5 , 6 , 7 , 8 ) ;
FSlateLayoutTransform transformLayout ( uniScale , trans2D ) ;
FSlateRenderTransform transform2D = : : Concatenate ( FScale2D ( 2 , 4 ) , FShear2D ( 0.5 , 2 ) , FQuat2D ( FMath : : DegreesToRadians ( 45.0f ) ) , FVector2D ( 5 , 7 ) ) ;
// Identity casts
const FScale2D & scale2D2 = TransformCast < FScale2D > ( scale2D ) ;
const FShear2D & shear2D2 = TransformCast < FShear2D > ( shear2D ) ;
const FVector2D & trans2D2 = TransformCast < FVector2D > ( trans2D ) ;
const FQuat2D & rot2D2 = TransformCast < FQuat2D > ( rot2D ) ;
const FMatrix2x2 & mat2D2 = TransformCast < FMatrix2x2 > ( mat2D ) ;
const FSlateLayoutTransform & transformLayout2 = TransformCast < FSlateLayoutTransform > ( transformLayout ) ;
const FSlateRenderTransform & transform2D2 = TransformCast < FSlateRenderTransform > ( transform2D ) ;
auto scale2D3 = Concatenate ( scale2D , scale2D ) ;
auto shear2D3 = Concatenate ( shear2D , shear2D ) ;
auto trans2D3 = Concatenate ( trans2D , trans2D ) ;
auto rot2D3 = Concatenate ( rot2D , rot2D ) ;
auto mat2D3 = Concatenate ( mat2D , mat2D ) ;
auto transformLayout3 = Concatenate ( transformLayout , transformLayout ) ;
auto transform2D3 = Concatenate ( transform2D , transform2D ) ;
// higher level transform casts
transformLayout3 = TransformCast < FSlateLayoutTransform > ( uniScale ) ;
transformLayout3 = TransformCast < FSlateLayoutTransform > ( trans2D ) ;
transform2D3 = TransformCast < FSlateRenderTransform > ( uniScale ) ;
transform2D3 = TransformCast < FSlateRenderTransform > ( scale2D ) ;
transform2D3 = TransformCast < FSlateRenderTransform > ( shear2D ) ;
transform2D3 = TransformCast < FSlateRenderTransform > ( trans2D ) ;
transform2D3 = TransformCast < FSlateRenderTransform > ( rot2D ) ;
transform2D3 = TransformCast < FSlateRenderTransform > ( mat2D ) ;
transform2D3 = TransformCast < FSlateRenderTransform > ( transformLayout ) ;
// basic concatenation
scale2D3 = Concatenate ( uniScale , scale2D ) ;
scale2D3 = Concatenate ( scale2D , uniScale ) ;
auto transformLayout4 = Concatenate ( transformLayout , transformLayout ) ;
transformLayout4 = Concatenate ( uniScale , trans2D ) ;
transformLayout4 = Concatenate ( trans2D , uniScale ) ;
transformLayout4 = Concatenate ( uniScale , transformLayout ) ;
transformLayout4 = Concatenate ( trans2D , transformLayout ) ;
transformLayout4 = Concatenate ( transformLayout , uniScale ) ;
transformLayout4 = Concatenate ( transformLayout , trans2D ) ;
auto transform2D4 = Concatenate ( transform2D , transform2D ) ;
transform2D4 = Concatenate ( trans2D , scale2D ) ;
transform2D4 = Concatenate ( trans2D , shear2D ) ;
transform2D4 = Concatenate ( trans2D , rot2D ) ;
transform2D4 = Concatenate ( trans2D , mat2D ) ;
transform2D4 = Concatenate ( trans2D , transform2D ) ;
transform2D4 = Concatenate ( scale2D , transformLayout ) ;
transform2D4 = Concatenate ( scale2D , transform2D ) ;
transform2D4 = Concatenate ( shear2D , transformLayout ) ;
transform2D4 = Concatenate ( shear2D , transform2D ) ;
transform2D4 = Concatenate ( rot2D , transformLayout ) ;
transform2D4 = Concatenate ( rot2D , transform2D ) ;
transform2D4 = Concatenate ( mat2D , transformLayout ) ;
transform2D4 = Concatenate ( mat2D , transform2D ) ;
transform2D4 = Concatenate ( transformLayout , transform2D ) ;
transform2D4 = Concatenate ( scale2D , trans2D ) ;
transform2D4 = Concatenate ( shear2D , trans2D ) ;
transform2D4 = Concatenate ( rot2D , trans2D ) ;
transform2D4 = Concatenate ( mat2D , trans2D ) ;
transform2D4 = Concatenate ( transform2D , trans2D ) ;
transform2D4 = Concatenate ( transformLayout , scale2D ) ;
transform2D4 = Concatenate ( transform2D , scale2D ) ;
transform2D4 = Concatenate ( transformLayout , shear2D ) ;
transform2D4 = Concatenate ( transform2D , shear2D ) ;
transform2D4 = Concatenate ( transformLayout , rot2D ) ;
transform2D4 = Concatenate ( transform2D , rot2D ) ;
transform2D4 = Concatenate ( transformLayout , mat2D ) ;
transform2D4 = Concatenate ( transform2D , mat2D ) ;
transform2D4 = Concatenate ( transform2D , transformLayout ) ;
auto mat2D4 = Concatenate ( scale2D , shear2D ) ;
mat2D4 = Concatenate ( scale2D , rot2D ) ;
mat2D4 = Concatenate ( scale2D , mat2D ) ;
mat2D4 = Concatenate ( shear2D , scale2D ) ;
mat2D4 = Concatenate ( rot2D , scale2D ) ;
mat2D4 = Concatenate ( mat2D , scale2D ) ;
mat2D4 = Concatenate ( shear2D , rot2D ) ;
mat2D4 = Concatenate ( shear2D , mat2D ) ;
mat2D4 = Concatenate ( rot2D , shear2D ) ;
mat2D4 = Concatenate ( mat2D , shear2D ) ;
mat2D4 = Concatenate ( rot2D , mat2D ) ;
mat2D4 = Concatenate ( mat2D , rot2D ) ;
{
auto matRot = Concatenate ( FRotationMatrix : : Make ( FRotator ( 0.0f , 17.5f , 0.0f ) ) , FRotationMatrix : : Make ( FRotator ( 12.4f , 5.7f , 29.0f ) ) ) ;
auto quatRot = Concatenate ( FQuat ( FRotator ( 0.0f , 17.5f , 0.0f ) ) , FQuat ( FRotator ( 12.4f , 5.7f , 29.0f ) ) ) ;
FVector vec ( 3.0f , 4.0f , 5.0f ) ;
auto matRotRes = TransformPoint ( matRot , vec ) ;
auto quatRotRes = TransformPoint ( quatRot , vec ) ;
}
return true ;
}
bool bTestTransformCalculus = TestTransformCalculus ( ) ;
}
2014-04-26 20:23:08 -04:00
2014-03-14 14:13:41 -04:00
struct FOnPaintHandlerParams
{
const FGeometry & Geometry ;
const FSlateRect & ClippingRect ;
FSlateWindowElementList & OutDrawElements ;
const int32 Layer ;
const bool bEnabled ;
FOnPaintHandlerParams ( const FGeometry & InGeometry , const FSlateRect & InClippingRect , FSlateWindowElementList & InOutDrawElements , int32 InLayer , bool bInEnabled )
: Geometry ( InGeometry )
, ClippingRect ( InClippingRect )
, OutDrawElements ( InOutDrawElements )
, Layer ( InLayer )
, bEnabled ( bInEnabled )
{
}
} ;
/** Delegate type for allowing custom OnPaint handlers */
DECLARE_DELEGATE_RetVal_OneParam (
int32 ,
FOnPaintHandler ,
const FOnPaintHandlerParams & ) ;
/** Widget with a handler for OnPaint; convenient for testing various DrawPrimitives. */
class SCustomPaintWidget : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SCustomPaintWidget )
: _OnPaintHandler ( )
{ }
SLATE_EVENT ( FOnPaintHandler , OnPaintHandler )
SLATE_END_ARGS ( )
/**
* Construct this widget
*
* @ param InArgs The declaration data for this widget
*/
void Construct ( const FArguments & InArgs )
{
OnPaintHandler = InArgs . _OnPaintHandler ;
}
2015-01-14 19:04:45 -05:00
virtual FVector2D ComputeDesiredSize ( float ) const override
2014-03-14 14:13:41 -04:00
{
return FVector2D ( 128 , 128 ) ;
}
2015-04-01 07:20:55 -04:00
virtual int32 OnPaint ( const FPaintArgs & Args , const FGeometry & AllottedGeometry , const FSlateRect & MyClippingRect , FSlateWindowElementList & OutDrawElements , int32 LayerId , const FWidgetStyle & InWidgetStyle , bool bParentEnabled ) const override
2014-03-14 14:13:41 -04:00
{
if ( OnPaintHandler . IsBound ( ) )
{
FOnPaintHandlerParams Params ( AllottedGeometry , MyClippingRect , OutDrawElements , LayerId , bParentEnabled & & IsEnabled ( ) ) ;
OnPaintHandler . Execute ( Params ) ;
}
else
{
FSlateDrawElement : : MakeDebugQuad (
OutDrawElements ,
LayerId ,
AllottedGeometry . ToPaintGeometry ( ) ,
MyClippingRect
) ;
}
2014-07-23 08:23:21 -04:00
return SCompoundWidget : : OnPaint ( Args , AllottedGeometry , MyClippingRect , OutDrawElements , LayerId , InWidgetStyle , bParentEnabled & & IsEnabled ( ) ) ;
2014-03-14 14:13:41 -04:00
}
private :
FOnPaintHandler OnPaintHandler ;
} ;
class SDynamicBrushTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SDynamicBrushTest ) { }
SLATE_END_ARGS ( )
void Construct ( const FArguments & InArgs )
{
ChildSlot
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. FillHeight ( 1.0f )
. HAlign ( HAlign_Left )
. VAlign ( VAlign_Top )
[
SNew ( SBorder )
[
SNew ( SBox )
. WidthOverride ( 128 )
. HeightOverride ( 128 )
[
SNew ( SImage )
. Image ( this , & SDynamicBrushTest : : GetImage )
]
]
]
+ SVerticalBox : : Slot ( )
. FillHeight ( .2f )
. HAlign ( HAlign_Left )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SEditableTextBox )
. Text ( this , & SDynamicBrushTest : : GetFilenameText )
. HintText ( LOCTEXT ( " DynamicBrushTestLabel " , " Type in full path to an image (png) " ) )
. OnTextCommitted ( this , & SDynamicBrushTest : : LoadImage )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. Padding ( 2.0f )
. VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( 1.0f )
. Text ( LOCTEXT ( " ResetLabel " , " Reset " ) )
. OnClicked ( this , & SDynamicBrushTest : : Reset )
]
]
] ;
}
~ SDynamicBrushTest ( )
{
Reset ( ) ;
}
private :
const FSlateBrush * GetImage ( ) const
{
return DynamicBrush . IsValid ( ) ? DynamicBrush . Get ( ) : FCoreStyle : : Get ( ) . GetBrush ( " Checkerboard " ) ;
}
void LoadImage ( const FText & Text , ETextCommit : : Type CommitType )
{
FilenameText = Text ;
FString Filename = Text . ToString ( ) ;
// Note Slate will append the extension automatically so remove the extension
FName BrushName ( * FPaths : : GetBaseFilename ( Filename , false ) ) ;
DynamicBrush = MakeShareable ( new FSlateDynamicImageBrush ( BrushName , FVector2D ( 128 , 128 ) ) ) ;
}
FReply Reset ( )
{
FilenameText = FText : : GetEmpty ( ) ;
DynamicBrush . Reset ( ) ;
return FReply : : Handled ( ) ;
}
FText GetFilenameText ( ) const
{
return FilenameText ;
}
private :
TSharedPtr < FSlateDynamicImageBrush > DynamicBrush ;
FText FilenameText ;
} ;
/** Test the draw elements . */
class SElementTesting : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SElementTesting ) { }
SLATE_END_ARGS ( )
/**
* Construct the widget
*
* @ param InArgs Declartion from which to construct the widget
*/
void Construct ( const FArguments & InArgs )
{
FontScale = 1.0f ;
// Arrange a bunch of DrawElement tester widgets in a vertical stack.
// Use custom OnPaint handlers.
this - > ChildSlot
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. HAlign ( HAlign_Right )
[
SNew ( SButton )
. Text ( LOCTEXT ( " DisableButton " , " Disable " ) )
. OnClicked ( this , & SElementTesting : : OnDisableClicked )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SAssignNew ( VerticalBox , SVerticalBox )
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SNew ( SCustomPaintWidget )
. OnPaintHandler ( this , & SElementTesting : : TestBoxElement )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. HAlign ( HAlign_Left )
. Padding ( 4.0f )
[
SNew ( SSpinBox < float > )
. Delta ( .1f )
. Value ( this , & SElementTesting : : GetFontScale )
. OnValueChanged ( this , & SElementTesting : : OnScaleValueChanged )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1.0f )
[
SNew ( SCustomPaintWidget )
. OnPaintHandler ( this , & SElementTesting : : TestTextElement )
]
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SNew ( SCustomPaintWidget )
. OnPaintHandler ( this , & SElementTesting : : TestGradientElement )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SNew ( SCustomPaintWidget )
. OnPaintHandler ( this , & SElementTesting : : TestSplineElement )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 3 )
[
SNew ( SCustomPaintWidget )
. OnPaintHandler ( this , & SElementTesting : : TestRotation )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 3 )
2015-09-23 11:55:14 -04:00
[
SNew ( SCustomPaintWidget )
. OnPaintHandler ( this , & SElementTesting : : TestCustomVerts )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 3 )
2014-03-14 14:13:41 -04:00
[
SNew ( SDynamicBrushTest )
]
]
] ;
}
---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.
While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
- Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.
- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
- Examples include animation, async operations that update periodically, progress updates, loading bars, etc.
- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.
- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
- There are THREE ways to unregister an active tick:
1. Return EActiveTickReturnType::StopTicking from the active tick function
2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
3. Destroy the widget responsible for the active tick
- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
- The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)
- The FCurveSequence API has been updated to work with the active tick system
- Playing a curve sequence now requires that you pass the widget being animated by the sequence
- The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
- GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.
[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
virtual void Tick ( const FGeometry & AllottedGeometry , const double InCurrentTime , const float InDeltaTime ) override
2014-03-14 14:13:41 -04:00
{
CenterRotation + = InDeltaTime * .3 ;
if ( CenterRotation > 2 * PI )
{
CenterRotation - = 2 * PI ;
}
OuterRotation + = ( InDeltaTime * 1.5 ) ;
if ( OuterRotation > 2 * PI )
{
OuterRotation - = 2 * PI ;
}
}
SElementTesting ( )
{
CenterRotation = 0 ;
OuterRotation = 0 ;
}
private :
TSharedPtr < SVerticalBox > VerticalBox ;
float FontScale ;
float CenterRotation ;
float OuterRotation ;
FReply OnDisableClicked ( )
{
VerticalBox - > SetEnabled ( ! VerticalBox - > IsEnabled ( ) ) ;
return FReply : : Handled ( ) ;
}
void OnScaleValueChanged ( float NewScale )
{
FontScale = NewScale ;
}
float GetFontScale ( ) const
{
return FontScale ;
}
int32 TestBoxElement ( const FOnPaintHandlerParams & InParams )
{
const FSlateBrush * StyleInfo = FTestStyle : : Get ( ) . GetDefaultBrush ( ) ;
FSlateDrawElement : : MakeBox (
InParams . OutDrawElements ,
InParams . Layer ,
InParams . Geometry . ToPaintGeometry ( ) ,
StyleInfo ,
InParams . ClippingRect ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect
) ;
return InParams . Layer ;
}
int32 TestTextElement ( const FOnPaintHandlerParams & InParams )
{
const FText Text = LOCTEXT ( " TestText " , " The quick brown fox jumps over the lazy dog 0123456789 " ) ;
const FString FontName ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Regular.ttf " ) ) ;
uint32 FontSize = 14 ;
Copying //UE4/WEX-Staging to Dev-Main (//UE4/Dev-Main)
===================
MAJOR FEATURES + CHANGES
===================
Change 3123735 on 2016/09/13 by Josh.Markiewicz
#UE4 - added FNames for some common online features to be refactored later
#codereview david.nikdel
Change 3123608 on 2016/09/13 by Josh.Markiewicz
#OSS - refactor FUniqueNetIdRepl to derive from FUniqueNetIdWrapper and clean up redundant code
#codereview david.nikdel
Change 3120074 on 2016/09/09 by David.Nikdel
#Analytics: Move log message to more correct location
Change 3120073 on 2016/09/09 by David.Nikdel
#Analytics: Adjustments to ET.DroppedSubmission per Wes's feedback
- Don't try to restore events at all if caching is disabled (but do log the error)
- Stop accumulating events (even the ET.DroppedSubmission event) at 1024 cached to defend against run away accumulation
#CodeReview: Wes.Hunt
Change 3119959 on 2016/09/09 by Peter.Sauerbrei
update to engine to provide the generic chunk install when one is not implemented or requested
#rb none
Change 3119378 on 2016/09/09 by David.Nikdel
#Analytics #ET: Added a config option to not drop events in the event of a failure to flush.
- Events are re-added to the queue (may result in some reordering but timestamps will still be there) in the event of a failure
- Also appending an ET.DroppedSubmission event in this case so we can track how often clients fail. Has HTTP_STATUS and URL attributes.
- Events accumulate within a given application run but no attempt is made to persist across crashes etc.
#CodeReview: Wes.Hunt
Change 3118773 on 2016/09/08 by Peter.Sauerbrei
bring over fix for missing debug information in IOS executables
#rb none
Change 3118574 on 2016/09/08 by Peter.Sauerbrei
pulled over architecture fix for IOS from Main
#rb none
Change 3117672 on 2016/09/08 by Steve.Allison
Adding 3544_iPadMini3_ChAIRQA
Change 3116529 on 2016/09/07 by Josh.Markiewicz
#UE4 - reverted started IOS purchase/store work from default engine OSS plugins
#codereview david.nikdel
Change 3116010 on 2016/09/07 by Josh.Markiewicz
#WEX - Copying //WEX/Dev-Mobile to Dev-Main (//WEX/Dev-Main) to get OnlineSubsystemiOS changes
Change 3114411 on 2016/09/06 by Peter.Sauerbrei
fix for deploying movies to the correct directory
#rb none
Change 3113944 on 2016/09/06 by Peter.Sauerbrei
addition of resave packages command to UAT
#rb none
Change 3112948 on 2016/09/02 by Nathan.Green
#WEX
- Fixing file length on Android so that we can write out stats files (change is being submitted into Dev-Mobile by Chris Babcock)
#CodeReview: Chance.Lyon, David.Nikdel
Change 3112567 on 2016/09/02 by Josh.Markiewicz
#UE4 - fixed possible exception when checking directories that don't exist (copy of CL#3099217)
#rb ben.marsh
Change 3112055 on 2016/09/02 by Chance.Lyon
#WEX
- Merging mobile branch changes into main
Change 3108827 on 2016/08/31 by Peter.Sauerbrei
fix for warning
#rb none
Change 3105012 on 2016/08/29 by Peter.Sauerbrei
enable ICMP for Android
#rb none
Change 3103322 on 2016/08/26 by David.Nikdel
#WEX: Fix for clang warnings in Font Outline code
#CodeReview: Matt.Kuhlenschmidt
Change 3102935 on 2016/08/26 by David.Nikdel
Merging CL 3102878 from
//UE4/Dev-Editor/Engine/...
to //WEX/Main/Engine/...
------
Added support for outline fonts
- An outline size (in slate units), optional material and optional fill color can be specified with each font info.
- Outlines do not contribute to measurement directly so the text measuring and shaping methods have been modified to account for outlines
- Fixed a bug where font materials do not work properly if part of the font's rendered glyphs were in a different atlas
#CodeReview: Matt.Kuhlenschmidt, Matt.Hancy, Peter.Sauerbrei
Change 3102541 on 2016/08/26 by Peter.Sauerbrei
fix for build warning on Mac and IOS
#rb none
Change 3101820 on 2016/08/25 by Peter.Sauerbrei
Moved the online changes to the plugins directory
#rb none
Change 3101808 on 2016/08/25 by Peter.Sauerbrei
Merging using WEX_Main_to_UE4_WEX_Staging bringing in UE4 engine 4.14
#rb none
Change 3097879 on 2016/08/23 by David.Nikdel
#Analytics #OSS: Adjusted cohort selection algorithm and test cases
Change 3096606 on 2016/08/22 by Nathan.Green
#WEX
- Adding bAllowWindowResize, bAllowClose, bAllowMaximize, and bAllowMinimize boolean to GeneralProjectSettings
- Preventing us from resizing the window for the time being (in the future we may only allow along aspect ratio resizing)
#CodeReview: Chance.Lyon, David.Nikdel
Change 3094946 on 2016/08/19 by David.Nikdel
#OSS - Added FUserOnlineAccountMcp::SelectCohort
Change 3094942 on 2016/08/19 by David.Nikdel
#UE4 - Made FMD5 const-correct
Change 3092494 on 2016/08/17 by Nathan.Green
#WEX
- Making sure we never build zip64 instead of zip
#CodeReview: Chance.Lyon, David.Nikdel, Chris.Babcock
Change 3090760 on 2016/08/16 by Michael.Trepka
Copy of CL 3089133
Fix for task bar displayed over the fullscreen window on Windows 10 with Anniversary Update
Change 3090759 on 2016/08/16 by Michael.Trepka
Copy of CL 3078927
Updated WindowTitleBarArea widget to not override window zone in fullscreen mode, to prevent window from being moved. That required adding separate handling for double click in fullscreen, as it's no longer handled by window action.
Change 3087872 on 2016/08/12 by Josh.Markiewicz
#UE4 - cleaned up IOS store/purchase interface (first pass, minus IAP restore)
#codereview david.nikdel, josh.adams
Change 3084182 on 2016/08/10 by Peter.Sauerbrei
revert out the OpenGL shader compression code
#rb none
Change 3082565 on 2016/08/09 by Ben.Marsh
Fix building with VS2015 update 3.
Change 3082557 on 2016/08/09 by Ben.Marsh
Fix UBT makefile being invalidated to update adaptive unity build settings, even if that module happens to not include that file in a unity file. Keep a list of all files included by unity files as well as files in the working set.
#codereview Mike.Fricker, Michael.Noland
Change 3082456 on 2016/08/09 by Josh.Markiewicz
#UE4 - fixed typo
Change 3082439 on 2016/08/09 by Josh.Markiewicz
#UE4 - added CanMakePurchase call to IOS
Change 3081905 on 2016/08/09 by Michael.Noland
Editor: Made the text colors and font size in the output log configurable in the editor appearance settings (no changes to default values ... yet)
#codereview matt.kuhlenschmidt
Change 3080932 on 2016/08/08 by Josh.Markiewicz
#UE4 - New IOS purchasing/store interface v2
- added interfaces to main IOS subsystem
- added proper destruction of interfaces to Shutdown of IOS
- moved FStoreKitHelper to its own file
-- extended it for new v2 (improvements forthcoming)
- MCPCatalogHelper returns bogus user id for IOS app store
#codereview josh.adams, david.nikdel
#tests very basic IAP stuff so far
Change 3080217 on 2016/08/07 by Michael.Noland
Engine: Prevented a startup warning when SpectatorClass is nullptr, as not all games require a spectator pawn
- Also reduced the number of GetWorld() calls in APlayerController::SpawnSpectatorPawn()
Change 3080046 on 2016/08/06 by Michael.Noland
Engine: Moved where scissor rect reset happens for custom slate drawables to avoid a conflict with an existing fix in another branch
#codereview matt.kuhlenschmidt
Change 3080032 on 2016/08/06 by Michael.Noland
UMG: Fixed a bug where screen-mode UWidgetComponent widgets were drawn incorrectly offset in splitscreen or with aspect-ratio constrained cameras
#codereview nick.darnell, marc.audy
Change 3080031 on 2016/08/06 by Michael.Noland
Engine: Add the option to return player viewport-relative positions to ProjectWorldLocationToScreenWithDistance, ProjectWorldLocationToScreen, and ProjectWorldToScreen, which is useful if the position is going to be used for widgets in splitscreen or with aspect-ratio constrained cameras
#codereview nick.darnell, marc.audy
Change 3080029 on 2016/08/06 by Michael.Noland
Engine: Fixed a bug where the debug console and other debug rendering would be an incorrect size (based on the last player viewport) and also be partially clipped (depending on what in Slate rendered previously)
- This fixes issues with the console being offset and clipped when using aspect ratio constrained cameras or split screen
#codereview matt.kuhlenschmidt
Change 3079656 on 2016/08/05 by Josh.Markiewicz
#WEX - basic IOS changes to project
- added OnlineSubsystemIOS
- added some default settings
- removed GoogleVR from project
#codereview david.nikdel
Change 3078971 on 2016/08/05 by Steve.Allison
Updating to match check-in for UE4 Main @ CL 3078968
Change 3078025 on 2016/08/04 by Michael.Trepka
Copy of CLs 3073978 and 3075931
- More reliable way of checking if the cursor should be changed to resize cursor in bordeless window mode
- On Windows, lock the cursor to the center of the rect if the cursor is hidden to avoid problems with borderless window's round corners not treated as part of the window.
Change 3075415 on 2016/08/03 by Peter.Sauerbrei
reduce the metal command buffers
Change 3071457 on 2016/07/31 by David.Hunt
#WEX
Blueprint indexing
@Pete: This change and anything in Engine/Content can be stomped by any engine integration. This is just to help with not having to resave all of these to udpate a few of our own content blueprints for search indexing.
#CodeReview Peter.Sauerbrei, Steve.Allison, David.Nikdel
Change 3068661 on 2016/07/28 by Josh.Markiewicz
#WEX - changed the max number of possible UObjects allowed by a factor of 10 to reduce the memory footprint
#codereview david.nikdel, peter.sauerbrei
Change 3068500 on 2016/07/28 by David.Nikdel
#OSSMCP: Use correct HttpRequest creation method to respect game service config
Change 3066945 on 2016/07/27 by David.Nikdel
Reproduced CL 3063869 from Michael.Noland
>> Engine: Added a cvar (t.FPSChart.OpenFolderOnDump) to control whether or not FPS charts automatically open the profiling folder when stopfpschart is executed, which can be useful to avoid a bunch of open
>> windows while doing automated testing
#CodeReview: Michael.Noland
#JIRA: WEX-2342
Change 3063495 on 2016/07/25 by Michael.Trepka
Copy of CL 3063426
Borderless window support improvements:
- the cursor changes to resize when hovering over the window edge
- added a way for widgets to register a delegate that's called when window actions occur (maximize, restore, etc.)
- used window action notification for WindowTitleBarArea to improve how toggling fullscreen on double click is handled
Change 3063431 on 2016/07/25 by Michael.Trepka
Copy of CL 3063057 - Use round corners for windows with no system title bar and border only in windowed mode.
Change 3062654 on 2016/07/23 by Michael.Trepka
Copy of CL 3046975 and 3056204 - Support for making the game window borderless (no system border or title bar). Disabled by default. Enabling requires adding bUseBorderlessWindow=True to [/Script/EngineSettings.GeneralProjectSettings] in DefaultGame.ini. The game using this is responsible for adding WindowTitleBarArea widget to its UI, as well as window minimize/maximize/close buttons.
Change 3062647 on 2016/07/23 by Michael.Trepka
Copy of CL 3029211 - Added a setting (on by default) to make the game window preserve its content's aspect ratio while being resized by user
Change 3062646 on 2016/07/23 by Michael.Trepka
Copy of CLs 3039855, 3042644 and 3042911 - Added an option to toggle fullscreen with F11 key in addition to Alt+Enter
Change 3062638 on 2016/07/23 by Michael.Trepka
Copy of CL 3038201 and CL 3046803 -Added WindowTitleBarArea widget
Change 3062056 on 2016/07/22 by Peter.Sauerbrei
addition of optimization for ios compile times
Change 3054586 on 2016/07/18 by Nathan.Green
#WEX
- Adding tags around my engine level change
#CodeReview: Chance.Lyon, David.Nikdel
Change 3054581 on 2016/07/18 by Nathan.Green
#WEX
- Removing previous change, making all buttons ignore space bar and enter as we don't really care about that functionality
#JIRA: WEX-2256
#CodeReview: Chance.Lyon, Colin.Pyle, David.Nikdel
Change 3048243 on 2016/07/13 by Steve.Allison
This one actually has the changes from rev4
Change 3046649 on 2016/07/12 by Steve.Allison
Updating to match provision in UE4 Main @ CL 3046262
Change 3046127 on 2016/07/12 by Ian.Fox
#UE4, #OnlineSubSystem - Hotfix in the ExpirationDate field early so we can update the OGF plugin
#codereview David.Nikdel
Change 3034707 on 2016/06/30 by Peter.Sauerbrei
update provision to go with latest certificate
#rb none
Change 3031429 on 2016/06/28 by David.Nikdel
#WEX: porting an engine change we depend on in latest OGF (pre integrate)
Change 3030084 on 2016/06/27 by David.Nikdel
#GameCatalog: Add code to export attributes in itemGrants
#CodeReview: Scott.Bowen
Change 3030073 on 2016/06/27 by David.Nikdel
#Json: Make JsonObjectWrapper play nice with serialization and Import/Export Text
#CodeReview: Scott.Bowen
Change 3030029 on 2016/06/27 by David.Nikdel
#WEX: Fix for FJsonObjectWrapper::ImportTextItem (use FParse::QuotedString to read from Buffer)
#CodeReview: Scott.Bowen
Change 3029740 on 2016/06/27 by David.Nikdel
#OGF #JsonObjectWrapper
- Add attributes to catalog grants
@ScottB - I didn't get a chance to test this today. Things are crazy for PS+. All the code should already be there on the backend though. Here's a shelf in case you need it asap
#CodeReview: Scott.Bowen
Change 3028704 on 2016/06/27 by Ian.Fox
Duplicating 3027482 from //Orion/Main
Read TaggedPropertyRedirects from all config files to allow plugins to register property redirectors
You'll need this before you grab the latest OGF or your catalog prices will go away, so here it is now
#ue4
#rb David.Nikdel
#tests none
Change 3021448 on 2016/06/21 by Peter.Sauerbrei
potential fix for android apk size issue
Change 3020999 on 2016/06/21 by David.Nikdel
#WEX: Likely fix for WEX-1610
#CodeReview: Chance.Lyon
Change 3008450 on 2016/06/09 by Colin.Pyle
#PF
- WEX-1737, WEX-1744
- Adding the ability to set new layers in widget components
- WidgetComponents are now blueprintable
- New blueprint for the level marker menu widget components
- Map marker menus are now in a layer above other widget components
Change 3007804 on 2016/06/09 by Peter.Sauerbrei
fix for build set up failure
Change 3007292 on 2016/06/09 by Peter.Sauerbrei
add the WEX e-mail stuff back in, seems to have gotten lost in the transition
Change 3004478 on 2016/06/07 by Peter.Sauerbrei
for now have the cooker respect the bCookAll flag in the project settings.
Change 3000256 on 2016/06/03 by Peter.Sauerbrei
fix for iOS compile warning
Change 2998304 on 2016/06/02 by Nathan.Green
#PF
- Fixing Windowed Mode
#CodeReview: Chance.Lyon, Colin.Pyle, Peter.Sauerbrei
Change 2994269 on 2016/05/31 by Peter.Sauerbrei
Merging
//depot/UE4-WEX/...
to //WEX/Main/...
Change 2987181 on 2016/05/23 by Peter.Sauerbrei
Merging
//UE4/WEX-Staging/.p4ignore.txt
//UE4/WEX-Staging/Engine/...
//UE4/WEX-Staging/GenerateProjectFiles.bat
//UE4/WEX-Staging/GenerateProjectFiles.command
//UE4/WEX-Staging/GenerateProjectFiles.sh
//UE4/WEX-Staging/UE4Games.uprojectdirs
//UE4/WEX-Staging/WEX/...
to //WEX/Main/...
Change 2984959 on 2016/05/20 by Peter.Sauerbrei
re-applying HSL engine change
#PF
PF-292
- Make sure to regenerate the list when you open the recipe view
- Fixes cases where you buy an item in the store then return to evolve
Change 2984957 on 2016/05/20 by Peter.Sauerbrei
re-apply engine change from HSL
#PF
PF-33
- Check if we are in BeginDestroyed on Animation updates, possibly fixes a crash on level transition
- Make interactive items play their mouseover animations
- Heroes make the screen shake if they are on cooldown, we should figure out how to remove that on PC
Change 2984956 on 2016/05/20 by Peter.Sauerbrei
re-apply HSL change
#PF
PF-11
- Remove simulated touch with the mouse
- Add Right-click support to the game
- Right click now does the special attack
Change 2984345 on 2016/05/19 by Peter.Sauerbrei
Copying
//UE4/WEX-Staging/...
to //WEX/Main/...
This should reset the merge history
Change 2981872 on 2016/05/18 by Peter.Sauerbrei
fixes for IOS build of WEX
Change 2980734 on 2016/05/17 by Peter.Sauerbrei
Copying
//depot/UE4-WEX/...
to //WEX/Main/...
Populating WEX stream from old depot at CL2979954
#lockdown nick.penwarden
[CL 3129012 by Peter Sauerbrei in Main branch]
2016-09-16 17:07:30 -04:00
FSlateFontInfo FontInfo ( FontName , FontSize ) ;
FontInfo . OutlineSettings . OutlineColor = FLinearColor : : Blue ;
FontInfo . OutlineSettings . OutlineSize = 2 ;
2014-03-14 14:13:41 -04:00
FSlateDrawElement : : MakeText (
InParams . OutDrawElements ,
InParams . Layer ,
InParams . Geometry . ToPaintGeometry ( FVector2D ( 0 , 0 ) , InParams . Geometry . Size , FontScale ) ,
Text . ToString ( ) ,
Copying //UE4/WEX-Staging to Dev-Main (//UE4/Dev-Main)
===================
MAJOR FEATURES + CHANGES
===================
Change 3123735 on 2016/09/13 by Josh.Markiewicz
#UE4 - added FNames for some common online features to be refactored later
#codereview david.nikdel
Change 3123608 on 2016/09/13 by Josh.Markiewicz
#OSS - refactor FUniqueNetIdRepl to derive from FUniqueNetIdWrapper and clean up redundant code
#codereview david.nikdel
Change 3120074 on 2016/09/09 by David.Nikdel
#Analytics: Move log message to more correct location
Change 3120073 on 2016/09/09 by David.Nikdel
#Analytics: Adjustments to ET.DroppedSubmission per Wes's feedback
- Don't try to restore events at all if caching is disabled (but do log the error)
- Stop accumulating events (even the ET.DroppedSubmission event) at 1024 cached to defend against run away accumulation
#CodeReview: Wes.Hunt
Change 3119959 on 2016/09/09 by Peter.Sauerbrei
update to engine to provide the generic chunk install when one is not implemented or requested
#rb none
Change 3119378 on 2016/09/09 by David.Nikdel
#Analytics #ET: Added a config option to not drop events in the event of a failure to flush.
- Events are re-added to the queue (may result in some reordering but timestamps will still be there) in the event of a failure
- Also appending an ET.DroppedSubmission event in this case so we can track how often clients fail. Has HTTP_STATUS and URL attributes.
- Events accumulate within a given application run but no attempt is made to persist across crashes etc.
#CodeReview: Wes.Hunt
Change 3118773 on 2016/09/08 by Peter.Sauerbrei
bring over fix for missing debug information in IOS executables
#rb none
Change 3118574 on 2016/09/08 by Peter.Sauerbrei
pulled over architecture fix for IOS from Main
#rb none
Change 3117672 on 2016/09/08 by Steve.Allison
Adding 3544_iPadMini3_ChAIRQA
Change 3116529 on 2016/09/07 by Josh.Markiewicz
#UE4 - reverted started IOS purchase/store work from default engine OSS plugins
#codereview david.nikdel
Change 3116010 on 2016/09/07 by Josh.Markiewicz
#WEX - Copying //WEX/Dev-Mobile to Dev-Main (//WEX/Dev-Main) to get OnlineSubsystemiOS changes
Change 3114411 on 2016/09/06 by Peter.Sauerbrei
fix for deploying movies to the correct directory
#rb none
Change 3113944 on 2016/09/06 by Peter.Sauerbrei
addition of resave packages command to UAT
#rb none
Change 3112948 on 2016/09/02 by Nathan.Green
#WEX
- Fixing file length on Android so that we can write out stats files (change is being submitted into Dev-Mobile by Chris Babcock)
#CodeReview: Chance.Lyon, David.Nikdel
Change 3112567 on 2016/09/02 by Josh.Markiewicz
#UE4 - fixed possible exception when checking directories that don't exist (copy of CL#3099217)
#rb ben.marsh
Change 3112055 on 2016/09/02 by Chance.Lyon
#WEX
- Merging mobile branch changes into main
Change 3108827 on 2016/08/31 by Peter.Sauerbrei
fix for warning
#rb none
Change 3105012 on 2016/08/29 by Peter.Sauerbrei
enable ICMP for Android
#rb none
Change 3103322 on 2016/08/26 by David.Nikdel
#WEX: Fix for clang warnings in Font Outline code
#CodeReview: Matt.Kuhlenschmidt
Change 3102935 on 2016/08/26 by David.Nikdel
Merging CL 3102878 from
//UE4/Dev-Editor/Engine/...
to //WEX/Main/Engine/...
------
Added support for outline fonts
- An outline size (in slate units), optional material and optional fill color can be specified with each font info.
- Outlines do not contribute to measurement directly so the text measuring and shaping methods have been modified to account for outlines
- Fixed a bug where font materials do not work properly if part of the font's rendered glyphs were in a different atlas
#CodeReview: Matt.Kuhlenschmidt, Matt.Hancy, Peter.Sauerbrei
Change 3102541 on 2016/08/26 by Peter.Sauerbrei
fix for build warning on Mac and IOS
#rb none
Change 3101820 on 2016/08/25 by Peter.Sauerbrei
Moved the online changes to the plugins directory
#rb none
Change 3101808 on 2016/08/25 by Peter.Sauerbrei
Merging using WEX_Main_to_UE4_WEX_Staging bringing in UE4 engine 4.14
#rb none
Change 3097879 on 2016/08/23 by David.Nikdel
#Analytics #OSS: Adjusted cohort selection algorithm and test cases
Change 3096606 on 2016/08/22 by Nathan.Green
#WEX
- Adding bAllowWindowResize, bAllowClose, bAllowMaximize, and bAllowMinimize boolean to GeneralProjectSettings
- Preventing us from resizing the window for the time being (in the future we may only allow along aspect ratio resizing)
#CodeReview: Chance.Lyon, David.Nikdel
Change 3094946 on 2016/08/19 by David.Nikdel
#OSS - Added FUserOnlineAccountMcp::SelectCohort
Change 3094942 on 2016/08/19 by David.Nikdel
#UE4 - Made FMD5 const-correct
Change 3092494 on 2016/08/17 by Nathan.Green
#WEX
- Making sure we never build zip64 instead of zip
#CodeReview: Chance.Lyon, David.Nikdel, Chris.Babcock
Change 3090760 on 2016/08/16 by Michael.Trepka
Copy of CL 3089133
Fix for task bar displayed over the fullscreen window on Windows 10 with Anniversary Update
Change 3090759 on 2016/08/16 by Michael.Trepka
Copy of CL 3078927
Updated WindowTitleBarArea widget to not override window zone in fullscreen mode, to prevent window from being moved. That required adding separate handling for double click in fullscreen, as it's no longer handled by window action.
Change 3087872 on 2016/08/12 by Josh.Markiewicz
#UE4 - cleaned up IOS store/purchase interface (first pass, minus IAP restore)
#codereview david.nikdel, josh.adams
Change 3084182 on 2016/08/10 by Peter.Sauerbrei
revert out the OpenGL shader compression code
#rb none
Change 3082565 on 2016/08/09 by Ben.Marsh
Fix building with VS2015 update 3.
Change 3082557 on 2016/08/09 by Ben.Marsh
Fix UBT makefile being invalidated to update adaptive unity build settings, even if that module happens to not include that file in a unity file. Keep a list of all files included by unity files as well as files in the working set.
#codereview Mike.Fricker, Michael.Noland
Change 3082456 on 2016/08/09 by Josh.Markiewicz
#UE4 - fixed typo
Change 3082439 on 2016/08/09 by Josh.Markiewicz
#UE4 - added CanMakePurchase call to IOS
Change 3081905 on 2016/08/09 by Michael.Noland
Editor: Made the text colors and font size in the output log configurable in the editor appearance settings (no changes to default values ... yet)
#codereview matt.kuhlenschmidt
Change 3080932 on 2016/08/08 by Josh.Markiewicz
#UE4 - New IOS purchasing/store interface v2
- added interfaces to main IOS subsystem
- added proper destruction of interfaces to Shutdown of IOS
- moved FStoreKitHelper to its own file
-- extended it for new v2 (improvements forthcoming)
- MCPCatalogHelper returns bogus user id for IOS app store
#codereview josh.adams, david.nikdel
#tests very basic IAP stuff so far
Change 3080217 on 2016/08/07 by Michael.Noland
Engine: Prevented a startup warning when SpectatorClass is nullptr, as not all games require a spectator pawn
- Also reduced the number of GetWorld() calls in APlayerController::SpawnSpectatorPawn()
Change 3080046 on 2016/08/06 by Michael.Noland
Engine: Moved where scissor rect reset happens for custom slate drawables to avoid a conflict with an existing fix in another branch
#codereview matt.kuhlenschmidt
Change 3080032 on 2016/08/06 by Michael.Noland
UMG: Fixed a bug where screen-mode UWidgetComponent widgets were drawn incorrectly offset in splitscreen or with aspect-ratio constrained cameras
#codereview nick.darnell, marc.audy
Change 3080031 on 2016/08/06 by Michael.Noland
Engine: Add the option to return player viewport-relative positions to ProjectWorldLocationToScreenWithDistance, ProjectWorldLocationToScreen, and ProjectWorldToScreen, which is useful if the position is going to be used for widgets in splitscreen or with aspect-ratio constrained cameras
#codereview nick.darnell, marc.audy
Change 3080029 on 2016/08/06 by Michael.Noland
Engine: Fixed a bug where the debug console and other debug rendering would be an incorrect size (based on the last player viewport) and also be partially clipped (depending on what in Slate rendered previously)
- This fixes issues with the console being offset and clipped when using aspect ratio constrained cameras or split screen
#codereview matt.kuhlenschmidt
Change 3079656 on 2016/08/05 by Josh.Markiewicz
#WEX - basic IOS changes to project
- added OnlineSubsystemIOS
- added some default settings
- removed GoogleVR from project
#codereview david.nikdel
Change 3078971 on 2016/08/05 by Steve.Allison
Updating to match check-in for UE4 Main @ CL 3078968
Change 3078025 on 2016/08/04 by Michael.Trepka
Copy of CLs 3073978 and 3075931
- More reliable way of checking if the cursor should be changed to resize cursor in bordeless window mode
- On Windows, lock the cursor to the center of the rect if the cursor is hidden to avoid problems with borderless window's round corners not treated as part of the window.
Change 3075415 on 2016/08/03 by Peter.Sauerbrei
reduce the metal command buffers
Change 3071457 on 2016/07/31 by David.Hunt
#WEX
Blueprint indexing
@Pete: This change and anything in Engine/Content can be stomped by any engine integration. This is just to help with not having to resave all of these to udpate a few of our own content blueprints for search indexing.
#CodeReview Peter.Sauerbrei, Steve.Allison, David.Nikdel
Change 3068661 on 2016/07/28 by Josh.Markiewicz
#WEX - changed the max number of possible UObjects allowed by a factor of 10 to reduce the memory footprint
#codereview david.nikdel, peter.sauerbrei
Change 3068500 on 2016/07/28 by David.Nikdel
#OSSMCP: Use correct HttpRequest creation method to respect game service config
Change 3066945 on 2016/07/27 by David.Nikdel
Reproduced CL 3063869 from Michael.Noland
>> Engine: Added a cvar (t.FPSChart.OpenFolderOnDump) to control whether or not FPS charts automatically open the profiling folder when stopfpschart is executed, which can be useful to avoid a bunch of open
>> windows while doing automated testing
#CodeReview: Michael.Noland
#JIRA: WEX-2342
Change 3063495 on 2016/07/25 by Michael.Trepka
Copy of CL 3063426
Borderless window support improvements:
- the cursor changes to resize when hovering over the window edge
- added a way for widgets to register a delegate that's called when window actions occur (maximize, restore, etc.)
- used window action notification for WindowTitleBarArea to improve how toggling fullscreen on double click is handled
Change 3063431 on 2016/07/25 by Michael.Trepka
Copy of CL 3063057 - Use round corners for windows with no system title bar and border only in windowed mode.
Change 3062654 on 2016/07/23 by Michael.Trepka
Copy of CL 3046975 and 3056204 - Support for making the game window borderless (no system border or title bar). Disabled by default. Enabling requires adding bUseBorderlessWindow=True to [/Script/EngineSettings.GeneralProjectSettings] in DefaultGame.ini. The game using this is responsible for adding WindowTitleBarArea widget to its UI, as well as window minimize/maximize/close buttons.
Change 3062647 on 2016/07/23 by Michael.Trepka
Copy of CL 3029211 - Added a setting (on by default) to make the game window preserve its content's aspect ratio while being resized by user
Change 3062646 on 2016/07/23 by Michael.Trepka
Copy of CLs 3039855, 3042644 and 3042911 - Added an option to toggle fullscreen with F11 key in addition to Alt+Enter
Change 3062638 on 2016/07/23 by Michael.Trepka
Copy of CL 3038201 and CL 3046803 -Added WindowTitleBarArea widget
Change 3062056 on 2016/07/22 by Peter.Sauerbrei
addition of optimization for ios compile times
Change 3054586 on 2016/07/18 by Nathan.Green
#WEX
- Adding tags around my engine level change
#CodeReview: Chance.Lyon, David.Nikdel
Change 3054581 on 2016/07/18 by Nathan.Green
#WEX
- Removing previous change, making all buttons ignore space bar and enter as we don't really care about that functionality
#JIRA: WEX-2256
#CodeReview: Chance.Lyon, Colin.Pyle, David.Nikdel
Change 3048243 on 2016/07/13 by Steve.Allison
This one actually has the changes from rev4
Change 3046649 on 2016/07/12 by Steve.Allison
Updating to match provision in UE4 Main @ CL 3046262
Change 3046127 on 2016/07/12 by Ian.Fox
#UE4, #OnlineSubSystem - Hotfix in the ExpirationDate field early so we can update the OGF plugin
#codereview David.Nikdel
Change 3034707 on 2016/06/30 by Peter.Sauerbrei
update provision to go with latest certificate
#rb none
Change 3031429 on 2016/06/28 by David.Nikdel
#WEX: porting an engine change we depend on in latest OGF (pre integrate)
Change 3030084 on 2016/06/27 by David.Nikdel
#GameCatalog: Add code to export attributes in itemGrants
#CodeReview: Scott.Bowen
Change 3030073 on 2016/06/27 by David.Nikdel
#Json: Make JsonObjectWrapper play nice with serialization and Import/Export Text
#CodeReview: Scott.Bowen
Change 3030029 on 2016/06/27 by David.Nikdel
#WEX: Fix for FJsonObjectWrapper::ImportTextItem (use FParse::QuotedString to read from Buffer)
#CodeReview: Scott.Bowen
Change 3029740 on 2016/06/27 by David.Nikdel
#OGF #JsonObjectWrapper
- Add attributes to catalog grants
@ScottB - I didn't get a chance to test this today. Things are crazy for PS+. All the code should already be there on the backend though. Here's a shelf in case you need it asap
#CodeReview: Scott.Bowen
Change 3028704 on 2016/06/27 by Ian.Fox
Duplicating 3027482 from //Orion/Main
Read TaggedPropertyRedirects from all config files to allow plugins to register property redirectors
You'll need this before you grab the latest OGF or your catalog prices will go away, so here it is now
#ue4
#rb David.Nikdel
#tests none
Change 3021448 on 2016/06/21 by Peter.Sauerbrei
potential fix for android apk size issue
Change 3020999 on 2016/06/21 by David.Nikdel
#WEX: Likely fix for WEX-1610
#CodeReview: Chance.Lyon
Change 3008450 on 2016/06/09 by Colin.Pyle
#PF
- WEX-1737, WEX-1744
- Adding the ability to set new layers in widget components
- WidgetComponents are now blueprintable
- New blueprint for the level marker menu widget components
- Map marker menus are now in a layer above other widget components
Change 3007804 on 2016/06/09 by Peter.Sauerbrei
fix for build set up failure
Change 3007292 on 2016/06/09 by Peter.Sauerbrei
add the WEX e-mail stuff back in, seems to have gotten lost in the transition
Change 3004478 on 2016/06/07 by Peter.Sauerbrei
for now have the cooker respect the bCookAll flag in the project settings.
Change 3000256 on 2016/06/03 by Peter.Sauerbrei
fix for iOS compile warning
Change 2998304 on 2016/06/02 by Nathan.Green
#PF
- Fixing Windowed Mode
#CodeReview: Chance.Lyon, Colin.Pyle, Peter.Sauerbrei
Change 2994269 on 2016/05/31 by Peter.Sauerbrei
Merging
//depot/UE4-WEX/...
to //WEX/Main/...
Change 2987181 on 2016/05/23 by Peter.Sauerbrei
Merging
//UE4/WEX-Staging/.p4ignore.txt
//UE4/WEX-Staging/Engine/...
//UE4/WEX-Staging/GenerateProjectFiles.bat
//UE4/WEX-Staging/GenerateProjectFiles.command
//UE4/WEX-Staging/GenerateProjectFiles.sh
//UE4/WEX-Staging/UE4Games.uprojectdirs
//UE4/WEX-Staging/WEX/...
to //WEX/Main/...
Change 2984959 on 2016/05/20 by Peter.Sauerbrei
re-applying HSL engine change
#PF
PF-292
- Make sure to regenerate the list when you open the recipe view
- Fixes cases where you buy an item in the store then return to evolve
Change 2984957 on 2016/05/20 by Peter.Sauerbrei
re-apply engine change from HSL
#PF
PF-33
- Check if we are in BeginDestroyed on Animation updates, possibly fixes a crash on level transition
- Make interactive items play their mouseover animations
- Heroes make the screen shake if they are on cooldown, we should figure out how to remove that on PC
Change 2984956 on 2016/05/20 by Peter.Sauerbrei
re-apply HSL change
#PF
PF-11
- Remove simulated touch with the mouse
- Add Right-click support to the game
- Right click now does the special attack
Change 2984345 on 2016/05/19 by Peter.Sauerbrei
Copying
//UE4/WEX-Staging/...
to //WEX/Main/...
This should reset the merge history
Change 2981872 on 2016/05/18 by Peter.Sauerbrei
fixes for IOS build of WEX
Change 2980734 on 2016/05/17 by Peter.Sauerbrei
Copying
//depot/UE4-WEX/...
to //WEX/Main/...
Populating WEX stream from old depot at CL2979954
#lockdown nick.penwarden
[CL 3129012 by Peter Sauerbrei in Main branch]
2016-09-16 17:07:30 -04:00
FontInfo ,
2014-03-14 14:13:41 -04:00
InParams . ClippingRect ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect ,
FColor ( 255 , 255 , 255 )
) ;
return InParams . Layer ;
}
int32 TestGradientElement ( const FOnPaintHandlerParams & InParams )
{
TArray < FSlateGradientStop > GradientStops ;
2014-12-05 15:03:26 -05:00
GradientStops . Add ( FSlateGradientStop ( FVector2D ( InParams . Geometry . Size . X * .1f , 0 ) , FColor : : Yellow ) ) ;
GradientStops . Add ( FSlateGradientStop ( FVector2D ( InParams . Geometry . Size . X * .25f , 0 ) , FColor : : Magenta ) ) ;
GradientStops . Add ( FSlateGradientStop ( FVector2D ( InParams . Geometry . Size . X * .75f , 0 ) , FColor : : Blue ) ) ;
GradientStops . Add ( FSlateGradientStop ( FVector2D ( InParams . Geometry . Size . X * 0.9f , 0 ) , FColor : : Green ) ) ;
2014-03-14 14:13:41 -04:00
FSlateDrawElement : : MakeGradient (
InParams . OutDrawElements ,
InParams . Layer ,
InParams . Geometry . ToPaintGeometry ( ) ,
GradientStops ,
Orient_Vertical ,
InParams . ClippingRect ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect
) ;
return InParams . Layer ;
}
int32 TestSplineElement ( const FOnPaintHandlerParams & InParams )
{
const FVector2D Start ( 10 , 10 ) ;
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
const FVector2D StartDir ( InParams . Geometry . Size . X * 1000 / 600 , 0 ) ;
2014-03-14 14:13:41 -04:00
const FVector2D End ( InParams . Geometry . Size . X / 4 , InParams . Geometry . Size . Y - 10 ) ;
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
const FVector2D EndDir ( InParams . Geometry . Size . X * 1000 / 600 , 0 ) ;
2014-03-14 14:13:41 -04:00
FSlateDrawElement : : MakeSpline (
InParams . OutDrawElements ,
InParams . Layer ,
InParams . Geometry . ToPaintGeometry ( ) ,
Start , StartDir ,
End , EndDir ,
InParams . ClippingRect ,
4.0f ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect ,
2014-12-05 15:03:26 -05:00
FColor : : White
2014-03-14 14:13:41 -04:00
) ;
FVector2D LineStart = FVector2D ( InParams . Geometry . Size . X / 4 , 10.0f ) ;
TArray < FVector2D > LinePoints ;
LinePoints . Add ( LineStart ) ;
LinePoints . Add ( LineStart + FVector2D ( 100.0f , 50.0f ) ) ;
LinePoints . Add ( LineStart + FVector2D ( 200.0f , 10.0f ) ) ;
LinePoints . Add ( LineStart + FVector2D ( 300.0f , 50.0f ) ) ;
LinePoints . Add ( LineStart + FVector2D ( 400.0f , 10.0f ) ) ;
FSlateDrawElement : : MakeLines (
InParams . OutDrawElements ,
InParams . Layer ,
InParams . Geometry . ToPaintGeometry ( ) ,
LinePoints ,
InParams . ClippingRect ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect ,
2014-12-05 15:03:26 -05:00
FColor : : Magenta
2014-03-14 14:13:41 -04:00
) ;
LineStart = LinePoints [ LinePoints . Num ( ) - 1 ] + FVector2D ( 50 , 10 ) ;
LinePoints . Empty ( ) ;
for ( float I = 0 ; I < 10 * PI ; I + = .1f )
{
LinePoints . Add ( LineStart + FVector2D ( I * 15 , 15 * FMath : : Sin ( I ) ) ) ;
}
static FColor Color = FColor : : MakeRandomColor ( ) ;
FSlateDrawElement : : MakeLines (
InParams . OutDrawElements ,
InParams . Layer ,
InParams . Geometry . ToPaintGeometry ( ) ,
LinePoints ,
InParams . ClippingRect ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect ,
Color ) ;
return InParams . Layer ;
}
void MakeRotationExample ( const FOnPaintHandlerParams & InParams )
{
const FSlateBrush * CenterBrush = FTestStyle : : Get ( ) . GetBrush ( " TestRotation40px " ) ;
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
const FSlateBrush * TestBrush = FTestStyle : : Get ( ) . GetBrush ( " TestRotation20px " ) ;
2014-03-14 14:13:41 -04:00
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
const FVector2D LocalPos = FVector2D ( 50 , 50 ) ;
const FVector2D LocalSize = CenterBrush - > ImageSize ;
2014-03-14 14:13:41 -04:00
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
FSlateLayoutTransform CenterLayoutTransform ( LocalPos ) ;
2014-03-14 14:13:41 -04:00
// Make a box that rotates around its center. Note if you don't specify the rotation point or rotation space
// it defaults to rotating about the center of the box. ERotationSpace::RelativeToElement is used by default in this case.
// If any rotation point is specified in that space, is relative to the element (0,0 is the upper left of the element)
{
FSlateDrawElement : : MakeRotatedBox (
InParams . OutDrawElements ,
InParams . Layer ,
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
InParams . Geometry . ToPaintGeometry ( LocalSize , CenterLayoutTransform ) ,
2014-03-14 14:13:41 -04:00
CenterBrush ,
InParams . ClippingRect ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect ,
CenterRotation
) ;
}
// Make a box that rotates around the center of the previous box
{
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
FSlateLayoutTransform OrbitLayoutTransform ( LocalPos + LocalSize ) ;
const FVector2D LocalCenterOfRotation = ( LocalPos + ( LocalPos + LocalSize ) ) * .5f ;
const FVector2D RelativeOrbitPos = TransformPoint ( Inverse ( OrbitLayoutTransform ) , LocalCenterOfRotation ) ;
2014-03-14 14:13:41 -04:00
FSlateDrawElement : : MakeRotatedBox (
InParams . OutDrawElements ,
InParams . Layer ,
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
InParams . Geometry . ToPaintGeometry ( TestBrush - > ImageSize , OrbitLayoutTransform ) ,
2014-03-14 14:13:41 -04:00
TestBrush ,
InParams . ClippingRect ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect ,
OuterRotation ,
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
RelativeOrbitPos ) ;
2014-03-14 14:13:41 -04:00
}
}
int32 TestRotation ( const FOnPaintHandlerParams & InParams )
{
const FSlateBrush * StyleInfo = FCoreStyle : : Get ( ) . GetBrush ( " FocusRectangle " ) ;
FSlateDrawElement : : MakeBox (
InParams . OutDrawElements ,
InParams . Layer ,
InParams . Geometry . ToPaintGeometry ( ) ,
StyleInfo ,
InParams . ClippingRect ,
InParams . bEnabled ? ESlateDrawEffect : : None : ESlateDrawEffect : : DisabledEffect
) ;
MakeRotationExample ( InParams ) ;
return InParams . Layer ;
}
2015-09-23 11:55:14 -04:00
int32 TestCustomVerts ( const FOnPaintHandlerParams & InParams )
{
const float Radius = FMath : : Min ( InParams . Geometry . Size . X , InParams . Geometry . Size . Y ) * 0.5f ;
const FVector2D Center = InParams . Geometry . AbsolutePosition + InParams . Geometry . Size * 0.5f ;
const FSlateBrush * MyBrush = FCoreStyle : : Get ( ) . GetBrush ( " ColorWheel.HueValueCircle " ) ;
2015-10-28 08:58:16 -04:00
// @todo this is not the correct way to do this
2015-09-23 11:55:14 -04:00
FSlateShaderResourceProxy * ResourceProxy = FSlateDataPayload : : ResourceManager - > GetShaderResource ( * MyBrush ) ;
2015-10-28 08:58:16 -04:00
FSlateResourceHandle Handle = FSlateApplication : : Get ( ) . GetRenderer ( ) - > GetResourceHandle ( * MyBrush ) ;
2015-09-23 11:55:14 -04:00
FVector2D UVCenter = FVector2D : : ZeroVector ;
FVector2D UVRadius = FVector2D ( 1 , 1 ) ;
if ( ResourceProxy ! = nullptr )
{
UVRadius = 0.5f * ResourceProxy - > SizeUV ;
UVCenter = ResourceProxy - > StartUV + UVRadius ;
}
// Make a triangle fan in the area allotted
const int NumTris = 12 ;
TArray < FSlateVertex > Verts ;
Verts . Reserve ( NumTris * 3 ) ;
// Center Vertex
Verts . AddZeroed ( ) ;
{
FSlateVertex & NewVert = Verts . Last ( ) ;
NewVert . Position [ 0 ] = Center . X ;
NewVert . Position [ 1 ] = Center . Y ;
NewVert . TexCoords [ 0 ] = UVCenter . X ;
NewVert . TexCoords [ 1 ] = UVCenter . Y ;
NewVert . TexCoords [ 2 ] = NewVert . TexCoords [ 3 ] = 1.0f ;
NewVert . Color = FColor : : White ;
NewVert . ClipRect = FSlateRotatedRect ( InParams . ClippingRect ) ;
}
for ( int i = 0 ; i < NumTris ; + + i )
{
Verts . AddZeroed ( ) ;
{
const float Angle = ( 2 * PI * i ) / NumTris ;
const FVector2D EdgeDirection ( FMath : : Cos ( Angle ) , FMath : : Sin ( Angle ) ) ;
const FVector2D Edge ( Radius * EdgeDirection ) ;
FSlateVertex & NewVert = Verts . Last ( ) ;
NewVert . Position [ 0 ] = Center . X + Edge . X ;
NewVert . Position [ 1 ] = Center . Y + Edge . Y ;
NewVert . TexCoords [ 0 ] = UVCenter . X + UVRadius . X * EdgeDirection . X ;
NewVert . TexCoords [ 1 ] = UVCenter . Y + UVRadius . Y * EdgeDirection . Y ;
NewVert . TexCoords [ 2 ] = NewVert . TexCoords [ 3 ] = 1.0f ;
NewVert . Color = FColor : : White ;
NewVert . ClipRect = FSlateRotatedRect ( InParams . ClippingRect ) ;
}
}
TArray < SlateIndex > Indexes ;
for ( int i = 1 ; i < = NumTris ; + + i )
{
Indexes . Add ( 0 ) ;
Indexes . Add ( i ) ;
Indexes . Add ( ( i + 1 > 12 ) ? ( 1 ) : ( i + 1 ) ) ;
}
2015-10-28 08:58:16 -04:00
FSlateDrawElement : : MakeCustomVerts ( InParams . OutDrawElements , InParams . Layer , Handle , Verts , Indexes , nullptr , 0 , 0 ) ;
2015-09-23 11:55:14 -04:00
return InParams . Layer ;
}
2014-03-14 14:13:41 -04:00
} ;
class SDocumentsTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SDocumentsTest ) { }
SLATE_END_ARGS ( )
struct FDocumentInfo
{
FDocumentInfo ( const FText & InDisplayName )
: DisplayName ( InDisplayName )
{
}
FText DisplayName ;
} ;
void Construct ( const FArguments & InArgs , FTabManager * InTabManager )
{
TabManager = InTabManager ;
{
Documents . Add ( MakeShareable ( new FDocumentInfo ( LOCTEXT ( " Document01 " , " Document 1 " ) ) ) ) ;
Documents . Add ( MakeShareable ( new FDocumentInfo ( LOCTEXT ( " Document02 " , " Document 2 " ) ) ) ) ;
Documents . Add ( MakeShareable ( new FDocumentInfo ( LOCTEXT ( " Document03 " , " Document 3 " ) ) ) ) ;
Documents . Add ( MakeShareable ( new FDocumentInfo ( LOCTEXT ( " Document04 " , " Document 4 " ) ) ) ) ;
Documents . Add ( MakeShareable ( new FDocumentInfo ( LOCTEXT ( " Document05 " , " Document 5 " ) ) ) ) ;
}
2014-12-18 12:52:43 -05:00
bButtonOneVisible = true ;
2014-03-14 14:13:41 -04:00
this - > ChildSlot
[
2014-07-30 01:55:14 -04:00
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
[
SNew ( SListView < TSharedRef < FDocumentInfo > > )
. ItemHeight ( 24 )
. SelectionMode ( ESelectionMode : : None )
. ListItemsSource ( & Documents )
. OnGenerateRow ( this , & SDocumentsTest : : GenerateListRow )
]
+ SVerticalBox : : Slot ( ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center )
[
SNew ( SButton )
. ContentPadding ( 20 ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center )
[
SNew ( SButton )
2014-10-10 17:48:30 -04:00
. RenderTransform ( FSlateRenderTransform ( Concatenate ( FVector2D ( 20.0f , 20.0f ) , FQuat2D ( - PI / 12.0f ) ) ) )
2014-07-30 01:55:14 -04:00
. ContentPadding ( 20 ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center )
[
SNew ( SButton )
2014-10-10 17:48:30 -04:00
. RenderTransform ( FSlateRenderTransform ( Concatenate ( FVector2D ( 20.0f , 20.0f ) , FQuat2D ( - PI / 12.0f ) ) ) )
2014-07-30 01:55:14 -04:00
. ContentPadding ( 20 ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center )
[
SNew ( SButton )
2014-10-10 17:48:30 -04:00
. IsEnabled ( false )
. RenderTransform ( FSlateRenderTransform ( Concatenate ( FVector2D ( 20.0f , 20.0f ) , FQuat2D ( - PI / 12.0f ) ) ) )
2014-07-30 01:55:14 -04:00
. ContentPadding ( 20 ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center )
[
2014-10-10 17:48:30 -04:00
SNew ( SButton )
. RenderTransform ( FSlateRenderTransform ( Concatenate ( FVector2D ( 20.0f , 20.0f ) , FQuat2D ( - PI / 12.0f ) ) ) )
. ContentPadding ( 20 ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center )
[
SNew ( STextBlock )
. Text ( NSLOCTEXT ( " x " , " ClickMe " , " ClickMe! " ) )
]
2014-07-30 01:55:14 -04:00
]
]
]
]
]
2014-12-18 12:52:43 -05:00
+ SVerticalBox : : Slot ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( SButton )
. Visibility ( this , & SDocumentsTest : : GetButtonOneVisibility )
. Text ( LOCTEXT ( " Button1 " , " Button One " ) )
. OnClicked ( this , & SDocumentsTest : : ToggleButtonOneVisibility )
]
+ SHorizontalBox : : Slot ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " Button2 " , " Button Two " ) )
. OnClicked ( this , & SDocumentsTest : : ToggleButtonOneVisibility )
]
]
2014-03-14 14:13:41 -04:00
] ;
}
TSharedRef < ITableRow > GenerateListRow ( TSharedRef < FDocumentInfo > InItem , const TSharedRef < STableViewBase > & OwnerTable )
{
return SNew ( STableRow < TSharedRef < FDocumentInfo > > , OwnerTable )
[
SNew ( SButton )
. OnClicked ( FOnClicked : : CreateSP ( this , & SDocumentsTest : : SummonDocumentButtonClicked , InItem ) )
. Text ( InItem - > DisplayName )
] ;
}
FReply SummonDocumentButtonClicked ( TSharedRef < FDocumentInfo > DocumentName )
{
TabManager - > InsertNewDocumentTab
(
" DocTest " , FTabManager : : ESearchPreference : : RequireClosedTab ,
SNew ( SDockTab )
. Label ( DocumentName - > DisplayName )
. TabRole ( ETabRole : : DocumentTab )
[
SNew ( SBox )
. HAlign ( HAlign_Center ) . VAlign ( VAlign_Center )
[
SNew ( STextBlock )
. Text ( DocumentName - > DisplayName )
]
]
. TabWellContentRight ( )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " DocumentRightContentLabel " , " Right Content " ) )
]
) ;
return FReply : : Handled ( ) ;
}
2014-12-18 12:52:43 -05:00
EVisibility GetButtonOneVisibility ( ) const
{
return bButtonOneVisible ? EVisibility : : Visible : EVisibility : : Collapsed ;
}
FReply ToggleButtonOneVisibility ( )
{
bButtonOneVisible = ! bButtonOneVisible ;
return FReply : : Handled ( ) ;
}
2014-03-14 14:13:41 -04:00
FTabManager * TabManager ;
TArray < TSharedRef < FDocumentInfo > > Documents ;
2014-12-18 12:52:43 -05:00
bool bButtonOneVisible ;
2014-03-14 14:13:41 -04:00
} ;
class SSplitterTest : public SCompoundWidget
{
/** Visibility state and mutators. */
struct FVisibilityCycler
{
public :
FVisibilityCycler ( )
: TheVisibility ( EVisibility : : Visible )
{
}
EVisibility GetVisibility ( ) const
{
return TheVisibility ;
}
FReply CycleVisibility ( )
{
TheVisibility = NextVisibilityState ( TheVisibility ) ;
return FReply : : Handled ( ) ;
}
protected :
static EVisibility NextVisibilityState ( const EVisibility InVisibility )
{
if ( InVisibility = = EVisibility : : Visible )
{
return EVisibility : : Hidden ;
}
else if ( InVisibility = = EVisibility : : Hidden )
{
return EVisibility : : Collapsed ;
}
else if ( InVisibility = = EVisibility : : Collapsed )
{
return EVisibility : : Visible ;
}
else
{
return EVisibility : : Visible ;
}
}
EVisibility TheVisibility ;
} ;
public :
SLATE_BEGIN_ARGS ( SSplitterTest ) { }
SLATE_END_ARGS ( )
/**
* Construct the widget
*
* @ param InArgs Declartion from which to construct the widget
*/
void Construct ( const FArguments & InArgs )
{
this - > ChildSlot
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( 5 )
. HAlign ( HAlign_Center )
[
// BUTTONS for toggling layout visibility
// (Arranged in a mini-layout version of the splitters below)
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " Col0Row0Visibility " , " Col0Row0 Visibility " ) )
. OnClicked ( Col0Row0Vis , & FVisibilityCycler : : CycleVisibility )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " Col0Row1Visibility " , " Col0Row1 Visibility " ) )
. OnClicked ( Col0Row1Vis , & FVisibilityCycler : : CycleVisibility )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " Col0Row2Visibility " , " Col0Row2 Visibility " ) )
. OnClicked ( Col0Row2Vis , & FVisibilityCycler : : CycleVisibility )
]
2015-04-13 07:24:13 -04:00
2014-03-14 14:13:41 -04:00
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SButton )
2015-04-13 07:24:13 -04:00
. Text ( LOCTEXT ( " CenterVisibility " , " CenterVis Visibility " ) )
. OnClicked ( CenterVis , & FVisibilityCycler : : CycleVisibility )
2014-03-14 14:13:41 -04:00
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " Col2Row0Visibility " , " Col2Row0 Visibility " ) )
. OnClicked ( Col2Row0Vis , & FVisibilityCycler : : CycleVisibility )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " Col2Row1Visibility " , " Col2Row1 Visibility " ) )
. OnClicked ( Col2Row1Vis , & FVisibilityCycler : : CycleVisibility )
2015-04-13 07:24:13 -04:00
]
2014-03-14 14:13:41 -04:00
]
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
// SPLITTERS
SAssignNew ( TopLeveSplitter , SSplitter )
. ResizeMode ( ESplitterResizeMode : : Fill )
+ SSplitter : : Slot ( )
[
SAssignNew ( Nested0 , SSplitter )
2015-04-13 07:24:13 -04:00
. Orientation ( Orient_Vertical )
. ResizeMode ( ESplitterResizeMode : : Fill )
+ SSplitter : : Slot ( )
2014-03-14 14:13:41 -04:00
[
SNew ( SBorder )
. Visibility ( Col0Row0Vis , & FVisibilityCycler : : GetVisibility )
[
SNew ( STextBlock )
2015-04-13 07:24:13 -04:00
. Text ( LOCTEXT ( " Col0Row0 " , " Col 0 Row 0 " ) )
2014-03-14 14:13:41 -04:00
]
]
+ SSplitter : : Slot ( )
[
SNew ( SBorder )
. Visibility ( Col0Row1Vis , & FVisibilityCycler : : GetVisibility )
[
2015-04-13 07:24:13 -04:00
SNew ( STextBlock ) . Text ( LOCTEXT ( " Col0Row1 " , " Col 0 Row 1 " ) )
2015-04-01 12:09:44 -04:00
]
]
+ SSplitter : : Slot ( )
[
SNew ( SBorder )
. Visibility ( Col0Row2Vis , & FVisibilityCycler : : GetVisibility )
[
2015-04-13 07:24:13 -04:00
SNew ( STextBlock ) . Text ( LOCTEXT ( " Col0Row2 " , " Col 0 Row 2 " ) )
2014-03-14 14:13:41 -04:00
]
]
2015-04-01 12:09:44 -04:00
]
+ SSplitter : : Slot ( )
2014-03-14 14:13:41 -04:00
. SizeRule ( SSplitter : : SizeToContent )
[
SNew ( SBorder )
2015-04-13 07:24:13 -04:00
. Visibility ( CenterVis , & FVisibilityCycler : : GetVisibility )
2014-03-14 14:13:41 -04:00
. Padding ( 5.0f )
[
SNew ( SButton )
. OnClicked ( this , & SSplitterTest : : FlipTopLevelSplitter )
2015-04-13 07:24:13 -04:00
. Text ( LOCTEXT ( " Re-orient " , " Re-orient " ) )
2014-03-14 14:13:41 -04:00
]
]
+ SSplitter : : Slot ( )
[
SAssignNew ( Nested1 , SSplitter )
2015-04-13 07:24:13 -04:00
. Orientation ( Orient_Vertical )
. ResizeMode ( ESplitterResizeMode : : Fill )
+ SSplitter : : Slot ( )
2014-03-14 14:13:41 -04:00
[
SNew ( SBorder )
. Visibility ( Col2Row0Vis , & FVisibilityCycler : : GetVisibility )
[
2015-04-13 07:24:13 -04:00
SNew ( STextBlock ) . Text ( LOCTEXT ( " Col2Row0 " , " Col 2 Row 0 " ) )
2015-04-01 12:09:44 -04:00
]
]
+ SSplitter : : Slot ( )
[
SNew ( SBorder )
. Visibility ( Col2Row1Vis , & FVisibilityCycler : : GetVisibility )
[
2015-04-13 07:24:13 -04:00
SNew ( STextBlock ) . Text ( LOCTEXT ( " Col2Row1 " , " Col 1 Row 1 " ) )
2014-03-14 14:13:41 -04:00
]
]
]
]
] ;
}
SSplitterTest ( )
: Col0Row0Vis ( new FVisibilityCycler ( ) )
, Col0Row1Vis ( new FVisibilityCycler ( ) )
, Col0Row2Vis ( new FVisibilityCycler ( ) )
2015-04-13 07:24:13 -04:00
, CenterVis ( new FVisibilityCycler ( ) )
2014-03-14 14:13:41 -04:00
, Col2Row0Vis ( new FVisibilityCycler ( ) )
, Col2Row1Vis ( new FVisibilityCycler ( ) )
{
}
protected :
FReply FlipTopLevelSplitter ( )
{
TopLeveSplitter - > SetOrientation ( TopLeveSplitter - > GetOrientation ( ) = = Orient_Horizontal ? Orient_Vertical : Orient_Horizontal ) ;
Nested0 - > SetOrientation ( Nested0 - > GetOrientation ( ) = = Orient_Horizontal ? Orient_Vertical : Orient_Horizontal ) ;
Nested1 - > SetOrientation ( Nested1 - > GetOrientation ( ) = = Orient_Horizontal ? Orient_Vertical : Orient_Horizontal ) ;
return FReply : : Handled ( ) ;
}
// Visibility states for the various cells within the splitter test.
TSharedRef < FVisibilityCycler > Col0Row0Vis ;
TSharedRef < FVisibilityCycler > Col0Row1Vis ;
TSharedRef < FVisibilityCycler > Col0Row2Vis ;
2015-04-13 07:24:13 -04:00
TSharedRef < FVisibilityCycler > CenterVis ;
2014-03-14 14:13:41 -04:00
TSharedRef < FVisibilityCycler > Col2Row0Vis ;
TSharedRef < FVisibilityCycler > Col2Row1Vis ;
2015-04-13 07:24:13 -04:00
2014-03-14 14:13:41 -04:00
TSharedPtr < SSplitter > TopLeveSplitter ;
TSharedPtr < SSplitter > Nested0 ;
TSharedPtr < SSplitter > Nested1 ;
} ;
2014-07-23 08:23:21 -04:00
# if WITH_FANCY_TEXT
2014-07-31 06:02:59 -04:00
class SMultiLineEditingTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS ( SMultiLineEditingTest )
{ }
SLATE_END_ARGS ( )
void Construct ( const FArguments & InArgs )
{
Converted STextBlock to use an FTextLayout
This solves a wrapping issue where STextBlock would incorrectly consume new-line characters when wrapping, as well as allowing it to use custom wrapping behavior (eg, CamelCase wrapping for asset names in the content browser).
This change also implements FString -> FText passthrough for SLATE_TEXT_ATTRIBUTE (it was previously performing FText -> FString passthrough, however this didn't fit well with the fact that FText has a more efficient method of comparing whether a bound text attribute has changed (see FTextSnapshot), so can quickly work out that the FTextLayout doesn't need updating).
This change adds FTextBlockLayout to handle the text layout cache for text block types (STextBlock and SRichTextBlock) and serves a dual purpose of moving the duplicated caching logic into a single place, as well as hiding it from the widget (so allowing the cache to mutate, even when called from immutable widget functions).
This change also increases the unification between the STextBlock and SRichTextBlock construction parameters, by allowing STextBlock to specify a Justification, Margin, and LineHeightPercentage, and allowing SRichTextBlock to specify its HighlightText as an attribute.
ReviewedBy Nick.Atamas, Justin.Sargent
[CL 2280351 by Jamie Dale in Main branch]
2014-09-01 06:28:16 -04:00
bIsReadOnly = false ;
2014-07-31 06:02:59 -04:00
MultilineEditableText = LOCTEXT ( " MultiLineTextTest " , " He has refused his Assent to Laws, the most wholesome and necessary for the public good. \n He has forbidden his Governors to pass Laws of immediate and pressing importance, unless suspended in their operation till his Assent should be obtained; and when so suspended, he has utterly neglected to attend to them. \n He has refused to pass other Laws for the accommodation of large districts of people, unless those people would relinquish the right of Representation in the Legislature, a right inestimable to them and formidable to tyrants only. \n \n He has called together legislative bodies at places unusual, uncomfortable, and distant from the depository of their public Records, for the sole purpose of fatiguing them into compliance with his measures. \n He has dissolved Representative Houses repeatedly, for opposing with manly firmness his invasions on the rights of the people. \n He has refused for a long time, after such dissolutions, to cause others to be elected; whereby the Legislative powers, incapable of Annihilation, have returned to the People at large for their exercise; the State remaining in the mean time exposed to all the dangers of invasion from without, and convulsions within. \n He has endeavoured to prevent the population of these States; for that purpose obstructing the Laws for Naturalization of Foreigners; refusing to pass others to encourage their migrations hither, and raising the conditions of new Appropriations of Lands. \n " ) ;
this - > ChildSlot
[
SNew ( SVerticalBox )
2014-08-18 05:57:50 -04:00
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
2014-07-31 06:02:59 -04:00
[
SNew ( SHorizontalBox )
2014-08-18 05:57:50 -04:00
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. VAlign ( VAlign_Top )
. Padding ( 2 )
2014-07-31 06:02:59 -04:00
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " MultiLineTextWrapAt600px " , " Multi-line editable text wrapping at 600px " ) )
]
+ SVerticalBox : : Slot ( )
[
2014-08-18 05:57:50 -04:00
SNew ( SMultiLineEditableTextBox )
. Text ( this , & SMultiLineEditingTest : : GetMultilineEditableText )
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Regular.ttf " ) , 12 ) )
. Justification ( ETextJustify : : Center )
. LineHeightPercentage ( 2.0f )
. OnTextCommitted ( this , & SMultiLineEditingTest : : HandleMultilineEditableTextCommitted )
. WrapTextAt ( 600.0f )
2014-07-31 06:02:59 -04:00
]
]
2014-08-18 05:57:50 -04:00
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1 )
. Padding ( 2 )
2014-07-31 06:02:59 -04:00
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
Converted STextBlock to use an FTextLayout
This solves a wrapping issue where STextBlock would incorrectly consume new-line characters when wrapping, as well as allowing it to use custom wrapping behavior (eg, CamelCase wrapping for asset names in the content browser).
This change also implements FString -> FText passthrough for SLATE_TEXT_ATTRIBUTE (it was previously performing FText -> FString passthrough, however this didn't fit well with the fact that FText has a more efficient method of comparing whether a bound text attribute has changed (see FTextSnapshot), so can quickly work out that the FTextLayout doesn't need updating).
This change adds FTextBlockLayout to handle the text layout cache for text block types (STextBlock and SRichTextBlock) and serves a dual purpose of moving the duplicated caching logic into a single place, as well as hiding it from the widget (so allowing the cache to mutate, even when called from immutable widget functions).
This change also increases the unification between the STextBlock and SRichTextBlock construction parameters, by allowing STextBlock to specify a Justification, Margin, and LineHeightPercentage, and allowing SRichTextBlock to specify its HighlightText as an attribute.
ReviewedBy Nick.Atamas, Justin.Sargent
[CL 2280351 by Jamie Dale in Main branch]
2014-09-01 06:28:16 -04:00
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " MultiLineTextAutoWrap " , " Multi-line editable text auto-wrapping " ) )
]
+ SHorizontalBox : : Slot ( )
. HAlign ( HAlign_Right )
[
SNew ( SCheckBox )
. IsChecked ( this , & SMultiLineEditingTest : : IsReadOnlyChecked )
. OnCheckStateChanged ( this , & SMultiLineEditingTest : : OnReadOnlyCheckedStateChanged )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " MultiLineTextReadOnly " , " Read-only? " ) )
]
]
2014-07-31 06:02:59 -04:00
]
+ SVerticalBox : : Slot ( )
2014-08-18 05:57:50 -04:00
[
SNew ( SMultiLineEditableTextBox )
. Margin ( 10 )
. Text ( MultilineEditableText )
Converted STextBlock to use an FTextLayout
This solves a wrapping issue where STextBlock would incorrectly consume new-line characters when wrapping, as well as allowing it to use custom wrapping behavior (eg, CamelCase wrapping for asset names in the content browser).
This change also implements FString -> FText passthrough for SLATE_TEXT_ATTRIBUTE (it was previously performing FText -> FString passthrough, however this didn't fit well with the fact that FText has a more efficient method of comparing whether a bound text attribute has changed (see FTextSnapshot), so can quickly work out that the FTextLayout doesn't need updating).
This change adds FTextBlockLayout to handle the text layout cache for text block types (STextBlock and SRichTextBlock) and serves a dual purpose of moving the duplicated caching logic into a single place, as well as hiding it from the widget (so allowing the cache to mutate, even when called from immutable widget functions).
This change also increases the unification between the STextBlock and SRichTextBlock construction parameters, by allowing STextBlock to specify a Justification, Margin, and LineHeightPercentage, and allowing SRichTextBlock to specify its HighlightText as an attribute.
ReviewedBy Nick.Atamas, Justin.Sargent
[CL 2280351 by Jamie Dale in Main branch]
2014-09-01 06:28:16 -04:00
. IsReadOnly ( this , & SMultiLineEditingTest : : IsReadOnly )
2014-08-18 05:57:50 -04:00
//.Justification(ETextJustify::Right)
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Regular.ttf " ) , 12 ) )
. AutoWrapText ( true )
. HintText ( LOCTEXT ( " TypehereTextHint " , " Type Here " ) )
]
2014-07-31 06:02:59 -04:00
]
]
2014-08-18 05:57:50 -04:00
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
2014-07-31 06:02:59 -04:00
[
SNew ( SHorizontalBox )
2014-08-18 05:57:50 -04:00
+ SHorizontalBox : : Slot ( )
. VAlign ( VAlign_Top )
. Padding ( 2 )
2014-07-31 06:02:59 -04:00
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " MultiLineTextNoWrap " , " Multi-line editable text without wrapping " ) )
]
+ SVerticalBox : : Slot ( )
2014-08-18 05:57:50 -04:00
. AutoHeight ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
2014-07-31 06:02:59 -04:00
[
2014-08-18 05:57:50 -04:00
SNew ( SMultiLineEditableTextBox )
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Regular.ttf " ) , 12 ) )
2015-03-17 12:08:28 -04:00
. HintText ( LOCTEXT ( " MultiLineHintText " , " This is hint line 1 \n This is hint line 2 " ) )
2014-08-18 05:57:50 -04:00
//.WrapTextAt(300.0f)
//.Justification( ETextJustify::Right )
2014-07-31 06:02:59 -04:00
]
2014-08-18 05:57:50 -04:00
]
2014-07-31 06:02:59 -04:00
]
]
] ;
}
private :
FText GetMultilineEditableText ( ) const
{
return MultilineEditableText ;
}
void HandleMultilineEditableTextCommitted ( const FText & Text , ETextCommit : : Type Type )
{
MultilineEditableText = Text ;
}
Converted STextBlock to use an FTextLayout
This solves a wrapping issue where STextBlock would incorrectly consume new-line characters when wrapping, as well as allowing it to use custom wrapping behavior (eg, CamelCase wrapping for asset names in the content browser).
This change also implements FString -> FText passthrough for SLATE_TEXT_ATTRIBUTE (it was previously performing FText -> FString passthrough, however this didn't fit well with the fact that FText has a more efficient method of comparing whether a bound text attribute has changed (see FTextSnapshot), so can quickly work out that the FTextLayout doesn't need updating).
This change adds FTextBlockLayout to handle the text layout cache for text block types (STextBlock and SRichTextBlock) and serves a dual purpose of moving the duplicated caching logic into a single place, as well as hiding it from the widget (so allowing the cache to mutate, even when called from immutable widget functions).
This change also increases the unification between the STextBlock and SRichTextBlock construction parameters, by allowing STextBlock to specify a Justification, Margin, and LineHeightPercentage, and allowing SRichTextBlock to specify its HighlightText as an attribute.
ReviewedBy Nick.Atamas, Justin.Sargent
[CL 2280351 by Jamie Dale in Main branch]
2014-09-01 06:28:16 -04:00
bool IsReadOnly ( ) const
{
return bIsReadOnly ;
}
2014-07-31 06:02:59 -04:00
2014-12-10 14:24:09 -05:00
ECheckBoxState IsReadOnlyChecked ( ) const
Converted STextBlock to use an FTextLayout
This solves a wrapping issue where STextBlock would incorrectly consume new-line characters when wrapping, as well as allowing it to use custom wrapping behavior (eg, CamelCase wrapping for asset names in the content browser).
This change also implements FString -> FText passthrough for SLATE_TEXT_ATTRIBUTE (it was previously performing FText -> FString passthrough, however this didn't fit well with the fact that FText has a more efficient method of comparing whether a bound text attribute has changed (see FTextSnapshot), so can quickly work out that the FTextLayout doesn't need updating).
This change adds FTextBlockLayout to handle the text layout cache for text block types (STextBlock and SRichTextBlock) and serves a dual purpose of moving the duplicated caching logic into a single place, as well as hiding it from the widget (so allowing the cache to mutate, even when called from immutable widget functions).
This change also increases the unification between the STextBlock and SRichTextBlock construction parameters, by allowing STextBlock to specify a Justification, Margin, and LineHeightPercentage, and allowing SRichTextBlock to specify its HighlightText as an attribute.
ReviewedBy Nick.Atamas, Justin.Sargent
[CL 2280351 by Jamie Dale in Main branch]
2014-09-01 06:28:16 -04:00
{
2014-12-10 14:24:09 -05:00
return ( bIsReadOnly ) ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
Converted STextBlock to use an FTextLayout
This solves a wrapping issue where STextBlock would incorrectly consume new-line characters when wrapping, as well as allowing it to use custom wrapping behavior (eg, CamelCase wrapping for asset names in the content browser).
This change also implements FString -> FText passthrough for SLATE_TEXT_ATTRIBUTE (it was previously performing FText -> FString passthrough, however this didn't fit well with the fact that FText has a more efficient method of comparing whether a bound text attribute has changed (see FTextSnapshot), so can quickly work out that the FTextLayout doesn't need updating).
This change adds FTextBlockLayout to handle the text layout cache for text block types (STextBlock and SRichTextBlock) and serves a dual purpose of moving the duplicated caching logic into a single place, as well as hiding it from the widget (so allowing the cache to mutate, even when called from immutable widget functions).
This change also increases the unification between the STextBlock and SRichTextBlock construction parameters, by allowing STextBlock to specify a Justification, Margin, and LineHeightPercentage, and allowing SRichTextBlock to specify its HighlightText as an attribute.
ReviewedBy Nick.Atamas, Justin.Sargent
[CL 2280351 by Jamie Dale in Main branch]
2014-09-01 06:28:16 -04:00
}
2014-12-10 14:24:09 -05:00
void OnReadOnlyCheckedStateChanged ( ECheckBoxState InState )
Converted STextBlock to use an FTextLayout
This solves a wrapping issue where STextBlock would incorrectly consume new-line characters when wrapping, as well as allowing it to use custom wrapping behavior (eg, CamelCase wrapping for asset names in the content browser).
This change also implements FString -> FText passthrough for SLATE_TEXT_ATTRIBUTE (it was previously performing FText -> FString passthrough, however this didn't fit well with the fact that FText has a more efficient method of comparing whether a bound text attribute has changed (see FTextSnapshot), so can quickly work out that the FTextLayout doesn't need updating).
This change adds FTextBlockLayout to handle the text layout cache for text block types (STextBlock and SRichTextBlock) and serves a dual purpose of moving the duplicated caching logic into a single place, as well as hiding it from the widget (so allowing the cache to mutate, even when called from immutable widget functions).
This change also increases the unification between the STextBlock and SRichTextBlock construction parameters, by allowing STextBlock to specify a Justification, Margin, and LineHeightPercentage, and allowing SRichTextBlock to specify its HighlightText as an attribute.
ReviewedBy Nick.Atamas, Justin.Sargent
[CL 2280351 by Jamie Dale in Main branch]
2014-09-01 06:28:16 -04:00
{
2014-12-10 14:24:09 -05:00
bIsReadOnly = ( InState = = ECheckBoxState : : Checked ) ;
Converted STextBlock to use an FTextLayout
This solves a wrapping issue where STextBlock would incorrectly consume new-line characters when wrapping, as well as allowing it to use custom wrapping behavior (eg, CamelCase wrapping for asset names in the content browser).
This change also implements FString -> FText passthrough for SLATE_TEXT_ATTRIBUTE (it was previously performing FText -> FString passthrough, however this didn't fit well with the fact that FText has a more efficient method of comparing whether a bound text attribute has changed (see FTextSnapshot), so can quickly work out that the FTextLayout doesn't need updating).
This change adds FTextBlockLayout to handle the text layout cache for text block types (STextBlock and SRichTextBlock) and serves a dual purpose of moving the duplicated caching logic into a single place, as well as hiding it from the widget (so allowing the cache to mutate, even when called from immutable widget functions).
This change also increases the unification between the STextBlock and SRichTextBlock construction parameters, by allowing STextBlock to specify a Justification, Margin, and LineHeightPercentage, and allowing SRichTextBlock to specify its HighlightText as an attribute.
ReviewedBy Nick.Atamas, Justin.Sargent
[CL 2280351 by Jamie Dale in Main branch]
2014-09-01 06:28:16 -04:00
}
bool bIsReadOnly ;
2014-07-31 06:02:59 -04:00
FText MultilineEditableText ;
} ;
2014-08-07 06:46:11 -04:00
struct RichTextHelper
2014-03-14 14:13:41 -04:00
{
2014-08-07 06:46:11 -04:00
static FText GetAliceInWonderland ( )
2014-03-14 14:13:41 -04:00
{
2014-08-07 06:46:11 -04:00
return FText : : FromString (
2014-03-14 14:13:41 -04:00
TEXT ( " The <a id= \" browser \" href= \" http://en.wikipedia.org/wiki/Dormouse_(Alice%27s_Adventures_in_Wonderland) \" style= \" RichText.Interactive.Text.Hyperlink \" >Dormouse</> had closed its eyes by this time, and was going off into a doze; but, on being pinched by the Hatter, it woke up again with a little shriek, and went on: '<RichText.Interactive.Text.Dialogue>-that begins with an M, such as </><a id= \" browser \" href= \" http://en.wikipedia.org/wiki/Mousetrap_(weapon) \" style= \" RichText.Interactive.Text.DialogueHyperlink \" >mouse-traps</><RichText.Interactive.Text.Dialogue>, and the moon, and memory, and muchness-you know you say things are \" much of a muchness \" -did you ever see such a thing as a drawing of a muchness?</>' " )
TEXT ( " \n \n " )
TEXT ( " '<RichText.Interactive.Text.Dialogue>Really, now you ask me,</>' said <a id= \" browser \" href= \" http://en.wikipedia.org/wiki/Alice_(Alice%27s_Adventures_in_Wonderland) \" style= \" RichText.Interactive.Text.Hyperlink \" >Alice</>, very much confused, '<RichText.Interactive.Text.Dialogue>I don't think-</>' " )
TEXT ( " \n \n " )
TEXT ( " '<RichText.Interactive.Text.Dialogue>Then you shouldn't talk,</>' said the <a id= \" browser \" href= \" http://en.wikipedia.org/wiki/The_Hatter \" style= \" RichText.Interactive.Text.Hyperlink \" >Hatter</>. " )
TEXT ( " \n \n " )
TEXT ( " This piece of rudeness was more than <a id= \" browser \" href= \" http://en.wikipedia.org/wiki/Alice_(Alice%27s_Adventures_in_Wonderland) \" style= \" RichText.Interactive.Text.Hyperlink \" >Alice</> could bear: she got up in great disgust, and walked off; the <a id= \" browser \" href= \" http://en.wikipedia.org/wiki/Dormouse_(Alice%27s_Adventures_in_Wonderland) \" style= \" RichText.Interactive.Text.Hyperlink \" >Dormouse</> fell asleep instantly, and neither of the others took the least notice of her going, though she looked back once or twice, half hoping that they would call after her: the last time she saw them, they were trying to put the <a id= \" browser \" href= \" http://en.wikipedia.org/wiki/Dormouse_(Alice%27s_Adventures_in_Wonderland) \" style= \" RichText.Interactive.Text.Hyperlink \" >Dormouse</> into the teapot. " )
TEXT ( " \n \n " )
TEXT ( " '<RichText.Interactive.Text.Dialogue>At any rate I'll never go </><RichText.Interactive.Text.StrongDialogue>THERE</><RichText.Interactive.Text.Dialogue> again!</>' said <a id= \" browser \" href= \" http://en.wikipedia.org/wiki/Alice_(Alice%27s_Adventures_in_Wonderland) \" style= \" RichText.Interactive.Text.Hyperlink \" >Alice</> as she picked her way through the wood. '<RichText.Interactive.Text.Dialogue>It's the stupidest tea-party I ever was at in all my life!</>' " )
TEXT ( " \n \n " )
TEXT ( " Just as she said this, she noticed that one of the trees had a door leading right into it. '<RichText.Interactive.Text.Dialogue>That's very curious!</>' she thought. '<RichText.Interactive.Text.Dialogue>But everything's curious today. I think I may as well go in at once.</>' And in she went. " )
TEXT ( " \n \n " )
TEXT ( " Once more she found herself in the long hall, and close to the little glass table. '<RichText.Interactive.Text.Dialogue>Now, I'll manage better this time,</>' she said to herself, and began by taking the little golden key, and unlocking the door that led into the garden. Then she went to work nibbling at the mushroom (she had kept a piece of it in her pocket) till she was about a foot high: then she walked down the little passage: and THEN-she found herself at last in the beautiful garden, among the bright flower-beds and the cool fountains. " )
TEXT ( " \n \n " )
TEXT ( " A large rose-tree stood near the entrance of the garden: the roses growing on it were white, but there were three gardeners at it, busily painting them red. <a id= \" browser \" href= \" http://en.wikipedia.org/wiki/Alice_(Alice%27s_Adventures_in_Wonderland) \" style= \" RichText.Interactive.Text.Hyperlink \" >Alice</> thought this a very curious thing, and she went nearer to watch them, and just as she came up to them she heard one of them say, '<RichText.Interactive.Text.Dialogue>Look out now, Five! Don't go splashing paint over me like that!</>' " )
TEXT ( " \n \n " )
TEXT ( " '<RichText.Interactive.Text.Dialogue>I couldn't help it,</>' said Five, in a sulky tone; '<RichText.Interactive.Text.Dialogue>Seven jogged my elbow.</>' " )
TEXT ( " \n \n " )
TEXT ( " On which Seven looked up and said, '<RichText.Interactive.Text.Dialogue>That's right, Five! Always lay the blame on others!</>' " )
2014-08-07 06:46:11 -04:00
TEXT ( " \n \n " ) ) ;
}
2014-03-14 14:13:41 -04:00
2014-08-07 06:46:11 -04:00
static FText GetTheWarOfTheWorlds_Part1 ( )
{
return FText : : FromString (
2014-03-14 14:13:41 -04:00
TEXT ( " When we had finished eating we went softly upstairs to my study, and I looked again out of the open window. In one night the valley had become a valley of ashes. The fires had dwindled now. Where flames had been there were now streamers of smoke; but the countless ruins of shattered and gutted houses and blasted and blackened trees that the night had hidden stood out now gaunt and terrible in the pitiless light of dawn. Yet here and there some object had had the luck to escape--a white railway signal here, the end of a greenhouse there, white and fresh amid the wreckage. Never before in the history of warfare had destruction been so indiscriminate and so universal. And shining with the growing light of the east, three of the metallic giants stood about the pit, their cowls rotating as though they were surveying the desolation they had made. " )
TEXT ( " \n \n " )
TEXT ( " It seemed to me that the pit had been enlarged, and ever and again puffs of vivid green vapour streamed up and out of it towards the brightening dawn--streamed up, whirled, broke, and vanished. " )
TEXT ( " \n \n " )
TEXT ( " Beyond were the pillars of fire about Chobham. They became pillars of bloodshot smoke at the first touch of day. " )
TEXT ( " \n \n " )
TEXT ( " As the dawn grew brighter we withdrew from the window from which we had watched the Martians, and went very quietly downstairs. " )
TEXT ( " \n \n " )
TEXT ( " The artilleryman agreed with me that the house was no place to stay in. He proposed, he said, to make his way Londonward, and thence rejoin his battery--No. 12, of the Horse Artillery. My plan was to return at once to Leatherhead; and so greatly had the strength of the Martians impressed me that I had determined to take my wife to Newhaven, and go with her out of the country forthwith. For I already perceived clearly that the country about London must inevitably be the scene of a disastrous struggle before such creatures as these could be destroyed. " )
TEXT ( " \n \n " )
TEXT ( " Between us and Leatherhead, however, lay the third cylinder, with its guarding giants. Had I been alone, I think I should have taken my chance and struck across country. But the artilleryman dissuaded me: \" It's no kindness to the right sort of wife, \" he said, \" to make her a widow \" ; and in the end I agreed to go with him, under cover of the woods, northward as far as Street Cobham before I parted with him. Thence I would make a big detour by Epsom to reach Leatherhead. " )
TEXT ( " \n \n " )
TEXT ( " I should have started at once, but my companion had been in active service and he knew better than that. He made me ransack the house for a flask, which he filled with whiskey; and we lined every available pocket with packets of biscuits and slices of meat. Then we crept out of the house, and ran as quickly as we could down the ill-made road by which I had come overnight. The houses seemed deserted. In the road lay a group of three charred bodies close together, struck dead by the Heat-Ray; and here and there were things that people had dropped--a clock, a slipper, a silver spoon, and the like poor valuables. At the corner turning up towards the post office a little cart, filled with boxes and furniture, and horseless, heeled over on a broken wheel. A cash box had been hastily smashed open and thrown under the debris. " )
TEXT ( " \n \n " )
TEXT ( " Except the lodge at the Orphanage, which was still on fire, none of the houses had suffered very greatly here. The Heat-Ray had shaved the chimney tops and passed. Yet, save ourselves, there did not seem to be a living soul on Maybury Hill. The majority of the inhabitants had escaped, I suppose, by way of the Old Woking road--the road I had taken when I drove to Leatherhead--or they had hidden. " )
TEXT ( " \n \n " )
TEXT ( " We went down the lane, by the body of the man in black, sodden now from the overnight hail, and broke into the woods at the foot of the hill. We pushed through these towards the railway without meeting a soul. The woods across the line were but the scarred and blackened ruins of woods; for the most part the trees had fallen, but a certain proportion still stood, dismal grey stems, with dark brown foliage instead of green. " )
TEXT ( " \n \n " )
TEXT ( " On our side the fire had done no more than scorch the nearer trees; it had failed to secure its footing. In one place the woodmen had been at work on Saturday; trees, felled and freshly trimmed, lay in a clearing, with heaps of sawdust by the sawing-machine and its engine. Hard by was a temporary hut, deserted. There was not a breath of wind this morning, and everything was strangely still. Even the birds were hushed, and as we hurried along I and the artilleryman talked in whispers and looked now and again over our shoulders. Once or twice we stopped to listen. " )
2014-08-07 06:46:11 -04:00
TEXT ( " \n \n " ) ) ;
}
2014-03-14 14:13:41 -04:00
2014-08-07 06:46:11 -04:00
static FText GetTheWarOfTheWorlds_Part2 ( )
{
return FText : : FromString (
2014-03-14 14:13:41 -04:00
TEXT ( " And beyond, over the blue hills that rise southward of the river, the glittering Martians went to and fro, calmly and methodically spreading their poison cloud over this patch of country and then over that, laying it again with their steam jets when it had served its purpose, and taking possession of the conquered country. They do not seem to have aimed at extermination so much as at complete demoralisation and the destruction of any opposition. They exploded any stores of powder they came upon, cut every telegraph, and wrecked the railways here and there. They were hamstringing mankind. They seemed in no hurry to extend the field of their operations, and did not come beyond the central part of London all that day. It is possible that a very considerable number of people in London stuck to their houses through Monday morning. Certain it is that many died at home suffocated by the Black Smoke. " )
TEXT ( " \n \n " )
TEXT ( " Until about midday the Pool of London was an astonishing scene. Steamboats and shipping of all sorts lay there, tempted by the enormous sums of money offered by fugitives, and it is said that many who swam out to these vessels were thrust off with boathooks and drowned. About one o'clock in the afternoon the thinning remnant of a cloud of the black vapour appeared between the arches of Blackfriars Bridge. At that the Pool became a scene of mad confusion, fighting, and collision, and for some time a multitude of boats and barges jammed in the northern arch of the Tower Bridge, and the sailors and lightermen had to fight savagely against the people who swarmed upon them from the riverfront. People were actually clambering down the piers of the bridge from above. " )
TEXT ( " \n \n " )
TEXT ( " When, an hour later, a Martian appeared beyond the Clock Tower and waded down the river, nothing but wreckage floated above Limehouse. " )
TEXT ( " \n \n " )
TEXT ( " Of the falling of the fifth cylinder I have presently to tell. The sixth star fell at Wimbledon. My brother, keeping watch beside the women in the chaise in a meadow, saw the green flash of it far beyond the hills. On Tuesday the little party, still set upon getting across the sea, made its way through the swarming country towards Colchester. The news that the Martians were now in possession of the whole of London was confirmed. They had been seen at Highgate, and even, it was said, at Neasden. But they did not come into my brother's view until the morrow. " )
TEXT ( " \n \n " )
TEXT ( " That day the scattered multitudes began to realise the urgent need of provisions. As they grew hungry the rights of property ceased to be regarded. Farmers were out to defend their cattle-sheds, granaries, and ripening root crops with arms in their hands. A number of people now, like my brother, had their faces eastward, and there were some desperate souls even going back towards London to get food. These were chiefly people from the northern suburbs, whose knowledge of the Black Smoke came by hearsay. He heard that about half the members of the government had gathered at Birmingham, and that enormous quantities of high explosives were being prepared to be used in automatic mines across the Midland counties. " )
TEXT ( " \n \n " )
TEXT ( " He was also told that the Midland Railway Company had replaced the desertions of the first day's panic, had resumed traffic, and was running northward trains from St. Albans to relieve the congestion of the home counties. There was also a placard in Chipping Ongar announcing that large stores of flour were available in the northern towns and that within twenty-four hours bread would be distributed among the starving people in the neighbourhood. But this intelligence did not deter him from the plan of escape he had formed, and the three pressed eastward all day, and heard no more of the bread distribution than this promise. Nor, as a matter of fact, did anyone else hear more of it. That night fell the seventh star, falling upon Primrose Hill. It fell while Miss Elphinstone was watching, for she took that duty alternately with my brother. She saw it. " )
TEXT ( " \n \n " )
TEXT ( " On Wednesday the three fugitives--they had passed the night in a field of unripe wheat--reached Chelmsford, and there a body of the inhabitants, calling itself the Committee of Public Supply, seized the pony as provisions, and would give nothing in exchange for it but the promise of a share in it the next day. Here there were rumours of Martians at Epping, and news of the destruction of Waltham Abbey Powder Mills in a vain attempt to blow up one of the invaders. " )
TEXT ( " \n \n " )
TEXT ( " People were watching for Martians here from the church towers. My brother, very luckily for him as it chanced, preferred to push on at once to the coast rather than wait for food, although all three of them were very hungry. By midday they passed through Tillingham, which, strangely enough, seemed to be quite silent and deserted, save for a few furtive plunderers hunting for food. Near Tillingham they suddenly came in sight of the sea, and the most amazing crowd of shipping of all sorts that it is possible to imagine. " )
2014-08-07 06:46:11 -04:00
TEXT ( " \n \n " ) ) ;
}
2014-03-14 14:13:41 -04:00
2014-08-07 06:46:11 -04:00
static FText GetTheWarOfTheWorlds_Part3 ( )
{
return FText : : FromString (
2014-03-14 14:13:41 -04:00
TEXT ( " They saw the gaunt figures separating and rising out of the water as they retreated shoreward, and one of them raised the camera-like generator of the Heat-Ray. He held it pointing obliquely downward, and a bank of steam sprang from the water at its touch. It must have driven through the iron of the ship's side like a white-hot iron rod through paper. " )
TEXT ( " \n \n " )
TEXT ( " But no one heeded that very much. At the sight of the Martian's collapse the captain on the bridge yelled inarticulately, and all the crowding passengers on the steamer's stern shouted together. And then they yelled again. For, surging out beyond the white tumult, drove something long and black, the flames streaming from its middle parts, its ventilators and funnels spouting fire. " )
TEXT ( " \n \n " )
TEXT ( " She was alive still; the steering gear, it seems, was intact and her engines working. She headed straight for a second Martian, and was within a hundred yards of him when the Heat-Ray came to bear. Then with a violent thud, a blinding flash, her decks, her funnels, leaped upward. The Martian staggered with the violence of her explosion, and in another moment the flaming wreckage, still driving forward with the impetus of its pace, had struck him and crumpled him up like a thing of cardboard. My brother shouted involuntarily. A boiling tumult of steam hid everything again. " )
TEXT ( " \n \n " )
TEXT ( " \" Two! \" yelled the captain. " )
TEXT ( " \n \n " )
TEXT ( " Everyone was shouting. The whole steamer from end to end rang with frantic cheering that was taken up first by one and then by all in the crowding multitude of ships and boats that was driving out to sea. " )
TEXT ( " \n \n " )
TEXT ( " The little vessel continued to beat its way seaward, and the ironclads receded slowly towards the coast, which was hidden still by a marbled bank of vapour, part steam, part black gas, eddying and combining in the strangest way. The fleet of refugees was scattering to the northeast; several smacks were sailing between the ironclads and the steamboat. After a time, and before they reached the sinking cloud bank, the warships turned northward, and then abruptly went about and passed into the thickening haze of evening southward. The coast grew faint, and at last indistinguishable amid the low banks of clouds that were gathering about the sinking sun. " )
TEXT ( " \n \n " )
TEXT ( " Then suddenly out of the golden haze of the sunset came the vibration of guns, and a form of black shadows moving. Everyone struggled to the rail of the steamer and peered into the blinding furnace of the west, but nothing was to be distinguished clearly. A mass of smoke rose slanting and barred the face of the sun. The steamboat throbbed on its way through an interminable suspense. " )
TEXT ( " \n \n " )
TEXT ( " The sun sank into grey clouds, the sky flushed and darkened, the evening star trembled into sight. It was deep twilight when the captain cried out and pointed. My brother strained his eyes. Something rushed up into the sky out of the greyness--rushed slantingly upward and very swiftly into the luminous clearness above the clouds in the western sky; something flat and broad, and very large, that swept round in a vast curve, grew smaller, sank slowly, and vanished again into the grey mystery of the night. And as it flew it rained down darkness upon the land. " )
2014-08-07 06:46:11 -04:00
TEXT ( " \n \n " ) ) ;
}
2014-03-14 14:13:41 -04:00
2014-08-07 06:46:11 -04:00
static FText GetAroundTheWorldIn80Days_Rainbow ( )
{
return FText : : FromString (
2014-03-14 14:13:41 -04:00
TEXT ( " <Rainbow.Text.Red> \" </><Rainbow.Text.Orange>I</> <Rainbow.Text.Yellow>know</> <Rainbow.Text.Green>it;</> <Rainbow.Text.Blue>I</> <Rainbow.Text.Red>don't</> <Rainbow.Text.Orange>blame</> <Rainbow.Text.Yellow>you.</> <Rainbow.Text.Green>We</> <Rainbow.Text.Blue>start</> <Rainbow.Text.Red>for</> <Rainbow.Text.Orange>Dover</> <Rainbow.Text.Yellow>and</> <Rainbow.Text.Green>Calais</> <Rainbow.Text.Blue>in</> <Rainbow.Text.Red>ten</> <Rainbow.Text.Orange>minutes.</> \" " )
TEXT ( " \n \n " )
TEXT ( " <Rainbow.Text.Yellow>A</> <Rainbow.Text.Green>puzzled</> <Rainbow.Text.Blue>grin</> <Rainbow.Text.Red>overspread</> <Rainbow.Text.Orange>Passepartout's</> <Rainbow.Text.Yellow>round</> <Rainbow.Text.Green>face;</> <Rainbow.Text.Blue>clearly</> <Rainbow.Text.Red>he</> <Rainbow.Text.Orange>had</> <Rainbow.Text.Yellow>not</> <Rainbow.Text.Green>comprehended</> <Rainbow.Text.Blue>his</> <Rainbow.Text.Red>master.</> " )
TEXT ( " \n \n " )
TEXT ( " <Rainbow.Text.Orange> \" </><Rainbow.Text.Yellow>Monsieur</> <Rainbow.Text.Green>is</> <Rainbow.Text.Blue>going</> <Rainbow.Text.Red>to</> <Rainbow.Text.Orange>leave</> <Rainbow.Text.Yellow>home?</><Rainbow.Text.Green> \" </> " )
TEXT ( " \n \n " )
TEXT ( " <Rainbow.Text.Blue> \" </><Rainbow.Text.Red>Yes,</><Rainbow.Text.Orange> \" </> <Rainbow.Text.Yellow>returned</> <Rainbow.Text.Green>Phileas</> <Rainbow.Text.Blue>Fogg.</> <Rainbow.Text.Red> \" </><Rainbow.Text.Orange>We</> <Rainbow.Text.Yellow>are</> <Rainbow.Text.Green>going</> <Rainbow.Text.Blue>round</> <Rainbow.Text.Red>the</> <Rainbow.Text.Yellow>world.</><Rainbow.Text.Green> \" </> " )
TEXT ( " \n \n " )
TEXT ( " <Rainbow.Text.Blue>Passepartout</> <Rainbow.Text.Red>opened</> <Rainbow.Text.Orange>wide</> <Rainbow.Text.Yellow>his</> <Rainbow.Text.Green>eyes,</> <Rainbow.Text.Blue>raised</> <Rainbow.Text.Red>his</> <Rainbow.Text.Orange>eyebrows,</> <Rainbow.Text.Yellow>held</> <Rainbow.Text.Green>up</> <Rainbow.Text.Blue>his</> <Rainbow.Text.Red>hands,</> <Rainbow.Text.Orange>and</> <Rainbow.Text.Yellow>seemed</> <Rainbow.Text.Green>about</> <Rainbow.Text.Blue>to</> <Rainbow.Text.Red>collapse,</> <Rainbow.Text.Orange>so</> <Rainbow.Text.Yellow>overcome</> <Rainbow.Text.Green>was</> <Rainbow.Text.Blue>he</> <Rainbow.Text.Red>with</> <Rainbow.Text.Orange>stupefied</> <Rainbow.Text.Yellow>astonishment.</> " )
TEXT ( " \n \n " )
TEXT ( " <Rainbow.Text.Green> \" </><Rainbow.Text.Blue>Round</> <Rainbow.Text.Red>the</> <Rainbow.Text.Orange>world!</><Rainbow.Text.Yellow> \" </> <Rainbow.Text.Green>he</> <Rainbow.Text.Blue>murmured.</> " )
TEXT ( " \n \n " )
TEXT ( " <Rainbow.Text.Red> \" </><Rainbow.Text.Orange>In</> <Rainbow.Text.Yellow>eighty</> <Rainbow.Text.Green>days,</><Rainbow.Text.Blue> \" </> <Rainbow.Text.Red>responded</> <Rainbow.Text.Yellow>Mr. Fogg.</> <Rainbow.Text.Green> \" </><Rainbow.Text.Blue>So</> <Rainbow.Text.Red>we</> <Rainbow.Text.Yellow>haven't</> <Rainbow.Text.Green>a</> <Rainbow.Text.Blue>moment</> <Rainbow.Text.Red>to</> <Rainbow.Text.Orange>lose.</><Rainbow.Text.Yellow> \" </> " )
TEXT ( " \n \n " )
TEXT ( " <Rainbow.Text.Green> \" </><Rainbow.Text.Blue>But</> <Rainbow.Text.Red>the</> <Rainbow.Text.Yellow>trunks?</><Rainbow.Text.Green> \" </> <Rainbow.Text.Blue>gasped</> <Rainbow.Text.Red>Passepartout,</> <Rainbow.Text.Yellow>unconsciously</> <Rainbow.Text.Green>swaying</> <Rainbow.Text.Blue>his</> <Rainbow.Text.Red>head</> <Rainbow.Text.Yellow>from</> <Rainbow.Text.Green>right</> <Rainbow.Text.Blue>to</> <Rainbow.Text.Red>left.</> " )
TEXT ( " <Rainbow.Text.Orange> \" </><Rainbow.Text.Yellow>We'll</> <Rainbow.Text.Green>have</> <Rainbow.Text.Blue>no</> <Rainbow.Text.Red>trunks;</> <Rainbow.Text.Orange>only</> <Rainbow.Text.Yellow>a</> <Rainbow.Text.Green>carpet-bag,</> <Rainbow.Text.Blue>with</> <Rainbow.Text.Red>two</> <Rainbow.Text.Yellow>shirts</> <Rainbow.Text.Green>and</> <Rainbow.Text.Blue>three</> <Rainbow.Text.Red>pairs</> <Rainbow.Text.Orange>of</> <Rainbow.Text.Yellow>stockings</> <Rainbow.Text.Green>for</> <Rainbow.Text.Blue>me,</> <Rainbow.Text.Red>and</> <Rainbow.Text.Orange>the</> <Rainbow.Text.Yellow>same</> <Rainbow.Text.Green>for</> <Rainbow.Text.Blue>you.</> <Rainbow.Text.Red>We'll</> <Rainbow.Text.Orange>buy</> <Rainbow.Text.Yellow>our</> <Rainbow.Text.Green>clothes</> <Rainbow.Text.Blue>on</> <Rainbow.Text.Red>the</> <Rainbow.Text.Orange>way.</> <Rainbow.Text.Yellow>Bring</> <Rainbow.Text.Green>down</> <Rainbow.Text.Blue>my</> <Rainbow.Text.Red>mackintosh</> <Rainbow.Text.Orange>and</> <Rainbow.Text.Yellow>traveling-cloak,</> <Rainbow.Text.Green>and</> <Rainbow.Text.Blue>some</> <Rainbow.Text.Red>stout</> <Rainbow.Text.Yellow>shoes,</> <Rainbow.Text.Green>though</> <Rainbow.Text.Blue>we</> <Rainbow.Text.Red>shall</> <Rainbow.Text.Orange>do</> <Rainbow.Text.Yellow>little</> <Rainbow.Text.Green>walking.</> <Rainbow.Text.Blue>Make haste!</><Rainbow.Text.Red> \" </> " )
TEXT ( " \n \n " )
TEXT ( " <Rainbow.Text.Orange>Passepartout</> <Rainbow.Text.Yellow>tried</> <Rainbow.Text.Green>to</> <Rainbow.Text.Blue>reply,</> <Rainbow.Text.Red>but</> <Rainbow.Text.Orange>could</> <Rainbow.Text.Yellow>not.</> <Rainbow.Text.Green>He</> <Rainbow.Text.Blue>went</> <Rainbow.Text.Red>out,</> <Rainbow.Text.Orange>mounted</> <Rainbow.Text.Yellow>to</> <Rainbow.Text.Green>his</> <Rainbow.Text.Blue>own</> <Rainbow.Text.Red>room,</> <Rainbow.Text.Orange>fell</> <Rainbow.Text.Yellow>into</> <Rainbow.Text.Green>a</> <Rainbow.Text.Blue>chair,</> <Rainbow.Text.Red>and</> <Rainbow.Text.Orange>muttered:</> <Rainbow.Text.Yellow> \" </><Rainbow.Text.Green>That's</> <Rainbow.Text.Blue>good,</> <Rainbow.Text.Red>that</> <Rainbow.Text.Orange>is!</> <Rainbow.Text.Yellow>And</> <Rainbow.Text.Green>I,</> <Rainbow.Text.Blue>who</> <Rainbow.Text.Red>wanted</> <Rainbow.Text.Orange>to</> <Rainbow.Text.Yellow>remain</> <Rainbow.Text.Green>quiet!</><Rainbow.Text.Blue> \" </> " )
2014-08-07 06:46:11 -04:00
TEXT ( " \n \n " ) ) ;
}
static void OnBrowserLinkClicked ( const FSlateHyperlinkRun : : FMetadata & Metadata , TSharedRef < SWidget > ParentWidget )
{
const FString * url = Metadata . Find ( TEXT ( " href " ) ) ;
if ( url )
{
FPlatformProcess : : LaunchURL ( * * url , nullptr , nullptr ) ;
}
else
{
SpawnProClickerPopUp ( LOCTEXT ( " FailedToFindUrlPopUpMessage " , " Sorry this hyperlink is not <RichText.Tagline.TextHighlight>configured incorrectly</>! " ) , ParentWidget ) ;
}
}
static void SpawnProClickerPopUp ( const FText & Text , TSharedRef < SWidget > ParentWidget )
{
TSharedRef < SWidget > Widget =
SNew ( SBorder ) . Padding ( 10 ) . BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
[
SNew ( SRichTextBlock )
. Text ( Text )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Tagline.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. Justification ( ETextJustify : : Center )
] ;
2014-03-14 14:13:41 -04:00
2014-08-07 06:46:11 -04:00
FSlateApplication : : Get ( ) . PushMenu (
ParentWidget , // Parent widget should be TestSuite, not the menu thats open or it will be closed when the menu is dismissed
2015-06-05 20:19:33 -04:00
FWidgetPath ( ) ,
2014-08-07 06:46:11 -04:00
Widget ,
FSlateApplication : : Get ( ) . GetCursorPos ( ) , // summon location
FPopupTransitionEffect ( FPopupTransitionEffect : : ContextMenu )
) ;
}
} ;
class SRichTextTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SRichTextTest ) { }
SLATE_END_ARGS ( )
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct ( const FArguments & InArgs )
{
2014-03-14 14:13:41 -04:00
WrapWidth = 600 ;
bShouldWrap = true ;
LineHeight = 1.0f ;
Margin = FMargin ( 20 ) ;
JustificationTypeOptions . Empty ( ) ;
JustificationTypeOptions . Add ( MakeShareable ( new FString ( TEXT ( " Left " ) ) ) ) ;
JustificationTypeOptions . Add ( MakeShareable ( new FString ( TEXT ( " Center " ) ) ) ) ;
JustificationTypeOptions . Add ( MakeShareable ( new FString ( TEXT ( " Right " ) ) ) ) ;
Justification = ETextJustify : : Left ;
//// Drop shadow border
//SNew(SBorder)
// .Padding( 5.0f )
// .BorderImage( FCoreStyle::Get().GetBrush("BoxShadow") )
// [
this - > ChildSlot
[
SNew ( SScrollBox )
+ SScrollBox : : Slot ( )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Background " ) )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 0 )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
. Padding ( 0 )
[
2014-08-18 05:57:50 -04:00
SNew ( SRichTextBlock )
2014-03-14 14:13:41 -04:00
. Text ( LOCTEXT ( " RichTextHeader05 " , " This is a text heavy page that has been created to show the performance and capabilities of Slate's <RichText.Tagline.TextHighlight>SRichTextBlock</>. " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Tagline.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 800 )
. Justification ( ETextJustify : : Center )
. Margin ( FMargin ( 20 ) )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 20 )
[
2014-08-18 05:57:50 -04:00
SNew ( SRichTextBlock )
2014-03-14 14:13:41 -04:00
. Text ( LOCTEXT ( " RichText.HowItWorks " , " <RichText.Header>What does it do?</> \n \n The SRichTextBlock uses a concept called Decorators to introduce new font styles, images, animation and even whole interactive widgets inline with the text. \n \n Slate comes with a couple Decorators out of the box: \n \n \u2022 <RichText.Text.Fancy>Text</> Decorator \n \u2022 <img src= \" RichText.ImageDecorator \" /> Image Decorator \n \u2022 <RichText.WidgetDecorator>Widget</> Decorator \n \u2022 <a id= \" HyperlinkDecorator \" style= \" RichText.Hyperlink \" >Hyperlink</> Decorator \n \n <RichText.Header>What about options?</> \n \n Of course you can always introduce your own Decorators by implementing ITextDecorator. This will give you full customization in how your text or widget is styled. \n \n Besides the power of Decorators the SRichTextBlock comes equipped with Margin support, Left-Center-Right Text Justification, a Line Height Scalar and Highlighting. \n \n <RichText.Header>How does the markup work?</> \n \n Well the markup parser is customizable so you can adjust the markup anyway you'd like by providing your own parser. The parser that comes with Slate though uses a syntax very similar to xml. \n \n \u2022 <TextBlockStyleName>Your text content</> \n \u2022 <img src= \" SlateBrushStyleName \" /> \n \u2022 <a id= \" YourCustomId \" />Your hyperlink text</> \n \n If you ever want to use the markup syntax as actual text you can escape the markup using xml style escapes. For example: \n \n \u2022 < &lt; \n \u2022 > &gt; \n \u2022 \" &quot; \n \n But you only need to escape these characters when a set of them match actual syntax so this isn't generally an issue. \n \n <RichText.Header>Are there any catches?</> \n \n There are still plenty of things the SRichTextBlock doesn't currently support. The most notable lacking feature is not having the ability to flow text around images or widgets. " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 600 )
+ SRichTextBlock : : ImageDecorator ( )
+ SRichTextBlock : : HyperlinkDecorator ( TEXT ( " HyperlinkDecorator " ) , this , & SRichTextTest : : OnHyperlinkDecoratorClicked )
+ SRichTextBlock : : WidgetDecorator ( TEXT ( " RichText.WidgetDecorator " ) , this , & SRichTextTest : : OnCreateWidgetDecoratorWidget )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 0 )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
. Padding ( 0 )
[
2014-08-18 05:57:50 -04:00
SNew ( SRichTextBlock )
2014-03-14 14:13:41 -04:00
. Text ( LOCTEXT ( " RichTextHeader01 " , " Here is an <RichText.Tagline.TextHighlight>interactive example</> of the different <RichText.Tagline.TextHighlight>SRichTextBlock</> features in action! " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Tagline.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 800 )
. Justification ( ETextJustify : : Center )
. Margin ( FMargin ( 20 ) )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 20 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( ) . Padding ( 5 , 0 )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Interactive.Details.Background " ) )
. Padding ( 10 )
[
SNew ( SBox )
. WidthOverride ( 400 )
[
SNew ( SGridPanel )
. FillColumn ( 1 , 1.0f )
+ SGridPanel : : Slot ( 0 , 0 ) . ColumnSpan ( 2 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.MarginHeader " , " Margin " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 0 , 1 ) . Padding ( 20 , 0 , 5 , 0 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.LeftMargin " , " Left " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 1 , 1 ) . Padding ( 0 , 5 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.0f )
. MaxValue ( 65536.0f )
. MaxSliderValue ( 100.0f )
. Delta ( 0.25f )
. Value ( this , & SRichTextTest : : GetLeftMargin )
. OnValueChanged ( this , & SRichTextTest : : SetLeftMargin )
. Font ( FTestStyle : : Get ( ) . GetFontStyle ( " RichText.Interactive.Details.Value.Text " ) )
]
+ SGridPanel : : Slot ( 0 , 2 ) . Padding ( 20 , 0 , 5 , 0 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.TopMargin " , " Top " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 1 , 2 ) . Padding ( 0 , 5 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.0f )
. MaxValue ( 65536.0f )
. MaxSliderValue ( 100.0f )
. Delta ( 0.25f )
. Value ( this , & SRichTextTest : : GetTopMargin )
. OnValueChanged ( this , & SRichTextTest : : SetTopMargin )
. Font ( FTestStyle : : Get ( ) . GetFontStyle ( " RichText.Interactive.Details.Value.Text " ) )
]
+ SGridPanel : : Slot ( 0 , 3 ) . Padding ( 20 , 0 , 5 , 0 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.RightMargin " , " Right " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 1 , 3 ) . Padding ( 0 , 5 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.0f )
. MaxValue ( 65536.0f )
. MaxSliderValue ( 100.0f )
. Delta ( 0.25f )
. Value ( this , & SRichTextTest : : GetRightMargin )
. OnValueChanged ( this , & SRichTextTest : : SetRightMargin )
. Font ( FTestStyle : : Get ( ) . GetFontStyle ( " RichText.Interactive.Details.Value.Text " ) )
]
+ SGridPanel : : Slot ( 0 , 4 ) . Padding ( 20 , 0 , 5 , 0 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.BottomMargin " , " Bottom " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 1 , 4 ) . Padding ( 0 , 5 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.0f )
. MaxValue ( 65536.0f )
. MaxSliderValue ( 100.0f )
. Delta ( 0.25f )
. Value ( this , & SRichTextTest : : GetBottomMargin )
. OnValueChanged ( this , & SRichTextTest : : SetBottomMargin )
. Font ( FTestStyle : : Get ( ) . GetFontStyle ( " RichText.Interactive.Details.Value.Text " ) )
]
+ SGridPanel : : Slot ( 0 , 5 ) . Padding ( 0 , 0 , 5 , 0 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.ShouldWrap " , " Should Wrap " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 1 , 5 ) . Padding ( 0 , 5 )
. ColumnSpan ( 2 )
[
SNew ( SCheckBox )
. IsChecked ( this , & SRichTextTest : : ShouldWrapRichText )
. OnCheckStateChanged ( this , & SRichTextTest : : ShouldWrapRichTextChanged )
. Style ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Checkbox " )
]
+ SGridPanel : : Slot ( 0 , 6 ) . Padding ( 0 , 0 , 5 , 0 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.WrapWidth " , " Wrap Width " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 1 , 6 ) . Padding ( 0 , 5 )
[
SNew ( SSpinBox < float > )
. MinValue ( 1.0f )
. MaxValue ( 800.0f )
. MinSliderValue ( 1.0f )
. MaxSliderValue ( 800.0f )
. Delta ( 1.0f )
. Value ( this , & SRichTextTest : : GetWrapWidth )
. OnValueChanged ( this , & SRichTextTest : : SetWrapWidth )
. Font ( FTestStyle : : Get ( ) . GetFontStyle ( " RichText.Interactive.Details.Value.Text " ) )
]
+ SGridPanel : : Slot ( 0 , 7 ) . Padding ( 0 , 0 , 5 , 0 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.TextJustify " , " Text Justify " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 1 , 7 ) . Padding ( 0 , 5 )
[
SNew ( SComboBox < TSharedPtr < FString > > )
. OptionsSource ( & JustificationTypeOptions )
. OnSelectionChanged ( this , & SRichTextTest : : JustificationComboBoxSelectionChanged )
. OnGenerateWidget ( this , & SRichTextTest : : MakeWidgetFromJustificationOption )
[
SNew ( STextBlock ) . Text ( this , & SRichTextTest : : JustificationGetSelectedText ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Value.Text " )
]
]
+ SGridPanel : : Slot ( 0 , 8 ) . Padding ( 0 , 0 , 5 , 0 ) . VAlign ( VAlign_Center )
[
SNew ( SRichTextBlock ) . Text ( LOCTEXT ( " RichText.LineHeight " , " Line Height " ) ) . TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Details.Name.Text " )
]
+ SGridPanel : : Slot ( 1 , 8 ) . Padding ( 0 , 5 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.1f )
. MaxValue ( 5.0f )
. MinSliderValue ( 0.1f )
. MaxSliderValue ( 5 )
. Value ( this , & SRichTextTest : : GetLineHeight )
. OnValueChanged ( this , & SRichTextTest : : SetLineHeight )
. Font ( FTestStyle : : Get ( ) . GetFontStyle ( " RichText.Interactive.Details.Value.Text " ) )
]
]
]
]
+ SHorizontalBox : : Slot ( ) . AutoWidth ( ) . HAlign ( HAlign_Center )
[
SNew ( SBox ) . WidthOverride ( 800 ) . HAlign ( HAlign_Center )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Right ) . VAlign ( VAlign_Center ) . Padding ( 5 , 5 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( ) . MaxWidth ( 300 )
[
SNew ( SSearchBox )
. OnTextChanged ( this , & SRichTextTest : : OnTextChanged )
]
]
+ SVerticalBox : : Slot ( )
[
SNew ( SBorder )
. Padding ( 5.0f )
. BorderImage ( FCoreStyle : : Get ( ) . GetBrush ( " BoxShadow " ) )
[
SNew ( SBorder ) . Padding ( 2 ) . HAlign ( HAlign_Center )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Background " ) )
[
SAssignNew ( InteractiveRichText , SRichTextBlock )
2014-08-07 06:46:11 -04:00
. Text ( RichTextHelper : : GetAliceInWonderland ( ) )
2014-03-14 14:13:41 -04:00
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Interactive.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. Margin ( this , & SRichTextTest : : GetRichTextMargin )
. WrapTextAt ( this , & SRichTextTest : : GetRichTextWrapWidthValue )
. Justification ( this , & SRichTextTest : : JustificationGetSelected )
. LineHeightPercentage ( this , & SRichTextTest : : GetLineHeight )
2014-08-07 06:46:11 -04:00
+ SRichTextBlock : : HyperlinkDecorator ( TEXT ( " browser " ) , FSlateHyperlinkRun : : FOnClick : : CreateStatic ( & RichTextHelper : : OnBrowserLinkClicked , AsShared ( ) ) )
2014-03-14 14:13:41 -04:00
]
]
]
]
]
+ SHorizontalBox : : Slot ( ) . FillWidth ( 1.0f )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 0 )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
. Padding ( 0 )
[
SNew ( SRichTextBlock )
. Text ( LOCTEXT ( " RichTextHeader02 " , " Here's a bunch of text just to <RichText.Tagline.TextHighlight>measure performance</>. " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Tagline.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 800 )
. Justification ( ETextJustify : : Center )
. Margin ( FMargin ( 20 ) )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 20 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( SRichTextBlock )
2014-08-07 06:46:11 -04:00
. Text ( RichTextHelper : : GetTheWarOfTheWorlds_Part1 ( ) )
2014-03-14 14:13:41 -04:00
. TextStyle ( FTestStyle : : Get ( ) , " TheWarOfTheWorlds.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 266 )
]
+ SHorizontalBox : : Slot ( ) . Padding ( 25 , 0 )
[
SNew ( SRichTextBlock )
2014-08-07 06:46:11 -04:00
. Text ( RichTextHelper : : GetTheWarOfTheWorlds_Part2 ( ) )
2014-03-14 14:13:41 -04:00
. TextStyle ( FTestStyle : : Get ( ) , " TheWarOfTheWorlds.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 266 )
]
+ SHorizontalBox : : Slot ( )
[
SNew ( SRichTextBlock )
2014-08-07 06:46:11 -04:00
. Text ( RichTextHelper : : GetTheWarOfTheWorlds_Part3 ( ) )
2014-03-14 14:13:41 -04:00
. TextStyle ( FTestStyle : : Get ( ) , " TheWarOfTheWorlds.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 266 )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 0 )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
. Padding ( 0 )
[
SNew ( SRichTextBlock )
. Text ( LOCTEXT ( " RichTextHeader03 " , " Here's a bunch of text in rainbow colors! \n <RichText.Tagline.SubtleText>Also to measure </><RichText.Tagline.SubtleTextHighlight>performance</><RichText.Tagline.SubtleText>, why else?</> " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Tagline.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 800 )
. Justification ( ETextJustify : : Center )
. Margin ( FMargin ( 20 ) )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 20 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( SRichTextBlock )
2014-08-07 06:46:11 -04:00
. Text ( RichTextHelper : : GetAroundTheWorldIn80Days_Rainbow ( ) )
2014-03-14 14:13:41 -04:00
. TextStyle ( FTestStyle : : Get ( ) , " Rainbow.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 600 )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 0 )
[
SNew ( SBox )
. WidthOverride ( 800 )
. HeightOverride ( 200 )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
. Padding ( 0 )
[
SNew ( SRichTextBlock )
. Text ( LOCTEXT ( " RichTextHeader04 " , " That's all <RichText.Tagline.TextHighlight>folks</>. Hope you enjoyed this page about <RichText.Tagline.TextHighlight>SRichTextBlock</>! " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Tagline.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. WrapTextAt ( 800 )
. Justification ( ETextJustify : : Center )
. Margin ( FMargin ( 20 ) )
]
]
]
]
]
] ;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
FSlateWidgetRun : : FWidgetRunInfo OnCreateWidgetDecoratorWidget ( const FTextRunInfo & RunInfo , const ISlateStyle * Style ) const
{
TSharedRef < SWidget > Widget = SNew ( SButton ) . OnClicked ( this , & SRichTextTest : : OnWidgetDecoratorClicked )
. ToolTip (
SNew ( SToolTip )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
[
SNew ( SRichTextBlock )
. Text ( LOCTEXT ( " WidgetDecoratorTooltip " , " With the <RichText.TextHighlight>Widget Decorator</> you can <RichText.TextHighlight>inline any widget</> in your text! " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
]
)
[
SNew ( SRichTextBlock )
. Text ( RunInfo . Content )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
] ;
TSharedRef < FSlateFontMeasure > FontMeasure = FSlateApplication : : Get ( ) . GetRenderer ( ) - > GetFontMeasureService ( ) ;
2014-10-30 17:05:23 -04:00
int16 Baseline = FontMeasure - > GetBaseline ( FTestStyle : : Get ( ) . GetWidgetStyle < FTextBlockStyle > ( " RichText.Text " ) . Font ) ;
2014-03-14 14:13:41 -04:00
return FSlateWidgetRun : : FWidgetRunInfo ( Widget , Baseline - 3 ) ;
}
FReply OnWidgetDecoratorClicked ( )
{
2014-08-07 06:46:11 -04:00
RichTextHelper : : SpawnProClickerPopUp ( LOCTEXT ( " WidgetDecoratorExamplePopUpMessage " , " I don't really do anything. <RichText.Tagline.TextHighlight>Sorry</>. " ) , AsShared ( ) ) ;
2014-03-14 14:13:41 -04:00
return FReply : : Handled ( ) ;
}
void OnHyperlinkDecoratorClicked ( const FSlateHyperlinkRun : : FMetadata & Metadata )
{
2014-08-07 06:46:11 -04:00
RichTextHelper : : SpawnProClickerPopUp ( LOCTEXT ( " HyperlinkDecoratorExamplePopUpMessage " , " You're a <RichText.Tagline.TextHighlight>pro</> at clicking! " ) , AsShared ( ) ) ;
2014-03-14 14:13:41 -04:00
}
void OnTextChanged ( const FText & NewText )
{
InteractiveRichText - > SetHighlightText ( NewText ) ;
}
float GetLeftMargin ( ) const
{
return Margin . Left ;
}
void SetLeftMargin ( float Value )
{
Margin . Left = Value ;
}
float GetTopMargin ( ) const
{
return Margin . Top ;
}
void SetTopMargin ( float Value )
{
Margin . Top = Value ;
}
float GetRightMargin ( ) const
{
return Margin . Right ;
}
void SetRightMargin ( float Value )
{
Margin . Right = Value ;
}
float GetBottomMargin ( ) const
{
return Margin . Bottom ;
}
void SetBottomMargin ( float Value )
{
Margin . Bottom = Value ;
}
FMargin GetRichTextMargin ( ) const
{
return Margin ;
}
TSharedRef < SWidget > MakeWidgetFromJustificationOption ( TSharedPtr < FString > Value )
{
return SNew ( STextBlock ) . Text ( JustificationGetText ( Value ) ) ;
}
void JustificationComboBoxSelectionChanged ( TSharedPtr < FString > Value , ESelectInfo : : Type SelectInfo )
{
if ( * Value = = TEXT ( " Left " ) )
{
Justification = ETextJustify : : Left ;
}
else if ( * Value = = TEXT ( " Center " ) )
{
Justification = ETextJustify : : Center ;
}
else if ( * Value = = TEXT ( " Right " ) )
{
Justification = ETextJustify : : Right ;
}
}
FText JustificationGetSelectedText ( ) const
{
FText Text ;
if ( Justification = = ETextJustify : : Left )
{
Text = LOCTEXT ( " TextJustify::Left " , " Left " ) ;
}
else if ( Justification = = ETextJustify : : Center )
{
Text = LOCTEXT ( " TextJustify::Center " , " Center " ) ;
}
else if ( Justification = = ETextJustify : : Right )
{
Text = LOCTEXT ( " TextJustify::Right " , " Right " ) ;
}
return Text ;
}
ETextJustify : : Type JustificationGetSelected ( ) const
{
return Justification ;
}
FText JustificationGetText ( TSharedPtr < FString > Value ) const
{
FText Text ;
if ( * Value = = TEXT ( " Left " ) )
{
Text = LOCTEXT ( " TextJustify::Left " , " Left " ) ;
}
else if ( * Value = = TEXT ( " Center " ) )
{
Text = LOCTEXT ( " TextJustify::Center " , " Center " ) ;
}
else if ( * Value = = TEXT ( " Right " ) )
{
Text = LOCTEXT ( " TextJustify::Right " , " Right " ) ;
}
return Text ;
}
float GetWrapWidth ( ) const
{
return WrapWidth ;
}
void SetWrapWidth ( float Value )
{
WrapWidth = Value ;
}
2014-12-10 14:24:09 -05:00
ECheckBoxState ShouldWrapRichText ( ) const
2014-03-14 14:13:41 -04:00
{
2014-12-10 14:24:09 -05:00
return bShouldWrap ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
2014-03-14 14:13:41 -04:00
}
2014-12-10 14:24:09 -05:00
void ShouldWrapRichTextChanged ( ECheckBoxState CheckState )
2014-03-14 14:13:41 -04:00
{
2014-12-10 14:24:09 -05:00
bShouldWrap = CheckState = = ECheckBoxState : : Checked ? true : false ;
2014-03-14 14:13:41 -04:00
}
float GetRichTextWrapWidthValue ( ) const
{
if ( bShouldWrap )
{
return WrapWidth ;
}
return 0 ;
}
float GetLineHeight ( ) const
{
return LineHeight ;
}
void SetLineHeight ( float NewValue )
{
LineHeight = NewValue ;
}
private :
float WrapWidth ;
bool bShouldWrap ;
FMargin Margin ;
ETextJustify : : Type Justification ;
TArray < TSharedPtr < FString > > JustificationTypeOptions ;
float LineHeight ;
TSharedPtr < SRichTextBlock > InteractiveRichText ;
} ;
2014-07-23 08:23:21 -04:00
# endif //WITH_FANCY_TEXT
2014-03-14 14:13:41 -04:00
class STextEditTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( STextEditTest ) { }
SLATE_END_ARGS ( )
/**
* Construct the widget
*
* @ param InArgs Declaration from which to construct the widget
*/
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct ( const FArguments & InArgs )
{
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2888098 on 3/1/2016 by Nick.Darnell
Adding back the SetWidgetToFocusOnActivate call and deprecating it. Will need to also do this in 4.11.
#lockdown Nick.Penwarden
Change 2851669 on 2016/02/01 by Alexis.Matte
#jira UE-25928
Skeletal mesh import now support _skinXX that are not sequential.
Static mesh was already supporting non sequential _skinxx ordering
#codereview nick.darnell
Change 2851672 on 2016/02/01 by Alexis.Matte
#jira UE-25971
The proxy camera mesh is now properly reset to zero
#codereview nick.darnell
Change 2851675 on 2016/02/01 by Alexis.Matte
#jira UE-25525
Update the tooltips
#codereview nick.darnell
Change 2851764 on 2016/02/01 by Alexis.Matte
#jira UE-25595
The fbx plus and minus icons are now brighter
#codereview nick.darnell
Change 2852116 on 2016/02/01 by Bob.Tellez
#UE4 Submitting pull request 2013 from GitHub (Pull request 2013). Thanks for the fix hoelzl!
Fix file selection when reimporting curve from moved CSV file
When reimporting a data curve after moving the CSV file from which it was generated, the file selection dialog does not present an option to select CVS files. This patch fixes the issue by assigning the correct 'SupportedClass' value for `UReimportCurveFactory` instances.
#codereview Nick.Darnell
#JIRA UE-26247
#2013
Change 2852375 on 2016/02/02 by Richard.TalbotWatkin
Spline component improvements: added facility to not restore component instance cache after the construction script has run, so the points can act as inputs to the construction script. Created a new property bInputSplinePointsToConstructionScript for that. Added SetUpVectorAtSplinePoint, and corrected some bugs.
#jira UE-24931 - Set Location at Spline Point doesn't do anything
Change 2852726 on 2016/02/02 by Richard.TalbotWatkin
Fixed FPropertyChangedEvent::GetArrayIndex when called from PostEditChangeProperty.
#jira UE-25316 - PropertyChangedEvent.GetArrayIndex broken
#codereview Robert.Manuszewski
Change 2853152 on 2016/02/02 by Jamie.Dale
Fixed multi-line editable texts not updating their font when changed in UMG
Also made all the SetStyle functions use the default if they're passed null (to match SEditableTextBox), and tidied up some of the property panel layout when editing styles.
#codereview Chris.Wood
Change 2853220 on 2016/02/02 by Alexis.Matte
#jira UE-26303
We now apply the scene option transform to the vertex of meshes instead of the root node of the scene. This allow re-alignment of the mesh to go with animation.
#codereview nick.darnell
Change 2853282 on 2016/02/02 by Alexis.Matte
Back out changelist 2853220
Change 2854211 on 2016/02/03 by Nick.Darnell
Widget Reflector - Limit the minimum scale that can be applied to something more reasonable 50%, instead of 10%.
Change 2854216 on 2016/02/03 by Nick.Darnell
Scene Viewport - The scene viewport handles application scale better now, allowing click locations to be interepreted correctly and transformed into pixel hit location, rather than local space widget location, which may not match.
Change 2854220 on 2016/02/03 by Nick.Darnell
Slate - Allowing mousewheel or gesture to be routed directly for a widget path like has been done for other mouse events, this permits more kinds of mouse like actions in a VR environment onto widgets in the scene. (not actually hooked up to do it, but this now permits it at the slate level to be done correctly).
Change 2854449 on 2016/02/03 by Alexis.Matte
-Fix the fbx import options, for the scene transform value that was not apply correctly
-Add an inspector on the scene import option in the reimport dialog
Change 2855659 on 2016/02/04 by Alexis.Matte
-Fix the bake pivot when there is a hierarchy, we now accumulate the pivot effect in the hierarchy to place the object at the correct place.
#codereview nick.darnell
Change 2855922 on 2016/02/04 by Alexis.Matte
#jira UE-26303
The animation is now align with the imported skeletal mesh, the bakepivot is also supported
#codereview nick.darnell
Change 2856989 on 2016/02/05 by Jamie.Dale
Some improvements to the source code loc gatherer
* We now strip any comments out of any pre-processor tokens before we start handling them.
* Fixed a case where "#if defined" and "#elif defined" would parse incorrectly.
* Fixed a case where "#define LOCTEXT_NAMESPACE" and "#define LOC_DEFINE_REGION" may not be paired correctly with their corresponding "#undef".
[CL 2888106 by Nick Darnell in Main branch]
2016-03-01 15:17:24 -05:00
bIsPassword = true ;
2014-03-14 14:13:41 -04:00
InlineEditableText = LOCTEXT ( " TestingInlineEditableTextBlock " , " Testing inline editable text block! " ) ;
Animation = FCurveSequence ( 0 , 5 ) ;
---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.
While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
- Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.
- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
- Examples include animation, async operations that update periodically, progress updates, loading bars, etc.
- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.
- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
- There are THREE ways to unregister an active tick:
1. Return EActiveTickReturnType::StopTicking from the active tick function
2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
3. Destroy the widget responsible for the active tick
- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
- The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)
- The FCurveSequence API has been updated to work with the active tick system
- Playing a curve sequence now requires that you pass the widget being animated by the sequence
- The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
- GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.
[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
Animation . Play ( this - > AsShared ( ) , true ) ;
2014-03-14 14:13:41 -04:00
this - > ChildSlot
[
SNew ( SScrollBox )
+ SScrollBox : : Slot ( )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 5 )
[
SAssignNew ( EditableText , SEditableText )
. Text ( LOCTEXT ( " TestingTextControl " , " Testing editable text control (no box) " ) )
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Regular.ttf " ) , 12 ) )
. HintText ( LOCTEXT ( " TestingTextControlHint " , " Hint Text " ) )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 5 )
[
SNew ( SEditableTextBox )
. Text ( LOCTEXT ( " TestingReadOnlyTextBox " , " Read only editable text box (with tool tip!) " ) )
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Regular.ttf " ) , 20 ) )
. IsReadOnly ( true )
. ToolTipText ( LOCTEXT ( " TestingReadOnlyTextBox_Tooltip " , " Testing tool tip for editable text! " ) )
. HintText ( LOCTEXT ( " TestingReadOnlyTextBoxHint " , " Hint Text " ) )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 5 )
[
SNew ( SEditableTextBox )
. Text ( LOCTEXT ( " TestingLongText " , " Here is an editable text box with a very long initial string. Useful to test scrolling. Remember, this editable text box has many features, such as cursor navigation, text selection with either the mouse or keyboard, and cut, copy and paste. You can even undo and redo just how you'd expect to. " ) )
2014-06-09 11:14:37 -04:00
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Bold.ttf " ) , 13 ) )
2014-03-14 14:13:41 -04:00
. HintText ( LOCTEXT ( " TestingLongTextHint " , " Hint Text " ) )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 5 )
[
SNew ( SEditableTextBox )
. Text ( LOCTEXT ( " TestingBigTextBigMargin " , " Big text, big margin! " ) )
2014-06-09 11:14:37 -04:00
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Bold.ttf " ) , 40 ) )
2014-03-14 14:13:41 -04:00
. RevertTextOnEscape ( true )
. BackgroundColor ( this , & STextEditTest : : GetLoopingColor )
. HintText ( LOCTEXT ( " TestingBigTextMarginHint " , " Hint Text " ) )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 5 )
[
SAssignNew ( InlineEditableTextBlock , SInlineEditableTextBlock )
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Regular.ttf " ) , 12 ) )
. Text ( InlineEditableText )
. OnTextCommitted ( this , & STextEditTest : : InlineEditableTextCommited )
. ToolTipText ( LOCTEXT ( " TestingInlineEditableTextBlock_Tooltip " , " Testing tool tip for inline editable text block! " ) )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center ) . Padding ( 5 )
[
SAssignNew ( SearchBox , SSearchBox )
//.Text( LOCTEXT("TestingSearchBox", "Testing search boxes tool tip") )
2014-06-09 11:14:37 -04:00
//.Font( FSlateFontInfo( FPaths::EngineContentDir() / TEXT("Slate/Fonts/Roboto-Bold.ttf" ), 12 ) )
2014-03-14 14:13:41 -04:00
. ToolTipText ( LOCTEXT ( " TestingSearchBox_Tooltip " , " Testing search boxes " ) )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center ) . Padding ( 5 )
[
SAssignNew ( NumericInput , SEditableTextBox )
2014-06-09 11:14:37 -04:00
. Text ( LOCTEXT ( " NumericInput " , " This should be a number " ) )
2014-03-14 14:13:41 -04:00
. OnTextChanged ( this , & STextEditTest : : OnNumericInputTextChanged )
. RevertTextOnEscape ( true )
2014-06-09 11:14:37 -04:00
. HintText ( LOCTEXT ( " NumericInputHint " , " Enter a number " ) )
2014-03-14 14:13:41 -04:00
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center ) . Padding ( 5 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Center )
[
SNew ( SButton )
. Text ( LOCTEXT ( " PopupTest " , " PopUp Test " ) )
. OnClicked ( this , & STextEditTest : : LaunchPopUp_OnClicked )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . VAlign ( VAlign_Bottom ) . Padding ( 0 , 20 , 0 , 0 )
[
SAssignNew ( ErrorText , SErrorText )
]
2015-04-29 11:24:54 -04:00
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center ) . Padding ( 5 )
[
SNew ( SEditableTextBox )
. Text ( LOCTEXT ( " CustomContextMenuInput " , " This text box has a custom context menu " ) )
. RevertTextOnEscape ( true )
. HintText ( LOCTEXT ( " CustomContextMenuHint " , " Custom context menu... " ) )
. OnContextMenuOpening ( this , & STextEditTest : : OnCustomContextMenuOpening )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center ) . Padding ( 5 )
[
SNew ( SEditableTextBox )
. Text ( LOCTEXT ( " DisabledContextMenuInput " , " This text box has no context menu " ) )
. RevertTextOnEscape ( true )
. HintText ( LOCTEXT ( " DisabledContextMenuHint " , " No context menu... " ) )
. OnContextMenuOpening ( this , & STextEditTest : : OnDisabledContextMenuOpening )
]
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2888098 on 3/1/2016 by Nick.Darnell
Adding back the SetWidgetToFocusOnActivate call and deprecating it. Will need to also do this in 4.11.
#lockdown Nick.Penwarden
Change 2851669 on 2016/02/01 by Alexis.Matte
#jira UE-25928
Skeletal mesh import now support _skinXX that are not sequential.
Static mesh was already supporting non sequential _skinxx ordering
#codereview nick.darnell
Change 2851672 on 2016/02/01 by Alexis.Matte
#jira UE-25971
The proxy camera mesh is now properly reset to zero
#codereview nick.darnell
Change 2851675 on 2016/02/01 by Alexis.Matte
#jira UE-25525
Update the tooltips
#codereview nick.darnell
Change 2851764 on 2016/02/01 by Alexis.Matte
#jira UE-25595
The fbx plus and minus icons are now brighter
#codereview nick.darnell
Change 2852116 on 2016/02/01 by Bob.Tellez
#UE4 Submitting pull request 2013 from GitHub (Pull request 2013). Thanks for the fix hoelzl!
Fix file selection when reimporting curve from moved CSV file
When reimporting a data curve after moving the CSV file from which it was generated, the file selection dialog does not present an option to select CVS files. This patch fixes the issue by assigning the correct 'SupportedClass' value for `UReimportCurveFactory` instances.
#codereview Nick.Darnell
#JIRA UE-26247
#2013
Change 2852375 on 2016/02/02 by Richard.TalbotWatkin
Spline component improvements: added facility to not restore component instance cache after the construction script has run, so the points can act as inputs to the construction script. Created a new property bInputSplinePointsToConstructionScript for that. Added SetUpVectorAtSplinePoint, and corrected some bugs.
#jira UE-24931 - Set Location at Spline Point doesn't do anything
Change 2852726 on 2016/02/02 by Richard.TalbotWatkin
Fixed FPropertyChangedEvent::GetArrayIndex when called from PostEditChangeProperty.
#jira UE-25316 - PropertyChangedEvent.GetArrayIndex broken
#codereview Robert.Manuszewski
Change 2853152 on 2016/02/02 by Jamie.Dale
Fixed multi-line editable texts not updating their font when changed in UMG
Also made all the SetStyle functions use the default if they're passed null (to match SEditableTextBox), and tidied up some of the property panel layout when editing styles.
#codereview Chris.Wood
Change 2853220 on 2016/02/02 by Alexis.Matte
#jira UE-26303
We now apply the scene option transform to the vertex of meshes instead of the root node of the scene. This allow re-alignment of the mesh to go with animation.
#codereview nick.darnell
Change 2853282 on 2016/02/02 by Alexis.Matte
Back out changelist 2853220
Change 2854211 on 2016/02/03 by Nick.Darnell
Widget Reflector - Limit the minimum scale that can be applied to something more reasonable 50%, instead of 10%.
Change 2854216 on 2016/02/03 by Nick.Darnell
Scene Viewport - The scene viewport handles application scale better now, allowing click locations to be interepreted correctly and transformed into pixel hit location, rather than local space widget location, which may not match.
Change 2854220 on 2016/02/03 by Nick.Darnell
Slate - Allowing mousewheel or gesture to be routed directly for a widget path like has been done for other mouse events, this permits more kinds of mouse like actions in a VR environment onto widgets in the scene. (not actually hooked up to do it, but this now permits it at the slate level to be done correctly).
Change 2854449 on 2016/02/03 by Alexis.Matte
-Fix the fbx import options, for the scene transform value that was not apply correctly
-Add an inspector on the scene import option in the reimport dialog
Change 2855659 on 2016/02/04 by Alexis.Matte
-Fix the bake pivot when there is a hierarchy, we now accumulate the pivot effect in the hierarchy to place the object at the correct place.
#codereview nick.darnell
Change 2855922 on 2016/02/04 by Alexis.Matte
#jira UE-26303
The animation is now align with the imported skeletal mesh, the bakepivot is also supported
#codereview nick.darnell
Change 2856989 on 2016/02/05 by Jamie.Dale
Some improvements to the source code loc gatherer
* We now strip any comments out of any pre-processor tokens before we start handling them.
* Fixed a case where "#if defined" and "#elif defined" would parse incorrectly.
* Fixed a case where "#define LOCTEXT_NAMESPACE" and "#define LOC_DEFINE_REGION" may not be paired correctly with their corresponding "#undef".
[CL 2888106 by Nick Darnell in Main branch]
2016-03-01 15:17:24 -05:00
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . VAlign ( VAlign_Center ) . Padding ( 5 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SEditableTextBox )
. IsPassword ( this , & STextEditTest : : IsPassword )
. RevertTextOnEscape ( true )
. MinDesiredWidth ( 400 )
. HintText ( LOCTEXT ( " EditablePasswordHintText " , " This text box can be a password " ) )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. Padding ( FMargin ( 4 , 0 ) )
[
SNew ( SCheckBox )
. IsChecked ( this , & STextEditTest : : GetPasswordCheckState )
. OnCheckStateChanged ( this , & STextEditTest : : OnPasswordCheckStateChanged )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " PasswordCheckBoxText " , " Password? " ) )
]
]
]
2014-03-14 14:13:41 -04:00
]
] ;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
void FocusDefaultWidget ( )
{
// Set focus to the editable text, so the user doesn't have to click initially to type
FWidgetPath WidgetToFocusPath ;
FSlateApplication : : Get ( ) . GeneratePathToWidgetUnchecked ( EditableText . ToSharedRef ( ) , WidgetToFocusPath ) ;
2014-10-30 12:29:36 -04:00
FSlateApplication : : Get ( ) . SetKeyboardFocus ( WidgetToFocusPath , EFocusCause : : SetDirectly ) ;
2014-03-14 14:13:41 -04:00
}
void InlineEditableTextCommited ( const FText & NewText , ETextCommit : : Type CommitType )
{
InlineEditableText = NewText ;
InlineEditableTextBlock - > SetText ( InlineEditableText ) ;
}
void OnNumericInputTextChanged ( const FText & NewText )
{
const FText Error = ( NewText . IsNumeric ( ) )
? FText : : GetEmpty ( )
: FText : : Format ( LOCTEXT ( " NotANumberWarning " , " '{0}' is not a number " ) , NewText ) ;
ErrorText - > SetError ( Error ) ;
NumericInput - > SetError ( Error ) ;
}
2015-04-29 11:24:54 -04:00
TSharedPtr < SWidget > OnCustomContextMenuOpening ( )
{
return SNew ( SBorder )
. Padding ( 5.0f )
. BorderImage ( FCoreStyle : : Get ( ) . GetBrush ( " BoxShadow " ) )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " CustomContextMenuContent " , " This context menu content is just a text block " ) )
] ;
}
TSharedPtr < SWidget > OnDisabledContextMenuOpening ( )
{
return TSharedPtr < SWidget > ( ) ;
}
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2888098 on 3/1/2016 by Nick.Darnell
Adding back the SetWidgetToFocusOnActivate call and deprecating it. Will need to also do this in 4.11.
#lockdown Nick.Penwarden
Change 2851669 on 2016/02/01 by Alexis.Matte
#jira UE-25928
Skeletal mesh import now support _skinXX that are not sequential.
Static mesh was already supporting non sequential _skinxx ordering
#codereview nick.darnell
Change 2851672 on 2016/02/01 by Alexis.Matte
#jira UE-25971
The proxy camera mesh is now properly reset to zero
#codereview nick.darnell
Change 2851675 on 2016/02/01 by Alexis.Matte
#jira UE-25525
Update the tooltips
#codereview nick.darnell
Change 2851764 on 2016/02/01 by Alexis.Matte
#jira UE-25595
The fbx plus and minus icons are now brighter
#codereview nick.darnell
Change 2852116 on 2016/02/01 by Bob.Tellez
#UE4 Submitting pull request 2013 from GitHub (Pull request 2013). Thanks for the fix hoelzl!
Fix file selection when reimporting curve from moved CSV file
When reimporting a data curve after moving the CSV file from which it was generated, the file selection dialog does not present an option to select CVS files. This patch fixes the issue by assigning the correct 'SupportedClass' value for `UReimportCurveFactory` instances.
#codereview Nick.Darnell
#JIRA UE-26247
#2013
Change 2852375 on 2016/02/02 by Richard.TalbotWatkin
Spline component improvements: added facility to not restore component instance cache after the construction script has run, so the points can act as inputs to the construction script. Created a new property bInputSplinePointsToConstructionScript for that. Added SetUpVectorAtSplinePoint, and corrected some bugs.
#jira UE-24931 - Set Location at Spline Point doesn't do anything
Change 2852726 on 2016/02/02 by Richard.TalbotWatkin
Fixed FPropertyChangedEvent::GetArrayIndex when called from PostEditChangeProperty.
#jira UE-25316 - PropertyChangedEvent.GetArrayIndex broken
#codereview Robert.Manuszewski
Change 2853152 on 2016/02/02 by Jamie.Dale
Fixed multi-line editable texts not updating their font when changed in UMG
Also made all the SetStyle functions use the default if they're passed null (to match SEditableTextBox), and tidied up some of the property panel layout when editing styles.
#codereview Chris.Wood
Change 2853220 on 2016/02/02 by Alexis.Matte
#jira UE-26303
We now apply the scene option transform to the vertex of meshes instead of the root node of the scene. This allow re-alignment of the mesh to go with animation.
#codereview nick.darnell
Change 2853282 on 2016/02/02 by Alexis.Matte
Back out changelist 2853220
Change 2854211 on 2016/02/03 by Nick.Darnell
Widget Reflector - Limit the minimum scale that can be applied to something more reasonable 50%, instead of 10%.
Change 2854216 on 2016/02/03 by Nick.Darnell
Scene Viewport - The scene viewport handles application scale better now, allowing click locations to be interepreted correctly and transformed into pixel hit location, rather than local space widget location, which may not match.
Change 2854220 on 2016/02/03 by Nick.Darnell
Slate - Allowing mousewheel or gesture to be routed directly for a widget path like has been done for other mouse events, this permits more kinds of mouse like actions in a VR environment onto widgets in the scene. (not actually hooked up to do it, but this now permits it at the slate level to be done correctly).
Change 2854449 on 2016/02/03 by Alexis.Matte
-Fix the fbx import options, for the scene transform value that was not apply correctly
-Add an inspector on the scene import option in the reimport dialog
Change 2855659 on 2016/02/04 by Alexis.Matte
-Fix the bake pivot when there is a hierarchy, we now accumulate the pivot effect in the hierarchy to place the object at the correct place.
#codereview nick.darnell
Change 2855922 on 2016/02/04 by Alexis.Matte
#jira UE-26303
The animation is now align with the imported skeletal mesh, the bakepivot is also supported
#codereview nick.darnell
Change 2856989 on 2016/02/05 by Jamie.Dale
Some improvements to the source code loc gatherer
* We now strip any comments out of any pre-processor tokens before we start handling them.
* Fixed a case where "#if defined" and "#elif defined" would parse incorrectly.
* Fixed a case where "#define LOCTEXT_NAMESPACE" and "#define LOC_DEFINE_REGION" may not be paired correctly with their corresponding "#undef".
[CL 2888106 by Nick Darnell in Main branch]
2016-03-01 15:17:24 -05:00
bool IsPassword ( ) const
{
return bIsPassword ;
}
ECheckBoxState GetPasswordCheckState ( ) const
{
return bIsPassword ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
}
void OnPasswordCheckStateChanged ( ECheckBoxState NewState )
{
bIsPassword = NewState = = ECheckBoxState : : Checked ;
}
2014-03-14 14:13:41 -04:00
void ClearSearchBox ( )
{
SearchBox - > SetText ( FText : : GetEmpty ( ) ) ;
}
FSlateColor GetLoopingColor ( ) const
{
---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.
While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
- Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.
- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
- Examples include animation, async operations that update periodically, progress updates, loading bars, etc.
- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.
- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
- There are THREE ways to unregister an active tick:
1. Return EActiveTickReturnType::StopTicking from the active tick function
2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
3. Destroy the widget responsible for the active tick
- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
- The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)
- The FCurveSequence API has been updated to work with the active tick system
- Playing a curve sequence now requires that you pass the widget being animated by the sequence
- The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
- GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.
[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
return FLinearColor ( 360 * Animation . GetLerp ( ) , 0.8f , 1.0f ) . HSVToLinearRGB ( ) ;
2014-03-14 14:13:41 -04:00
}
FReply LaunchPopUp_OnClicked ( )
{
FText DefaultText ( LOCTEXT ( " EnterThreeChars " , " Enter a three character string " ) ) ;
TSharedRef < STextEntryPopup > TextEntry = SAssignNew ( PopupInput , STextEntryPopup )
. Label ( DefaultText )
. ClearKeyboardFocusOnCommit ( false )
. OnTextChanged ( this , & STextEditTest : : OnPopupTextChanged )
. OnTextCommitted ( this , & STextEditTest : : OnPopupTextCommitted )
. HintText ( DefaultText ) ;
2015-06-05 20:19:33 -04:00
PopupMenu = FSlateApplication : : Get ( ) . PushMenu (
2014-03-14 14:13:41 -04:00
AsShared ( ) , // Parent widget should be TestSyuite, not the menu thats open or it will be closed when the menu is dismissed
2015-06-05 20:19:33 -04:00
FWidgetPath ( ) ,
2014-03-14 14:13:41 -04:00
TextEntry ,
FSlateApplication : : Get ( ) . GetCursorPos ( ) , // summon location
FPopupTransitionEffect ( FPopupTransitionEffect : : TypeInPopup )
) ;
return FReply : : Handled ( ) ;
}
void OnPopupTextChanged ( const FText & NewText )
{
const FText Error = ( NewText . ToString ( ) . Len ( ) = = 3 )
? FText : : GetEmpty ( )
: FText : : Format ( LOCTEXT ( " ThreeCharsError " , " '{0}' is not three characters " ) , NewText ) ;
ErrorText - > SetError ( Error ) ;
PopupInput - > SetError ( Error ) ;
}
void OnPopupTextCommitted ( const FText & NewText , ETextCommit : : Type CommitInfo )
{
if ( ( CommitInfo = = ETextCommit : : OnEnter ) & & ( NewText . ToString ( ) . Len ( ) = = 3 ) )
{
// manually close menu on validated committal
2015-06-05 20:19:33 -04:00
if ( PopupMenu . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
2015-06-05 20:19:33 -04:00
PopupMenu . Pin ( ) - > Dismiss ( ) ;
2014-03-14 14:13:41 -04:00
}
}
}
protected :
TSharedPtr < SEditableText > EditableText ;
TSharedPtr < SEditableTextBox > SearchBox ;
FCurveSequence Animation ;
TSharedPtr < SErrorText > ErrorText ;
TSharedPtr < SEditableTextBox > NumericInput ;
2014-07-23 08:23:21 -04:00
# if WITH_FANCY_TEXT
2014-03-14 14:13:41 -04:00
TSharedPtr < SRichTextBlock > RichTextBlock ;
2014-07-23 08:23:21 -04:00
# endif //WITH_FANCY_TEXT
2014-03-14 14:13:41 -04:00
TSharedPtr < STextEntryPopup > PopupInput ;
2015-06-05 20:19:33 -04:00
TWeakPtr < IMenu > PopupMenu ;
2014-03-14 14:13:41 -04:00
TSharedPtr < SInlineEditableTextBlock > InlineEditableTextBlock ;
FText InlineEditableText ;
2014-06-09 11:14:37 -04:00
Copying //UE4/Dev-Editor to Dev-Main (//UE4/Dev-Main)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2888098 on 3/1/2016 by Nick.Darnell
Adding back the SetWidgetToFocusOnActivate call and deprecating it. Will need to also do this in 4.11.
#lockdown Nick.Penwarden
Change 2851669 on 2016/02/01 by Alexis.Matte
#jira UE-25928
Skeletal mesh import now support _skinXX that are not sequential.
Static mesh was already supporting non sequential _skinxx ordering
#codereview nick.darnell
Change 2851672 on 2016/02/01 by Alexis.Matte
#jira UE-25971
The proxy camera mesh is now properly reset to zero
#codereview nick.darnell
Change 2851675 on 2016/02/01 by Alexis.Matte
#jira UE-25525
Update the tooltips
#codereview nick.darnell
Change 2851764 on 2016/02/01 by Alexis.Matte
#jira UE-25595
The fbx plus and minus icons are now brighter
#codereview nick.darnell
Change 2852116 on 2016/02/01 by Bob.Tellez
#UE4 Submitting pull request 2013 from GitHub (Pull request 2013). Thanks for the fix hoelzl!
Fix file selection when reimporting curve from moved CSV file
When reimporting a data curve after moving the CSV file from which it was generated, the file selection dialog does not present an option to select CVS files. This patch fixes the issue by assigning the correct 'SupportedClass' value for `UReimportCurveFactory` instances.
#codereview Nick.Darnell
#JIRA UE-26247
#2013
Change 2852375 on 2016/02/02 by Richard.TalbotWatkin
Spline component improvements: added facility to not restore component instance cache after the construction script has run, so the points can act as inputs to the construction script. Created a new property bInputSplinePointsToConstructionScript for that. Added SetUpVectorAtSplinePoint, and corrected some bugs.
#jira UE-24931 - Set Location at Spline Point doesn't do anything
Change 2852726 on 2016/02/02 by Richard.TalbotWatkin
Fixed FPropertyChangedEvent::GetArrayIndex when called from PostEditChangeProperty.
#jira UE-25316 - PropertyChangedEvent.GetArrayIndex broken
#codereview Robert.Manuszewski
Change 2853152 on 2016/02/02 by Jamie.Dale
Fixed multi-line editable texts not updating their font when changed in UMG
Also made all the SetStyle functions use the default if they're passed null (to match SEditableTextBox), and tidied up some of the property panel layout when editing styles.
#codereview Chris.Wood
Change 2853220 on 2016/02/02 by Alexis.Matte
#jira UE-26303
We now apply the scene option transform to the vertex of meshes instead of the root node of the scene. This allow re-alignment of the mesh to go with animation.
#codereview nick.darnell
Change 2853282 on 2016/02/02 by Alexis.Matte
Back out changelist 2853220
Change 2854211 on 2016/02/03 by Nick.Darnell
Widget Reflector - Limit the minimum scale that can be applied to something more reasonable 50%, instead of 10%.
Change 2854216 on 2016/02/03 by Nick.Darnell
Scene Viewport - The scene viewport handles application scale better now, allowing click locations to be interepreted correctly and transformed into pixel hit location, rather than local space widget location, which may not match.
Change 2854220 on 2016/02/03 by Nick.Darnell
Slate - Allowing mousewheel or gesture to be routed directly for a widget path like has been done for other mouse events, this permits more kinds of mouse like actions in a VR environment onto widgets in the scene. (not actually hooked up to do it, but this now permits it at the slate level to be done correctly).
Change 2854449 on 2016/02/03 by Alexis.Matte
-Fix the fbx import options, for the scene transform value that was not apply correctly
-Add an inspector on the scene import option in the reimport dialog
Change 2855659 on 2016/02/04 by Alexis.Matte
-Fix the bake pivot when there is a hierarchy, we now accumulate the pivot effect in the hierarchy to place the object at the correct place.
#codereview nick.darnell
Change 2855922 on 2016/02/04 by Alexis.Matte
#jira UE-26303
The animation is now align with the imported skeletal mesh, the bakepivot is also supported
#codereview nick.darnell
Change 2856989 on 2016/02/05 by Jamie.Dale
Some improvements to the source code loc gatherer
* We now strip any comments out of any pre-processor tokens before we start handling them.
* Fixed a case where "#if defined" and "#elif defined" would parse incorrectly.
* Fixed a case where "#define LOCTEXT_NAMESPACE" and "#define LOC_DEFINE_REGION" may not be paired correctly with their corresponding "#undef".
[CL 2888106 by Nick Darnell in Main branch]
2016-03-01 15:17:24 -05:00
bool bIsPassword ;
2014-03-14 14:13:41 -04:00
} ;
2014-08-07 06:46:11 -04:00
# if WITH_FANCY_TEXT
/**
* This is used in conjunction with the TextStyle decorator to allow arbitrary styling of text within a rich - text editor
* This struct defines a set of known font families , as well as providing some utility functions for converting the text style to and from a text layout run
*/
struct FTextStyles
{
/** Flags controlling which TTF or OTF font should be picked from the given font family */
struct EFontStyle
{
typedef uint8 Flags ;
enum Flag
{
Regular = 0 ,
Bold = 1 < < 0 ,
Italic = 1 < < 1 ,
} ;
} ;
/** This struct defines a font family, which combines multiple TTF or OTF fonts into a single group, allowing text to be styled as bold or italic */
struct FFontFamily
{
FFontFamily ( FText InDisplayName , FName InFamilyName , FName InRegularFont , FName InBoldFont , FName InItalicFont , FName InBoldItalicFont )
: DisplayName ( InDisplayName )
, FamilyName ( InFamilyName )
, RegularFont ( InRegularFont )
, BoldFont ( InBoldFont )
, ItalicFont ( InItalicFont )
, BoldItalicFont ( InBoldItalicFont )
{
}
/** Name used for this font family in the UI */
FText DisplayName ;
/** Named used to identify this family from the TextStyle decorator */
FName FamilyName ;
/** File paths to the fonts on disk */
FName RegularFont ;
FName BoldFont ;
FName ItalicFont ;
FName BoldItalicFont ;
} ;
/** Convert the given text style into run meta-information, so that valid source rich-text formatting can be generated for it */
2016-04-07 16:16:52 -04:00
static FRunInfo CreateRunInfo ( const TSharedPtr < FFontFamily > & InFontFamily , const uint16 InFontSize , const EFontStyle : : Flags InFontStyle , const FLinearColor & InFontColor )
2014-08-07 06:46:11 -04:00
{
FString FontStyleString ;
if ( InFontStyle = = EFontStyle : : Regular )
{
FontStyleString = TEXT ( " Regular " ) ;
}
else
{
if ( InFontStyle & EFontStyle : : Bold )
{
FontStyleString + = " Bold " ;
}
if ( InFontStyle & EFontStyle : : Italic )
{
FontStyleString + = " Italic " ;
}
}
FRunInfo RunInfo ( TEXT ( " TextStyle " ) ) ;
RunInfo . MetaData . Add ( TEXT ( " FontFamily " ) , InFontFamily - > FamilyName . ToString ( ) ) ;
RunInfo . MetaData . Add ( TEXT ( " FontSize " ) , FString : : FromInt ( InFontSize ) ) ;
RunInfo . MetaData . Add ( TEXT ( " FontStyle " ) , FontStyleString ) ;
RunInfo . MetaData . Add ( TEXT ( " FontColor " ) , InFontColor . ToString ( ) ) ;
return RunInfo ;
}
/** Explode some run meta-information back out into its component text style parts */
2016-04-07 16:16:52 -04:00
void ExplodeRunInfo ( const FRunInfo & InRunInfo , TSharedPtr < FFontFamily > & OutFontFamily , uint16 & OutFontSize , EFontStyle : : Flags & OutFontStyle , FLinearColor & OutFontColor ) const
2014-08-07 06:46:11 -04:00
{
check ( AvailableFontFamilies . Num ( ) ) ;
const FString * const FontFamilyString = InRunInfo . MetaData . Find ( TEXT ( " FontFamily " ) ) ;
if ( FontFamilyString )
{
OutFontFamily = FindFontFamily ( FName ( * * FontFamilyString ) ) ;
}
if ( ! OutFontFamily . IsValid ( ) )
{
OutFontFamily = AvailableFontFamilies [ 0 ] ;
}
OutFontSize = 11 ;
const FString * const FontSizeString = InRunInfo . MetaData . Find ( TEXT ( " FontSize " ) ) ;
if ( FontSizeString )
{
2016-04-07 16:16:52 -04:00
OutFontSize = static_cast < uint16 > ( FPlatformString : : Atoi ( * * FontSizeString ) ) ;
2014-08-07 06:46:11 -04:00
}
OutFontStyle = EFontStyle : : Regular ;
const FString * const FontStyleString = InRunInfo . MetaData . Find ( TEXT ( " FontStyle " ) ) ;
if ( FontStyleString )
{
if ( * FontStyleString = = TEXT ( " Bold " ) )
{
OutFontStyle = EFontStyle : : Bold ;
}
else if ( * FontStyleString = = TEXT ( " Italic " ) )
{
OutFontStyle = EFontStyle : : Italic ;
}
else if ( * FontStyleString = = TEXT ( " BoldItalic " ) )
{
OutFontStyle = EFontStyle : : Bold | EFontStyle : : Italic ;
}
}
OutFontColor = FLinearColor : : Black ;
const FString * const FontColorString = InRunInfo . MetaData . Find ( TEXT ( " FontColor " ) ) ;
if ( FontColorString & & ! OutFontColor . InitFromString ( * FontColorString ) )
{
OutFontColor = FLinearColor : : Black ;
}
}
/** Convert the given text style into a text block style for use by Slate */
2016-04-07 16:16:52 -04:00
static FTextBlockStyle CreateTextBlockStyle ( const TSharedPtr < FFontFamily > & InFontFamily , const uint16 InFontSize , const EFontStyle : : Flags InFontStyle , const FLinearColor & InFontColor )
2014-08-07 06:46:11 -04:00
{
FName FontName = InFontFamily - > RegularFont ;
if ( ( InFontStyle & EFontStyle : : Bold ) & & ( InFontStyle & EFontStyle : : Italic ) )
{
FontName = InFontFamily - > BoldItalicFont ;
}
else if ( InFontStyle & EFontStyle : : Bold )
{
FontName = InFontFamily - > BoldFont ;
}
else if ( InFontStyle & EFontStyle : : Italic )
{
FontName = InFontFamily - > ItalicFont ;
}
FTextBlockStyle TextBlockStyle ;
TextBlockStyle . SetFontName ( FontName ) ;
TextBlockStyle . SetFontSize ( InFontSize ) ;
TextBlockStyle . SetColorAndOpacity ( InFontColor ) ;
return TextBlockStyle ;
}
/** Convert the given run meta-information into a text block style for use by Slate */
FTextBlockStyle CreateTextBlockStyle ( const FRunInfo & InRunInfo ) const
{
TSharedPtr < FFontFamily > FontFamily ;
2016-04-07 16:16:52 -04:00
uint16 FontSize ;
2014-08-07 06:46:11 -04:00
EFontStyle : : Flags FontStyle ;
FLinearColor FontColor ;
ExplodeRunInfo ( InRunInfo , FontFamily , FontSize , FontStyle , FontColor ) ;
return CreateTextBlockStyle ( FontFamily , FontSize , FontStyle , FontColor ) ;
}
/** Try and find a font family with the given name */
TSharedPtr < FFontFamily > FindFontFamily ( const FName InFamilyName ) const
{
const TSharedPtr < FFontFamily > * const FoundFontFamily = AvailableFontFamilies . FindByPredicate ( [ InFamilyName ] ( TSharedPtr < FFontFamily > & Entry ) - > bool
{
return Entry - > FamilyName = = InFamilyName ;
} ) ;
return ( FoundFontFamily ) ? * FoundFontFamily : nullptr ;
}
TArray < TSharedPtr < FFontFamily > > AvailableFontFamilies ;
} ;
/**
* This is a custom decorator used to allow arbitrary styling of text within a rich - text editor
* This is required since normal text styling can only work with known styles from a given Slate style - set
*/
2014-09-27 23:43:07 -04:00
class FTextStyleDecoratorTest : public ITextDecorator
2014-08-07 06:46:11 -04:00
{
public :
2014-09-27 23:43:07 -04:00
static TSharedRef < FTextStyleDecoratorTest > Create ( FTextStyles * const InTextStyles )
2014-08-07 06:46:11 -04:00
{
2014-09-27 23:43:07 -04:00
return MakeShareable ( new FTextStyleDecoratorTest ( InTextStyles ) ) ;
2014-08-07 06:46:11 -04:00
}
2014-09-27 23:43:07 -04:00
virtual ~ FTextStyleDecoratorTest ( )
2014-08-07 06:46:11 -04:00
{
}
virtual bool Supports ( const FTextRunParseResults & RunParseResult , const FString & Text ) const override
{
return ( RunParseResult . Name = = TEXT ( " TextStyle " ) ) ;
}
2014-08-14 19:59:24 -04:00
virtual TSharedRef < ISlateRun > Create ( const TSharedRef < FTextLayout > & TextLayout , const FTextRunParseResults & RunParseResult , const FString & OriginalText , const TSharedRef < FString > & InOutModelText , const ISlateStyle * Style ) override
2014-08-07 06:46:11 -04:00
{
FRunInfo RunInfo ( RunParseResult . Name ) ;
for ( const TPair < FString , FTextRange > & Pair : RunParseResult . MetaData )
{
RunInfo . MetaData . Add ( Pair . Key , OriginalText . Mid ( Pair . Value . BeginIndex , Pair . Value . EndIndex - Pair . Value . BeginIndex ) ) ;
}
FTextRange ModelRange ;
ModelRange . BeginIndex = InOutModelText - > Len ( ) ;
* InOutModelText + = OriginalText . Mid ( RunParseResult . ContentRange . BeginIndex , RunParseResult . ContentRange . EndIndex - RunParseResult . ContentRange . BeginIndex ) ;
ModelRange . EndIndex = InOutModelText - > Len ( ) ;
return FSlateTextRun : : Create ( RunInfo , InOutModelText , TextStyles - > CreateTextBlockStyle ( RunInfo ) , ModelRange ) ;
}
private :
2014-09-27 23:43:07 -04:00
FTextStyleDecoratorTest ( FTextStyles * const InTextStyles )
2014-08-07 06:46:11 -04:00
: TextStyles ( InTextStyles )
{
}
FTextStyles * TextStyles ;
} ;
class SRichTextEditTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SRichTextEditTest ) { }
SLATE_END_ARGS ( )
/**
* Construct the widget
*
* @ param InArgs Declaration from which to construct the widget
*/
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct ( const FArguments & InArgs )
{
// Define and add the "Roboto" font family
TextStyles . AvailableFontFamilies . Emplace ( MakeShareable ( new FTextStyles : : FFontFamily (
LOCTEXT ( " RobotoFontFamily " , " Roboto " ) ,
TEXT ( " Roboto " ) ,
FName ( * ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Regular.ttf " ) ) ) ,
FName ( * ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Bold.ttf " ) ) ) ,
FName ( * ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Testing/Fonts/Roboto-Italic.ttf " ) ) ) ,
FName ( * ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Testing/Fonts/Roboto-BoldItalic.ttf " ) ) )
) ) ) ;
// Set some sensible defaults (these also match the default text style of "RichText.Editor.Text"
ActiveFontFamily = TextStyles . AvailableFontFamilies [ 0 ] ;
FontSize = 11 ;
FontStyle = FTextStyles : : EFontStyle : : Regular ;
FontColor = FLinearColor : : Black ;
// Define the example text
// Both of our demo editors display this same text, but the text marshallers display it differently
RichEditableText = FText : : FromString (
TEXT ( " <TextStyle FontFamily= \" Roboto \" FontSize= \" 11 \" FontStyle= \" Regular \" FontColor= \" (R=0.000000,G=0.000000,B=0.000000,A=1.000000) \" >This is some regular text!</> " )
TEXT ( " \n " )
TEXT ( " <TextStyle FontFamily= \" Roboto \" FontSize= \" 11 \" FontStyle= \" Italic \" FontColor= \" (R=0.000000,G=0.000000,B=0.000000,A=1.000000) \" >This is some italic text!</> " )
TEXT ( " \n " )
TEXT ( " <TextStyle FontFamily= \" Roboto \" FontSize= \" 11 \" FontStyle= \" Bold \" FontColor= \" (R=0.000000,G=0.000000,B=0.000000,A=1.000000) \" >This is some bold text!</> " )
TEXT ( " \n " )
TEXT ( " <TextStyle FontFamily= \" Roboto \" FontSize= \" 11 \" FontStyle= \" BoldItalic \" FontColor= \" (R=0.000000,G=0.000000,B=0.000000,A=1.000000) \" >This is some bold-italic text!</> " )
TEXT ( " \n " )
TEXT ( " <TextStyle FontFamily= \" Roboto \" FontSize= \" 26 \" FontStyle= \" BoldItalic \" FontColor= \" (R=1.000000,G=0.457315,B=0.164297,A=1.000000) \" >This </><TextStyle FontFamily= \" Roboto \" FontSize= \" 21 \" FontStyle= \" Italic \" FontColor= \" (R=0.331120,G=0.348415,B=1.000000,A=1.000000) \" >is </><TextStyle FontFamily= \" Roboto \" FontSize= \" 21 \" FontStyle= \" Bold \" FontColor= \" (R=1.000000,G=0.195252,B=0.137910,A=1.000000) \" >some </><TextStyle FontFamily= \" Roboto \" FontSize= \" 18 \" FontStyle= \" BoldItalic \" FontColor= \" (R=1.000000,G=0.167594,B=0.566043,A=1.000000) \" >crazy </><TextStyle FontFamily= \" Roboto \" FontSize= \" 14 \" FontStyle= \" Italic \" FontColor= \" (R=0.175489,G=0.695000,B=0.169137,A=1.000000) \" >text!</> " )
TEXT ( " \n " )
TEXT ( " <TextStyle FontFamily= \" Roboto \" FontSize= \" 11 \" FontStyle= \" Regular \" FontColor= \" (R=0.000000,G=0.000000,B=0.000000,A=1.000000) \" >This is a hyperlink: </><a id= \" browser \" href= \" https://www.unrealengine.com/ \" style= \" RichText.Editor.Hyperlink \" >Unreal Engine</><TextStyle FontFamily= \" Roboto \" FontSize= \" 11 \" FontStyle= \" Regular \" FontColor= \" (R=0.000000,G=0.000000,B=0.000000,A=1.000000) \" ></> " )
) ;
// The rich-text marshaller will be used with the rich-text editor...
TSharedRef < FRichTextLayoutMarshaller > RichTextMarshaller = FRichTextLayoutMarshaller : : Create (
TArray < TSharedRef < ITextDecorator > > ( ) ,
2014-09-18 08:09:29 -04:00
& FTestStyle : : Get ( )
2014-08-07 06:46:11 -04:00
) ;
// ... so we also need to add some decorators to handle the things we want to demo
OnHyperlinkClicked = FSlateHyperlinkRun : : FOnClick : : CreateStatic ( & RichTextHelper : : OnBrowserLinkClicked , AsShared ( ) ) ;
RichTextMarshaller - > AppendInlineDecorator ( FHyperlinkDecorator : : Create ( TEXT ( " browser " ) , OnHyperlinkClicked ) ) ;
2014-09-27 23:43:07 -04:00
RichTextMarshaller - > AppendInlineDecorator ( FTextStyleDecoratorTest : : Create ( & TextStyles ) ) ;
2014-08-07 06:46:11 -04:00
// The syntax highlighter marshaller is self contained, so doesn't need any extra configuration
SyntaxHighlighterMarshaller = FRichTextSyntaxHighlighterTextLayoutMarshaller : : Create (
FRichTextSyntaxHighlighterTextLayoutMarshaller : : FSyntaxTextStyle ( )
) ;
this - > ChildSlot
[
SNew ( SScrollBox )
+ SScrollBox : : Slot ( )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Background " ) )
[
SNew ( SVerticalBox )
// Demo title
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( 0 )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
. Padding ( 0 )
[
SNew ( SRichTextBlock )
. Text ( LOCTEXT ( " RichTextEdit.Header01 " , " This WYSIWYG editor has been created to show the flexibility of Slate's <RichText.Tagline.TextHighlight>SMultiLineEditableText</> " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Tagline.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. AutoWrapText ( true )
. Justification ( ETextJustify : : Center )
. Margin ( FMargin ( 20 ) )
]
]
// Demo description
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( 0 )
[
SNew ( SRichTextBlock )
. Text ( LOCTEXT ( " RichTextEdit.HowItWorks " , " <RichText.TextHighlight>SMultiLineEditableText</> utilizes the power of text marshallers to control how the source text is displayed, and the two editors below are demonstrating the <RichText.TextHighlight>FRichTextLayoutMarshaller</> and <RichText.TextHighlight>FRichTextSyntaxHighlighterTextLayoutMarshaller</> implementations. \n \n You can use the toolbar to control the style of the text in the rich-text editor, or you can directly edit the source text (demonstrating live injection of style information) to update the rich-text view. " ) )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Text " )
. DecoratorStyleSet ( & FTestStyle : : Get ( ) )
. AutoWrapText ( true )
. Margin ( FMargin ( 40 , 20 ) )
]
// Rich-text editor
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( FMargin ( 25 , 0 ) )
[
SNew ( SBorder )
. Padding ( 5.0f )
. BorderImage ( FCoreStyle : : Get ( ) . GetBrush ( " BoxShadow " ) )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Interactive.Details.Background " ) )
. Padding ( FMargin ( 4 ) )
[
// Rich-text editor toolbar
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( FMargin ( 0.0f , 0.0f , 0.0f , 4.0f ) )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.RoundedBackground " ) )
. Padding ( FMargin ( 4 ) )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SComboBox < TSharedPtr < FTextStyles : : FFontFamily > > )
. ComboBoxStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.ComboBox " )
. OptionsSource ( & TextStyles . AvailableFontFamilies )
. OnSelectionChanged ( this , & SRichTextEditTest : : OnActiveFontFamilyChanged )
. OnGenerateWidget ( this , & SRichTextEditTest : : GenerateFontFamilyComboEntry )
. InitiallySelectedItem ( ActiveFontFamily )
[
SNew ( SBox )
. Padding ( FMargin ( 0.0f , 0.0f , 2.0f , 0.0f ) )
[
SNew ( STextBlock )
. Text ( this , & SRichTextEditTest : : GetActiveFontFamilyName )
]
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SBox )
2016-04-07 16:16:52 -04:00
. MinDesiredWidth ( 24 )
2014-08-07 06:46:11 -04:00
[
2016-04-07 16:16:52 -04:00
SNew ( SNumericEntryBox < uint16 > )
2014-08-07 06:46:11 -04:00
. Value ( this , & SRichTextEditTest : : GetFontSize )
. OnValueCommitted ( this , & SRichTextEditTest : : SetFontSize )
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. Padding ( FMargin ( 4.0f , 0.0f , 0.0f , 0.0f ) )
[
SNew ( SCheckBox )
. Style ( FTestStyle : : Get ( ) , " RichText.Toolbar.ToggleButtonCheckbox " )
. IsChecked ( this , & SRichTextEditTest : : IsFontStyleBold )
. OnCheckStateChanged ( this , & SRichTextEditTest : : OnFontStyleBoldChanged )
[
SNew ( SBox )
. WidthOverride ( 24 )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.BoldText " )
. Text ( LOCTEXT ( " BoldLabel " , " B " ) )
]
]
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SCheckBox )
. Style ( FTestStyle : : Get ( ) , " RichText.Toolbar.ToggleButtonCheckbox " )
. IsChecked ( this , & SRichTextEditTest : : IsFontStyleItalic )
. OnCheckStateChanged ( this , & SRichTextEditTest : : OnFontStyleItalicChanged )
[
SNew ( SBox )
. WidthOverride ( 24 )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.ItalicText " )
. Text ( LOCTEXT ( " ItalicLabel " , " I " ) )
]
]
]
+ SHorizontalBox : : Slot ( )
. Padding ( FMargin ( 4.0f , 0.0f , 0.0f , 0.0f ) )
. AutoWidth ( )
[
SNew ( SButton )
. ButtonStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.Button " )
. OnClicked ( this , & SRichTextEditTest : : OpenFontColorPicker )
[
SNew ( SOverlay )
+ SOverlay : : Slot ( )
. Padding ( FMargin ( 0.0f , 0.0f , 0.0f , 4.0f ) )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Bottom )
[
SNew ( STextBlock )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.BoldText " )
. Text ( LOCTEXT ( " ColorLabel " , " A " ) )
]
+ SOverlay : : Slot ( )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Bottom )
[
SNew ( SColorBlock )
. Color ( this , & SRichTextEditTest : : GetFontColor )
. Size ( FVector2D ( 20.0f , 6.0f ) )
]
]
]
+ SHorizontalBox : : Slot ( )
. Padding ( FMargin ( 4.0f , 0.0f , 0.0f , 0.0f ) )
. AutoWidth ( )
[
SAssignNew ( HyperlinkComboButton , SComboButton )
. ComboButtonStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.ComboButton " )
. HasDownArrow ( false )
. OnComboBoxOpened ( this , & SRichTextEditTest : : HandleHyperlinkComboOpened )
. ButtonContent ( )
[
SNew ( SBox )
. WidthOverride ( 20 )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
[
SNew ( SImage )
. Image ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Toolbar.HyperlinkImage " ) )
]
]
. MenuContent ( )
[
SNew ( SGridPanel )
. FillColumn ( 1 , 1.0f )
+ SGridPanel : : Slot ( 0 , 0 )
. HAlign ( HAlign_Right )
. Padding ( FMargin ( 2.0f ) )
[
SNew ( STextBlock )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.Text " )
. Text ( LOCTEXT ( " HyperlinkNameLabel " , " Name: " ) )
]
+ SGridPanel : : Slot ( 1 , 0 )
. Padding ( FMargin ( 2.0f ) )
[
SNew ( SBox )
. WidthOverride ( 300 )
[
SAssignNew ( HyperlinkNameTextBox , SEditableTextBox )
]
]
+ SGridPanel : : Slot ( 0 , 1 )
. HAlign ( HAlign_Right )
. Padding ( FMargin ( 2.0f ) )
[
SNew ( STextBlock )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.Text " )
. Text ( LOCTEXT ( " HyperlinkURLLabel " , " URL: " ) )
]
+ SGridPanel : : Slot ( 1 , 1 )
. Padding ( FMargin ( 2.0f ) )
[
SNew ( SBox )
. WidthOverride ( 300 )
[
SAssignNew ( HyperlinkURLTextBox , SEditableTextBox )
]
]
+ SGridPanel : : Slot ( 0 , 2 )
. HAlign ( HAlign_Right )
. Padding ( FMargin ( 2.0f ) )
. ColumnSpan ( 2 )
[
SNew ( SButton )
. ButtonStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.Button " )
. OnClicked ( this , & SRichTextEditTest : : HandleInsertHyperlinkClicked )
[
SNew ( STextBlock )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.Text " )
. Text ( LOCTEXT ( " HyperlinkInsertLabel " , " Insert Hyperlink " ) )
]
]
]
]
]
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( FMargin ( 0.0f , 0.0f , 0.0f , 0.0f ) )
[
SAssignNew ( RichEditableTextBox , SMultiLineEditableTextBox )
. Font ( FTestStyle : : Get ( ) . GetWidgetStyle < FTextBlockStyle > ( " RichText.Editor.Text " ) . Font )
. Text ( this , & SRichTextEditTest : : GetRichEditableText )
. OnTextChanged ( this , & SRichTextEditTest : : HandleRichEditableTextChanged )
. OnTextCommitted ( this , & SRichTextEditTest : : HandleRichEditableTextCommitted )
. OnCursorMoved ( this , & SRichTextEditTest : : HandleRichEditableTextCursorMoved )
. Marshaller ( RichTextMarshaller )
2015-06-25 08:43:42 -04:00
. ClearTextSelectionOnFocusLoss ( false )
2014-08-07 06:46:11 -04:00
. AutoWrapText ( true )
. Margin ( 4 )
. LineHeightPercentage ( 1.1f )
]
]
]
]
// Source text editor
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( FMargin ( 25 , 0 , 25 , 25 ) )
[
SNew ( SBorder )
. Padding ( 5.0f )
. BorderImage ( FCoreStyle : : Get ( ) . GetBrush ( " BoxShadow " ) )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Interactive.Details.Background " ) )
. Padding ( FMargin ( 4 ) )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( FMargin ( 0.0f , 0.0f , 0.0f , 4.0f ) )
[
SNew ( SMultiLineEditableTextBox )
. Text ( this , & SRichTextEditTest : : GetRichEditableText )
. OnTextChanged ( this , & SRichTextEditTest : : HandleRichEditableTextChanged )
. OnTextCommitted ( this , & SRichTextEditTest : : HandleRichEditableTextCommitted )
. Marshaller ( SyntaxHighlighterMarshaller )
. AutoWrapText ( true )
. Margin ( 4 )
. LineHeightPercentage ( 1.1f )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.RoundedBackground " ) )
. Padding ( FMargin ( 4 ) )
. HAlign ( HAlign_Right )
[
SNew ( SCheckBox )
. Style ( FTestStyle : : Get ( ) , " RichText.Toolbar.Checkbox " )
. IsChecked ( this , & SRichTextEditTest : : IsEnableSyntaxHighlightingChecked )
. OnCheckStateChanged ( this , & SRichTextEditTest : : OnEnableSyntaxHighlightingChanged )
[
SNew ( STextBlock )
. TextStyle ( FTestStyle : : Get ( ) , " RichText.Toolbar.Text " )
. Text ( LOCTEXT ( " EnableSyntaxHighlightingLabel " , " Enable Syntax Highlighting " ) )
]
]
]
]
]
]
]
]
] ;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
protected :
FText GetRichEditableText ( ) const
{
return RichEditableText ;
}
void HandleRichEditableTextChanged ( const FText & Text )
{
RichEditableText = Text ;
}
void HandleRichEditableTextCommitted ( const FText & Text , ETextCommit : : Type Type )
{
RichEditableText = Text ;
}
void HandleRichEditableTextCursorMoved ( const FTextLocation & NewCursorPosition )
{
// We can use GetRunUnderCursor to query the style of the text under the cursor
// We can then use this to update the toolbar
TSharedPtr < const IRun > Run = RichEditableTextBox - > GetRunUnderCursor ( ) ;
if ( Run . IsValid ( ) & & Run - > GetRunInfo ( ) . Name = = TEXT ( " TextStyle " ) )
{
TextStyles . ExplodeRunInfo ( Run - > GetRunInfo ( ) , ActiveFontFamily , FontSize , FontStyle , FontColor ) ;
}
}
FText GetActiveFontFamilyName ( ) const
{
return ActiveFontFamily - > DisplayName ;
}
void OnActiveFontFamilyChanged ( TSharedPtr < FTextStyles : : FFontFamily > NewValue , ESelectInfo : : Type )
{
ActiveFontFamily = NewValue ;
StyleSelectedText ( ) ;
}
TSharedRef < SWidget > GenerateFontFamilyComboEntry ( TSharedPtr < FTextStyles : : FFontFamily > SourceEntry )
{
return SNew ( STextBlock ) . Text ( SourceEntry - > DisplayName ) ;
}
2016-04-07 16:16:52 -04:00
TOptional < uint16 > GetFontSize ( ) const
2014-08-07 06:46:11 -04:00
{
return FontSize ;
}
2016-04-07 16:16:52 -04:00
void SetFontSize ( uint16 NewValue , ETextCommit : : Type )
2014-08-07 06:46:11 -04:00
{
FontSize = NewValue ;
StyleSelectedText ( ) ;
}
2014-12-10 14:24:09 -05:00
ECheckBoxState IsFontStyleBold ( ) const
2014-08-07 06:46:11 -04:00
{
2014-12-10 14:24:09 -05:00
return ( FontStyle & FTextStyles : : EFontStyle : : Bold ) ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
2014-08-07 06:46:11 -04:00
}
2014-12-10 14:24:09 -05:00
void OnFontStyleBoldChanged ( ECheckBoxState InState )
2014-08-07 06:46:11 -04:00
{
2014-12-10 14:24:09 -05:00
if ( InState = = ECheckBoxState : : Checked )
2014-08-07 06:46:11 -04:00
{
FontStyle | = FTextStyles : : EFontStyle : : Bold ;
}
else
{
FontStyle & = ~ FTextStyles : : EFontStyle : : Bold ;
}
StyleSelectedText ( ) ;
}
2014-12-10 14:24:09 -05:00
ECheckBoxState IsFontStyleItalic ( ) const
2014-08-07 06:46:11 -04:00
{
2014-12-10 14:24:09 -05:00
return ( FontStyle & FTextStyles : : EFontStyle : : Italic ) ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
2014-08-07 06:46:11 -04:00
}
2014-12-10 14:24:09 -05:00
void OnFontStyleItalicChanged ( ECheckBoxState InState )
2014-08-07 06:46:11 -04:00
{
2014-12-10 14:24:09 -05:00
if ( InState = = ECheckBoxState : : Checked )
2014-08-07 06:46:11 -04:00
{
FontStyle | = FTextStyles : : EFontStyle : : Italic ;
}
else
{
FontStyle & = ~ FTextStyles : : EFontStyle : : Italic ;
}
StyleSelectedText ( ) ;
}
FLinearColor GetFontColor ( ) const
{
return FontColor ;
}
void SetFontColor ( FLinearColor NewValue )
{
FontColor = NewValue ;
StyleSelectedText ( ) ;
}
FReply OpenFontColorPicker ( )
{
FColorPickerArgs PickerArgs ;
PickerArgs . bOnlyRefreshOnMouseUp = true ;
PickerArgs . ParentWidget = AsShared ( ) ;
PickerArgs . bUseAlpha = false ;
PickerArgs . bOnlyRefreshOnOk = false ;
PickerArgs . OnColorCommitted = FOnLinearColorValueChanged : : CreateSP ( this , & SRichTextEditTest : : SetFontColor ) ;
PickerArgs . OnColorPickerCancelled = FOnColorPickerCancelled : : CreateSP ( this , & SRichTextEditTest : : SetFontColor ) ;
PickerArgs . InitialColorOverride = FontColor ;
OpenColorPicker ( PickerArgs ) ;
return FReply : : Handled ( ) ;
}
void StyleSelectedText ( )
{
// Apply the current style to the selected text
// If no text is selected, then a new (empty) run will be inserted with the appropriate style
const FRunInfo RunInfo = TextStyles . CreateRunInfo ( ActiveFontFamily , FontSize , FontStyle , FontColor ) ;
const FTextBlockStyle TextBlockStyle = TextStyles . CreateTextBlockStyle ( ActiveFontFamily , FontSize , FontStyle , FontColor ) ;
RichEditableTextBox - > ApplyToSelection ( RunInfo , TextBlockStyle ) ;
2014-10-30 12:29:36 -04:00
FSlateApplication : : Get ( ) . SetKeyboardFocus ( RichEditableTextBox , EFocusCause : : SetDirectly ) ;
2014-08-07 06:46:11 -04:00
}
void HandleHyperlinkComboOpened ( )
{
// Read any currently selected text, and use this as the default name of the hyperlink
FString SelectedText = RichEditableTextBox - > GetSelectedText ( ) . ToString ( ) ;
for ( int32 SelectedTextIndex = 0 ; SelectedTextIndex < SelectedText . Len ( ) ; + + SelectedTextIndex )
{
if ( FChar : : IsLinebreak ( SelectedText [ SelectedTextIndex ] ) )
{
SelectedText = SelectedText . Left ( SelectedTextIndex ) ;
break ;
}
}
HyperlinkNameTextBox - > SetText ( FText : : FromString ( SelectedText ) ) ;
// We can use GetRunUnderCursor to query whether the cursor is currently over a hyperlink
// If it is, we can use that as the default URL for the hyperlink
TSharedPtr < const IRun > Run = RichEditableTextBox - > GetRunUnderCursor ( ) ;
if ( Run . IsValid ( ) & & Run - > GetRunInfo ( ) . Name = = TEXT ( " a " ) )
{
const FString * const URLUnderCursor = Run - > GetRunInfo ( ) . MetaData . Find ( TEXT ( " href " ) ) ;
HyperlinkURLTextBox - > SetText ( ( URLUnderCursor ) ? FText : : FromString ( * URLUnderCursor ) : FText ( ) ) ;
}
else
{
HyperlinkURLTextBox - > SetText ( FText ( ) ) ;
}
}
FReply HandleInsertHyperlinkClicked ( )
{
HyperlinkComboButton - > SetIsOpen ( false ) ;
const FText & Name = HyperlinkNameTextBox - > GetText ( ) ;
const FText & URL = HyperlinkURLTextBox - > GetText ( ) ;
// Create the correct meta-information for this run, so that valid source rich-text formatting can be generated for it
FRunInfo RunInfo ( TEXT ( " a " ) ) ;
RunInfo . MetaData . Add ( TEXT ( " id " ) , TEXT ( " browser " ) ) ;
RunInfo . MetaData . Add ( TEXT ( " href " ) , URL . ToString ( ) ) ;
RunInfo . MetaData . Add ( TEXT ( " style " ) , TEXT ( " RichText.Editor.Hyperlink " ) ) ;
// Create the new run, and then insert it at the cursor position
TSharedRef < FSlateHyperlinkRun > HyperlinkRun = FSlateHyperlinkRun : : Create (
RunInfo ,
MakeShareable ( new FString ( Name . ToString ( ) ) ) ,
FTestStyle : : Get ( ) . GetWidgetStyle < FHyperlinkStyle > ( FName ( TEXT ( " RichText.Editor.Hyperlink " ) ) ) ,
2014-09-12 06:48:53 -04:00
OnHyperlinkClicked ,
FSlateHyperlinkRun : : FOnGenerateTooltip ( ) ,
FSlateHyperlinkRun : : FOnGetTooltipText ( )
2014-08-07 06:46:11 -04:00
) ;
RichEditableTextBox - > InsertRunAtCursor ( HyperlinkRun ) ;
return FReply : : Handled ( ) ;
}
2014-12-10 14:24:09 -05:00
ECheckBoxState IsEnableSyntaxHighlightingChecked ( ) const
2014-08-07 06:46:11 -04:00
{
2014-12-10 14:24:09 -05:00
return ( SyntaxHighlighterMarshaller - > IsSyntaxHighlightingEnabled ( ) ) ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
2014-08-07 06:46:11 -04:00
}
2014-12-10 14:24:09 -05:00
void OnEnableSyntaxHighlightingChanged ( ECheckBoxState InState )
2014-08-07 06:46:11 -04:00
{
2014-12-10 14:24:09 -05:00
SyntaxHighlighterMarshaller - > EnableSyntaxHighlighting ( InState = = ECheckBoxState : : Checked ) ;
2014-08-07 06:46:11 -04:00
}
protected :
FText RichEditableText ;
TSharedPtr < SMultiLineEditableTextBox > RichEditableTextBox ;
TSharedPtr < FSyntaxHighlighterTextLayoutMarshaller > SyntaxHighlighterMarshaller ;
FSlateHyperlinkRun : : FOnClick OnHyperlinkClicked ;
TSharedPtr < SComboButton > HyperlinkComboButton ;
TSharedPtr < SEditableTextBox > HyperlinkNameTextBox ;
TSharedPtr < SEditableTextBox > HyperlinkURLTextBox ;
FTextStyles TextStyles ;
TSharedPtr < FTextStyles : : FFontFamily > ActiveFontFamily ;
2016-04-07 16:16:52 -04:00
uint16 FontSize ;
2014-08-07 06:46:11 -04:00
FTextStyles : : EFontStyle : : Flags FontStyle ;
FLinearColor FontColor ;
} ;
# endif //WITH_FANCY_TEXT
2014-03-14 14:13:41 -04:00
/** Demonstrates the brokenness of our current approach to trading smoothness for sharpness. */
class SLayoutRoundingTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS ( SLayoutRoundingTest )
{ }
SLATE_END_ARGS ( )
static TSharedRef < SWidget > MakeRow ( int32 NumWidgets )
{
TSharedRef < SHorizontalBox > HBox = SNew ( SHorizontalBox ) ;
for ( int ColIndex = 0 ; ColIndex < NumWidgets ; + + ColIndex )
{
HBox - > AddSlot ( )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
[
SNew ( SImage )
. ColorAndOpacity ( FLinearColor ( 1 , 1 , 1 , 0.5f ) )
. Image ( FCoreStyle : : Get ( ) . GetBrush ( " GenericWhiteBox " ) )
] ;
}
return HBox ;
}
void Construct ( const FArguments & InArgs )
{
TSharedRef < SVerticalBox > VBox = SNew ( SVerticalBox ) ;
for ( int RowIndex = 0 ; RowIndex < 15 ; + + RowIndex )
{
VBox - > AddSlot ( )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
[
MakeRow ( 15 )
] ;
}
this - > ChildSlot
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1.17 )
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1.0f )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. FillHeight ( 1.17 )
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
VBox
]
]
] ;
}
} ;
/**
* A list of commands for the multibox test
*/
class FMultiBoxTestCommandList : public TCommands < FMultiBoxTestCommandList >
{
public :
FMultiBoxTestCommandList ( )
: TCommands < FMultiBoxTestCommandList > ( " MultiBoxTest " , LOCTEXT ( " MultiboxTest " , " Multibox Test " ) , NAME_None , FTestStyle : : Get ( ) . GetStyleSetName ( ) )
{
}
public :
TSharedPtr < FUICommandInfo > FirstCommandInfo ;
TSharedPtr < FUICommandInfo > SecondCommandInfo ;
TSharedPtr < FUICommandInfo > ThirdCommandInfo ;
TSharedPtr < FUICommandInfo > FourthCommandInfo ;
TSharedPtr < FUICommandInfo > FifthCommandInfo ;
TSharedPtr < FUICommandInfo > SixthCommandInfo ;
TSharedPtr < FUICommandInfo > SeventhCommandInfo ;
TSharedPtr < FUICommandInfo > EighthCommandInfo ;
public :
void RegisterCommands ( )
{
2015-03-17 11:36:28 -04:00
UI_COMMAND ( FirstCommandInfo , " First Test " , " This is the first test menu item " , EUserInterfaceActionType : : ToggleButton , FInputChord ( ) ) ;
UI_COMMAND ( SecondCommandInfo , " Second Test " , " This is the second test menu item. Shows a keybinding " , EUserInterfaceActionType : : ToggleButton , FInputChord ( EModifierKey : : Shift , EKeys : : A ) ) ;
2014-03-14 14:13:41 -04:00
2015-03-17 11:36:28 -04:00
UI_COMMAND ( ThirdCommandInfo , " Third Test " , " This is the thrid test menu item " , EUserInterfaceActionType : : ToggleButton , FInputChord ( ) ) ;
UI_COMMAND ( FourthCommandInfo , " Fourth Test " , " This is the fourth test menu item " , EUserInterfaceActionType : : ToggleButton , FInputChord ( ) ) ;
2014-03-14 14:13:41 -04:00
2015-03-17 11:36:28 -04:00
UI_COMMAND ( FifthCommandInfo , " Fifth Test " , " This is the fifth test menu item " , EUserInterfaceActionType : : ToggleButton , FInputChord ( ) ) ;
UI_COMMAND ( SixthCommandInfo , " Sixth Test " , " This is the sixth test menu item. Shows a keybinding " , EUserInterfaceActionType : : ToggleButton , FInputChord ( ) ) ;
2014-03-14 14:13:41 -04:00
2015-03-17 11:36:28 -04:00
UI_COMMAND ( SeventhCommandInfo , " Seventh Test " , " This is the seventh test menu item " , EUserInterfaceActionType : : ToggleButton , FInputChord ( ) ) ;
UI_COMMAND ( EighthCommandInfo , " Eighth Test " , " This is the eighth test menu item " , EUserInterfaceActionType : : ToggleButton , FInputChord ( ) ) ;
2014-03-14 14:13:41 -04:00
}
} ;
class FMenus
{
public :
static void FillMenu1Entries ( FMenuBuilder & MenuBuilder )
{
MenuBuilder . BeginSection ( " Menu1Entries " ) ;
{
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . FirstCommandInfo ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . SecondCommandInfo ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . ThirdCommandInfo ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . FourthCommandInfo ) ;
}
MenuBuilder . EndSection ( ) ;
MenuBuilder . BeginSection ( " Menu1Entries2 " ) ;
{
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . FifthCommandInfo ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . SixthCommandInfo ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . SeventhCommandInfo ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . EighthCommandInfo ) ;
}
MenuBuilder . EndSection ( ) ;
MenuBuilder . BeginSection ( " Menu1Entries3 " ) ;
{
MenuBuilder . AddSubMenu ( LOCTEXT ( " SubMenu " , " Sub Menu " ) , LOCTEXT ( " OpensASubmenu " , " Opens a submenu " ) , FNewMenuDelegate : : CreateStatic ( & FMenus : : FillSubMenuEntries ) ) ;
MenuBuilder . AddSubMenu ( LOCTEXT ( " SubMenu2IsALittleLonger " , " Sub Menu 2 is a little longer " ) , LOCTEXT ( " OpensASubmenu " , " Opens a submenu " ) , FNewMenuDelegate : : CreateStatic ( & FMenus : : FillSubMenuEntries ) ) ;
}
MenuBuilder . EndSection ( ) ;
MenuBuilder . BeginSection ( " Menu1Entries4 " ) ;
{
MenuBuilder . AddWidget ( SNew ( SVolumeControl ) , LOCTEXT ( " Volume " , " Volume " ) ) ;
}
MenuBuilder . EndSection ( ) ;
}
static void FillMenu2Entries ( FMenuBuilder & MenuBuilder )
{
MenuBuilder . AddEditableText ( LOCTEXT ( " EditableItem " , " Editable Item " ) , LOCTEXT ( " EditableItem_ToolTip " , " You can edit this item's text " ) , FSlateIcon ( ) , LOCTEXT ( " DefaultEditableText " , " Edit Me! " ) ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . FirstCommandInfo ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . SecondCommandInfo ) ;
MenuBuilder . AddSubMenu ( LOCTEXT ( " SubMenu " , " Sub Menu " ) , LOCTEXT ( " OpensASubmenu " , " Opens a submenu " ) , FNewMenuDelegate : : CreateStatic ( & FMenus : : FillSubMenuEntries ) ) ;
MenuBuilder . AddSubMenu ( LOCTEXT ( " SubMenu2IsALittleLonger " , " Sub Menu 2 is a little longer " ) , LOCTEXT ( " OpensASubmenu " , " Opens a submenu " ) , FNewMenuDelegate : : CreateStatic ( & FMenus : : FillSubMenuEntries ) ) ;
}
protected :
static void FillSubMenuEntries ( FMenuBuilder & MenuBuilder )
{
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . FirstCommandInfo ) ;
MenuBuilder . AddMenuEntry ( FMultiBoxTestCommandList : : Get ( ) . SecondCommandInfo ) ;
MenuBuilder . AddSubMenu ( LOCTEXT ( " SubMenu " , " Sub Menu " ) , LOCTEXT ( " OpensASubmenu " , " Opens a submenu " ) , FNewMenuDelegate : : CreateStatic ( & FMenus : : FillSubMenuEntries ) ) ;
MenuBuilder . AddSubMenu ( LOCTEXT ( " SubMenu2IsALittleLonger " , " Sub Menu 2 is a little longer " ) , LOCTEXT ( " OpensASubmenu " , " Opens a submenu " ) , FNewMenuDelegate : : CreateStatic ( & FMenus : : FillSubMenuEntries ) ) ;
}
} ;
class SMultiBoxTest
: public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SMultiBoxTest ) { }
SLATE_END_ARGS ( )
SMultiBoxTest ( )
: CommandList ( new FUICommandList ( ) )
{ }
/**
* Construct this widget
*
* @ param InArgs The declaration data for this widget
*/
void Construct ( const FArguments & InArgs )
{
ButtonStates . Reset ( ) ;
ButtonStates . AddZeroed ( 8 ) ;
struct Local
{
static bool IsButtonEnabled ( int32 ButtonIndex )
{
return true ;
}
static void OnButtonPressed ( int32 ButtonIndex )
{
const bool NewState = ! ButtonStates [ ButtonIndex ] ;
ButtonStates [ ButtonIndex ] = NewState ;
}
static bool IsButtonChecked ( int32 ButtonIndex )
{
return ButtonStates [ ButtonIndex ] ;
}
} ;
FMultiBoxTestCommandList : : Register ( ) ;
CommandList - > MapAction (
FMultiBoxTestCommandList : : Get ( ) . FirstCommandInfo ,
FExecuteAction : : CreateStatic ( & Local : : OnButtonPressed , 0 ) ,
FCanExecuteAction : : CreateStatic ( & Local : : IsButtonEnabled , 0 ) ,
FIsActionChecked : : CreateStatic ( & Local : : IsButtonChecked , 0 )
) ;
CommandList - > MapAction (
FMultiBoxTestCommandList : : Get ( ) . SecondCommandInfo ,
FExecuteAction : : CreateStatic ( & Local : : OnButtonPressed , 1 ) ,
FCanExecuteAction : : CreateStatic ( & Local : : IsButtonEnabled , 1 ) ,
FIsActionChecked : : CreateStatic ( & Local : : IsButtonChecked , 1 )
) ;
CommandList - > MapAction (
FMultiBoxTestCommandList : : Get ( ) . ThirdCommandInfo ,
FExecuteAction : : CreateStatic ( & Local : : OnButtonPressed , 2 ) ,
FCanExecuteAction : : CreateStatic ( & Local : : IsButtonEnabled , 2 ) ,
FIsActionChecked : : CreateStatic ( & Local : : IsButtonChecked , 2 )
) ;
CommandList - > MapAction (
FMultiBoxTestCommandList : : Get ( ) . FourthCommandInfo ,
FExecuteAction : : CreateStatic ( & Local : : OnButtonPressed , 3 ) ,
FCanExecuteAction : : CreateStatic ( & Local : : IsButtonEnabled , 3 ) ,
FIsActionChecked : : CreateStatic ( & Local : : IsButtonChecked , 3 )
) ;
CommandList - > MapAction (
FMultiBoxTestCommandList : : Get ( ) . FifthCommandInfo ,
FExecuteAction : : CreateStatic ( & Local : : OnButtonPressed , 4 ) ,
FCanExecuteAction : : CreateStatic ( & Local : : IsButtonEnabled , 4 ) ,
FIsActionChecked : : CreateStatic ( & Local : : IsButtonChecked , 4 )
) ;
CommandList - > MapAction (
FMultiBoxTestCommandList : : Get ( ) . SixthCommandInfo ,
FExecuteAction : : CreateStatic ( & Local : : OnButtonPressed , 5 ) ,
FCanExecuteAction : : CreateStatic ( & Local : : IsButtonEnabled , 5 ) ,
FIsActionChecked : : CreateStatic ( & Local : : IsButtonChecked , 5 )
) ;
CommandList - > MapAction (
FMultiBoxTestCommandList : : Get ( ) . SeventhCommandInfo ,
FExecuteAction : : CreateStatic ( & Local : : OnButtonPressed , 6 ) ,
FCanExecuteAction : : CreateStatic ( & Local : : IsButtonEnabled , 6 ) ,
FIsActionChecked : : CreateStatic ( & Local : : IsButtonChecked , 6 )
) ;
CommandList - > MapAction (
FMultiBoxTestCommandList : : Get ( ) . EighthCommandInfo ,
FExecuteAction : : CreateStatic ( & Local : : OnButtonPressed , 7 ) ,
FCanExecuteAction : : CreateStatic ( & Local : : IsButtonEnabled , 7 ) ,
FIsActionChecked : : CreateStatic ( & Local : : IsButtonChecked , 7 )
) ;
FMenuBarBuilder MenuBarBuilder ( CommandList ) ;
{
MenuBarBuilder . AddPullDownMenu ( LOCTEXT ( " Menu1 " , " Menu 1 " ) , LOCTEXT ( " OpensMenu1 " , " Opens Menu 1 " ) , FNewMenuDelegate : : CreateStatic ( & FMenus : : FillMenu1Entries ) ) ;
MenuBarBuilder . AddPullDownMenu ( LOCTEXT ( " Menu2 " , " Menu 2 " ) , LOCTEXT ( " OpensMenu2 " , " Opens Menu 2 " ) , FNewMenuDelegate : : CreateStatic ( & FMenus : : FillMenu2Entries ) ) ;
}
this - > ChildSlot
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
MenuBarBuilder . MakeWidget ( )
]
] ;
}
protected :
TSharedRef < FUICommandList > CommandList ;
static TArray < bool > ButtonStates ;
} ;
TArray < bool > SMultiBoxTest : : ButtonStates ;
class SAnimTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SAnimTest ) { }
SLATE_END_ARGS ( )
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct ( const FArguments & InArgs )
{
this - > ChildSlot
. HAlign ( HAlign_Fill )
. VAlign ( VAlign_Fill )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( 3 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " AnimTestDurationLabel " , " Duration: " ) )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. Padding ( 0 , 0 , 5 , 0 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.0f )
. MaxValue ( 2.0f )
. Delta ( 0.01f )
. Value ( this , & SAnimTest : : GetAnimTime )
. OnValueChanged ( this , & SAnimTest : : AnimTime_OnChanged )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " AnimTestPlayButtonLabel " , " Play Animation " ) )
. OnClicked ( this , & SAnimTest : : PlayAnimation_OnClicked )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " AnimTestReverseButtonLabel " , " Reverse " ) )
. OnClicked ( this , & SAnimTest : : Reverse_OnClicked )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " AnimTestPlayReverseButtonLabel " , " PlayReverse " ) )
. OnClicked ( this , & SAnimTest : : PlayReverse_OnClicked )
]
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SNew ( SBorder )
. ContentScale ( this , & SAnimTest : : GetContentScale )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. HAlign ( HAlign_Fill )
. VAlign ( VAlign_Top )
[
// TITLE AREA
SNew ( SBorder )
. Cursor ( EMouseCursor : : CardinalCross )
. Padding ( 3 )
. HAlign ( HAlign_Center )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " AnimTestLabel " , " Animation Testing " ) )
. ColorAndOpacity ( this , & SAnimTest : : GetContentColor )
]
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
. HAlign ( HAlign_Fill )
. VAlign ( VAlign_Fill )
[
// NODE CONTENT AREA
SNew ( SBorder )
. HAlign ( HAlign_Fill )
. VAlign ( VAlign_Fill )
. Padding ( FMargin ( 3.0f ) )
. ColorAndOpacity ( this , & SAnimTest : : GetContentColorAsLinearColor )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Left )
[
// LEFT
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. HAlign ( HAlign_Center )
[
SNew ( SImage )
. Image ( FCoreStyle : : Get ( ) . GetBrush ( TEXT ( " DefaultAppIcon " ) ) )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " ButtonTestLabel " , " Button Test " ) )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GenericTextItemTestLabel " , " Generic Text Item " ) )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SButton )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
2014-09-11 20:21:09 -04:00
. AutoWidth ( )
2014-03-14 14:13:41 -04:00
[
SNew ( SImage ) . Image ( FCoreStyle : : Get ( ) . GetBrush ( TEXT ( " DefaultAppIcon " ) ) )
]
+ SHorizontalBox : : Slot ( )
2014-09-11 20:21:09 -04:00
. AutoWidth ( )
2014-03-14 14:13:41 -04:00
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " ButtonTextLabel " , " Button with content " ) )
]
]
]
]
+ SHorizontalBox : : Slot ( )
. FillWidth ( 1 )
. Padding ( 5 )
[
// MIDDLE
SNew ( SSpacer )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. HAlign ( HAlign_Right )
[
// RIGHT
SNew ( SImage ) . Image ( FTestStyle : : Get ( ) . GetBrush ( TEXT ( " GammaReference " ) ) )
]
]
]
]
]
] ;
// Set the default Animation duration.
AnimTime_OnChanged ( 0.15f ) ;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
FReply PlayAnimation_OnClicked ( )
{
---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.
While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
- Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.
- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
- Examples include animation, async operations that update periodically, progress updates, loading bars, etc.
- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.
- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
- There are THREE ways to unregister an active tick:
1. Return EActiveTickReturnType::StopTicking from the active tick function
2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
3. Destroy the widget responsible for the active tick
- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
- The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)
- The FCurveSequence API has been updated to work with the active tick system
- Playing a curve sequence now requires that you pass the widget being animated by the sequence
- The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
- GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.
[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
SpawnAnimation . Play ( this - > AsShared ( ) ) ;
2014-03-14 14:13:41 -04:00
return FReply : : Handled ( ) ;
}
FReply Reverse_OnClicked ( )
{
SpawnAnimation . Reverse ( ) ;
return FReply : : Handled ( ) ;
}
FReply PlayReverse_OnClicked ( )
{
---- Merging with SlateDev branch ----
Introduces the concept of "Active Ticking" to allow Slate to go to sleep when there is no need to update the UI.
While asleep, Slate will skip the Tick & Paint pass for that frame entirely.
- There are TWO ways to "wake" Slate and cause a Tick/Paint pass:
1. Provide some sort of input (mouse movement, clicks, and key presses). Slate will always tick when the user is active.
- Therefore, if the logic in a given widget's Tick is only relevant in response to user action, there is no need to register an active tick.
2. Register an Active Tick. Currently this is an all-or-nothing situation, so if a single active tick needs to execute, all of Slate will be ticked.
- The purpose of an Active Tick is to allow a widget to "drive" Slate and guarantee a Tick/Paint pass in the absence of any user action.
- Examples include animation, async operations that update periodically, progress updates, loading bars, etc.
- An empty active tick is registered for viewports when they are real-time, so game project widgets are unaffected by this change and should continue to work as before.
- An Active Tick is registered by creating an FWidgetActiveTickDelegate and passing it to SWidget::RegisterActiveTick()
- There are THREE ways to unregister an active tick:
1. Return EActiveTickReturnType::StopTicking from the active tick function
2. Pass the FActiveTickHandle returned by RegisterActiveTick() to SWidget::UnregisterActiveTick()
3. Destroy the widget responsible for the active tick
- Sleeping is currently disabled, can be enabled with Slate.AllowSlateToSleep cvar
- There is currently a little buffer time during which Slate continues to tick following any input. Long-term, this is planned to be removed.
- The duration of the buffer can be adjusted using Slate.SleepBufferPostInput cvar (defaults to 1.0f)
- The FCurveSequence API has been updated to work with the active tick system
- Playing a curve sequence now requires that you pass the widget being animated by the sequence
- The active tick will automatically be registered on behalf of the widget and unregister when the sequence is complete
- GetLerpLooping() has been removed. Instead, pass true as the second param to Play() to indicate that the animation will loop. This causes the active tick to be registered indefinitely until paused or jumped to the start/end.
[CL 2391669 by Dan Hertzka in Main branch]
2014-12-17 16:07:57 -05:00
SpawnAnimation . PlayReverse ( this - > AsShared ( ) ) ;
2014-03-14 14:13:41 -04:00
return FReply : : Handled ( ) ;
}
float GetAnimTime ( ) const
{
return AnimTime ;
}
void AnimTime_OnChanged ( float InNewValue )
{
AnimTime = InNewValue ;
// Create the animation
SpawnAnimation = FCurveSequence ( ) ;
{
ZoomCurve = SpawnAnimation . AddCurve ( 0 , AnimTime ) ;
FadeCurve = SpawnAnimation . AddCurve ( AnimTime , AnimTime ) ;
}
}
FSlateColor GetContentColor ( ) const
{
return GetContentColorAsLinearColor ( ) ;
}
FLinearColor GetContentColorAsLinearColor ( ) const
{
return FMath : : Lerp ( FLinearColor ( 1 , 1 , 1 , 0 ) , FLinearColor ( 1 , 1 , 1 , 1 ) , FadeCurve . GetLerp ( ) ) ;
}
FVector2D GetContentScale ( ) const
{
const float ZoomValue = ZoomCurve . GetLerp ( ) ;
return FVector2D ( ZoomValue , ZoomValue ) ;
}
float AnimTime ;
FCurveSequence SpawnAnimation ;
FCurveHandle ZoomCurve ;
FCurveHandle FadeCurve ;
} ;
class SFxTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS ( SFxTest )
{ }
SLATE_END_ARGS ( )
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct ( const FArguments & InArgs )
{
RenderScale = 1.0f ;
RenderScaleOrigin = FVector2D ( 0.5f , 0.5f ) ;
LayoutScale = 1.0f ;
VisualOffset = FVector2D : : ZeroVector ;
2014-12-10 14:24:09 -05:00
FxWidgetIgnoreClippingState = ECheckBoxState : : Checked ;
2014-03-14 14:13:41 -04:00
this - > ChildSlot
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( ) . AutoHeight ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( SGridPanel )
. FillColumn ( 1 , 1.0f )
+ SGridPanel : : Slot ( 0 , 0 ) . HAlign ( HAlign_Right )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " FxTextVisualScaleLabel " , " Visual Scale: " ) )
]
+ SGridPanel : : Slot ( 1 , 0 ) . Padding ( 2 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.1f ) . MaxValue ( 20.0f )
. Value ( this , & SFxTest : : GetRenderScale )
. OnValueChanged ( this , & SFxTest : : OnRenderScaleChanged )
]
+ SGridPanel : : Slot ( 0 , 1 ) . HAlign ( HAlign_Right )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " FxTextVisualScaleOriginLabel " , " Visual Scale Origin: " ) )
]
+ SGridPanel : : Slot ( 1 , 1 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( ) . Padding ( 2 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.0f ) . MaxValue ( 1.0f )
. Value ( this , & SFxTest : : GetRenderScaleOriginX )
. OnValueChanged ( this , & SFxTest : : OnRenderScaleChangedX )
]
+ SHorizontalBox : : Slot ( ) . Padding ( 2 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.0f ) . MaxValue ( 1.0f )
. Value ( this , & SFxTest : : GetRenderScaleOriginY )
. OnValueChanged ( this , & SFxTest : : OnRenderScaleChangedY )
]
]
+ SGridPanel : : Slot ( 0 , 2 ) . HAlign ( HAlign_Right )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " FxTextLayoutScaleLabel " , " Layout Scale: " ) )
]
+ SGridPanel : : Slot ( 1 , 2 ) . Padding ( 2 )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.1f ) . MaxValue ( 20.0f )
. Value ( this , & SFxTest : : GetLayoutScale )
. OnValueChanged ( this , & SFxTest : : OnLayoutScaleChanged )
]
+ SGridPanel : : Slot ( 0 , 3 ) . HAlign ( HAlign_Right )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " FxTextVisualOffsetLabel " , " Visual Offset: " ) )
]
+ SGridPanel : : Slot ( 1 , 3 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( ) . Padding ( 2 )
[
SNew ( SSpinBox < float > )
. MinValue ( - 10.0f ) . MaxValue ( 10.0f )
. Value ( this , & SFxTest : : GetVisualOffsetOriginX )
. OnValueChanged ( this , & SFxTest : : OnVisualOffsetChangedX )
]
+ SHorizontalBox : : Slot ( ) . Padding ( 2 )
[
SNew ( SSpinBox < float > )
. MinValue ( - 10.0f ) . MaxValue ( 10.0f )
. Value ( this , & SFxTest : : GetVisualOffsetOriginY )
. OnValueChanged ( this , & SFxTest : : OnVisualOffsetChangedY )
]
]
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
+ SGridPanel : : Slot ( 0 , 4 ) . Padding ( 2 )
[
SNew ( SCheckBox )
. IsChecked ( this , & SFxTest : : GetFxWidgetIgnoreClippingState )
. OnCheckStateChanged ( this , & SFxTest : : OnFxWidgetIgnoreClippingChanged )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " IgnoreClipping " , " Ignore Clipping " ) )
]
]
2014-03-14 14:13:41 -04:00
]
+ SHorizontalBox : : Slot ( )
[
SNew ( SUniformGridPanel )
+ SUniformGridPanel : : Slot ( 0 , 0 )
[
SNew ( SButton )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " FxTextZoomFadeOutLabel " , " Zoom Fade Out " ) )
]
]
+ SUniformGridPanel : : Slot ( 1 , 0 )
[
SNew ( SButton )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " FxTextFadeInFromLeftLabel " , " Fade in From Left " ) )
]
]
+ SUniformGridPanel : : Slot ( 1 , 1 )
[
SNew ( SButton )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " FxTextFadeInFromRightLabel " , " Fade in From Right " ) )
]
]
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . HAlign ( HAlign_Center ) . Padding ( 20 )
[
SNew ( SBorder )
[
SNew ( SFxWidget )
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
. IgnoreClipping ( this , & SFxTest : : GetFxWidgetIgnoreClipping )
2014-03-14 14:13:41 -04:00
. RenderScale ( this , & SFxTest : : GetRenderScale )
. RenderScaleOrigin ( this , & SFxTest : : GetRenderScaleOrigin )
. LayoutScale ( this , & SFxTest : : GetLayoutScale )
. VisualOffset ( this , & SFxTest : : GetVisualOffset )
[
SNew ( SBorder )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( ) . AutoWidth ( )
[
SNew ( SImage )
. Image ( FTestStyle : : Get ( ) . GetBrush ( " UE4Icon " ) )
]
+ SHorizontalBox : : Slot ( ) . AutoWidth ( )
[
2014-07-23 08:23:21 -04:00
SNew ( SButton )
. Text ( LOCTEXT ( " FxTextContentLabel " , " Click Me! " ) )
2014-03-14 14:13:41 -04:00
]
]
]
]
]
] ;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
2014-12-10 14:24:09 -05:00
bool GetFxWidgetIgnoreClipping ( ) const { return FxWidgetIgnoreClippingState = = ECheckBoxState : : Checked ; }
ECheckBoxState GetFxWidgetIgnoreClippingState ( ) const { return FxWidgetIgnoreClippingState ; }
void OnFxWidgetIgnoreClippingChanged ( ECheckBoxState InValue ) { FxWidgetIgnoreClippingState = InValue ; }
ECheckBoxState FxWidgetIgnoreClippingState ;
2014-03-14 14:13:41 -04:00
float GetRenderScale ( ) const { return RenderScale ; }
void OnRenderScaleChanged ( float InValue ) { RenderScale = InValue ; }
float RenderScale ;
FVector2D GetRenderScaleOrigin ( ) const { return RenderScaleOrigin ; }
float GetRenderScaleOriginX ( ) const { return RenderScaleOrigin . X ; }
float GetRenderScaleOriginY ( ) const { return RenderScaleOrigin . Y ; }
void OnRenderScaleChangedX ( float InValue ) { RenderScaleOrigin . X = InValue ; }
void OnRenderScaleChangedY ( float InValue ) { RenderScaleOrigin . Y = InValue ; }
FVector2D RenderScaleOrigin ;
float GetLayoutScale ( ) const { return LayoutScale ; }
void OnLayoutScaleChanged ( float InValue ) { LayoutScale = InValue ; }
float LayoutScale ;
FVector2D GetVisualOffset ( ) const { return VisualOffset ; }
float GetVisualOffsetOriginX ( ) const { return VisualOffset . X ; }
float GetVisualOffsetOriginY ( ) const { return VisualOffset . Y ; }
void OnVisualOffsetChangedX ( float InValue ) { VisualOffset . X = InValue ; }
void OnVisualOffsetChangedY ( float InValue ) { VisualOffset . Y = InValue ; }
FVector2D VisualOffset ;
} ;
class SDPIScalingTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS ( SDPIScalingTest )
{ }
SLATE_END_ARGS ( )
void Construct ( const FArguments & InArgs )
{
DPIScale = 1.0f ;
this - > ChildSlot
. Padding ( 10 )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 5 )
[
SNew ( SSpinBox < float > )
. Value ( this , & SDPIScalingTest : : GetDPIScale )
. OnValueChanged ( this , & SDPIScalingTest : : SetDPIScale )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 5 )
[
SNew ( SCheckBox )
. IsChecked ( this , & SDPIScalingTest : : IsFillChecked )
. OnCheckStateChanged ( this , & SDPIScalingTest : : OnFillChecked )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " DpiScalingFillSpaceLabel " , " Fill Space " ) )
]
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
. Padding ( 5 )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
. Expose ( ScalerSlot )
[
SNew ( SDPIScaler )
. DPIScale ( this , & SDPIScalingTest : : GetDPIScale )
[
SNew ( SBorder )
. BorderImage ( FCoreStyle : : Get ( ) . GetBrush ( " ToolPanel.GroupBorder " ) )
. Padding ( 5 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " DpiScalingTextLabel " , " I am DPI scaled! " ) )
]
]
]
] ;
}
float GetDPIScale ( ) const
{
return DPIScale ;
}
void SetDPIScale ( float InScale )
{
DPIScale = InScale ;
}
2014-12-10 14:24:09 -05:00
ECheckBoxState IsFillChecked ( ) const
2014-03-14 14:13:41 -04:00
{
const bool bIsFilling = ( ScalerSlot - > HAlignment = = HAlign_Fill ) ;
return ( bIsFilling )
2014-12-10 14:24:09 -05:00
? ECheckBoxState : : Checked
: ECheckBoxState : : Unchecked ;
2014-03-14 14:13:41 -04:00
}
2014-12-10 14:24:09 -05:00
void OnFillChecked ( ECheckBoxState InValue )
2014-03-14 14:13:41 -04:00
{
2014-12-10 14:24:09 -05:00
ScalerSlot - > HAlign ( ( InValue = = ECheckBoxState : : Checked ) ? HAlign_Fill : HAlign_Center ) ;
ScalerSlot - > VAlign ( ( InValue = = ECheckBoxState : : Checked ) ? VAlign_Fill : VAlign_Center ) ;
2014-03-14 14:13:41 -04:00
}
float DPIScale ;
SVerticalBox : : FSlot * ScalerSlot ;
} ;
2015-07-07 15:50:03 -04:00
class SInvalidationTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS ( SInvalidationTest )
{ }
SLATE_END_ARGS ( )
void Construct ( const FArguments & InArgs )
{
ChildSlot
. Padding ( 10 )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SAssignNew ( CachePanel1 , SInvalidationPanel )
. Visibility ( EVisibility : : Visible )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " StaticText " , " This text is static and cached. " ) )
]
]
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " InvalidateManually " , " Manually Invalidate " ) )
. OnClicked ( this , & SInvalidationTest : : ManuallyInvalidatePanel1 )
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SInvalidationPanel )
. Visibility ( EVisibility : : Visible )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( STextBlock )
2015-12-10 16:56:55 -05:00
. Text ( LOCTEXT ( " StaticTextSupportInput " , " Support Input " ) )
2015-07-07 15:50:03 -04:00
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SBorder )
. Padding ( 10 )
[
SNew ( SButton )
. Text ( LOCTEXT ( " CachedClickable " , " I'm Cached - But Clickable " ) )
]
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SBorder )
. Padding ( 10 )
[
SNew ( SButton )
. ForceVolatile ( true )
. Text ( LOCTEXT ( " VolatileClickable " , " Volatile - But Clickable " ) )
]
]
]
]
2015-07-09 15:28:24 -04:00
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SInvalidationPanel )
. CacheRelativeTransforms ( true )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " RelativeCacheMessage " , " I cache relative transforms. Moving the window has no effect on me, woo! " ) )
]
]
]
2015-07-07 15:50:03 -04:00
] ;
}
private :
FReply ManuallyInvalidatePanel1 ( )
{
CachePanel1 - > InvalidateCache ( ) ;
return FReply : : Handled ( ) ;
}
private :
TSharedPtr < SInvalidationPanel > CachePanel1 ;
} ;
2015-08-17 09:40:01 -04:00
class SGammaTest : public SCompoundWidget
{
SLATE_BEGIN_ARGS ( SGammaTest )
{ }
SLATE_END_ARGS ( )
void Construct ( const FArguments & InArgs )
{
FColor Orange ( 200 , 80 , 15 ) ;
ChildSlot
. Padding ( 10 )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SColorBlock )
. Color ( Orange )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( STextBlock )
. Text ( FText : : FromString ( Orange . ToString ( ) ) )
]
]
] ;
}
} ;
2014-03-14 14:13:41 -04:00
class SColorPickerTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SColorPickerTest )
: _Color ( FLinearColor ( 1 , 1 , 1 , 0.5f ) )
{ }
SLATE_ATTRIBUTE ( FLinearColor , Color )
SLATE_END_ARGS ( )
void Construct ( const FArguments & InArgs )
{
Color = InArgs . _Color ;
this - > ChildSlot
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " ColorPickerTest-EditColorLabel " , " Edit Color " ) )
. ContentPadding ( 5 )
. OnClicked ( this , & SColorPickerTest : : OpenColorPicker )
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SButton )
. Text ( LOCTEXT ( " ColorPickerTest-EditNoAlphaColorLabel " , " Edit NoAlpha Color " ) )
. ContentPadding ( 5 )
. OnClicked ( this , & SColorPickerTest : : OpenColorPickerNoAlpha )
]
+ SHorizontalBox : : Slot ( ) . AutoWidth ( ) . Padding ( 5 )
[
SAssignNew ( OutputTextBlock , STextBlock )
]
]
] ;
UpdateColor ( Color . Get ( ) ) ;
}
protected :
FReply OpenColorPicker ( )
{
TSharedRef < SWindow > NewSlateWindow = FSlateApplication : : Get ( ) . AddWindow (
SNew ( SWindow )
. Title ( LOCTEXT ( " ColorPickerTest-WindowTitle-StandardColor " , " Standard Color " ) )
. ClientSize ( SColorPicker : : DEFAULT_WINDOW_SIZE )
) ;
TSharedPtr < SColorPicker > ColorPicker = SNew ( SColorPicker )
. TargetColorAttribute ( this , & SColorPickerTest : : GetColor )
. OnColorCommitted ( this , & SColorPickerTest : : UpdateColor )
. ParentWindow ( NewSlateWindow ) ;
NewSlateWindow - > SetContent ( ColorPicker . ToSharedRef ( ) ) ;
return FReply : : Handled ( ) ;
}
FReply OpenColorPickerNoAlpha ( )
{
TSharedRef < SWindow > NewSlateWindow = FSlateApplication : : Get ( ) . AddWindow (
SNew ( SWindow )
. Title ( LOCTEXT ( " ColorPickerTest-WindowTitle-NoAlphaColor " , " No Alpha Color " ) )
. ClientSize ( SColorPicker : : DEFAULT_WINDOW_SIZE )
) ;
TSharedPtr < SColorPicker > ColorPicker = SNew ( SColorPicker )
. UseAlpha ( false )
. TargetColorAttribute ( this , & SColorPickerTest : : GetColor )
. OnColorCommitted ( this , & SColorPickerTest : : UpdateColor )
. ParentWindow ( NewSlateWindow ) ;
NewSlateWindow - > SetContent ( ColorPicker . ToSharedRef ( ) ) ;
return FReply : : Handled ( ) ;
}
FLinearColor GetColor ( ) const
{
return Color . Get ( ) ;
}
void UpdateColor ( FLinearColor NewColor )
{
Color . Set ( NewColor ) ;
2015-02-24 05:57:41 -05:00
OutputTextBlock - > SetText ( FText : : FromString ( Color . Get ( ) . ToFColor ( false ) . ToString ( ) ) ) ;
2014-03-14 14:13:41 -04:00
}
TAttribute < FLinearColor > Color ;
TSharedPtr < STextBlock > OutputTextBlock ;
} ;
2014-11-13 16:35:33 -05:00
class STestNotificationWidget : public SCompoundWidget , public INotificationWidget
{
public :
SLATE_BEGIN_ARGS ( STestNotificationWidget ) { }
SLATE_END_ARGS ( )
void Construct ( const FArguments & InArgs )
{
ChildSlot
[
SNew ( SBorder )
. Padding ( 15.0f )
. BorderImage ( FCoreStyle : : Get ( ) . GetBrush ( " NotificationList.ItemBackground " ) )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
[
SNew ( SImage )
. Image ( FTestStyle : : Get ( ) . GetBrush ( " UE4Icon " ) )
]
+ SHorizontalBox : : Slot ( )
. Padding ( FMargin ( 15.0f , 0.0f , 0.0f , 0.0f ) )
[
SNew ( STextBlock )
2015-12-10 16:56:55 -05:00
. Text ( LOCTEXT ( " TestingBigNotificationText " , " Big notififcation text! " ) )
2014-11-13 16:35:33 -05:00
. Font ( FSlateFontInfo ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate/Fonts/Roboto-Bold.ttf " ) , 30 ) )
]
2014-12-05 10:28:14 -05:00
+ SHorizontalBox : : Slot ( )
. Padding ( FMargin ( 15.0f , 0.0f , 0.0f , 0.0f ) )
[
SNew ( SButton )
. Text ( LOCTEXT ( " TestButtonInNotificaiton " , " Button Test " ) )
]
2014-11-13 16:35:33 -05:00
]
] ;
}
virtual void OnSetCompletionState ( SNotificationItem : : ECompletionState State ) override
{
}
virtual TSharedRef < SWidget > AsWidget ( ) override
{
return SharedThis ( this ) ;
}
} ;
2014-03-14 14:13:41 -04:00
class SNotificationListTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SNotificationListTest ) { }
SLATE_END_ARGS ( )
void Construct ( const FArguments & InArgs )
{
2014-05-09 15:48:06 -04:00
bUseLargeFont = true ;
bAddDummyButtons = false ;
bAddDummyCheckBox = false ;
bAddDummyHyperlink = false ;
2014-12-10 14:24:09 -05:00
DummyCheckBoxState = ECheckBoxState : : Unchecked ;
2014-05-09 15:48:06 -04:00
2014-03-14 14:13:41 -04:00
this - > ChildSlot
[
SNew ( SOverlay )
+ SOverlay : : Slot ( )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( ) . AutoWidth ( )
[
SNew ( SButton )
. OnClicked ( this , & SNotificationListTest : : SpawnNotification1 )
. Text ( LOCTEXT ( " NotificationListTest-SpawnNotification1Label " , " Spawn Notification1 " ) )
]
+ SHorizontalBox : : Slot ( ) . AutoWidth ( )
[
SNew ( SButton )
. OnClicked ( this , & SNotificationListTest : : SpawnNotification2 )
. Text ( LOCTEXT ( " NotificationListTest-SpawnNotification2Label " , " Spawn Notification2 " ) )
]
2014-11-13 16:35:33 -05:00
+ SHorizontalBox : : Slot ( ) . AutoWidth ( )
[
SNew ( SButton )
. OnClicked ( this , & SNotificationListTest : : SpawnCustomNotification )
. Text ( LOCTEXT ( " NotificationListTest-SpawnCustomNotificationLabel " , " Spawn Custom Notification " ) )
]
2014-03-14 14:13:41 -04:00
+ SHorizontalBox : : Slot ( ) . AutoWidth ( )
[
SNew ( SButton )
. OnClicked ( this , & SNotificationListTest : : SpawnPendingNotification )
2014-05-09 15:48:06 -04:00
. Text ( LOCTEXT ( " NotificationListTest-SpawnPendingNotificationLabel " , " Spawn Pending Notification " ) )
2014-03-14 14:13:41 -04:00
]
+ SHorizontalBox : : Slot ( ) . AutoWidth ( )
[
SNew ( SButton )
. OnClicked ( this , & SNotificationListTest : : FinishPendingNotification_Success )
2014-05-09 15:48:06 -04:00
. Text ( LOCTEXT ( " NotificationListTest-FinishPendingNotificationSuccessLabel " , " Finish Pending Notification - Success " ) )
2014-03-14 14:13:41 -04:00
]
+ SHorizontalBox : : Slot ( ) . AutoWidth ( )
[
SNew ( SButton )
. OnClicked ( this , & SNotificationListTest : : FinishPendingNotification_Fail )
2014-05-09 15:48:06 -04:00
. Text ( LOCTEXT ( " NotificationListTest-FinishPendingNotificationFailLabel " , " Finish Pending Notification - Fail " ) )
]
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SCheckBox )
. IsChecked ( this , & SNotificationListTest : : IsUseLargeFontChecked )
. OnCheckStateChanged ( this , & SNotificationListTest : : OnUseLargeFontCheckStateChanged )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " NotificationListTest-UseLargeFont " , " Use Large Font " ) )
]
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SCheckBox )
. IsChecked ( this , & SNotificationListTest : : IsAddDummyButtonsChecked )
. OnCheckStateChanged ( this , & SNotificationListTest : : OnAddDummyButtonsCheckStateChanged )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " NotificationListTest-AddDummyButtons " , " Add Dummy Buttons " ) )
]
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SCheckBox )
. IsChecked ( this , & SNotificationListTest : : IsAddDummyCheckBoxChecked )
. OnCheckStateChanged ( this , & SNotificationListTest : : OnAddDummyCheckBoxCheckStateChanged )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " NotificationListTest-AddDummyCheckBox " , " Add Dummy Check Box " ) )
]
]
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SCheckBox )
. IsChecked ( this , & SNotificationListTest : : IsAddDummyHyperlinkChecked )
. OnCheckStateChanged ( this , & SNotificationListTest : : OnAddDummyHyperlinkCheckStateChanged )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " NotificationListTest-AddDummyHyperlink " , " Add Dummy Hyperlink " ) )
2014-03-14 14:13:41 -04:00
]
]
]
+ SOverlay : : Slot ( )
. HAlign ( HAlign_Right )
. VAlign ( VAlign_Bottom )
. Padding ( 15 )
[
SAssignNew ( NotificationListPtr , SNotificationList )
2014-05-09 15:48:06 -04:00
. Visibility ( EVisibility : : SelfHitTestInvisible )
2014-03-14 14:13:41 -04:00
]
] ;
}
protected :
2014-12-10 14:24:09 -05:00
ECheckBoxState IsUseLargeFontChecked ( ) const
2014-05-09 15:48:06 -04:00
{
2014-12-10 14:24:09 -05:00
return bUseLargeFont ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
2014-05-09 15:48:06 -04:00
}
2014-12-10 14:24:09 -05:00
void OnUseLargeFontCheckStateChanged ( ECheckBoxState NewState )
2014-05-09 15:48:06 -04:00
{
2014-12-10 14:24:09 -05:00
bUseLargeFont = ( NewState = = ECheckBoxState : : Checked ) ;
2014-05-09 15:48:06 -04:00
}
2014-12-10 14:24:09 -05:00
ECheckBoxState IsAddDummyButtonsChecked ( ) const
2014-05-09 15:48:06 -04:00
{
2014-12-10 14:24:09 -05:00
return bAddDummyButtons ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
2014-05-09 15:48:06 -04:00
}
2014-12-10 14:24:09 -05:00
void OnAddDummyButtonsCheckStateChanged ( ECheckBoxState NewState )
2014-05-09 15:48:06 -04:00
{
2014-12-10 14:24:09 -05:00
bAddDummyButtons = ( NewState = = ECheckBoxState : : Checked ) ;
2014-05-09 15:48:06 -04:00
}
2014-12-10 14:24:09 -05:00
ECheckBoxState IsAddDummyCheckBoxChecked ( ) const
2014-05-09 15:48:06 -04:00
{
2014-12-10 14:24:09 -05:00
return bAddDummyCheckBox ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
2014-05-09 15:48:06 -04:00
}
2014-12-10 14:24:09 -05:00
void OnAddDummyCheckBoxCheckStateChanged ( ECheckBoxState NewState )
2014-05-09 15:48:06 -04:00
{
2014-12-10 14:24:09 -05:00
bAddDummyCheckBox = ( NewState = = ECheckBoxState : : Checked ) ;
2014-05-09 15:48:06 -04:00
}
2014-12-10 14:24:09 -05:00
ECheckBoxState IsAddDummyHyperlinkChecked ( ) const
2014-05-09 15:48:06 -04:00
{
2014-12-10 14:24:09 -05:00
return bAddDummyHyperlink ? ECheckBoxState : : Checked : ECheckBoxState : : Unchecked ;
2014-05-09 15:48:06 -04:00
}
2014-12-10 14:24:09 -05:00
void OnAddDummyHyperlinkCheckStateChanged ( ECheckBoxState NewState )
2014-05-09 15:48:06 -04:00
{
2014-12-10 14:24:09 -05:00
bAddDummyHyperlink = ( NewState = = ECheckBoxState : : Checked ) ;
2014-05-09 15:48:06 -04:00
}
void SetNotificationInfoFlags ( FNotificationInfo & Info )
{
// Dummy callback for buttons and hyperlinks
struct Local
{
static void Dummy ( )
{
}
} ;
const FSimpleDelegate DummyDelegate = FSimpleDelegate : : CreateStatic ( & Local : : Dummy ) ;
Info . bUseLargeFont = bUseLargeFont ;
if ( bAddDummyButtons )
{
Info . ButtonDetails . Add ( FNotificationButtonInfo ( LOCTEXT ( " NotificationListTest-DummyButton1Text " , " Dummy Button 1 " ) , FText ( ) , DummyDelegate , SNotificationItem : : CS_None ) ) ;
Info . ButtonDetails . Add ( FNotificationButtonInfo ( LOCTEXT ( " NotificationListTest-DummyButton2Text " , " Dummy Button 2 " ) , FText ( ) , DummyDelegate , SNotificationItem : : CS_None ) ) ;
Info . ButtonDetails . Add ( FNotificationButtonInfo ( LOCTEXT ( " NotificationListTest-DummyPendingButton1Text " , " Dummy Pending Button 1 " ) , FText ( ) , DummyDelegate , SNotificationItem : : CS_Pending ) ) ;
Info . ButtonDetails . Add ( FNotificationButtonInfo ( LOCTEXT ( " NotificationListTest-DummyPendingButton2Text " , " Dummy Pending Button 2 " ) , FText ( ) , DummyDelegate , SNotificationItem : : CS_Pending ) ) ;
Info . ButtonDetails . Add ( FNotificationButtonInfo ( LOCTEXT ( " NotificationListTest-DummySuccessButton1Text " , " Dummy Success Button 1 " ) , FText ( ) , DummyDelegate , SNotificationItem : : CS_Success ) ) ;
Info . ButtonDetails . Add ( FNotificationButtonInfo ( LOCTEXT ( " NotificationListTest-DummySuccessButton2Text " , " Dummy Success Button 2 " ) , FText ( ) , DummyDelegate , SNotificationItem : : CS_Success ) ) ;
Info . ButtonDetails . Add ( FNotificationButtonInfo ( LOCTEXT ( " NotificationListTest-DummyFailButton1Text " , " Dummy Fail Button 1 " ) , FText ( ) , DummyDelegate , SNotificationItem : : CS_Fail ) ) ;
Info . ButtonDetails . Add ( FNotificationButtonInfo ( LOCTEXT ( " NotificationListTest-DummyFailButton2Text " , " Dummy Fail Button 2 " ) , FText ( ) , DummyDelegate , SNotificationItem : : CS_Fail ) ) ;
}
if ( bAddDummyCheckBox )
{
2014-12-10 14:24:09 -05:00
Info . CheckBoxState = TAttribute < ECheckBoxState > ( this , & SNotificationListTest : : GetDummyCheckBoxState ) ;
2014-05-09 15:48:06 -04:00
Info . CheckBoxStateChanged = FOnCheckStateChanged : : CreateSP ( this , & SNotificationListTest : : OnDummyCheckBoxStateChanged ) ;
Info . CheckBoxText = LOCTEXT ( " NotificationListTest-DummyCheckBoxText " , " Dummy Check Box " ) ;
}
if ( bAddDummyHyperlink )
{
Info . Hyperlink = DummyDelegate ;
Info . HyperlinkText = LOCTEXT ( " NotificationListTest-DummyHyperlinkText " , " Dummy Hyperlink " ) ;
}
}
2014-12-10 14:24:09 -05:00
ECheckBoxState GetDummyCheckBoxState ( ) const
2014-05-09 15:48:06 -04:00
{
return DummyCheckBoxState ;
}
2014-12-10 14:24:09 -05:00
void OnDummyCheckBoxStateChanged ( ECheckBoxState NewState )
2014-05-09 15:48:06 -04:00
{
DummyCheckBoxState = NewState ;
}
2014-03-14 14:13:41 -04:00
FReply SpawnNotification1 ( )
{
2014-05-09 15:48:06 -04:00
FNotificationInfo Info ( LOCTEXT ( " TestNotification01 " , " A Notification " ) ) ;
SetNotificationInfoFlags ( Info ) ;
NotificationListPtr - > AddNotification ( Info ) ;
2014-03-14 14:13:41 -04:00
return FReply : : Handled ( ) ;
}
FReply SpawnNotification2 ( )
{
2014-05-09 15:48:06 -04:00
FNotificationInfo Info ( LOCTEXT ( " TestNotification02 " , " Another Notification " ) ) ;
SetNotificationInfoFlags ( Info ) ;
NotificationListPtr - > AddNotification ( Info ) ;
2014-03-14 14:13:41 -04:00
return FReply : : Handled ( ) ;
}
2014-11-13 16:35:33 -05:00
FReply SpawnCustomNotification ( )
{
FNotificationInfo Info ( SNew ( STestNotificationWidget ) ) ;
Info . bFireAndForget = true ;
Info . ExpireDuration = 3.0f ;
Info . FadeOutDuration = 3.0f ;
SetNotificationInfoFlags ( Info ) ;
NotificationListPtr - > AddNotification ( Info ) ;
return FReply : : Handled ( ) ;
}
2014-03-14 14:13:41 -04:00
FReply SpawnPendingNotification ( )
{
if ( PendingProgressPtr . IsValid ( ) )
{
PendingProgressPtr . Pin ( ) - > ExpireAndFadeout ( ) ;
}
2014-05-09 15:48:06 -04:00
FNotificationInfo Info ( LOCTEXT ( " TestNotificationInProgress " , " Operation In Progress " ) ) ;
SetNotificationInfoFlags ( Info ) ;
Info . bFireAndForget = false ;
2014-03-14 14:13:41 -04:00
2014-05-09 15:48:06 -04:00
PendingProgressPtr = NotificationListPtr - > AddNotification ( Info ) ;
2014-03-14 14:13:41 -04:00
PendingProgressPtr . Pin ( ) - > SetCompletionState ( SNotificationItem : : CS_Pending ) ;
return FReply : : Handled ( ) ;
}
FReply FinishPendingNotification_Success ( )
{
TSharedPtr < SNotificationItem > NotificationItem = PendingProgressPtr . Pin ( ) ;
if ( NotificationItem . IsValid ( ) )
{
NotificationItem - > SetText ( LOCTEXT ( " TestNotificationSuccess " , " Operation Successful! " ) ) ;
NotificationItem - > SetCompletionState ( SNotificationItem : : CS_Success ) ;
NotificationItem - > ExpireAndFadeout ( ) ;
PendingProgressPtr . Reset ( ) ;
}
return FReply : : Handled ( ) ;
}
FReply FinishPendingNotification_Fail ( )
{
TSharedPtr < SNotificationItem > NotificationItem = PendingProgressPtr . Pin ( ) ;
if ( NotificationItem . IsValid ( ) )
{
NotificationItem - > SetText ( LOCTEXT ( " TestNotificationFailure " , " Operation Failed... " ) ) ;
NotificationItem - > SetCompletionState ( SNotificationItem : : CS_Fail ) ;
NotificationItem - > ExpireAndFadeout ( ) ;
PendingProgressPtr . Reset ( ) ;
}
return FReply : : Handled ( ) ;
}
2014-05-09 15:48:06 -04:00
/** Should we use the larger bolder font to display the message? */
bool bUseLargeFont ;
/** Should we add dummy buttons to the notifications? */
bool bAddDummyButtons ;
/** Should we add a dummy check box to the notifications? */
bool bAddDummyCheckBox ;
/** Should we add a dummy hyperlink to the notifications? */
bool bAddDummyHyperlink ;
2014-03-14 14:13:41 -04:00
/** The list of active system messages */
TSharedPtr < SNotificationList > NotificationListPtr ;
/** The pending progress message */
TWeakPtr < SNotificationItem > PendingProgressPtr ;
2014-05-09 15:48:06 -04:00
/** If showing a dummy check box, this maintains its state in the UI */
2014-12-10 14:24:09 -05:00
ECheckBoxState DummyCheckBoxState ;
2014-03-14 14:13:41 -04:00
} ;
class SGridPanelTest : public SCompoundWidget
{
public :
SLATE_BEGIN_ARGS ( SGridPanelTest )
{ }
SLATE_END_ARGS ( )
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void Construct ( const FArguments & InArgs )
{
this - > ChildSlot
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SNew ( SGridPanel )
. FillColumn ( 1 , 1.0f )
. FillColumn ( 2 , 2.0f )
+ SGridPanel : : Slot ( 0 , 0 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label01 " , " There once was a man from Nantucket " ) )
]
+ SGridPanel : : Slot ( 0 , 1 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label02 " , " who kept all his cash in a bucket. " ) )
]
+ SGridPanel : : Slot ( 0 , 2 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label03 " , " But his daughter, named Nan, " ) )
]
+ SGridPanel : : Slot ( 0 , 3 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label04 " , " Ran away with a man " ) )
]
+ SGridPanel : : Slot ( 0 , 4 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label05 " , " And as for the bucket, Nantucket. " ) )
]
+ SGridPanel : : Slot ( 1 , 1 )
. ColumnSpan ( 2 )
[
SNew ( SBorder )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " GridPanelTest-Colspan1Label " , " Colspan = 1 " ) )
]
]
+ SGridPanel : : Slot ( 1 , 2 )
[
SNew ( SBorder )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " GridPanelTest-Stretch1Label " , " Stretch = 1 " ) )
]
]
+ SGridPanel : : Slot ( 2 , 3 )
[
SNew ( SBorder )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " GridPanelTest-Stretch2Label " , " Stretch = 2 " ) )
]
]
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SNew ( SGridPanel )
. FillRow ( 1 , 1.0f )
. FillRow ( 2 , 2.0f )
+ SGridPanel : : Slot ( 0 , 0 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label01 " , " There once was a man from Nantucket " ) )
]
+ SGridPanel : : Slot ( 0 , 1 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label02 " , " who kept all his cash in a bucket. " ) )
]
+ SGridPanel : : Slot ( 0 , 2 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label03 " , " But his daughter, named Nan, " ) )
]
+ SGridPanel : : Slot ( 0 , 3 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label04 " , " Ran away with a man " ) )
]
+ SGridPanel : : Slot ( 0 , 4 )
[
SNew ( STextBlock )
. Text ( LOCTEXT ( " GridPanelTest-Label05 " , " And as for the bucket, Nantucket. " ) )
]
+ SGridPanel : : Slot ( 1 , 1 )
. RowSpan ( 2 )
[
SNew ( SBorder )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " GridPanelTest-Rowspan2Label " , " RowSpan = 2! " ) )
]
]
+ SGridPanel : : Slot ( 2 , 1 )
[
SNew ( SBorder )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " GridPanelTest-Stretch1Label " , " Stretch = 1 " ) )
]
]
+ SGridPanel : : Slot ( 3 , 2 )
[
SNew ( SBorder )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " GridPanelTest-Stretch2Label " , " Stretch = 2 " ) )
]
]
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
] ;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
} ;
2014-10-16 13:28:42 -04:00
class SResponsiveGridPanelTestWidget : public SUserWidget
{
public :
SLATE_USER_ARGS ( SResponsiveGridPanelTestWidget )
{ }
SLATE_END_ARGS ( )
virtual void Construct ( const FArguments & InArgs ) = 0 ;
} ;
2014-11-25 08:44:20 -05:00
class SResponsiveGridPanelTestWidgetImpl : public SResponsiveGridPanelTestWidget
2014-10-16 13:28:42 -04:00
{
2014-11-25 08:44:20 -05:00
public :
virtual void Construct ( const FArguments & InArgs ) override ;
2014-10-16 13:28:42 -04:00
2014-11-25 08:44:20 -05:00
private :
TSharedRef < SWidget > ConstructBox ( const FString & Text ) const ;
} ;
2014-10-16 13:28:42 -04:00
TSharedRef < SWidget > SResponsiveGridPanelTestWidgetImpl : : ConstructBox ( const FString & Text ) const
{
return
SNew ( SBorder )
. Padding ( 1 )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " Gray " ) )
[
SNew ( SBorder )
. HAlign ( HAlign_Center )
. VAlign ( VAlign_Center )
. Padding ( 10 )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.Background " ) )
[
2015-02-24 05:57:41 -05:00
SNew ( STextBlock ) . Text ( FText : : FromString ( Text ) )
2014-10-16 13:28:42 -04:00
]
] ;
}
void SResponsiveGridPanelTestWidgetImpl : : Construct ( const FArguments & InArgs )
{
TSharedPtr < SResponsiveGridPanel > GridPanel ;
SUserWidget : : Construct ( SUserWidget : : FArguments ( )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Background " ) )
. ForegroundColor ( FLinearColor : : Black )
[
SNew ( SScrollBox )
+ SScrollBox : : Slot ( )
[
SNew ( SBox )
. Padding ( FMargin ( 50 , 10 ) )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.DarkBackground " ) )
. Padding ( 10.0f )
[
SAssignNew ( GridPanel , SResponsiveGridPanel , 12 )
. ColumnGutter ( 5 )
. RowGutter ( 5 )
]
]
]
+ SScrollBox : : Slot ( )
. Padding ( 0 , 20 , 0 , 0 )
[
SNew ( SBox )
. Padding ( FMargin ( 50 , 10 ) )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.DarkBackground " ) )
. Padding ( 10.0f )
[
SNew ( SResponsiveGridPanel , 12 )
. ColumnGutter ( 5 )
. RowGutter ( 5 )
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 8 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 12 )
[
ConstructBox ( TEXT ( " .mobile-col-12 .desktop-col-8 " ) )
]
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 2 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 " ) )
]
+ SResponsiveGridPanel : : Slot ( 2 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 " ) )
]
]
]
]
+ SScrollBox : : Slot ( )
. Padding ( 0 , 20 , 0 , 0 )
[
SNew ( SBox )
. Padding ( FMargin ( 50 , 10 ) )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.DarkBackground " ) )
. Padding ( 10.0f )
[
SNew ( SResponsiveGridPanel , 12 )
. ColumnGutter ( 5 )
. RowGutter ( 5 )
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 8 )
. ColumnSpan ( SResponsiveGridSize : : Tablet , 6 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 12 )
[
ConstructBox ( TEXT ( " .mobile-col-12 .tablet-col-6 .desktop-col-8 " ) )
]
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : Tablet , 4 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 .tablet-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : Tablet , 4 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 .tablet-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : Tablet , 4 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 .tablet-col-4 " ) )
]
]
]
]
+ SScrollBox : : Slot ( )
. Padding ( 0 , 20 , 0 , 0 )
[
SNew ( SBox )
. Padding ( FMargin ( 50 , 10 ) )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.DarkBackground " ) )
. Padding ( 10.0f )
[
SNew ( SResponsiveGridPanel , 12 )
. ColumnGutter ( 5 )
. RowGutter ( 5 )
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 9 )
[
ConstructBox ( TEXT ( " .mobile-col-9 " ) )
]
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 4 )
[
ConstructBox ( TEXT ( " .mobile-col-4 \n Since 9 + 4 = 13 > 12, this 4 column wide slot \n gets wrapped onto a new line as one contiguous unit. " ) )
]
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 6 )
[
ConstructBox ( TEXT ( " .mobile-col-6 \n Subsequent columns continue along the new line. " ) )
]
]
]
]
+ SScrollBox : : Slot ( )
. Padding ( 0 , 20 , 0 , 0 )
[
SNew ( SBox )
. Padding ( FMargin ( 50 , 10 ) )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.DarkBackground " ) )
. Padding ( 10.0f )
[
SNew ( SResponsiveGridPanel , 12 )
. ColumnGutter ( 5 )
. RowGutter ( 5 )
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
[
ConstructBox ( TEXT ( " .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 , 4 )
[
ConstructBox ( TEXT ( " .desktop-col-4-offset-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 3 , 3 )
[
ConstructBox ( TEXT ( " .desktop-col-3-offset-3 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 3 , 3 )
[
ConstructBox ( TEXT ( " .desktop-col-3-offset-3 " ) )
]
+ SResponsiveGridPanel : : Slot ( 2 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 6 , 3 )
[
ConstructBox ( TEXT ( " .desktop-col-6-offset-3 " ) )
]
]
]
]
+ SScrollBox : : Slot ( )
. Padding ( 0 , 20 , 0 , 0 )
[
SNew ( SBox )
. Padding ( FMargin ( 50 , 10 ) )
. HeightOverride ( 800 )
[
SNew ( SBorder )
. BorderImage ( FTestStyle : : Get ( ) . GetBrush ( " RichText.Tagline.DarkBackground " ) )
. Padding ( 10.0f )
[
SNew ( SResponsiveGridPanel , 12 )
. ColumnGutter ( 5 )
. RowGutter ( 5 )
. FillRow ( 1 , 1.0f )
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
[
ConstructBox ( TEXT ( " .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
[
ConstructBox ( TEXT ( " .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
[
ConstructBox ( TEXT ( " .desktop-col-4 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 3 )
. ColumnSpan ( SResponsiveGridSize : : Mobile , 0 )
[
ConstructBox ( TEXT ( " .desktop-col-3 " ) )
]
+ SResponsiveGridPanel : : Slot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 9 )
[
ConstructBox ( TEXT ( " .desktop-col-9 " ) )
]
+ SResponsiveGridPanel : : Slot ( 2 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 6 , 3 )
[
ConstructBox ( TEXT ( " .desktop-col-6-offset-3 " ) )
]
]
]
]
]
] ) ;
for ( int32 Index = 0 ; Index < 12 ; + + Index )
{
GridPanel - > AddSlot ( 0 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 1 )
[
ConstructBox ( TEXT ( " .desktop-col-1 " ) )
] ;
}
GridPanel - > AddSlot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 8 )
[
ConstructBox ( TEXT ( " .desktop-col-8 " ) )
] ;
GridPanel - > AddSlot ( 1 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
[
ConstructBox ( TEXT ( " .desktop-col-4 " ) )
] ;
for ( int32 Index = 0 ; Index < 3 ; + + Index )
{
GridPanel - > AddSlot ( 2 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 4 )
[
ConstructBox ( TEXT ( " .desktop-col-4 " ) )
] ;
}
for ( int32 Index = 0 ; Index < 2 ; + + Index )
{
GridPanel - > AddSlot ( 3 )
. ColumnSpan ( SResponsiveGridSize : : MediumDevice , 6 )
[
ConstructBox ( TEXT ( " .desktop-col-6 " ) )
] ;
}
}
TSharedRef < SResponsiveGridPanelTestWidget > SResponsiveGridPanelTestWidget : : New ( )
{
return MakeShareable ( new SResponsiveGridPanelTestWidgetImpl ( ) ) ;
}
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
/**
* User Widget wrapper for a this widget . Legacy as this widget used to be in a separate header .
*/
class SRenderTransformManipulatorWidget : public SUserWidget
{
public :
SLATE_USER_ARGS ( SRenderTransformManipulatorWidget )
{ }
SLATE_END_ARGS ( )
virtual void Construct ( const FArguments & InArgs ) = 0 ;
} ;
namespace
{
float RotDeg = 0.0f ;
FScale2D Scale ;
FShear2D Shear ;
FQuat2D Rot ;
FVector2D Offset ( 0 , 0 ) ;
}
2014-11-25 17:53:58 -05:00
class SRenderTransformManipulatorWidgetImpl : public SRenderTransformManipulatorWidget
{
public :
virtual void Construct ( const FArguments & InArgs ) override ;
TSharedPtr < SImage > ImageWidget ;
private :
static const ISlateStyle & GetStyle ( )
{
static FSlateStyleSet Style ( " RenderTransformManipulatorStyle " ) ;
static bool IsInit = false ;
if ( ! IsInit )
{
check ( IsInGameThread ( ) ) ;
Style . SetContentRoot ( FPaths : : EngineContentDir ( ) / TEXT ( " Slate " ) ) ;
Style . Set ( " UE4Icon " , new FSlateImageBrush ( Style . RootToContentDir ( TEXT ( " Testing/UE4Icon.png " ) ) , FVector2D ( 50 , 50 ) ) ) ;
IsInit = true ;
}
return Style ;
}
} ;
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
/**
* Global access here because we need other translation units to access this function .
*/
2014-09-23 19:06:06 -04:00
TOptional < FSlateRenderTransform > GetTestRenderTransform ( )
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
{
2014-09-03 13:32:41 -04:00
return TransformCast < FSlateRenderTransform > ( Concatenate ( Shear , Scale , Rot ) ) ;
}
FVector2D GetTestRenderTransformPivot ( )
{
return Offset ;
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
}
void SRenderTransformManipulatorWidgetImpl : : Construct ( const FArguments & InArgs )
{
SUserWidget : : Construct ( SUserWidget : : FArguments ( )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( ) . Padding ( 4 )
[
SAssignNew ( ImageWidget , SImage )
2014-09-03 13:32:41 -04:00
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
. Image ( GetStyle ( ) . GetBrush ( " UE4Icon " ) )
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 4 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " RD " , " Rotation degrees " ) )
]
+ SHorizontalBox : : Slot ( ) . HAlign ( HAlign_Fill )
[
SNew ( SSpinBox < float > )
. MinValue ( 0.0f )
. MaxValue ( 360.0f )
. OnValueChanged_Static ( [ ] ( float val ) { RotDeg = val ; Rot = FQuat2D ( FMath : : DegreesToRadians ( val ) ) ; } )
. Value_Static ( [ ] { return RotDeg ; } )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 4 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " XO " , " X Offset " ) )
]
+ SHorizontalBox : : Slot ( ) . HAlign ( HAlign_Fill )
[
SNew ( SSpinBox < float > )
2014-09-03 13:32:41 -04:00
. MinValue ( - 2.0f )
. MaxValue ( 2.0f )
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
. OnValueChanged_Static ( [ ] ( float val ) { Offset . X = val ; } )
. Value_Static ( [ ] { return Offset . X ; } )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 4 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " YO " , " Y Offset " ) )
]
+ SHorizontalBox : : Slot ( ) . HAlign ( HAlign_Fill )
[
SNew ( SSpinBox < float > )
2014-09-03 13:32:41 -04:00
. MinValue ( - 2.0f )
. MaxValue ( 2.0f )
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
. OnValueChanged_Static ( [ ] ( float val ) { Offset . Y = val ; } )
. Value_Static ( [ ] { return Offset . Y ; } )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 4 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " XS " , " X Scale " ) )
]
+ SHorizontalBox : : Slot ( ) . HAlign ( HAlign_Fill )
[
SNew ( SSpinBox < float > )
. MinValue ( - 10.0f )
. MaxValue ( 10.0f )
. OnValueChanged_Static ( [ ] ( float val ) { Scale = FScale2D ( val , Scale . GetVector ( ) . Y ) ; } )
. Value_Static ( [ ] { return Scale . GetVector ( ) . X ; } )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 4 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " YS " , " Y Scale " ) )
]
+ SHorizontalBox : : Slot ( ) . HAlign ( HAlign_Fill )
[
SNew ( SSpinBox < float > )
. MinValue ( - 10.0f )
. MaxValue ( 10.0f )
. OnValueChanged_Static ( [ ] ( float val ) { Scale = FScale2D ( Scale . GetVector ( ) . X , val ) ; } )
. Value_Static ( [ ] { return Scale . GetVector ( ) . Y ; } )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 4 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " XSH " , " X Shear " ) )
]
+ SHorizontalBox : : Slot ( ) . HAlign ( HAlign_Fill )
[
SNew ( SSpinBox < float > )
. MinValue ( - 4.f )
. MaxValue ( 4.f )
. OnValueChanged_Static ( [ ] ( float val ) { Shear = FShear2D ( val , Shear . GetVector ( ) . Y ) ; } )
. Value_Static ( [ ] { return Shear . GetVector ( ) . X ; } )
]
]
+ SVerticalBox : : Slot ( ) . AutoHeight ( ) . Padding ( 4 )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
[
SNew ( STextBlock ) . Text ( LOCTEXT ( " YSH " , " Y Shear " ) )
]
+ SHorizontalBox : : Slot ( ) . HAlign ( HAlign_Fill )
[
SNew ( SSpinBox < float > )
. MinValue ( - 4.f )
. MaxValue ( 4.f )
. OnValueChanged_Static ( [ ] ( float val ) { Shear = FShear2D ( Shear . GetVector ( ) . X , val ) ; } )
. Value_Static ( [ ] { return Shear . GetVector ( ) . Y ; } )
]
]
]
) ;
}
/**
* New implementation for the User Widget idiom .
*/
TSharedRef < SRenderTransformManipulatorWidget > SRenderTransformManipulatorWidget : : New ( )
{
return MakeShareable ( new SRenderTransformManipulatorWidgetImpl ( ) ) ;
}
2014-03-14 14:13:41 -04:00
static TSharedPtr < FTabManager > TestSuite1TabManager ;
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
TSharedRef < SDockTab > SpawnTab ( const FSpawnTabArgs & Args , FName TabIdentifier )
{
if ( TabIdentifier = = FName ( TEXT ( " AnimationTestTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " AnimationTestTabLabel " , " Animation Test " ) )
. ToolTip
(
SNew ( SToolTip )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. Padding ( 2.0f )
[
SNew ( SImage )
2014-09-11 20:21:09 -04:00
. Image ( FCoreStyle : : Get ( ) . GetBrush ( TEXT ( " DefaultAppIcon " ) ) )
2014-03-14 14:13:41 -04:00
]
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. VAlign ( VAlign_Center )
[
SNew ( STextBlock )
. Text ( ( LOCTEXT ( " AnimationTestLabel " , " Bring up some test for animation. " ) ) )
]
]
)
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
2014-03-14 14:13:41 -04:00
[
2014-09-18 16:45:23 -04:00
SNew ( SVerticalBox )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
+ SVerticalBox : : Slot ( )
[
SNew ( SAnimTest )
]
+ SVerticalBox : : Slot ( )
[
SNew ( SFxTest )
]
2014-03-14 14:13:41 -04:00
]
] ;
}
else if ( TabIdentifier = = FName ( " DocumentsTestTab " ) )
{
FTabManager * TabManagerRef = & ( TestSuite1TabManager . ToSharedRef ( ) . Get ( ) ) ;
return
SNew ( SDockTab )
. Label ( NSLOCTEXT ( " TestSuite1 " , " DocumentsTab " , " Documents " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SDocumentsTest , TabManagerRef )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
. AddMetaData < FTagMetaData > ( FTagMetaData ( " DocumentSpawner " ) )
]
2014-03-14 14:13:41 -04:00
] ;
}
else if ( TabIdentifier = = FName ( TEXT ( " TableViewTestTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " ListViewTestTab " , " ListView Test " ) )
. ToolTipText ( LOCTEXT ( " ListViewTestToolTip " , " Switches to the List View test tab, which allows you to test list widgets in Slate. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
MakeTableViewTesting ( )
]
2014-03-14 14:13:41 -04:00
] ;
}
else if ( TabIdentifier = = FName ( TEXT ( " LayoutExampleTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " LayoutExampleTab " , " Layout Example " ) )
. ToolTipText ( LOCTEXT ( " LayoutExampleTabToolTip " , " Switches to the Layout Example tab, which shows off examples of various Slate layout primitives. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
MakeLayoutExample ( )
]
2014-03-14 14:13:41 -04:00
] ;
}
2014-08-07 06:46:11 -04:00
# if WITH_FANCY_TEXT
2014-03-14 14:13:41 -04:00
else if ( TabIdentifier = = FName ( TEXT ( " RichTextTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " RichTextTestTab " , " Rich Text " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SRichTextTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
2014-07-31 06:02:59 -04:00
else if ( TabIdentifier = = FName ( TEXT ( " MultiLineEditTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " MultiLineEditTab " , " MultiLine Edit " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
# if WITH_FANCY_TEXT
SNew ( SMultiLineEditingTest )
# else
SNew ( SSpacer )
# endif //WITH_FANCY_TEXT
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-07-31 06:02:59 -04:00
] ;
}
2014-08-07 06:46:11 -04:00
# endif //WITH_FANCY_TEXT
2014-03-14 14:13:41 -04:00
else if ( TabIdentifier = = FName ( TEXT ( " EditableTextTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " EditableTextTestTab " , " Editable Text " ) )
. ToolTipText ( LOCTEXT ( " EditableTextTestTabToolTip " , " Switches to the Editable Text tab, where you can test the various inline text editing controls. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( STextEditTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
2014-08-07 06:46:11 -04:00
# if WITH_FANCY_TEXT
else if ( TabIdentifier = = FName ( TEXT ( " RichEditableTextTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " RichEditableTextTestTab " , " Rich Editable Text " ) )
. ToolTipText ( LOCTEXT ( " RichEditableTextTestTabToolTip " , " Switches to the Rich Editable Text tab, where you can test the various rich editable text features. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SRichTextEditTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-08-07 06:46:11 -04:00
] ;
}
# endif //WITH_FANCY_TEXT
2014-03-14 14:13:41 -04:00
else if ( TabIdentifier = = FName ( " LayoutRoundingTab " ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " LayoutRoundingTab " , " Layout Rounding " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SLayoutRoundingTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
else if ( TabIdentifier = = FName ( TEXT ( " ElementTestsTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " ElementTestsTab " , " Element Tests " ) )
. ToolTipText ( LOCTEXT ( " ElementTestsTabToolTip " , " Switches to the Element Tests tab, which allows you to view various rendering-related features of Slate. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SElementTesting )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
else if ( TabIdentifier = = FName ( TEXT ( " SplitterTestTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " SplitterTestTab " , " Splitter Test " ) )
. ToolTipText ( LOCTEXT ( " SplitterTestTabToolTip " , " Switches to the Splitter Test tab, which you can use to test splitters. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SSplitterTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
else if ( TabIdentifier = = FName ( TEXT ( " MultiBoxTestTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " MultiBoxTextTab " , " MultiBox Text " ) )
. ToolTipText ( LOCTEXT ( " MultiBoxTextTabToolTip " , " Switches to the MultiBox tab, where you can test out MultiBoxes and MultiBlocks. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SMultiBoxTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
else if ( TabIdentifier = = FName ( TEXT ( " ColorPickerTestTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " ColorPickerTestTab " , " Color Picker Test " ) )
. ToolTipText ( LOCTEXT ( " ColorPickerTestTabToolTip " , " Switches to the Color Picker tab, where you can test out the color picker. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SColorPickerTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
else if ( TabIdentifier = = " DPIScalingTest " )
{
return SNew ( SDockTab )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SDPIScalingTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
2015-07-07 15:50:03 -04:00
else if ( TabIdentifier = = FName ( TEXT ( " InvalidationTest " ) ) )
{
return SNew ( SDockTab )
[
SNew ( SScissorRectBox )
[
SNew ( SInvalidationTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
] ;
}
2015-08-17 09:40:01 -04:00
else if ( TabIdentifier = = FName ( TEXT ( " GammaTest " ) ) )
{
return SNew ( SDockTab )
[
SNew ( SGammaTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
] ;
}
2014-03-14 14:13:41 -04:00
else if ( TabIdentifier = = FName ( TEXT ( " NotificationListTestTab " ) ) )
{
return SNew ( SDockTab )
. Label ( LOCTEXT ( " NotificationListTestTab " , " Notification List Test " ) )
. ToolTipText ( LOCTEXT ( " NotificationListTestTabToolTip " , " Switches to the Notification List tab, where you can test out the notification list. " ) )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SNotificationListTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
else if ( TabIdentifier = = FName ( " GridPanelTest " ) )
{
return SNew ( SDockTab )
[
2014-09-18 16:45:23 -04:00
SNew ( SScissorRectBox )
[
SNew ( SGridPanelTest )
. RenderTransform_Static ( & : : GetTestRenderTransform )
. RenderTransformPivot_Static ( & : : GetTestRenderTransformPivot )
]
2014-03-14 14:13:41 -04:00
] ;
}
else
{
ensure ( false ) ;
return SNew ( SDockTab ) ;
}
}
2014-12-16 07:36:00 -05:00
TSharedRef < SDockTab > SpawnResponsiveGrid ( const FSpawnTabArgs & Args )
{
TSharedRef < SDockTab > ResponsiveGridTab =
SNew ( SDockTab )
. Label ( LOCTEXT ( " ResponsiveGridTabLabel " , " Responsive Grid " ) )
. ToolTipText ( LOCTEXT ( " ResponsiveGridTabToolTip " , " " ) ) ;
ResponsiveGridTab - > SetContent
(
SNew ( SResponsiveGridPanelTestWidget )
) ;
return ResponsiveGridTab ;
}
2014-03-14 14:13:41 -04:00
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
namespace TestSuiteMenu
{
TSharedRef < FWorkspaceItem > MenuRoot = FWorkspaceItem : : NewGroup ( NSLOCTEXT ( " TestSuite " , " MenuRoot " , " MenuRoot " ) ) ;
TSharedRef < FWorkspaceItem > SuiteTabs = MenuRoot - > AddGroup ( NSLOCTEXT ( " TestSuite " , " SuiteTabs " , " Test Suite Tabs " ) ) ;
TSharedRef < FWorkspaceItem > NestedCategory = SuiteTabs - > AddGroup ( NSLOCTEXT ( " TestSuite " , " NestedCategory " , " Nested " ) ) ;
TSharedRef < FWorkspaceItem > DeveloperCategory = MenuRoot - > AddGroup ( NSLOCTEXT ( " TestSuite " , " DeveloperCategory " , " Developer " ) ) ;
}
TSharedRef < SDockTab > SpawnTestSuite1 ( const FSpawnTabArgs & Args )
{
TSharedRef < FTabManager : : FLayout > Layout = FTabManager : : NewLayout ( " TestSuite1_Layout " )
- > AddArea
(
// The primary area will be restored and returned as a widget.
// Unlike other areas it will not get its own window.
// This allows the caller to explicitly place the primary area somewhere in the widget hierarchy.
FTabManager : : NewPrimaryArea ( )
- > Split
(
//The first cell in the primary area will be occupied by a stack of tabs.
// They are all opened.
FTabManager : : NewStack ( )
- > SetSizeCoefficient ( 0.35f )
- > AddTab ( " LayoutExampleTab " , ETabState : : OpenedTab )
- > AddTab ( " DocumentsTestTab " , ETabState : : OpenedTab )
)
- > Split
(
// We can subdivide a cell further by using an additional splitter
FTabManager : : NewSplitter ( )
- > SetOrientation ( Orient_Vertical )
- > SetSizeCoefficient ( 0.65f )
- > Split
(
FTabManager : : NewStack ( )
- > SetSizeCoefficient ( 0.25f )
- > AddTab ( " MultiBoxTestTab " , ETabState : : OpenedTab )
2014-12-16 07:36:00 -05:00
- > AddTab ( " ResponsiveGrid " , ETabState : : OpenedTab )
2014-03-14 14:13:41 -04:00
// The DocTest tab will be closed by default.
- > AddTab ( " DocTest " , ETabState : : ClosedTab )
)
- > Split
(
FTabManager : : NewStack ( )
- > SetSizeCoefficient ( 0.75f )
# if PLATFORM_SUPPORTS_MULTIPLE_NATIVE_WINDOWS
- > AddTab ( " TableViewTestTab " , ETabState : : OpenedTab )
# endif
- > AddTab ( " LayoutRoundingTab " , ETabState : : OpenedTab )
- > AddTab ( " EditableTextTab " , ETabState : : OpenedTab )
2014-08-07 06:46:11 -04:00
# if WITH_FANCY_TEXT
2014-03-14 14:13:41 -04:00
- > AddTab ( " RichTextTab " , ETabState : : OpenedTab )
2014-07-31 06:02:59 -04:00
- > AddTab ( " MultiLineEditTab " , ETabState : : OpenedTab )
2014-08-07 06:46:11 -04:00
- > AddTab ( " RichEditableTextTab " , ETabState : : OpenedTab )
2014-10-06 10:05:03 -04:00
- > AddTab ( " WebBrowserTab " , ETabState : : OpenedTab )
2014-08-07 06:46:11 -04:00
# endif //WITH_FANCY_TEXT
)
2014-03-14 14:13:41 -04:00
)
)
# if PLATFORM_SUPPORTS_MULTIPLE_NATIVE_WINDOWS
- > AddArea
(
FTabManager : : NewArea ( 320 , 240 )
- > SetWindow ( FVector2D ( 600 , 50 ) , false )
- > Split
(
FTabManager : : NewStack ( )
- > AddTab ( " SplitterTestTab " , ETabState : : ClosedTab )
)
)
# endif
;
TSharedRef < SDockTab > TestSuite1Tab =
SNew ( SDockTab )
. TabRole ( ETabRole : : MajorTab )
. Label ( LOCTEXT ( " TestSuite1TabLabel " , " Test Suite 1 " ) )
. ToolTipText ( LOCTEXT ( " TestSuite1TabToolTip " , " The App for the first Test Suite. " ) ) ;
TestSuite1TabManager = FGlobalTabmanager : : Get ( ) - > NewTabManager ( TestSuite1Tab ) ;
TestSuite1TabManager - > RegisterTabSpawner ( " LayoutExampleTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " LayoutExampleTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " LayoutExampleTab " , " Layout Example " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite1TabManager - > RegisterTabSpawner ( " SplitterTestTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " SplitterTestTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " SplitterTestTab " , " Splitter Test " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite1TabManager - > RegisterTabSpawner ( " EditableTextTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " EditableTextTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " EditableTextTab " , " Editable Text Test " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite1TabManager - > RegisterTabSpawner ( " RichTextTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " RichTextTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " RichTextTab " , " Rich Text Test " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
2014-07-31 06:02:59 -04:00
TestSuite1TabManager - > RegisterTabSpawner ( " MultiLineEditTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " MultiLineEditTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " MultiLineEditTab " , " Multiline Edit " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
2014-08-07 06:46:11 -04:00
TestSuite1TabManager - > RegisterTabSpawner ( " RichEditableTextTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " RichEditableTextTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " RichEditableTextTab " , " Rich Editable Text Test " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
2014-03-14 14:13:41 -04:00
TestSuite1TabManager - > RegisterTabSpawner ( " LayoutRoundingTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " LayoutRoundingTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " LayoutRoundingTab " , " Layout Rounding " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
2014-12-16 07:36:00 -05:00
TestSuite1TabManager - > RegisterTabSpawner ( " ResponsiveGrid " , FOnSpawnTab : : CreateStatic ( & SpawnResponsiveGrid ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
2014-03-14 14:13:41 -04:00
TestSuite1TabManager - > RegisterTabSpawner ( " MultiBoxTestTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " MultiBoxTestTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " MultiBoxTestTab " , " MultiBox Test " ) )
. SetGroup ( TestSuiteMenu : : NestedCategory ) ;
TestSuite1TabManager - > RegisterTabSpawner ( " TableViewTestTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " TableViewTestTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " TableViewTestTab " , " TableView Test " ) )
. SetGroup ( TestSuiteMenu : : NestedCategory ) ;
TestSuite1TabManager - > RegisterTabSpawner ( " DocumentsTestTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " DocumentsTestTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " DocumentsTestTab " , " Document Spawner " ) ) ;
FMenuBarBuilder MenuBarBuilder = FMenuBarBuilder ( TSharedPtr < FUICommandList > ( ) ) ;
MenuBarBuilder . AddPullDownMenu (
NSLOCTEXT ( " TestSuite " , " WindowMenuLabel " , " Window " ) ,
NSLOCTEXT ( " TestSuite " , " WindowMenuToolTip " , " " ) ,
FNewMenuDelegate : : CreateSP ( TestSuite1TabManager . ToSharedRef ( ) , & FTabManager : : PopulateTabSpawnerMenu , TestSuiteMenu : : MenuRoot ) ) ;
TestSuite1Tab - > SetContent
(
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
MenuBarBuilder . MakeWidget ( )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1.0f )
[
TestSuite1TabManager - > RestoreFrom ( Layout , Args . GetOwnerWindow ( ) ) . ToSharedRef ( )
]
) ;
return TestSuite1Tab ;
}
static TSharedPtr < FTabManager > TestSuite2TabManager ;
TSharedRef < SDockTab > SpawnTestSuite2 ( const FSpawnTabArgs & Args )
{
TSharedRef < FTabManager : : FLayout > Layout = FTabManager : : NewLayout ( " TestSuite2_Layout " )
- > AddArea
(
FTabManager : : NewPrimaryArea ( )
- > Split
(
FTabManager : : NewStack ( )
- > AddTab ( " AnimationTestTab " , ETabState : : OpenedTab )
- > AddTab ( " ElementTestsTab " , ETabState : : OpenedTab )
- > AddTab ( " ColorPickerTestTab " , ETabState : : OpenedTab )
- > AddTab ( " NotificationListTestTab " , ETabState : : OpenedTab )
- > AddTab ( " GridPanelTest " , ETabState : : OpenedTab )
- > AddTab ( " DPIScalingTest " , ETabState : : OpenedTab )
2015-07-07 15:50:03 -04:00
- > AddTab ( " InvalidationTest " , ETabState : : OpenedTab )
2015-08-17 09:40:01 -04:00
- > AddTab ( " GammaTest " , ETabState : : OpenedTab )
2014-03-14 14:13:41 -04:00
)
2014-07-09 05:15:50 -04:00
) ;
2014-03-14 14:13:41 -04:00
TSharedRef < SDockTab > TestSuite2Tab =
SNew ( SDockTab )
. TabRole ( ETabRole : : MajorTab )
. Label ( LOCTEXT ( " TestSuite2TabLabel " , " Test Suite 2 " ) )
. ToolTipText ( LOCTEXT ( " TestSuite2TabToolTip " , " The App for the first Test Suite. " ) ) ;
TestSuite2TabManager = FGlobalTabmanager : : Get ( ) - > NewTabManager ( TestSuite2Tab ) ;
{
TestSuite2TabManager - > RegisterTabSpawner ( " AnimationTestTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " AnimationTestTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " AnimationTestTab " , " Animation Test " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite2TabManager - > RegisterTabSpawner ( " ElementTestsTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " ElementTestsTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " ElementTestsTab " , " Elements Test " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite2TabManager - > RegisterTabSpawner ( " ColorPickerTestTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " ColorPickerTestTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " ColorPickerTestTab " , " Color Picker Test " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite2TabManager - > RegisterTabSpawner ( " NotificationListTestTab " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " NotificationListTestTab " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " NotificationListTestTab " , " Notifications Test " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite2TabManager - > RegisterTabSpawner ( " GridPanelTest " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " GridPanelTest " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " GridPanelTest " , " Grid Panel " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite2TabManager - > RegisterTabSpawner ( " DPIScalingTest " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " DPIScalingTest " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " DPIScalingTest " , " DPI Scaling " ) )
2015-07-07 15:50:03 -04:00
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
TestSuite2TabManager - > RegisterTabSpawner ( " InvalidationTest " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " InvalidationTest " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " InvalidationTest " , " Invalidtion " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
2015-08-17 09:40:01 -04:00
TestSuite2TabManager - > RegisterTabSpawner ( " GammaTest " , FOnSpawnTab : : CreateStatic ( & SpawnTab , FName ( " GammaTest " ) ) )
. SetDisplayName ( NSLOCTEXT ( " TestSuite1 " , " GammaTest " , " Gamma " ) )
. SetGroup ( TestSuiteMenu : : SuiteTabs ) ;
2014-03-14 14:13:41 -04:00
}
FMenuBarBuilder MenuBarBuilder = FMenuBarBuilder ( TSharedPtr < FUICommandList > ( ) ) ;
MenuBarBuilder . AddPullDownMenu (
NSLOCTEXT ( " TestSuite " , " WindowMenuLabel " , " Window " ) ,
FText : : GetEmpty ( ) ,
FNewMenuDelegate : : CreateSP ( TestSuite2TabManager . ToSharedRef ( ) , & FTabManager : : PopulateTabSpawnerMenu , TestSuiteMenu : : MenuRoot ) ) ;
TestSuite2Tab - > SetContent
(
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
MenuBarBuilder . MakeWidget ( )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1.0f )
[
TestSuite2TabManager - > RestoreFrom ( Layout , Args . GetOwnerWindow ( ) ) . ToSharedRef ( )
]
) ;
return TestSuite2Tab ;
}
Change 2122846 on 2014/07/01 00:51:24 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN UnrealMath updates
* added RotationAboutPointMatrix
* Added static Make() methods for the various derived FMatrix types. Allows single expressions that return an FMatrix so we don't have to rely on implicit conversion (which will break some generic programming).
* Simplified the implementation of FQuat::MakeFromEuler.
Change 2122848 on 2014/07/01 01:04:31 by Wes.Hunt@WHUNT-UE4-MAIN
Added SlateLayoutTransform to store a 2D translation and uniform scale (for FGeometry).
#BUN Added SlateTransformCalculus for handling arbitrary transform manipulation. See documentation in header.
Change 2123889 on 2014/07/01 17:12:40 by Wes.Hunt@WHUNT-UE4-MAIN
Remove unncessary use of FGeometry.
Change 2221407 on 2014/07/16 17:58:20 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus changes
* Move 2D versions of functions into SlateLayoutTransform header to separate it from the base 3D stuff.
* FSlateLayoutTransform is scale then translate now instead of translate then scale.
* TransformPosition -> TransformPoint
* Added a version of Concatenate taking 4 transforms.
* Update docs.
Change 2221408 on 2014/07/16 17:58:39 by Wes.Hunt@WHUNT-UE4-MAIN
Adjustments to Slate headers and PCH
Change 2221409 on 2014/07/16 17:59:07 by Wes.Hunt@WHUNT-UE4-MAIN
Transform calculus support for SlateRects
Change 2221459 on 2014/07/16 18:41:13 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN SWindow changes
* Added GetLocalToScreenTransform. (Screen space == Desktop space)
** Basically contains the ApplicationScale and Window offset from the desktop.
* Added GetLocalToWindowTransform (Window space == Desktop space without the window offset)
* Added GetClientRectInScreen
** Allows code to know exactly WHERE the client rect is in the window.
* Refactored GetWindowGeometryInScreen and GetWindowGeometryInWindow to use the new methods above.
* SPopupLayer::OnArrangChildren refactored to clarify transformational spaces and use transformation calculus to do the work.
** This fixes PopupLayer to correctly account for the scale of the widget it is presenting a popup for.
** MenuAnchors that that create new SWindows still do no correctly account for scale.
Change 2221464 on 2014/07/16 18:45:25 by Wes.Hunt@WHUNT-UE4-MAIN
Render Transforms initial checkin. Lots of cleanup to do, but this is functionally working for all basic widgets and draw elements in slate. Main feature todos:
* restore pixel snapping.
* handle clipping in the presence of rotation.
Change 2226298 on 2014/07/21 21:22:46 by Wes.Hunt@WHUNT-UE4-MAIN
Use a better method to get the window's rectangle.
Change 2227809 on 2014/07/22 20:41:57 by Wes.Hunt@WHUNT-UE4-MAIN
Add 2D version of TransformVector to SlateTransform.
Change 2232085 on 2014/07/25 16:32:15 by Wes.Hunt@WHUNT-UE4-MAIN
Implement CPU pixel snapping even under render transform. This is pretty CPU intensive, but a reasonable POC.
Change 2232090 on 2014/07/25 16:33:10 by Wes.Hunt@WHUNT-UE4-MAIN
Font cache fixes for padding.
* Add 1 pixel of padding around all fonts.
* Fix font cache to properly handle padding
* Fix font cache to handle texture elements of zero size with non-zero padding.
Change 2232350 on 2014/07/25 19:50:11 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Updated FSlateTextureAtlas padding logic.
* Added ESlateTextureAtlasPaddingStyle which lets you choose from three atlasing padding styles:
* NoPadding - don't apply any padding (used to be Padding == 0).
* DilateBorder - copy border edges to apply 1-pixel padding (used to be Padding == 1).
* PadWithZero - expand 1-pixel border and fill it with zeros (new style).
* removed notion of Padding > 1 pixel from atlasing. It wasn't useful as we don't support mips or aniso filtering.
* Also the existing code didn't actually handle Padding > 1.
* FontCache now uses PadWithZero padding so upon zooming text, the edges get smoother.
Change 2237962 on 2014/07/31 02:17:28 by Wes.Hunt@WHUNT-UE4-MAIN
TransformCalculus tweak.
* Core Concatentate(T,T) no longer assumes the return type is T. Uses decltype(T.Concat(T)) instead.
Change 2237964 on 2014/07/31 02:21:31 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added a full suite of transform types for 2D transformations that are transform calculus aware:
* FSlateScale2D
* FSlateShear2D
* FSlateQuat2D
* FSlateMatrix2x2
Added appropriate overloads and ConcatenateRules for all combinations, making them compatible with FSlateTransform and FSlateLayoutTransform.
FSlateTransform is now implemented in terms of a decomposed Matrix3x2.
Change 2237972 on 2014/07/31 02:30:45 by Wes.Hunt@WHUNT-UE4-MAIN
Remove 4x4 matrix from FSlateTransform
Change 2238004 on 2014/07/31 03:11:42 by Wes.Hunt@WHUNT-UE4-MAIN
FSlateTransform -> FSlateRenderTransform.
Change 2238714 on 2014/07/31 15:16:18 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Moved TransformCalculus into Core/Math.
* Split into TransformCalculus, 2D, and 3D support.
* FSlateRenderTransform is now just a typedef.
* Renamed 2D transform types to remove "Slate" from their name.
Change 2240437 on 2014/08/01 19:08:59 by Wes.Hunt@WHUNT-UE4-MAIN
Restore funky logic in deprecated FGeometry::MakeChild implementations.
* legacy FGeometry::MakeChild functions took OffsetFromParent in the local space of the widget. This therefore CANNOT be the layout transform offset, because that needs to be in parent space for the transform of P * S + T to work correctly.
* Therefore, the legacy functions now expect the ChildOffset to be in child space and re-apply the child scale to put them back into parent space.
* This fixes the NodePanels to properly handle zooming around the mouse cursor point.
Change 2242769 on 2014/08/04 13:44:33 by Wes.Hunt@WHUNT-UE4-MAIN
remove local layout transform storage from FGeometry.
Change 2242771 on 2014/08/04 13:45:59 by Wes.Hunt@WHUNT-UE4-MAIN
Update Declarative syntax support to call it RenderTransform instead of Transform.
Change 2245872 on 2014/08/06 14:45:44 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Add GetBottomRight function to FSlateRect.
Change 2246129 on 2014/08/06 17:32:04 by Wes.Hunt@WHUNT-UE4-MAIN
SThrobber now supports render transforms.
Key is to not use deprecated members of FPaintGeometry, which should be treated as immutable (at least public members shouldn't be modified withotu modifying the new members as well).
Change 2247782 on 2014/08/07 19:12:57 by Wes.Hunt@WHUNT-UE4-MAIN
Clipping widgets now works under render transforms, FPaintGeometry legacy fixes.
* Expanded FSlateVertex by 2 bytes to pass in local position.
* Change clipcoords to be passed in local space.
* Remove WorldPosition interpolator. Replaced by LocalPosition interpolator.
FPaintGeometry fixes
* FPaintGeometry now takes Size in LocalSpace unless using a legacy ctor. Avoid transform-and-back that was occurring when creating from an FGeometry, which already had it in local space, and rendering, which now wants it in local space.
* FPaintGeometry again supports mutability when using legacy members (like DrawPosition). This allows legacy code to mutate an FPaintGeometry, which is committed to a render transform right before rendering.Hacky, but allows legacy code that treated FPaintGeometry as a plain-old-struct to work.
* Removed a legacy ctor of FPaintGeoemtry that was not being used.
Misc:
* Turned off pixel snapping code in ElementBatcher because the FSlateVertex is doing it during construction.
* Still texture filtering artifacts to figure out, so the last word has not been spoken on this yet!
* Tweaked FGeometry::MakeRoot to use the non-render transform ctor since it doesn't need to use it.
* Removed /*WindowSpace*/ Size member from SlateDrawElement.
* SlateDrawElement::GetRotationPoint vastly simplified by using Local space.
* Moved slate cycle counters back to the top of the function in ElementBatcher.
* Uninlined FSlateVertex ctors so I can tweak their rounding rules without a full recompile.
Change 2247790 on 2014/08/07 19:20:01 by Wes.Hunt@WHUNT-UE4-MAIN
SSlider no longer uses MakeRotatedBox, correctly handles render transforms.
* Now uses a render transform to draw a vertical slider handle instead of MakeRotatedBox.
* Since we don't support layout transforms, we also have to adjust the clip rect to account for the render-only transform, and make it act like a layout transform.
Change 2249106 on 2014/08/08 19:13:21 by Wes.Hunt@WHUNT-UE4-MAIN
Slate clipping now done in window space again.
* This addresses subpixel jittering that occured on otherwise stable clip rects because local space was moving underneath, and transforming the clip rect to local space created occasional rounding errors.
* Implemented a vectorized point-in-parallelogram check in the pixel shaders to do this. Now pass clip rect in slightly differently, and moved to a float16 to allow better clip precision under rotation. But the vertex data remains the same size.
* Moved some more common transform work into FSlateVertex constructor to save duplication.
* Removed construction of local clip rect as it's no longer needed except for text rendering.
* Hoisted construction of local clip rect out of the text drawing character loop (whoops).
* Precompute InverseLayoutTransform in draw code as we use that a lot now.
* Fixed OGL renderer to work.
Change 2249123 on 2014/08/08 19:45:19 by Wes.Hunt@WHUNT-UE4-MAIN
SProgressBar no longer uses a temporary PaintGeometry to create the inner clipping rect for drawing, it directly inflates the clipping rect now. Also tried to adjust the coords to reduce jitter in the one-pixel padding.
Change 2251914 on 2014/08/11 16:26:12 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing HitTest 2.0 to work with latest code.
* Added AppendTransform to FGeometry to preserve immutability of the struct.
Change 2253023 on 2014/08/12 10:30:23 by Wes.Hunt@WHUNT-UE4-MAIN
Fixing Slate RHI Renderer to use new screenspace clipping with render transforms.
Change 2253090 on 2014/08/12 11:36:16 by Wes.Hunt@WHUNT-UE4-MAIN
Fix SClippingHorizontalBox to use immutable FGeometry position. Also fix to properly support scale in when it needs to clip children.
Change 2253701 on 2014/08/12 17:48:06 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Round viewport rect instead of trunc to match how slate does it now (fixes 1:1 pixel error on SViewports). Need to abstract slate rounding internals so clients don't have to guess.
Change 2255403 on 2014/08/13 19:08:25 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added LayoutGeometry class.
Change 2255404 on 2014/08/13 19:10:40 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Made FGeometry public members const to catch all mutating uses of them. Added some hacks in the implementation to make it backward compatible.
Removed the AccumulatedLayoutTransform, since it was just a copy of AbsolutePosition and Scale. Now all code creates the layout transform on the fly from those members. Still functionally the same.
Added support for MakeChild using FLayoutGeometry.
Change 2255405 on 2014/08/13 19:12:39 by Wes.Hunt@WHUNT-UE4-MAIN
Changed SSplitter and Splitter2x2 to use FLayoutTransforms where possible. Now only calls ArrangeChildren() when rendering, avoiding accumulating the layout transforms and storing the render transforms altogether.
Change 2265162 on 2014/08/20 18:24:04 by Wes.Hunt@WHUNT-UE4-MAIN
Implement MakeRotatedBox in terms of a render transform. Remove all shader code associated with rotating.
Change 2268034 on 2014/08/22 17:40:05 by Wes.Hunt@WHUNT-UE4-MAIN
More 2D transform cleanup.
* Removed a bunch of todo comments from the code, and converted them to more of a final form for main.
* #BUN Removed FGeometry::CenteredPaintGeometryBelow as it was misleading, and users of the function were forced to mutate the resulting FPaintGeometry.
* #BUN Removed FGeometry::GetRect() because it returned a rect in a weird space if the local scale != 1. Only one place in the code actually used it.
Change 2268096 on 2014/08/22 18:12:41 by Wes.Hunt@WHUNT-UE4-MAIN
Clean up more stuff in FPaintGeometry.
* #BUN Removed ToSlateRect and Identity().
* Removed storage of accumulated layout transform, since DrawPosition and DrawScale implicitly stored it.
* Removed a bunch of todo comments and converted them to a more final form.
Change 2270989 on 2014/08/25 15:48:46 by Wes.Hunt@WHUNT-UE4-MAIN
Add support for Concatenate with 5 transforms.
Change 2271394 on 2014/08/25 19:12:53 by Wes.Hunt@WHUNT-UE4-MAIN
#BUN Added an OffsetBy function to FSlateRect
Change 2271395 on 2014/08/25 19:13:56 by Wes.Hunt@WHUNT-UE4-MAIN
Added a version of FSlateRotatedRect that uses regular floats, also added IsUnderLocation ToBoundingRect function for overlap testing.
Change 2271396 on 2014/08/25 19:14:38 by Wes.Hunt@WHUNT-UE4-MAIN
HitTest 2.0 now works with render transforms.
#codereview:matt.kuhlenschmidt,nick.atamas
[CL 2276499 by Wes Hunt in Main branch]
2014-08-28 14:29:46 -04:00
TSharedRef < SDockTab > SpawnRenderTransformManipulator ( const FSpawnTabArgs & Args )
{
TSharedRef < SDockTab > RenderTransformManipulatorTab =
SNew ( SDockTab )
. TabRole ( ETabRole : : MajorTab )
. Label ( LOCTEXT ( " RenderTransformTabLabel " , " Render Transform " ) )
. ToolTipText ( LOCTEXT ( " RenderTransformTabToolTip " , " Allows manipulating the render transform of all test tabs at a global level. " ) ) ;
RenderTransformManipulatorTab - > SetContent
(
SNew ( SRenderTransformManipulatorWidget )
) ;
return RenderTransformManipulatorTab ;
}
2014-12-16 07:36:00 -05:00
TSharedRef < SDockTab > SpawnWidgetGallery ( const FSpawnTabArgs & Args )
2014-10-16 13:28:42 -04:00
{
2014-12-16 07:36:00 -05:00
return SNew ( SDockTab )
. TabRole ( ETabRole : : NomadTab )
. Label ( LOCTEXT ( " WidgetGalleryTab " , " Widget Gallery " ) )
. ToolTipText ( LOCTEXT ( " WidgetGalleryTabTextToolTip " , " Switch to the widget gallery. " ) )
[
SNew ( SScissorRectBox )
[
MakeWidgetGallery ( )
]
] ;
2014-10-16 13:28:42 -04:00
}
2014-03-14 14:13:41 -04:00
void RestoreSlateTestSuite ( )
{
Added the ability to take, save, and load widget snapshots via the widget reflector (Epic Friday)
Major changes:
- The widget reflector UI now uses tabs. The hierarchy and stats views have been moved to tabs, and new tabs have been added to support picking widgets from a snapshot.
- The widget reflector node trees are no longer using UObject types. The idea here was to make the serialization easier, but it didn't work and I ended up using JSON instead.
- When you take or load a widget snapshot, you're now shown the screenshot of the window associated with that snapshot, and are able to pick widgets from it as you would do with a live tree.
API changes:
- The tab spawners for the widget reflector and atlas visualizers are now registered automatically when the SlateReflector module is loaded. These are now the only way to create these windows.
- The tabbed layout within the widget reflector has made it impossible to create the widget reflector unless spawned via a tab manager. To this end, the following functions have been removed from ISlateReflectorModule:
- GetWidgetReflector
- GetAtlasVisualizer
- GetTextureAtlasVisualizer
- GetFontAtlasVisualizer
- These functions used to be used to create a raw widget reflector or atlas viewer widget.
- If you were doing this because you were placing it into your own window, you can take advantage of the fact that the widget reflector tab spawner is always available, and use the global tab manager to create your window and place a spawned widget reflector tab inside it - SummonPerfTestSuite in SPerfSuite.cpp provides an example of this.
- If you were doing this in the handler of your own widget reflector tab spawner, you can either just use the standard widget reflector tab spawner instead (you need to load the SlateReflector module once, and then "WidgetReflector" will be available to spawn via the global tab manager), or you can just use the DisplayWidgetReflector function of ISlateReflectorModule (which will internally do the same thing).
[CL 2661609 by Jamie Dale in Main branch]
2015-08-19 16:30:27 -04:00
// Need to load this module so we have the widget reflector tab available
FModuleManager : : LoadModuleChecked < ISlateReflectorModule > ( " SlateReflector " ) ;
2014-03-14 14:13:41 -04:00
FTestStyle : : ResetToDefault ( ) ;
FGlobalTabmanager : : Get ( ) - > RegisterTabSpawner ( " TestSuite1 " , FOnSpawnTab : : CreateStatic ( & SpawnTestSuite1 ) ) ;
FGlobalTabmanager : : Get ( ) - > RegisterTabSpawner ( " TestSuite2 " , FOnSpawnTab : : CreateStatic ( & SpawnTestSuite2 ) ) ;
2014-10-16 13:28:42 -04:00
FGlobalTabmanager : : Get ( ) - > RegisterTabSpawner ( " RenderTransformManipulator " , FOnSpawnTab : : CreateStatic ( & SpawnRenderTransformManipulator ) ) ;
2014-12-16 07:36:00 -05:00
FGlobalTabmanager : : Get ( ) - > RegisterNomadTabSpawner ( " WidgetGalleryTab " , FOnSpawnTab : : CreateStatic ( & SpawnWidgetGallery ) )
. SetDisplayName ( LOCTEXT ( " WidgetGalleryTab " , " Widget Gallery " ) )
. SetGroup ( TestSuiteMenu : : MenuRoot ) ;
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948319 on 2016/04/19 by Nick.Shin
update zlib to v1.2.8
part 1 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2948661 on 2016/04/19 by Nick.Shin
keep using old zlibs until they are recompiled with the newer version
Change 2948737 on 2016/04/19 by Nick.Shin
build warning fix
Change 2949334 on 2016/04/20 by Nick.Shin
fix library path
for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set...
Change 2951556 on 2016/04/21 by Nick.Shin
static libs double checked
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2951559 on 2016/04/21 by Nick.Shin
static libs double checked
forgot these files - they were in another changelist
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2952411 on 2016/04/22 by Nick.Shin
add win32 build targets for zlib openssl libcurl libwebsockets
part 1 of 2: these are the C# build scripts
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
Change 3118163 on 2016/09/08 by Josh.Adams
perm test 2, not a useful file at all
Change 3121142 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3121150 on 2016/09/12 by Daniel.Lamb
Added warning logs to help track down issue UE-33453.
Change 3121201 on 2016/09/12 by Keith.Judge
Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix.
Change 3121302 on 2016/09/12 by Joe.Graf
Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors
Change 3121379 on 2016/09/12 by Dmitry.Rekman
Linux: only link libraries that export needed symbols (UE-35720).
- Fixes very long startup times of modular builds.
- Includes PR #2778 by slonopotamus.
#jira UE-35720
Change 3121383 on 2016/09/12 by Dmitry.Rekman
Linux: added some missing _API declarations on symbols used externally.
- Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't).
Change 3121456 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3122939 on 2016/09/13 by Luke.Thatcher
[PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service.
- Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone.
Change 3123040 on 2016/09/13 by Brent.Pease
+ Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now.
Change 3123664 on 2016/09/13 by Nick.Shin
this was originally checked into: release 4.13.1
bringing here to dev-platform
-- original submit comments --
first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing"
next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop
jira UE-35363 - Huge game window when launching onto Safari 9.1.2
Change 3125282 on 2016/09/14 by Michael.Trepka
Fixed iOS and tvOS code indexing in Xcode project
Change 3126812 on 2016/09/15 by Josh.Adams
Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes:
- Added Parse function to JsonObject.cs to be able to parse a string
- Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU()
- Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
- Converted the PS4MallocCrash class into a generic one (that Wolf is now also using)
- Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread
- Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere
- Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects
- Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever)
- Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool.
- Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini)
- Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain.
- Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening
- Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct.
- Renamed a UT copy of a global function to not linker-conflict
- Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4.
- Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists)
- Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority()
- Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads?
- Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move.
Change 3126842 on 2016/09/15 by Michael.Trepka
Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation.
Change 3126956 on 2016/09/15 by Michael.Trepka
Added support for compiling Vulkan shaders for Android on Mac
Change 3127206 on 2016/09/15 by Michael.Trepka
PR #2604: Remove some warnings. (Contributed by reapazor)
Change 3127324 on 2016/09/15 by Michael.Trepka
Allow third party dylibs on Mac to be loaded from plugin subfolders
Change 3127924 on 2016/09/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3128369 on 2016/09/16 by Nick.Shin
zlib 1.2.8
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128377 on 2016/09/16 by Nick.Shin
openssl 1_0_2h
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128383 on 2016/09/16 by Nick.Shin
libcurl 7_48_0
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128384 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128464 on 2016/09/16 by Nick.Shin
webRTC rev.12643
NOTE: VS2015
- only Win64 is available
- Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment
NOTE: VS2013
- not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist
- also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways
FUTURE NOTE:
- will continue to try to get VS2015 Win32 functional
- and am working on trying to get VS2013 tested
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128500 on 2016/09/16 by Nick.Shin
zlib 1.2.8 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128504 on 2016/09/16 by Nick.Shin
openssl 1_0_2h - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128506 on 2016/09/16 by Nick.Shin
libcurl 7_48_0 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128508 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128513 on 2016/09/16 by Nick.Shin
webRTC rev.12643 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128602 on 2016/09/16 by Nick.Shin
webRTC rev.9862 - Win64 VS2013
NOTE:
- not tested (i'm working on getting a VS2013 pro license)
- checking in for testing purposes
WARNING:
- VS2013 is no longer supported by webRTC latest
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128605 on 2016/09/16 by Nick.Shin
re-enabling updated ThirdParySoftware libs:
- zlib (v.1.2.8)
- openssl (1.0.2h)
- libcurl (7_48_0)
- libwebsocket (v.1.7.4)
- webRTC (rev.12643)
to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build...
Change 3128651 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605
Change 3128704 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605 - this time actually compiling it...
Change 3128825 on 2016/09/16 by Dmitry.Rekman
Linux: proper fix for too slow startup times (UE-35967).
- Pull request #2793 by slonopotamus.
- Now without stripping dependencies on libraries specified before.
- Contains a work around for ld bug <2.25.
Change 3128972 on 2016/09/16 by Nick.Shin
fix to local build error.
Change 3129283 on 2016/09/16 by Brent.Pease
+ Add Android local notification support based on existing system used for iOS
+ Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release
Change 3129494 on 2016/09/17 by Nick.Shin
fix CIS build errors
Change 3129503 on 2016/09/17 by Dmitry.Rekman
Fix Linux build (case sensitivity issue).
Change 3129514 on 2016/09/17 by Nick.Shin
fix CIS build errors for consoles - missing zlib include path
special thanks to Dmitry.Rekman for pointing me in the right direction
Change 3129647 on 2016/09/17 by Dmitry.Rekman
Linux: fix non-unity build.
Change 3131043 on 2016/09/19 by Nick.Shin
archiving build instructions/steps when building:
- zlib (v.1.2.8)
win: #3128369
osx: #3128500
- openssl (1.0.2h)
win: #3128377
osx: #3128504
- libcurl (7_48_0)
win: #3128383
osx: #3128506
- libwebsocket (v.1.7.4)
win: #3128384
osx: #3128508
- webRTC
win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP
osx: #3128513
Change 3132801 on 2016/09/20 by Dmitry.Rekman
Linux: support specifying default OpenGL version via configs (UE-34777).
- The first targeted RHI is going to be used.
Change 3132905 on 2016/09/20 by Josh.Adams
- Fixed up some paths with the WolfPlat rename
Change 3133148 on 2016/09/20 by Josh.Adams
- Only show UT EULA if PLATFORM_DESKTOP
Change 3133152 on 2016/09/20 by Josh.Adams
- Beginning support for applets. Disabled unless you have a special SDK with applet support.
Change 3133169 on 2016/09/20 by Josh.Adams
- Fixed issue with Wolf access but no SDK installed
Change 3133344 on 2016/09/20 by Daniel.Lamb
Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile.
Added new flag to limit number of concurrent shader compiles.
#test Cook QAGame, Cook Paragon
Change 3133345 on 2016/09/20 by Daniel.Lamb
FRedirectCollector collects string asset references all the time when running the editor.
#test Cook paragon cook QAGame.
Change 3133852 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated.
Change 3133875 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2)
Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick
Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'.
Change 3134544 on 2016/09/21 by Josh.Adams
- Reduced UT textures for Wolf
Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick
FPS4Time::SystemTime now calculates the local machine time, instead of UTC.
#jira UE-35170
Change 3135036 on 2016/09/21 by Michael.Trepka
Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process
Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick
GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32
Change 3135292 on 2016/09/21 by Jeff.Campeau
Change include order to favor the XDK edition specific headers where available.
Change 3136414 on 2016/09/22 by Josh.Adams
- Fixed a checkf() that had the case reversed
#jira ue-36311
Change 3137082 on 2016/09/22 by Dmitry.Rekman
Added support for Linux installed builds to 4.14
Change 3137220 on 2016/09/22 by Dmitry.Rekman
Linux: do not rebuild hlslcc on each setup.
- Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary.
Change 3137227 on 2016/09/22 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3137259 on 2016/09/22 by Dmitry.Rekman
Linux installed build: fix CIS (missed one .csproj)
Change 3137290 on 2016/09/22 by Dmitry.Rekman
Linux installed builds: fix for the resulting directory.
Change 3137291 on 2016/09/22 by Chris.Babcock
Restore texture filtering mode properly when movie played on Android
#jira UE-36342
#ue4
#android
Change 3137376 on 2016/09/22 by Dmitry.Rekman
Linux: re-enabled crash handler stack smash protection.
- Race condition in FRunnableThreadPThread has been previously fixed.
Change 3138498 on 2016/09/23 by Dmitry.Rekman
Linux: add missed package for installed builds.
- mono-devel package for resgen2.
Change 3138523 on 2016/09/23 by Dmitry.Rekman
Linux: Update hlslcc now that we're not rebuilding it each time.
Change 3138658 on 2016/09/23 by Josh.Adams
- Moved UT's Social Plugin into NotForLicensees
Change 3139042 on 2016/09/23 by Dmitry.Rekman
Linux: more robust check of installed packages.
- Also added mono-devel to the list of packages installed on 14.04.
Change 3139674 on 2016/09/26 by Dmitry.Rekman
Fix crash when editing widget blueprints (UE-35185).
- Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping.
- Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795).
Change 3140203 on 2016/09/26 by Josh.Adams
- Wolf Fix for SHIPPING
Change 3140206 on 2016/09/26 by Josh.Adams
- NEX work, still in progress
Change 3140276 on 2016/09/26 by Josh.Adams
- Fixed Wolf compile error
Change 3140485 on 2016/09/26 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3140570 on 2016/09/26 by Dmitry.Rekman
SDL2: Delete obsolete files.
- We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space.
Change 3140577 on 2016/09/26 by Dmitry.Rekman
Fix CudaTest monolithic build.
- Not the best fix, the better fix is to build against bundled libc++.
Change 3141184 on 2016/09/27 by Keith.Judge
Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert.
#jira UE-35973
Change 3141623 on 2016/09/27 by Chris.Babcock
Support hiding virtual keyboard on Android
#jira UE-34201
#ue4
#android
Change 3141887 on 2016/09/27 by Joe.Graf
Added support for additional plugin directories that are specified by the .uproject file
New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins
Change 3141916 on 2016/09/27 by Josh.Adams
- Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925)
Change 3141926 on 2016/09/27 by Josh.Adams
- Support for skipping Wolf user selector (-nologinui)
Change 3141938 on 2016/09/27 by Chris.Babcock
Allow Android media player to seek past 999ms (contributed by rcywongaa)
#jira UE-36453
#PR #2797
#ue4
#android
Change 3142207 on 2016/09/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3142219 on 2016/09/27 by Josh.Adams
- Wolf PhysX 3.4 libs and includes
Change 3142220 on 2016/09/27 by Josh.Adams
- File that had to be fixed up after main merge (missed adding it to the huge integrate CL)
Change 3142314 on 2016/09/27 by Chase.McAllister
#jira UE-35011 fixes to some assets to remove redundancies/output log spam
Change 3142510 on 2016/09/27 by Daniel.Lamb
Fixed up resave lightmaps commandlet so that world transforms don't get applied twice.
#jira UE-35942
Change 3142650 on 2016/09/27 by Chris.Babcock
Android support for Linux by yaakuro
- requires CodeWorks for Android Linux installed and OpenJDK 1.8
- need to set Android SDK paths manually in Project Settings
#jira UE-32752
#jira UE-32753
#PR #2564
#PR #2565
#ue4
#android
#linux
Change 3142802 on 2016/09/27 by Dmitry.Rekman
Upgrade to SDL 2.0.5-ish (still technically 2.0.4).
- Upstream revision 10374:dccf51aee79b.
- Merged all our changes hopefully.
Change 3143075 on 2016/09/28 by Luke.Thatcher
[RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro.
#jira UE-33077
Change 3143219 on 2016/09/28 by Daniel.Lamb
Added new is compiling function which tells you if it's really compiling instead of lying.
If def out additional logging for debugging shader compilation issue for 4.14 release.
Change 3143428 on 2016/09/28 by Luke.Thatcher
[PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061
Change 3143488 on 2016/09/28 by Daniel.Lamb
Changed defaults for skip cooking editor content to true.
Change 3143526 on 2016/09/28 by Daniel.Lamb
Increased the concurrent shader compile limit while in the cooker.
#test Cook paragon
Change 3143874 on 2016/09/28 by Chris.Babcock
Read Android environment variables from .bashrc on Linux
#jira UE-36565
#ue4
#android
#linux
Change 3143911 on 2016/09/28 by Dmitry.Rekman
Fix SDL EGL API binding (UE-18979).
- Contains PR #1398 by x414e54.
- Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade.
Change 3143929 on 2016/09/28 by Daniel.Lamb
Removed some more temporary logging.
#test Cook paragon
Change 3143959 on 2016/09/28 by Jeff.Campeau
Media Player for Xbox One
Change 3143997 on 2016/09/28 by Dmitry.Rekman
Linux: faster linking in Debug.
- Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating.
Change 3144004 on 2016/09/28 by Dmitry.Rekman
Linux: make SCW dump core on crash in debug builds.
- If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space).
Change 3144007 on 2016/09/28 by Dmitry.Rekman
Linux: Allow equals character in command line parameter value (UE-26406).
- PR #2019 by bozzaro.
- Allows passing parameters like -Switch=Key=Value.
Change 3144042 on 2016/09/28 by Jeff.Campeau
Add tag for DX12 support being experimental in target settings.
#jira UE-36150
Change 3144068 on 2016/09/28 by Dmitry.Rekman
Linux: enable using xgConsole in UAT (UE-28096).
- PR #2144 by bozzaro.
- Picks correct xgConsole binary.
- Allegedly fixes crash in CombineXGEItemFile on mono.
Change 3144120 on 2016/09/28 by Michael.Trepka
Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/...
Change 3144172 on 2016/09/28 by Chris.Babcock
Add libpng 1.5.27 for Android
#jira UE-36573
#ue4
#android
Change 3144318 on 2016/09/28 by Chris.Babcock
Correct logic for checking .bashrc on Linux
#ue4
#android
Change 3144331 on 2016/09/28 by Dmitry.Rekman
Linux: repair ARM server builds.
- Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1).
Change 3144354 on 2016/09/28 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
this is intermediate, not fully working
Change 3144368 on 2016/09/28 by Josh.Adams
- Moved the new Social files into NFL
Change 3144395 on 2016/09/28 by Chris.Babcock
Add missing functions for AndroidWebBrowserWindow
#ue4
#android
Change 3144417 on 2016/09/28 by Josh.Adams
- Probable fix for FWebBrowserWindow missing virtuals
Change 3144438 on 2016/09/28 by Jeff.Campeau
XDK updated to 160802
Change 3144569 on 2016/09/29 by Dmitry.Rekman
Linux: allow a selectable clock source (UE-36564).
- The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew.
- Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there.
#tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm).
Change 3145108 on 2016/09/29 by Joe.Graf
Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools)
Change 3145245 on 2016/09/29 by Joe.Graf
#wolf
Checking in removal of plugin use on Win64 per Josh's request
Change 3145514 on 2016/09/29 by Will.Fissler
Updated Mac Info.plist files to disable high DPI on macOS 10.12
Change 3145538 on 2016/09/29 by Josh.Adams
- Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots.
Change 3145540 on 2016/09/29 by Josh.Adams
- Fix for checking some Wolf dev tool installation existence
- Fix for various Wolf build issues
- Fix for Wolf devices not showing up in Launch on
Change 3145542 on 2016/09/29 by Josh.Adams
- Pulled over Wolf changes from Wolf branch into Dev-Platform
Change 3145572 on 2016/09/29 by Josh.Adams
- Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people.
#jira UE-36591
Change 3145769 on 2016/09/29 by Chris.Babcock
Remove duplicate platforms from deploy list in UFE
#jira UE-36636
#ue4
Change 3146061 on 2016/09/29 by Chris.Babcock
Linux: be less spammy in log when launching external procs
#jira UE-36638
#ue4
#linux
Change 3146208 on 2016/09/29 by Dmitry.Rekman
Linux: fix PhysX crash (UE-36613).
- PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above.
- This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun.
#jira UE-36613
Change 3146476 on 2016/09/30 by Josh.Adams
- Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose
Change 3146554 on 2016/09/30 by Josh.Adams
- Removed another wolf secret log
Change 3146626 on 2016/09/30 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3146712 on 2016/09/30 by Josh.Adams
- Fixed case for building Android on Linux
#jira #UE-36652
Change 3146844 on 2016/09/30 by Josh.Adams
- Removed ES2 shader compiling from TVOS, and force Metal compiling
#jira UE-36306
Change 3146865 on 2016/09/30 by Daniel.Lamb
Removed temp logging for materials
#test Launch on paragon
Change 3146874 on 2016/09/30 by Dmitry.Rekman
Linux: add rpath for libTextureConverter.so (UE-36620).
Change 3147030 on 2016/09/30 by Josh.Adams
- Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks
#jira UE-36623
Change 3147151 on 2016/09/30 by Josh.Adams
- Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling?
Change 3147621 on 2016/09/30 by Michael.Trepka
Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac
Change 3147712 on 2016/09/30 by Josh.Adams
- Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform.
#jira UE-36225
Change 3147725 on 2016/09/30 by Josh.Adams
- Fixed yet another Wolf log for people with Wolf access but no SDK
[CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
const float DPIScaleFactor = FPlatformMisc : : GetDPIScaleFactorAtPoint ( 10 , 10 ) ;
2014-03-14 14:13:41 -04:00
TSharedRef < FTabManager : : FLayout > Layout = FTabManager : : NewLayout ( " SlateTestSuite_Layout " )
- > AddArea
(
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948319 on 2016/04/19 by Nick.Shin
update zlib to v1.2.8
part 1 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2948661 on 2016/04/19 by Nick.Shin
keep using old zlibs until they are recompiled with the newer version
Change 2948737 on 2016/04/19 by Nick.Shin
build warning fix
Change 2949334 on 2016/04/20 by Nick.Shin
fix library path
for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set...
Change 2951556 on 2016/04/21 by Nick.Shin
static libs double checked
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2951559 on 2016/04/21 by Nick.Shin
static libs double checked
forgot these files - they were in another changelist
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2952411 on 2016/04/22 by Nick.Shin
add win32 build targets for zlib openssl libcurl libwebsockets
part 1 of 2: these are the C# build scripts
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
Change 3118163 on 2016/09/08 by Josh.Adams
perm test 2, not a useful file at all
Change 3121142 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3121150 on 2016/09/12 by Daniel.Lamb
Added warning logs to help track down issue UE-33453.
Change 3121201 on 2016/09/12 by Keith.Judge
Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix.
Change 3121302 on 2016/09/12 by Joe.Graf
Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors
Change 3121379 on 2016/09/12 by Dmitry.Rekman
Linux: only link libraries that export needed symbols (UE-35720).
- Fixes very long startup times of modular builds.
- Includes PR #2778 by slonopotamus.
#jira UE-35720
Change 3121383 on 2016/09/12 by Dmitry.Rekman
Linux: added some missing _API declarations on symbols used externally.
- Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't).
Change 3121456 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3122939 on 2016/09/13 by Luke.Thatcher
[PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service.
- Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone.
Change 3123040 on 2016/09/13 by Brent.Pease
+ Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now.
Change 3123664 on 2016/09/13 by Nick.Shin
this was originally checked into: release 4.13.1
bringing here to dev-platform
-- original submit comments --
first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing"
next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop
jira UE-35363 - Huge game window when launching onto Safari 9.1.2
Change 3125282 on 2016/09/14 by Michael.Trepka
Fixed iOS and tvOS code indexing in Xcode project
Change 3126812 on 2016/09/15 by Josh.Adams
Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes:
- Added Parse function to JsonObject.cs to be able to parse a string
- Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU()
- Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
- Converted the PS4MallocCrash class into a generic one (that Wolf is now also using)
- Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread
- Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere
- Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects
- Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever)
- Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool.
- Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini)
- Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain.
- Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening
- Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct.
- Renamed a UT copy of a global function to not linker-conflict
- Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4.
- Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists)
- Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority()
- Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads?
- Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move.
Change 3126842 on 2016/09/15 by Michael.Trepka
Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation.
Change 3126956 on 2016/09/15 by Michael.Trepka
Added support for compiling Vulkan shaders for Android on Mac
Change 3127206 on 2016/09/15 by Michael.Trepka
PR #2604: Remove some warnings. (Contributed by reapazor)
Change 3127324 on 2016/09/15 by Michael.Trepka
Allow third party dylibs on Mac to be loaded from plugin subfolders
Change 3127924 on 2016/09/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3128369 on 2016/09/16 by Nick.Shin
zlib 1.2.8
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128377 on 2016/09/16 by Nick.Shin
openssl 1_0_2h
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128383 on 2016/09/16 by Nick.Shin
libcurl 7_48_0
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128384 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128464 on 2016/09/16 by Nick.Shin
webRTC rev.12643
NOTE: VS2015
- only Win64 is available
- Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment
NOTE: VS2013
- not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist
- also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways
FUTURE NOTE:
- will continue to try to get VS2015 Win32 functional
- and am working on trying to get VS2013 tested
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128500 on 2016/09/16 by Nick.Shin
zlib 1.2.8 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128504 on 2016/09/16 by Nick.Shin
openssl 1_0_2h - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128506 on 2016/09/16 by Nick.Shin
libcurl 7_48_0 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128508 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128513 on 2016/09/16 by Nick.Shin
webRTC rev.12643 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128602 on 2016/09/16 by Nick.Shin
webRTC rev.9862 - Win64 VS2013
NOTE:
- not tested (i'm working on getting a VS2013 pro license)
- checking in for testing purposes
WARNING:
- VS2013 is no longer supported by webRTC latest
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128605 on 2016/09/16 by Nick.Shin
re-enabling updated ThirdParySoftware libs:
- zlib (v.1.2.8)
- openssl (1.0.2h)
- libcurl (7_48_0)
- libwebsocket (v.1.7.4)
- webRTC (rev.12643)
to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build...
Change 3128651 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605
Change 3128704 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605 - this time actually compiling it...
Change 3128825 on 2016/09/16 by Dmitry.Rekman
Linux: proper fix for too slow startup times (UE-35967).
- Pull request #2793 by slonopotamus.
- Now without stripping dependencies on libraries specified before.
- Contains a work around for ld bug <2.25.
Change 3128972 on 2016/09/16 by Nick.Shin
fix to local build error.
Change 3129283 on 2016/09/16 by Brent.Pease
+ Add Android local notification support based on existing system used for iOS
+ Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release
Change 3129494 on 2016/09/17 by Nick.Shin
fix CIS build errors
Change 3129503 on 2016/09/17 by Dmitry.Rekman
Fix Linux build (case sensitivity issue).
Change 3129514 on 2016/09/17 by Nick.Shin
fix CIS build errors for consoles - missing zlib include path
special thanks to Dmitry.Rekman for pointing me in the right direction
Change 3129647 on 2016/09/17 by Dmitry.Rekman
Linux: fix non-unity build.
Change 3131043 on 2016/09/19 by Nick.Shin
archiving build instructions/steps when building:
- zlib (v.1.2.8)
win: #3128369
osx: #3128500
- openssl (1.0.2h)
win: #3128377
osx: #3128504
- libcurl (7_48_0)
win: #3128383
osx: #3128506
- libwebsocket (v.1.7.4)
win: #3128384
osx: #3128508
- webRTC
win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP
osx: #3128513
Change 3132801 on 2016/09/20 by Dmitry.Rekman
Linux: support specifying default OpenGL version via configs (UE-34777).
- The first targeted RHI is going to be used.
Change 3132905 on 2016/09/20 by Josh.Adams
- Fixed up some paths with the WolfPlat rename
Change 3133148 on 2016/09/20 by Josh.Adams
- Only show UT EULA if PLATFORM_DESKTOP
Change 3133152 on 2016/09/20 by Josh.Adams
- Beginning support for applets. Disabled unless you have a special SDK with applet support.
Change 3133169 on 2016/09/20 by Josh.Adams
- Fixed issue with Wolf access but no SDK installed
Change 3133344 on 2016/09/20 by Daniel.Lamb
Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile.
Added new flag to limit number of concurrent shader compiles.
#test Cook QAGame, Cook Paragon
Change 3133345 on 2016/09/20 by Daniel.Lamb
FRedirectCollector collects string asset references all the time when running the editor.
#test Cook paragon cook QAGame.
Change 3133852 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated.
Change 3133875 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2)
Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick
Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'.
Change 3134544 on 2016/09/21 by Josh.Adams
- Reduced UT textures for Wolf
Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick
FPS4Time::SystemTime now calculates the local machine time, instead of UTC.
#jira UE-35170
Change 3135036 on 2016/09/21 by Michael.Trepka
Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process
Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick
GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32
Change 3135292 on 2016/09/21 by Jeff.Campeau
Change include order to favor the XDK edition specific headers where available.
Change 3136414 on 2016/09/22 by Josh.Adams
- Fixed a checkf() that had the case reversed
#jira ue-36311
Change 3137082 on 2016/09/22 by Dmitry.Rekman
Added support for Linux installed builds to 4.14
Change 3137220 on 2016/09/22 by Dmitry.Rekman
Linux: do not rebuild hlslcc on each setup.
- Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary.
Change 3137227 on 2016/09/22 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3137259 on 2016/09/22 by Dmitry.Rekman
Linux installed build: fix CIS (missed one .csproj)
Change 3137290 on 2016/09/22 by Dmitry.Rekman
Linux installed builds: fix for the resulting directory.
Change 3137291 on 2016/09/22 by Chris.Babcock
Restore texture filtering mode properly when movie played on Android
#jira UE-36342
#ue4
#android
Change 3137376 on 2016/09/22 by Dmitry.Rekman
Linux: re-enabled crash handler stack smash protection.
- Race condition in FRunnableThreadPThread has been previously fixed.
Change 3138498 on 2016/09/23 by Dmitry.Rekman
Linux: add missed package for installed builds.
- mono-devel package for resgen2.
Change 3138523 on 2016/09/23 by Dmitry.Rekman
Linux: Update hlslcc now that we're not rebuilding it each time.
Change 3138658 on 2016/09/23 by Josh.Adams
- Moved UT's Social Plugin into NotForLicensees
Change 3139042 on 2016/09/23 by Dmitry.Rekman
Linux: more robust check of installed packages.
- Also added mono-devel to the list of packages installed on 14.04.
Change 3139674 on 2016/09/26 by Dmitry.Rekman
Fix crash when editing widget blueprints (UE-35185).
- Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping.
- Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795).
Change 3140203 on 2016/09/26 by Josh.Adams
- Wolf Fix for SHIPPING
Change 3140206 on 2016/09/26 by Josh.Adams
- NEX work, still in progress
Change 3140276 on 2016/09/26 by Josh.Adams
- Fixed Wolf compile error
Change 3140485 on 2016/09/26 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3140570 on 2016/09/26 by Dmitry.Rekman
SDL2: Delete obsolete files.
- We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space.
Change 3140577 on 2016/09/26 by Dmitry.Rekman
Fix CudaTest monolithic build.
- Not the best fix, the better fix is to build against bundled libc++.
Change 3141184 on 2016/09/27 by Keith.Judge
Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert.
#jira UE-35973
Change 3141623 on 2016/09/27 by Chris.Babcock
Support hiding virtual keyboard on Android
#jira UE-34201
#ue4
#android
Change 3141887 on 2016/09/27 by Joe.Graf
Added support for additional plugin directories that are specified by the .uproject file
New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins
Change 3141916 on 2016/09/27 by Josh.Adams
- Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925)
Change 3141926 on 2016/09/27 by Josh.Adams
- Support for skipping Wolf user selector (-nologinui)
Change 3141938 on 2016/09/27 by Chris.Babcock
Allow Android media player to seek past 999ms (contributed by rcywongaa)
#jira UE-36453
#PR #2797
#ue4
#android
Change 3142207 on 2016/09/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3142219 on 2016/09/27 by Josh.Adams
- Wolf PhysX 3.4 libs and includes
Change 3142220 on 2016/09/27 by Josh.Adams
- File that had to be fixed up after main merge (missed adding it to the huge integrate CL)
Change 3142314 on 2016/09/27 by Chase.McAllister
#jira UE-35011 fixes to some assets to remove redundancies/output log spam
Change 3142510 on 2016/09/27 by Daniel.Lamb
Fixed up resave lightmaps commandlet so that world transforms don't get applied twice.
#jira UE-35942
Change 3142650 on 2016/09/27 by Chris.Babcock
Android support for Linux by yaakuro
- requires CodeWorks for Android Linux installed and OpenJDK 1.8
- need to set Android SDK paths manually in Project Settings
#jira UE-32752
#jira UE-32753
#PR #2564
#PR #2565
#ue4
#android
#linux
Change 3142802 on 2016/09/27 by Dmitry.Rekman
Upgrade to SDL 2.0.5-ish (still technically 2.0.4).
- Upstream revision 10374:dccf51aee79b.
- Merged all our changes hopefully.
Change 3143075 on 2016/09/28 by Luke.Thatcher
[RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro.
#jira UE-33077
Change 3143219 on 2016/09/28 by Daniel.Lamb
Added new is compiling function which tells you if it's really compiling instead of lying.
If def out additional logging for debugging shader compilation issue for 4.14 release.
Change 3143428 on 2016/09/28 by Luke.Thatcher
[PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061
Change 3143488 on 2016/09/28 by Daniel.Lamb
Changed defaults for skip cooking editor content to true.
Change 3143526 on 2016/09/28 by Daniel.Lamb
Increased the concurrent shader compile limit while in the cooker.
#test Cook paragon
Change 3143874 on 2016/09/28 by Chris.Babcock
Read Android environment variables from .bashrc on Linux
#jira UE-36565
#ue4
#android
#linux
Change 3143911 on 2016/09/28 by Dmitry.Rekman
Fix SDL EGL API binding (UE-18979).
- Contains PR #1398 by x414e54.
- Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade.
Change 3143929 on 2016/09/28 by Daniel.Lamb
Removed some more temporary logging.
#test Cook paragon
Change 3143959 on 2016/09/28 by Jeff.Campeau
Media Player for Xbox One
Change 3143997 on 2016/09/28 by Dmitry.Rekman
Linux: faster linking in Debug.
- Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating.
Change 3144004 on 2016/09/28 by Dmitry.Rekman
Linux: make SCW dump core on crash in debug builds.
- If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space).
Change 3144007 on 2016/09/28 by Dmitry.Rekman
Linux: Allow equals character in command line parameter value (UE-26406).
- PR #2019 by bozzaro.
- Allows passing parameters like -Switch=Key=Value.
Change 3144042 on 2016/09/28 by Jeff.Campeau
Add tag for DX12 support being experimental in target settings.
#jira UE-36150
Change 3144068 on 2016/09/28 by Dmitry.Rekman
Linux: enable using xgConsole in UAT (UE-28096).
- PR #2144 by bozzaro.
- Picks correct xgConsole binary.
- Allegedly fixes crash in CombineXGEItemFile on mono.
Change 3144120 on 2016/09/28 by Michael.Trepka
Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/...
Change 3144172 on 2016/09/28 by Chris.Babcock
Add libpng 1.5.27 for Android
#jira UE-36573
#ue4
#android
Change 3144318 on 2016/09/28 by Chris.Babcock
Correct logic for checking .bashrc on Linux
#ue4
#android
Change 3144331 on 2016/09/28 by Dmitry.Rekman
Linux: repair ARM server builds.
- Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1).
Change 3144354 on 2016/09/28 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
this is intermediate, not fully working
Change 3144368 on 2016/09/28 by Josh.Adams
- Moved the new Social files into NFL
Change 3144395 on 2016/09/28 by Chris.Babcock
Add missing functions for AndroidWebBrowserWindow
#ue4
#android
Change 3144417 on 2016/09/28 by Josh.Adams
- Probable fix for FWebBrowserWindow missing virtuals
Change 3144438 on 2016/09/28 by Jeff.Campeau
XDK updated to 160802
Change 3144569 on 2016/09/29 by Dmitry.Rekman
Linux: allow a selectable clock source (UE-36564).
- The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew.
- Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there.
#tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm).
Change 3145108 on 2016/09/29 by Joe.Graf
Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools)
Change 3145245 on 2016/09/29 by Joe.Graf
#wolf
Checking in removal of plugin use on Win64 per Josh's request
Change 3145514 on 2016/09/29 by Will.Fissler
Updated Mac Info.plist files to disable high DPI on macOS 10.12
Change 3145538 on 2016/09/29 by Josh.Adams
- Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots.
Change 3145540 on 2016/09/29 by Josh.Adams
- Fix for checking some Wolf dev tool installation existence
- Fix for various Wolf build issues
- Fix for Wolf devices not showing up in Launch on
Change 3145542 on 2016/09/29 by Josh.Adams
- Pulled over Wolf changes from Wolf branch into Dev-Platform
Change 3145572 on 2016/09/29 by Josh.Adams
- Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people.
#jira UE-36591
Change 3145769 on 2016/09/29 by Chris.Babcock
Remove duplicate platforms from deploy list in UFE
#jira UE-36636
#ue4
Change 3146061 on 2016/09/29 by Chris.Babcock
Linux: be less spammy in log when launching external procs
#jira UE-36638
#ue4
#linux
Change 3146208 on 2016/09/29 by Dmitry.Rekman
Linux: fix PhysX crash (UE-36613).
- PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above.
- This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun.
#jira UE-36613
Change 3146476 on 2016/09/30 by Josh.Adams
- Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose
Change 3146554 on 2016/09/30 by Josh.Adams
- Removed another wolf secret log
Change 3146626 on 2016/09/30 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3146712 on 2016/09/30 by Josh.Adams
- Fixed case for building Android on Linux
#jira #UE-36652
Change 3146844 on 2016/09/30 by Josh.Adams
- Removed ES2 shader compiling from TVOS, and force Metal compiling
#jira UE-36306
Change 3146865 on 2016/09/30 by Daniel.Lamb
Removed temp logging for materials
#test Launch on paragon
Change 3146874 on 2016/09/30 by Dmitry.Rekman
Linux: add rpath for libTextureConverter.so (UE-36620).
Change 3147030 on 2016/09/30 by Josh.Adams
- Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks
#jira UE-36623
Change 3147151 on 2016/09/30 by Josh.Adams
- Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling?
Change 3147621 on 2016/09/30 by Michael.Trepka
Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac
Change 3147712 on 2016/09/30 by Josh.Adams
- Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform.
#jira UE-36225
Change 3147725 on 2016/09/30 by Josh.Adams
- Fixed yet another Wolf log for people with Wolf access but no SDK
[CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
FTabManager : : NewArea ( 720 * DPIScaleFactor , 600 * DPIScaleFactor )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
#lockdown josh.adams
Change 2970373 on 2016/05/09 by Lee.Clark
PS4 - Fix NumInstances not getting reset after DrawIndirect calls
Change 2972873 on 2016/05/10 by Michael.Trepka
Correct initial position for SlateViewer windows on Mac
Change 2974363 on 2016/05/11 by Mark.Satterthwaite
Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect.
Change 2975921 on 2016/05/12 by Michael.Trepka
Removed unused AdjustWindowRegion declaration from LinuxWindow.h
#codereview Dmitry.Rekman
Change 2977002 on 2016/05/13 by Michael.Trepka
Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready
#codereview Ben.Marsh
Change 2977337 on 2016/05/13 by Brent.Pease
UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error
+ Prevent illegal characters from being entered in the packaging UI
+ Report an error from iPhonePackager if a illegal bundle id is specified
+ Convert special characters to XML equivalents
- Correctly check for the presence of iTunes 12 when packaging iOS games on Windows
- Improve ios certificate and provision message in package settings UI
#codereview peter.sauerbrei
Change 2977509 on 2016/05/13 by Brent.Pease
+ Fix mac compile error
Change 2978036 on 2016/05/14 by Mark.Satterthwaite
One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN.
#jira UE-30777
Change 2978037 on 2016/05/14 by Mark.Satterthwaite
Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago.
Change 2978333 on 2016/05/16 by Lee.Clark
Fix packaging of non-code projects when plugins are enabled
#codereview Peter.Sauerbrei
Change 2978780 on 2016/05/16 by Mark.Satterthwaite
Reduce temporary allocations required to set uniform parameters in Metal.
Change 2979680 on 2016/05/16 by Nick.Shin
editor's HTML5 platform settings was missing due to the emscripten SDK move
should have been included with CL: #2946251
Change 2979681 on 2016/05/16 by Nick.Shin
cleaned up websocket processing for HTML5
#jira UE-13657 - HTML5 plugin OnRawRecieve overflow
Change 2979701 on 2016/05/16 by Brent.Pease
UE-28421 - Message box cannot be closed after accessing the home screen on iOS
+ Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution
Change 2980766 on 2016/05/17 by Jeremiah.Waldron
Adding Android build support for HarfBuzz
- using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them
- Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config>
Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly
#jira UE-28586
#codereview chris.babcock
Change 2980953 on 2016/05/17 by Jeremiah.Waldron
Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo
#jira UE-28586
Change 2981039 on 2016/05/17 by Jeff.Campeau
ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support)
Change 2981054 on 2016/05/17 by Jeff.Campeau
Enable Live OSS for Orion on Xbox One
Change 2981553 on 2016/05/18 by Jeff.Campeau
Enable Oodle for Xbox One
Change 2981555 on 2016/05/18 by Jeff.Campeau
Scalability settings for Xbox One
Change 2981774 on 2016/05/18 by Keith.Judge
Xbox One - Duplicating Movie Player fix from 4.12.
Change 2981789 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12.
Change 2981802 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12.
Change 2981875 on 2016/05/18 by Keith.Judge
Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12.
Change 2981900 on 2016/05/18 by Keith.Judge
Xbox One - D3D11Query refactor. Duplicated from 4.12
Change 2981945 on 2016/05/18 by Nick.Shin
filled out response headers for HTML5 platform
#jira UE-26047 - HTML5 HTTP Response Headers not implemented
Change 2981981 on 2016/05/18 by Lee.Clark
PS4 - Fix COTF not updating files
#codereview Daniel.Lamb
Change 2982246 on 2016/05/18 by Michael.Trepka
Fixed Mono compile errors in UT build scripts
Change 2983869 on 2016/05/19 by Mark.Satterthwaite
Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures.
#jira UE-29557
Change 2983871 on 2016/05/19 by Mark.Satterthwaite
Pool Metal texture update buffers to reduce churn.
Change 2983892 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors.
Change 2983898 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists.
Change 2983911 on 2016/05/19 by Mark.Satterthwaite
Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen.
Change 2983916 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected.
Change 2984874 on 2016/05/20 by Keith.Judge
Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps.
#jira UEPLAT-1295
Change 2985446 on 2016/05/20 by Mark.Satterthwaite
Remove the non-functional -metaldebug option from MetalRHI.
Change 2985827 on 2016/05/20 by Nick.Shin
call EndSession() onbeforeunload()
note: API CHANGE
- HTML5JavaScripteFx.{js,h}
- UE_MakeHTTPDataRequest()
#jira UE-22285 - Session End events are not generated for HTML5
Change 2986013 on 2016/05/20 by Jeremiah.Waldron
PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio)
Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo
Pulled from Release-4.12 CL
#jira UE-30782
#codereview chris.babcock, Peter.Sauerbrei
Change 2986057 on 2016/05/20 by Mark.Satterthwaite
Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI.
Change 2986059 on 2016/05/20 by Mark.Satterthwaite
Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes).
Change 2986060 on 2016/05/20 by Mark.Satterthwaite
Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level.
Change 2986063 on 2016/05/20 by Mark.Satterthwaite
Missing change from previous CL.
Change 2986066 on 2016/05/20 by Mark.Satterthwaite
More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame.
Change 2986455 on 2016/05/23 by Keith.Judge
Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler.
Change 2986886 on 2016/05/23 by Mark.Satterthwaite
Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier.
Change 2986955 on 2016/05/23 by Brent.Pease
+ Do not error out if "[PROJECT_NAME]" is in the bundle ID
#codereview peter.sauerbrei
Change 2987304 on 2016/05/23 by Chris.Babcock
Remove old Android platforms
#ue4
#android
#codeview Josh.Adams
Change 2987571 on 2016/05/23 by Mark.Satterthwaite
Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass)
#jira UE-31111
Change 2987591 on 2016/05/23 by Mark.Satterthwaite
Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5.
Change 2987679 on 2016/05/23 by Mark.Satterthwaite
Re-enable tiled reflections on Nvidia by default now that they work.
Change 2987799 on 2016/05/24 by Mark.Satterthwaite
Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac).
Change 2989395 on 2016/05/25 by Lee.Clark
PS4 - Fix shader output / render target format mismatch for sparse MRT.
Change 2990003 on 2016/05/25 by Jeremiah.Waldron
When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function.
Change 2990393 on 2016/05/25 by Mark.Satterthwaite
Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal...
Change 2990516 on 2016/05/25 by Brent.Pease
+ UEPLAT-1294 - Support for local notifications
+ UEPLAT-1254 - Add BP event for device orientation change
+ Added a new class based on UGameInstance for mobile device callbacks
+ Ensured IOSAppDelegate.cpp follows convention for lambda functions
Change 2991361 on 2016/05/26 by Jeremiah.Waldron
Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it
Change 2992450 on 2016/05/27 by Mark.Satterthwaite
Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders.
Change 2993027 on 2016/05/27 by Mark.Satterthwaite
Fix typo for new CFLAG_BoundsChecking enumeration value.
Change 2993594 on 2016/05/27 by Mark.Satterthwaite
Build fix - check not assert...
Change 2993595 on 2016/05/27 by Mark.Satterthwaite
Fix typo from Xcode hang...
Change 2993614 on 2016/05/28 by Mark.Satterthwaite
At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers.
Change 2993747 on 2016/05/28 by Mark.Satterthwaite
Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used.
Change 2994256 on 2016/05/31 by Lee.Clark
PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working.
#codereview Chad.Taylor,Aaron.McLeran
Change 2994281 on 2016/05/31 by Rolando.Caloca
DP - Allow hlslcc to process type casts containing the 'const' keyword
- it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile.
#codereview Mark.Satterthwaite, Dmitry.Rekman
#jira UE-31411
Change 2994467 on 2016/05/31 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 2994493 on 2016/05/31 by Daniel.Lamb
Fixed issue with DDC commandlet not caching things from the startup packages list.
Change 2994644 on 2016/05/31 by Mark.Satterthwaite
Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project.
Change 2996074 on 2016/06/01 by Lee.Clark
PS4 - Fix GS mode not getting disabled when using parallel contexts.
#codereview Marcus.Wassmer
Change 2996129 on 2016/06/01 by Brent.Pease
Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch.
Change 2996130 on 2016/06/01 by Jeremiah.Waldron
PR #2387 part 2 (Contributed by gameDNAstudio)
Adding ability to consume purchases during GooglePlay RestorePurchases
This also touches IOS due to changes to base classes and function signatures
#codereview chris.babcock, Peter.Sauerbrei
Change 2996441 on 2016/06/01 by Jeremiah.Waldron
Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio)
Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function.
#codereview chris.babcock
Change 2996514 on 2016/06/01 by Jeff.Campeau
Fix merge issue from main
#jira UE-31502
Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick
https://jira.ol.epicgames.net/browse/UE-31446
Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed.
Renamed handleReserveFailed to handleReserveFailedLightweight
Change 2997235 on 2016/06/01 by Jeremiah.Waldron
RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node.
The IAP product in Match3 is non-consumable so just passing an empty array where necessary
Change 2997241 on 2016/06/01 by Jeremiah.Waldron
OnlineSubsystemGameCircle Plugin
- Leaderboards
- Achievements
- Friends
- IAP
- External UI Interface
- Runtime Settings in Project Settings Plugin section when plugin is enabled
- Disabled by default
#jira UEPLAT-105
#codereview chris.babcock
Change 2997618 on 2016/06/02 by Lee.Clark
#UE4Docs: Removed PS4MapFileUtil info
Change 2997840 on 2016/06/02 by Jeremiah.Waldron
Removing trace logging from OnlineSubsystemGameCircle_APL
Change 2998754 on 2016/06/02 by Brent.Pease
Change BlueprintMobileLibrary to BlueprintPlatformLibrary
Change 3000762 on 2016/06/03 by Jeff.Campeau
Add example rating info to ShooterGame
Change 3001037 on 2016/06/04 by Brent.Pease
+ Add ui screens for delegate test, local notification test, and iap test
+ Implement delegate test
Change 3001250 on 2016/06/05 by Brent.Pease
+ Initial pass at IAP test screen
Change 3001639 on 2016/06/06 by Jeff.Campeau
Fix Xbox One build issue with DX12
#codereview Zabir.Hoque
Change 3002574 on 2016/06/06 by Jeremiah.Waldron
Adding Android Install Location to Android platform runtime settings and manifest generation
Change 3002780 on 2016/06/06 by Brent.Pease
+ Initial implementation of local notification test
Change 3003005 on 2016/06/06 by Jeremiah.Waldron
OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute
Change 3004392 on 2016/06/07 by Jeremiah.Waldron
Fixing typo in APL comment :)
Change 3005768 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3005929 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3006151 on 2016/06/08 by Peter.Sauerbrei
fix for LocalNotifications not available on TVOS
#lockdown josh.adams
Change 3006183 on 2016/06/08 by Brent.Pease
Manual merge CL#3000242 from Release-4.12 into Dev-Platform
#lockdown josh.adams
Change 3006296 on 2016/06/08 by Peter.Sauerbrei
submit an updated iPhonePackager and support DLLs
#lockdown josh.adams
Change 3006378 on 2016/06/08 by Peter.Sauerbrei
fix for API update to RestorePurchases
#codereview brent.pease
#lockdown josh.adams
#lockdown nick.penwarden
[CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
# if PLATFORM_MAC
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948319 on 2016/04/19 by Nick.Shin
update zlib to v1.2.8
part 1 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2948661 on 2016/04/19 by Nick.Shin
keep using old zlibs until they are recompiled with the newer version
Change 2948737 on 2016/04/19 by Nick.Shin
build warning fix
Change 2949334 on 2016/04/20 by Nick.Shin
fix library path
for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set...
Change 2951556 on 2016/04/21 by Nick.Shin
static libs double checked
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2951559 on 2016/04/21 by Nick.Shin
static libs double checked
forgot these files - they were in another changelist
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2952411 on 2016/04/22 by Nick.Shin
add win32 build targets for zlib openssl libcurl libwebsockets
part 1 of 2: these are the C# build scripts
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
Change 3118163 on 2016/09/08 by Josh.Adams
perm test 2, not a useful file at all
Change 3121142 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3121150 on 2016/09/12 by Daniel.Lamb
Added warning logs to help track down issue UE-33453.
Change 3121201 on 2016/09/12 by Keith.Judge
Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix.
Change 3121302 on 2016/09/12 by Joe.Graf
Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors
Change 3121379 on 2016/09/12 by Dmitry.Rekman
Linux: only link libraries that export needed symbols (UE-35720).
- Fixes very long startup times of modular builds.
- Includes PR #2778 by slonopotamus.
#jira UE-35720
Change 3121383 on 2016/09/12 by Dmitry.Rekman
Linux: added some missing _API declarations on symbols used externally.
- Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't).
Change 3121456 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3122939 on 2016/09/13 by Luke.Thatcher
[PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service.
- Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone.
Change 3123040 on 2016/09/13 by Brent.Pease
+ Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now.
Change 3123664 on 2016/09/13 by Nick.Shin
this was originally checked into: release 4.13.1
bringing here to dev-platform
-- original submit comments --
first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing"
next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop
jira UE-35363 - Huge game window when launching onto Safari 9.1.2
Change 3125282 on 2016/09/14 by Michael.Trepka
Fixed iOS and tvOS code indexing in Xcode project
Change 3126812 on 2016/09/15 by Josh.Adams
Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes:
- Added Parse function to JsonObject.cs to be able to parse a string
- Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU()
- Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
- Converted the PS4MallocCrash class into a generic one (that Wolf is now also using)
- Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread
- Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere
- Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects
- Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever)
- Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool.
- Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini)
- Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain.
- Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening
- Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct.
- Renamed a UT copy of a global function to not linker-conflict
- Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4.
- Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists)
- Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority()
- Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads?
- Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move.
Change 3126842 on 2016/09/15 by Michael.Trepka
Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation.
Change 3126956 on 2016/09/15 by Michael.Trepka
Added support for compiling Vulkan shaders for Android on Mac
Change 3127206 on 2016/09/15 by Michael.Trepka
PR #2604: Remove some warnings. (Contributed by reapazor)
Change 3127324 on 2016/09/15 by Michael.Trepka
Allow third party dylibs on Mac to be loaded from plugin subfolders
Change 3127924 on 2016/09/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3128369 on 2016/09/16 by Nick.Shin
zlib 1.2.8
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128377 on 2016/09/16 by Nick.Shin
openssl 1_0_2h
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128383 on 2016/09/16 by Nick.Shin
libcurl 7_48_0
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128384 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128464 on 2016/09/16 by Nick.Shin
webRTC rev.12643
NOTE: VS2015
- only Win64 is available
- Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment
NOTE: VS2013
- not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist
- also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways
FUTURE NOTE:
- will continue to try to get VS2015 Win32 functional
- and am working on trying to get VS2013 tested
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128500 on 2016/09/16 by Nick.Shin
zlib 1.2.8 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128504 on 2016/09/16 by Nick.Shin
openssl 1_0_2h - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128506 on 2016/09/16 by Nick.Shin
libcurl 7_48_0 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128508 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128513 on 2016/09/16 by Nick.Shin
webRTC rev.12643 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128602 on 2016/09/16 by Nick.Shin
webRTC rev.9862 - Win64 VS2013
NOTE:
- not tested (i'm working on getting a VS2013 pro license)
- checking in for testing purposes
WARNING:
- VS2013 is no longer supported by webRTC latest
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128605 on 2016/09/16 by Nick.Shin
re-enabling updated ThirdParySoftware libs:
- zlib (v.1.2.8)
- openssl (1.0.2h)
- libcurl (7_48_0)
- libwebsocket (v.1.7.4)
- webRTC (rev.12643)
to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build...
Change 3128651 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605
Change 3128704 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605 - this time actually compiling it...
Change 3128825 on 2016/09/16 by Dmitry.Rekman
Linux: proper fix for too slow startup times (UE-35967).
- Pull request #2793 by slonopotamus.
- Now without stripping dependencies on libraries specified before.
- Contains a work around for ld bug <2.25.
Change 3128972 on 2016/09/16 by Nick.Shin
fix to local build error.
Change 3129283 on 2016/09/16 by Brent.Pease
+ Add Android local notification support based on existing system used for iOS
+ Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release
Change 3129494 on 2016/09/17 by Nick.Shin
fix CIS build errors
Change 3129503 on 2016/09/17 by Dmitry.Rekman
Fix Linux build (case sensitivity issue).
Change 3129514 on 2016/09/17 by Nick.Shin
fix CIS build errors for consoles - missing zlib include path
special thanks to Dmitry.Rekman for pointing me in the right direction
Change 3129647 on 2016/09/17 by Dmitry.Rekman
Linux: fix non-unity build.
Change 3131043 on 2016/09/19 by Nick.Shin
archiving build instructions/steps when building:
- zlib (v.1.2.8)
win: #3128369
osx: #3128500
- openssl (1.0.2h)
win: #3128377
osx: #3128504
- libcurl (7_48_0)
win: #3128383
osx: #3128506
- libwebsocket (v.1.7.4)
win: #3128384
osx: #3128508
- webRTC
win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP
osx: #3128513
Change 3132801 on 2016/09/20 by Dmitry.Rekman
Linux: support specifying default OpenGL version via configs (UE-34777).
- The first targeted RHI is going to be used.
Change 3132905 on 2016/09/20 by Josh.Adams
- Fixed up some paths with the WolfPlat rename
Change 3133148 on 2016/09/20 by Josh.Adams
- Only show UT EULA if PLATFORM_DESKTOP
Change 3133152 on 2016/09/20 by Josh.Adams
- Beginning support for applets. Disabled unless you have a special SDK with applet support.
Change 3133169 on 2016/09/20 by Josh.Adams
- Fixed issue with Wolf access but no SDK installed
Change 3133344 on 2016/09/20 by Daniel.Lamb
Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile.
Added new flag to limit number of concurrent shader compiles.
#test Cook QAGame, Cook Paragon
Change 3133345 on 2016/09/20 by Daniel.Lamb
FRedirectCollector collects string asset references all the time when running the editor.
#test Cook paragon cook QAGame.
Change 3133852 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated.
Change 3133875 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2)
Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick
Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'.
Change 3134544 on 2016/09/21 by Josh.Adams
- Reduced UT textures for Wolf
Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick
FPS4Time::SystemTime now calculates the local machine time, instead of UTC.
#jira UE-35170
Change 3135036 on 2016/09/21 by Michael.Trepka
Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process
Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick
GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32
Change 3135292 on 2016/09/21 by Jeff.Campeau
Change include order to favor the XDK edition specific headers where available.
Change 3136414 on 2016/09/22 by Josh.Adams
- Fixed a checkf() that had the case reversed
#jira ue-36311
Change 3137082 on 2016/09/22 by Dmitry.Rekman
Added support for Linux installed builds to 4.14
Change 3137220 on 2016/09/22 by Dmitry.Rekman
Linux: do not rebuild hlslcc on each setup.
- Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary.
Change 3137227 on 2016/09/22 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3137259 on 2016/09/22 by Dmitry.Rekman
Linux installed build: fix CIS (missed one .csproj)
Change 3137290 on 2016/09/22 by Dmitry.Rekman
Linux installed builds: fix for the resulting directory.
Change 3137291 on 2016/09/22 by Chris.Babcock
Restore texture filtering mode properly when movie played on Android
#jira UE-36342
#ue4
#android
Change 3137376 on 2016/09/22 by Dmitry.Rekman
Linux: re-enabled crash handler stack smash protection.
- Race condition in FRunnableThreadPThread has been previously fixed.
Change 3138498 on 2016/09/23 by Dmitry.Rekman
Linux: add missed package for installed builds.
- mono-devel package for resgen2.
Change 3138523 on 2016/09/23 by Dmitry.Rekman
Linux: Update hlslcc now that we're not rebuilding it each time.
Change 3138658 on 2016/09/23 by Josh.Adams
- Moved UT's Social Plugin into NotForLicensees
Change 3139042 on 2016/09/23 by Dmitry.Rekman
Linux: more robust check of installed packages.
- Also added mono-devel to the list of packages installed on 14.04.
Change 3139674 on 2016/09/26 by Dmitry.Rekman
Fix crash when editing widget blueprints (UE-35185).
- Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping.
- Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795).
Change 3140203 on 2016/09/26 by Josh.Adams
- Wolf Fix for SHIPPING
Change 3140206 on 2016/09/26 by Josh.Adams
- NEX work, still in progress
Change 3140276 on 2016/09/26 by Josh.Adams
- Fixed Wolf compile error
Change 3140485 on 2016/09/26 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3140570 on 2016/09/26 by Dmitry.Rekman
SDL2: Delete obsolete files.
- We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space.
Change 3140577 on 2016/09/26 by Dmitry.Rekman
Fix CudaTest monolithic build.
- Not the best fix, the better fix is to build against bundled libc++.
Change 3141184 on 2016/09/27 by Keith.Judge
Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert.
#jira UE-35973
Change 3141623 on 2016/09/27 by Chris.Babcock
Support hiding virtual keyboard on Android
#jira UE-34201
#ue4
#android
Change 3141887 on 2016/09/27 by Joe.Graf
Added support for additional plugin directories that are specified by the .uproject file
New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins
Change 3141916 on 2016/09/27 by Josh.Adams
- Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925)
Change 3141926 on 2016/09/27 by Josh.Adams
- Support for skipping Wolf user selector (-nologinui)
Change 3141938 on 2016/09/27 by Chris.Babcock
Allow Android media player to seek past 999ms (contributed by rcywongaa)
#jira UE-36453
#PR #2797
#ue4
#android
Change 3142207 on 2016/09/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3142219 on 2016/09/27 by Josh.Adams
- Wolf PhysX 3.4 libs and includes
Change 3142220 on 2016/09/27 by Josh.Adams
- File that had to be fixed up after main merge (missed adding it to the huge integrate CL)
Change 3142314 on 2016/09/27 by Chase.McAllister
#jira UE-35011 fixes to some assets to remove redundancies/output log spam
Change 3142510 on 2016/09/27 by Daniel.Lamb
Fixed up resave lightmaps commandlet so that world transforms don't get applied twice.
#jira UE-35942
Change 3142650 on 2016/09/27 by Chris.Babcock
Android support for Linux by yaakuro
- requires CodeWorks for Android Linux installed and OpenJDK 1.8
- need to set Android SDK paths manually in Project Settings
#jira UE-32752
#jira UE-32753
#PR #2564
#PR #2565
#ue4
#android
#linux
Change 3142802 on 2016/09/27 by Dmitry.Rekman
Upgrade to SDL 2.0.5-ish (still technically 2.0.4).
- Upstream revision 10374:dccf51aee79b.
- Merged all our changes hopefully.
Change 3143075 on 2016/09/28 by Luke.Thatcher
[RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro.
#jira UE-33077
Change 3143219 on 2016/09/28 by Daniel.Lamb
Added new is compiling function which tells you if it's really compiling instead of lying.
If def out additional logging for debugging shader compilation issue for 4.14 release.
Change 3143428 on 2016/09/28 by Luke.Thatcher
[PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061
Change 3143488 on 2016/09/28 by Daniel.Lamb
Changed defaults for skip cooking editor content to true.
Change 3143526 on 2016/09/28 by Daniel.Lamb
Increased the concurrent shader compile limit while in the cooker.
#test Cook paragon
Change 3143874 on 2016/09/28 by Chris.Babcock
Read Android environment variables from .bashrc on Linux
#jira UE-36565
#ue4
#android
#linux
Change 3143911 on 2016/09/28 by Dmitry.Rekman
Fix SDL EGL API binding (UE-18979).
- Contains PR #1398 by x414e54.
- Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade.
Change 3143929 on 2016/09/28 by Daniel.Lamb
Removed some more temporary logging.
#test Cook paragon
Change 3143959 on 2016/09/28 by Jeff.Campeau
Media Player for Xbox One
Change 3143997 on 2016/09/28 by Dmitry.Rekman
Linux: faster linking in Debug.
- Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating.
Change 3144004 on 2016/09/28 by Dmitry.Rekman
Linux: make SCW dump core on crash in debug builds.
- If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space).
Change 3144007 on 2016/09/28 by Dmitry.Rekman
Linux: Allow equals character in command line parameter value (UE-26406).
- PR #2019 by bozzaro.
- Allows passing parameters like -Switch=Key=Value.
Change 3144042 on 2016/09/28 by Jeff.Campeau
Add tag for DX12 support being experimental in target settings.
#jira UE-36150
Change 3144068 on 2016/09/28 by Dmitry.Rekman
Linux: enable using xgConsole in UAT (UE-28096).
- PR #2144 by bozzaro.
- Picks correct xgConsole binary.
- Allegedly fixes crash in CombineXGEItemFile on mono.
Change 3144120 on 2016/09/28 by Michael.Trepka
Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/...
Change 3144172 on 2016/09/28 by Chris.Babcock
Add libpng 1.5.27 for Android
#jira UE-36573
#ue4
#android
Change 3144318 on 2016/09/28 by Chris.Babcock
Correct logic for checking .bashrc on Linux
#ue4
#android
Change 3144331 on 2016/09/28 by Dmitry.Rekman
Linux: repair ARM server builds.
- Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1).
Change 3144354 on 2016/09/28 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
this is intermediate, not fully working
Change 3144368 on 2016/09/28 by Josh.Adams
- Moved the new Social files into NFL
Change 3144395 on 2016/09/28 by Chris.Babcock
Add missing functions for AndroidWebBrowserWindow
#ue4
#android
Change 3144417 on 2016/09/28 by Josh.Adams
- Probable fix for FWebBrowserWindow missing virtuals
Change 3144438 on 2016/09/28 by Jeff.Campeau
XDK updated to 160802
Change 3144569 on 2016/09/29 by Dmitry.Rekman
Linux: allow a selectable clock source (UE-36564).
- The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew.
- Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there.
#tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm).
Change 3145108 on 2016/09/29 by Joe.Graf
Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools)
Change 3145245 on 2016/09/29 by Joe.Graf
#wolf
Checking in removal of plugin use on Win64 per Josh's request
Change 3145514 on 2016/09/29 by Will.Fissler
Updated Mac Info.plist files to disable high DPI on macOS 10.12
Change 3145538 on 2016/09/29 by Josh.Adams
- Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots.
Change 3145540 on 2016/09/29 by Josh.Adams
- Fix for checking some Wolf dev tool installation existence
- Fix for various Wolf build issues
- Fix for Wolf devices not showing up in Launch on
Change 3145542 on 2016/09/29 by Josh.Adams
- Pulled over Wolf changes from Wolf branch into Dev-Platform
Change 3145572 on 2016/09/29 by Josh.Adams
- Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people.
#jira UE-36591
Change 3145769 on 2016/09/29 by Chris.Babcock
Remove duplicate platforms from deploy list in UFE
#jira UE-36636
#ue4
Change 3146061 on 2016/09/29 by Chris.Babcock
Linux: be less spammy in log when launching external procs
#jira UE-36638
#ue4
#linux
Change 3146208 on 2016/09/29 by Dmitry.Rekman
Linux: fix PhysX crash (UE-36613).
- PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above.
- This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun.
#jira UE-36613
Change 3146476 on 2016/09/30 by Josh.Adams
- Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose
Change 3146554 on 2016/09/30 by Josh.Adams
- Removed another wolf secret log
Change 3146626 on 2016/09/30 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3146712 on 2016/09/30 by Josh.Adams
- Fixed case for building Android on Linux
#jira #UE-36652
Change 3146844 on 2016/09/30 by Josh.Adams
- Removed ES2 shader compiling from TVOS, and force Metal compiling
#jira UE-36306
Change 3146865 on 2016/09/30 by Daniel.Lamb
Removed temp logging for materials
#test Launch on paragon
Change 3146874 on 2016/09/30 by Dmitry.Rekman
Linux: add rpath for libTextureConverter.so (UE-36620).
Change 3147030 on 2016/09/30 by Josh.Adams
- Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks
#jira UE-36623
Change 3147151 on 2016/09/30 by Josh.Adams
- Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling?
Change 3147621 on 2016/09/30 by Michael.Trepka
Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac
Change 3147712 on 2016/09/30 by Josh.Adams
- Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform.
#jira UE-36225
Change 3147725 on 2016/09/30 by Josh.Adams
- Fixed yet another Wolf log for people with Wolf access but no SDK
[CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
- > SetWindow ( FVector2D ( 420 * DPIScaleFactor , 32 * DPIScaleFactor ) , false )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
#lockdown josh.adams
Change 2970373 on 2016/05/09 by Lee.Clark
PS4 - Fix NumInstances not getting reset after DrawIndirect calls
Change 2972873 on 2016/05/10 by Michael.Trepka
Correct initial position for SlateViewer windows on Mac
Change 2974363 on 2016/05/11 by Mark.Satterthwaite
Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect.
Change 2975921 on 2016/05/12 by Michael.Trepka
Removed unused AdjustWindowRegion declaration from LinuxWindow.h
#codereview Dmitry.Rekman
Change 2977002 on 2016/05/13 by Michael.Trepka
Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready
#codereview Ben.Marsh
Change 2977337 on 2016/05/13 by Brent.Pease
UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error
+ Prevent illegal characters from being entered in the packaging UI
+ Report an error from iPhonePackager if a illegal bundle id is specified
+ Convert special characters to XML equivalents
- Correctly check for the presence of iTunes 12 when packaging iOS games on Windows
- Improve ios certificate and provision message in package settings UI
#codereview peter.sauerbrei
Change 2977509 on 2016/05/13 by Brent.Pease
+ Fix mac compile error
Change 2978036 on 2016/05/14 by Mark.Satterthwaite
One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN.
#jira UE-30777
Change 2978037 on 2016/05/14 by Mark.Satterthwaite
Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago.
Change 2978333 on 2016/05/16 by Lee.Clark
Fix packaging of non-code projects when plugins are enabled
#codereview Peter.Sauerbrei
Change 2978780 on 2016/05/16 by Mark.Satterthwaite
Reduce temporary allocations required to set uniform parameters in Metal.
Change 2979680 on 2016/05/16 by Nick.Shin
editor's HTML5 platform settings was missing due to the emscripten SDK move
should have been included with CL: #2946251
Change 2979681 on 2016/05/16 by Nick.Shin
cleaned up websocket processing for HTML5
#jira UE-13657 - HTML5 plugin OnRawRecieve overflow
Change 2979701 on 2016/05/16 by Brent.Pease
UE-28421 - Message box cannot be closed after accessing the home screen on iOS
+ Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution
Change 2980766 on 2016/05/17 by Jeremiah.Waldron
Adding Android build support for HarfBuzz
- using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them
- Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config>
Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly
#jira UE-28586
#codereview chris.babcock
Change 2980953 on 2016/05/17 by Jeremiah.Waldron
Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo
#jira UE-28586
Change 2981039 on 2016/05/17 by Jeff.Campeau
ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support)
Change 2981054 on 2016/05/17 by Jeff.Campeau
Enable Live OSS for Orion on Xbox One
Change 2981553 on 2016/05/18 by Jeff.Campeau
Enable Oodle for Xbox One
Change 2981555 on 2016/05/18 by Jeff.Campeau
Scalability settings for Xbox One
Change 2981774 on 2016/05/18 by Keith.Judge
Xbox One - Duplicating Movie Player fix from 4.12.
Change 2981789 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12.
Change 2981802 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12.
Change 2981875 on 2016/05/18 by Keith.Judge
Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12.
Change 2981900 on 2016/05/18 by Keith.Judge
Xbox One - D3D11Query refactor. Duplicated from 4.12
Change 2981945 on 2016/05/18 by Nick.Shin
filled out response headers for HTML5 platform
#jira UE-26047 - HTML5 HTTP Response Headers not implemented
Change 2981981 on 2016/05/18 by Lee.Clark
PS4 - Fix COTF not updating files
#codereview Daniel.Lamb
Change 2982246 on 2016/05/18 by Michael.Trepka
Fixed Mono compile errors in UT build scripts
Change 2983869 on 2016/05/19 by Mark.Satterthwaite
Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures.
#jira UE-29557
Change 2983871 on 2016/05/19 by Mark.Satterthwaite
Pool Metal texture update buffers to reduce churn.
Change 2983892 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors.
Change 2983898 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists.
Change 2983911 on 2016/05/19 by Mark.Satterthwaite
Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen.
Change 2983916 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected.
Change 2984874 on 2016/05/20 by Keith.Judge
Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps.
#jira UEPLAT-1295
Change 2985446 on 2016/05/20 by Mark.Satterthwaite
Remove the non-functional -metaldebug option from MetalRHI.
Change 2985827 on 2016/05/20 by Nick.Shin
call EndSession() onbeforeunload()
note: API CHANGE
- HTML5JavaScripteFx.{js,h}
- UE_MakeHTTPDataRequest()
#jira UE-22285 - Session End events are not generated for HTML5
Change 2986013 on 2016/05/20 by Jeremiah.Waldron
PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio)
Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo
Pulled from Release-4.12 CL
#jira UE-30782
#codereview chris.babcock, Peter.Sauerbrei
Change 2986057 on 2016/05/20 by Mark.Satterthwaite
Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI.
Change 2986059 on 2016/05/20 by Mark.Satterthwaite
Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes).
Change 2986060 on 2016/05/20 by Mark.Satterthwaite
Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level.
Change 2986063 on 2016/05/20 by Mark.Satterthwaite
Missing change from previous CL.
Change 2986066 on 2016/05/20 by Mark.Satterthwaite
More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame.
Change 2986455 on 2016/05/23 by Keith.Judge
Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler.
Change 2986886 on 2016/05/23 by Mark.Satterthwaite
Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier.
Change 2986955 on 2016/05/23 by Brent.Pease
+ Do not error out if "[PROJECT_NAME]" is in the bundle ID
#codereview peter.sauerbrei
Change 2987304 on 2016/05/23 by Chris.Babcock
Remove old Android platforms
#ue4
#android
#codeview Josh.Adams
Change 2987571 on 2016/05/23 by Mark.Satterthwaite
Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass)
#jira UE-31111
Change 2987591 on 2016/05/23 by Mark.Satterthwaite
Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5.
Change 2987679 on 2016/05/23 by Mark.Satterthwaite
Re-enable tiled reflections on Nvidia by default now that they work.
Change 2987799 on 2016/05/24 by Mark.Satterthwaite
Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac).
Change 2989395 on 2016/05/25 by Lee.Clark
PS4 - Fix shader output / render target format mismatch for sparse MRT.
Change 2990003 on 2016/05/25 by Jeremiah.Waldron
When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function.
Change 2990393 on 2016/05/25 by Mark.Satterthwaite
Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal...
Change 2990516 on 2016/05/25 by Brent.Pease
+ UEPLAT-1294 - Support for local notifications
+ UEPLAT-1254 - Add BP event for device orientation change
+ Added a new class based on UGameInstance for mobile device callbacks
+ Ensured IOSAppDelegate.cpp follows convention for lambda functions
Change 2991361 on 2016/05/26 by Jeremiah.Waldron
Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it
Change 2992450 on 2016/05/27 by Mark.Satterthwaite
Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders.
Change 2993027 on 2016/05/27 by Mark.Satterthwaite
Fix typo for new CFLAG_BoundsChecking enumeration value.
Change 2993594 on 2016/05/27 by Mark.Satterthwaite
Build fix - check not assert...
Change 2993595 on 2016/05/27 by Mark.Satterthwaite
Fix typo from Xcode hang...
Change 2993614 on 2016/05/28 by Mark.Satterthwaite
At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers.
Change 2993747 on 2016/05/28 by Mark.Satterthwaite
Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used.
Change 2994256 on 2016/05/31 by Lee.Clark
PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working.
#codereview Chad.Taylor,Aaron.McLeran
Change 2994281 on 2016/05/31 by Rolando.Caloca
DP - Allow hlslcc to process type casts containing the 'const' keyword
- it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile.
#codereview Mark.Satterthwaite, Dmitry.Rekman
#jira UE-31411
Change 2994467 on 2016/05/31 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 2994493 on 2016/05/31 by Daniel.Lamb
Fixed issue with DDC commandlet not caching things from the startup packages list.
Change 2994644 on 2016/05/31 by Mark.Satterthwaite
Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project.
Change 2996074 on 2016/06/01 by Lee.Clark
PS4 - Fix GS mode not getting disabled when using parallel contexts.
#codereview Marcus.Wassmer
Change 2996129 on 2016/06/01 by Brent.Pease
Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch.
Change 2996130 on 2016/06/01 by Jeremiah.Waldron
PR #2387 part 2 (Contributed by gameDNAstudio)
Adding ability to consume purchases during GooglePlay RestorePurchases
This also touches IOS due to changes to base classes and function signatures
#codereview chris.babcock, Peter.Sauerbrei
Change 2996441 on 2016/06/01 by Jeremiah.Waldron
Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio)
Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function.
#codereview chris.babcock
Change 2996514 on 2016/06/01 by Jeff.Campeau
Fix merge issue from main
#jira UE-31502
Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick
https://jira.ol.epicgames.net/browse/UE-31446
Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed.
Renamed handleReserveFailed to handleReserveFailedLightweight
Change 2997235 on 2016/06/01 by Jeremiah.Waldron
RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node.
The IAP product in Match3 is non-consumable so just passing an empty array where necessary
Change 2997241 on 2016/06/01 by Jeremiah.Waldron
OnlineSubsystemGameCircle Plugin
- Leaderboards
- Achievements
- Friends
- IAP
- External UI Interface
- Runtime Settings in Project Settings Plugin section when plugin is enabled
- Disabled by default
#jira UEPLAT-105
#codereview chris.babcock
Change 2997618 on 2016/06/02 by Lee.Clark
#UE4Docs: Removed PS4MapFileUtil info
Change 2997840 on 2016/06/02 by Jeremiah.Waldron
Removing trace logging from OnlineSubsystemGameCircle_APL
Change 2998754 on 2016/06/02 by Brent.Pease
Change BlueprintMobileLibrary to BlueprintPlatformLibrary
Change 3000762 on 2016/06/03 by Jeff.Campeau
Add example rating info to ShooterGame
Change 3001037 on 2016/06/04 by Brent.Pease
+ Add ui screens for delegate test, local notification test, and iap test
+ Implement delegate test
Change 3001250 on 2016/06/05 by Brent.Pease
+ Initial pass at IAP test screen
Change 3001639 on 2016/06/06 by Jeff.Campeau
Fix Xbox One build issue with DX12
#codereview Zabir.Hoque
Change 3002574 on 2016/06/06 by Jeremiah.Waldron
Adding Android Install Location to Android platform runtime settings and manifest generation
Change 3002780 on 2016/06/06 by Brent.Pease
+ Initial implementation of local notification test
Change 3003005 on 2016/06/06 by Jeremiah.Waldron
OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute
Change 3004392 on 2016/06/07 by Jeremiah.Waldron
Fixing typo in APL comment :)
Change 3005768 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3005929 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3006151 on 2016/06/08 by Peter.Sauerbrei
fix for LocalNotifications not available on TVOS
#lockdown josh.adams
Change 3006183 on 2016/06/08 by Brent.Pease
Manual merge CL#3000242 from Release-4.12 into Dev-Platform
#lockdown josh.adams
Change 3006296 on 2016/06/08 by Peter.Sauerbrei
submit an updated iPhonePackager and support DLLs
#lockdown josh.adams
Change 3006378 on 2016/06/08 by Peter.Sauerbrei
fix for API update to RestorePurchases
#codereview brent.pease
#lockdown josh.adams
#lockdown nick.penwarden
[CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
# else
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948319 on 2016/04/19 by Nick.Shin
update zlib to v1.2.8
part 1 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2948661 on 2016/04/19 by Nick.Shin
keep using old zlibs until they are recompiled with the newer version
Change 2948737 on 2016/04/19 by Nick.Shin
build warning fix
Change 2949334 on 2016/04/20 by Nick.Shin
fix library path
for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set...
Change 2951556 on 2016/04/21 by Nick.Shin
static libs double checked
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2951559 on 2016/04/21 by Nick.Shin
static libs double checked
forgot these files - they were in another changelist
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2952411 on 2016/04/22 by Nick.Shin
add win32 build targets for zlib openssl libcurl libwebsockets
part 1 of 2: these are the C# build scripts
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
Change 3118163 on 2016/09/08 by Josh.Adams
perm test 2, not a useful file at all
Change 3121142 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3121150 on 2016/09/12 by Daniel.Lamb
Added warning logs to help track down issue UE-33453.
Change 3121201 on 2016/09/12 by Keith.Judge
Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix.
Change 3121302 on 2016/09/12 by Joe.Graf
Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors
Change 3121379 on 2016/09/12 by Dmitry.Rekman
Linux: only link libraries that export needed symbols (UE-35720).
- Fixes very long startup times of modular builds.
- Includes PR #2778 by slonopotamus.
#jira UE-35720
Change 3121383 on 2016/09/12 by Dmitry.Rekman
Linux: added some missing _API declarations on symbols used externally.
- Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't).
Change 3121456 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3122939 on 2016/09/13 by Luke.Thatcher
[PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service.
- Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone.
Change 3123040 on 2016/09/13 by Brent.Pease
+ Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now.
Change 3123664 on 2016/09/13 by Nick.Shin
this was originally checked into: release 4.13.1
bringing here to dev-platform
-- original submit comments --
first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing"
next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop
jira UE-35363 - Huge game window when launching onto Safari 9.1.2
Change 3125282 on 2016/09/14 by Michael.Trepka
Fixed iOS and tvOS code indexing in Xcode project
Change 3126812 on 2016/09/15 by Josh.Adams
Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes:
- Added Parse function to JsonObject.cs to be able to parse a string
- Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU()
- Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
- Converted the PS4MallocCrash class into a generic one (that Wolf is now also using)
- Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread
- Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere
- Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects
- Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever)
- Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool.
- Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini)
- Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain.
- Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening
- Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct.
- Renamed a UT copy of a global function to not linker-conflict
- Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4.
- Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists)
- Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority()
- Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads?
- Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move.
Change 3126842 on 2016/09/15 by Michael.Trepka
Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation.
Change 3126956 on 2016/09/15 by Michael.Trepka
Added support for compiling Vulkan shaders for Android on Mac
Change 3127206 on 2016/09/15 by Michael.Trepka
PR #2604: Remove some warnings. (Contributed by reapazor)
Change 3127324 on 2016/09/15 by Michael.Trepka
Allow third party dylibs on Mac to be loaded from plugin subfolders
Change 3127924 on 2016/09/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3128369 on 2016/09/16 by Nick.Shin
zlib 1.2.8
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128377 on 2016/09/16 by Nick.Shin
openssl 1_0_2h
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128383 on 2016/09/16 by Nick.Shin
libcurl 7_48_0
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128384 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128464 on 2016/09/16 by Nick.Shin
webRTC rev.12643
NOTE: VS2015
- only Win64 is available
- Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment
NOTE: VS2013
- not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist
- also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways
FUTURE NOTE:
- will continue to try to get VS2015 Win32 functional
- and am working on trying to get VS2013 tested
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128500 on 2016/09/16 by Nick.Shin
zlib 1.2.8 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128504 on 2016/09/16 by Nick.Shin
openssl 1_0_2h - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128506 on 2016/09/16 by Nick.Shin
libcurl 7_48_0 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128508 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128513 on 2016/09/16 by Nick.Shin
webRTC rev.12643 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128602 on 2016/09/16 by Nick.Shin
webRTC rev.9862 - Win64 VS2013
NOTE:
- not tested (i'm working on getting a VS2013 pro license)
- checking in for testing purposes
WARNING:
- VS2013 is no longer supported by webRTC latest
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128605 on 2016/09/16 by Nick.Shin
re-enabling updated ThirdParySoftware libs:
- zlib (v.1.2.8)
- openssl (1.0.2h)
- libcurl (7_48_0)
- libwebsocket (v.1.7.4)
- webRTC (rev.12643)
to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build...
Change 3128651 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605
Change 3128704 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605 - this time actually compiling it...
Change 3128825 on 2016/09/16 by Dmitry.Rekman
Linux: proper fix for too slow startup times (UE-35967).
- Pull request #2793 by slonopotamus.
- Now without stripping dependencies on libraries specified before.
- Contains a work around for ld bug <2.25.
Change 3128972 on 2016/09/16 by Nick.Shin
fix to local build error.
Change 3129283 on 2016/09/16 by Brent.Pease
+ Add Android local notification support based on existing system used for iOS
+ Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release
Change 3129494 on 2016/09/17 by Nick.Shin
fix CIS build errors
Change 3129503 on 2016/09/17 by Dmitry.Rekman
Fix Linux build (case sensitivity issue).
Change 3129514 on 2016/09/17 by Nick.Shin
fix CIS build errors for consoles - missing zlib include path
special thanks to Dmitry.Rekman for pointing me in the right direction
Change 3129647 on 2016/09/17 by Dmitry.Rekman
Linux: fix non-unity build.
Change 3131043 on 2016/09/19 by Nick.Shin
archiving build instructions/steps when building:
- zlib (v.1.2.8)
win: #3128369
osx: #3128500
- openssl (1.0.2h)
win: #3128377
osx: #3128504
- libcurl (7_48_0)
win: #3128383
osx: #3128506
- libwebsocket (v.1.7.4)
win: #3128384
osx: #3128508
- webRTC
win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP
osx: #3128513
Change 3132801 on 2016/09/20 by Dmitry.Rekman
Linux: support specifying default OpenGL version via configs (UE-34777).
- The first targeted RHI is going to be used.
Change 3132905 on 2016/09/20 by Josh.Adams
- Fixed up some paths with the WolfPlat rename
Change 3133148 on 2016/09/20 by Josh.Adams
- Only show UT EULA if PLATFORM_DESKTOP
Change 3133152 on 2016/09/20 by Josh.Adams
- Beginning support for applets. Disabled unless you have a special SDK with applet support.
Change 3133169 on 2016/09/20 by Josh.Adams
- Fixed issue with Wolf access but no SDK installed
Change 3133344 on 2016/09/20 by Daniel.Lamb
Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile.
Added new flag to limit number of concurrent shader compiles.
#test Cook QAGame, Cook Paragon
Change 3133345 on 2016/09/20 by Daniel.Lamb
FRedirectCollector collects string asset references all the time when running the editor.
#test Cook paragon cook QAGame.
Change 3133852 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated.
Change 3133875 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2)
Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick
Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'.
Change 3134544 on 2016/09/21 by Josh.Adams
- Reduced UT textures for Wolf
Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick
FPS4Time::SystemTime now calculates the local machine time, instead of UTC.
#jira UE-35170
Change 3135036 on 2016/09/21 by Michael.Trepka
Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process
Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick
GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32
Change 3135292 on 2016/09/21 by Jeff.Campeau
Change include order to favor the XDK edition specific headers where available.
Change 3136414 on 2016/09/22 by Josh.Adams
- Fixed a checkf() that had the case reversed
#jira ue-36311
Change 3137082 on 2016/09/22 by Dmitry.Rekman
Added support for Linux installed builds to 4.14
Change 3137220 on 2016/09/22 by Dmitry.Rekman
Linux: do not rebuild hlslcc on each setup.
- Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary.
Change 3137227 on 2016/09/22 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3137259 on 2016/09/22 by Dmitry.Rekman
Linux installed build: fix CIS (missed one .csproj)
Change 3137290 on 2016/09/22 by Dmitry.Rekman
Linux installed builds: fix for the resulting directory.
Change 3137291 on 2016/09/22 by Chris.Babcock
Restore texture filtering mode properly when movie played on Android
#jira UE-36342
#ue4
#android
Change 3137376 on 2016/09/22 by Dmitry.Rekman
Linux: re-enabled crash handler stack smash protection.
- Race condition in FRunnableThreadPThread has been previously fixed.
Change 3138498 on 2016/09/23 by Dmitry.Rekman
Linux: add missed package for installed builds.
- mono-devel package for resgen2.
Change 3138523 on 2016/09/23 by Dmitry.Rekman
Linux: Update hlslcc now that we're not rebuilding it each time.
Change 3138658 on 2016/09/23 by Josh.Adams
- Moved UT's Social Plugin into NotForLicensees
Change 3139042 on 2016/09/23 by Dmitry.Rekman
Linux: more robust check of installed packages.
- Also added mono-devel to the list of packages installed on 14.04.
Change 3139674 on 2016/09/26 by Dmitry.Rekman
Fix crash when editing widget blueprints (UE-35185).
- Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping.
- Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795).
Change 3140203 on 2016/09/26 by Josh.Adams
- Wolf Fix for SHIPPING
Change 3140206 on 2016/09/26 by Josh.Adams
- NEX work, still in progress
Change 3140276 on 2016/09/26 by Josh.Adams
- Fixed Wolf compile error
Change 3140485 on 2016/09/26 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3140570 on 2016/09/26 by Dmitry.Rekman
SDL2: Delete obsolete files.
- We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space.
Change 3140577 on 2016/09/26 by Dmitry.Rekman
Fix CudaTest monolithic build.
- Not the best fix, the better fix is to build against bundled libc++.
Change 3141184 on 2016/09/27 by Keith.Judge
Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert.
#jira UE-35973
Change 3141623 on 2016/09/27 by Chris.Babcock
Support hiding virtual keyboard on Android
#jira UE-34201
#ue4
#android
Change 3141887 on 2016/09/27 by Joe.Graf
Added support for additional plugin directories that are specified by the .uproject file
New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins
Change 3141916 on 2016/09/27 by Josh.Adams
- Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925)
Change 3141926 on 2016/09/27 by Josh.Adams
- Support for skipping Wolf user selector (-nologinui)
Change 3141938 on 2016/09/27 by Chris.Babcock
Allow Android media player to seek past 999ms (contributed by rcywongaa)
#jira UE-36453
#PR #2797
#ue4
#android
Change 3142207 on 2016/09/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3142219 on 2016/09/27 by Josh.Adams
- Wolf PhysX 3.4 libs and includes
Change 3142220 on 2016/09/27 by Josh.Adams
- File that had to be fixed up after main merge (missed adding it to the huge integrate CL)
Change 3142314 on 2016/09/27 by Chase.McAllister
#jira UE-35011 fixes to some assets to remove redundancies/output log spam
Change 3142510 on 2016/09/27 by Daniel.Lamb
Fixed up resave lightmaps commandlet so that world transforms don't get applied twice.
#jira UE-35942
Change 3142650 on 2016/09/27 by Chris.Babcock
Android support for Linux by yaakuro
- requires CodeWorks for Android Linux installed and OpenJDK 1.8
- need to set Android SDK paths manually in Project Settings
#jira UE-32752
#jira UE-32753
#PR #2564
#PR #2565
#ue4
#android
#linux
Change 3142802 on 2016/09/27 by Dmitry.Rekman
Upgrade to SDL 2.0.5-ish (still technically 2.0.4).
- Upstream revision 10374:dccf51aee79b.
- Merged all our changes hopefully.
Change 3143075 on 2016/09/28 by Luke.Thatcher
[RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro.
#jira UE-33077
Change 3143219 on 2016/09/28 by Daniel.Lamb
Added new is compiling function which tells you if it's really compiling instead of lying.
If def out additional logging for debugging shader compilation issue for 4.14 release.
Change 3143428 on 2016/09/28 by Luke.Thatcher
[PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061
Change 3143488 on 2016/09/28 by Daniel.Lamb
Changed defaults for skip cooking editor content to true.
Change 3143526 on 2016/09/28 by Daniel.Lamb
Increased the concurrent shader compile limit while in the cooker.
#test Cook paragon
Change 3143874 on 2016/09/28 by Chris.Babcock
Read Android environment variables from .bashrc on Linux
#jira UE-36565
#ue4
#android
#linux
Change 3143911 on 2016/09/28 by Dmitry.Rekman
Fix SDL EGL API binding (UE-18979).
- Contains PR #1398 by x414e54.
- Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade.
Change 3143929 on 2016/09/28 by Daniel.Lamb
Removed some more temporary logging.
#test Cook paragon
Change 3143959 on 2016/09/28 by Jeff.Campeau
Media Player for Xbox One
Change 3143997 on 2016/09/28 by Dmitry.Rekman
Linux: faster linking in Debug.
- Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating.
Change 3144004 on 2016/09/28 by Dmitry.Rekman
Linux: make SCW dump core on crash in debug builds.
- If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space).
Change 3144007 on 2016/09/28 by Dmitry.Rekman
Linux: Allow equals character in command line parameter value (UE-26406).
- PR #2019 by bozzaro.
- Allows passing parameters like -Switch=Key=Value.
Change 3144042 on 2016/09/28 by Jeff.Campeau
Add tag for DX12 support being experimental in target settings.
#jira UE-36150
Change 3144068 on 2016/09/28 by Dmitry.Rekman
Linux: enable using xgConsole in UAT (UE-28096).
- PR #2144 by bozzaro.
- Picks correct xgConsole binary.
- Allegedly fixes crash in CombineXGEItemFile on mono.
Change 3144120 on 2016/09/28 by Michael.Trepka
Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/...
Change 3144172 on 2016/09/28 by Chris.Babcock
Add libpng 1.5.27 for Android
#jira UE-36573
#ue4
#android
Change 3144318 on 2016/09/28 by Chris.Babcock
Correct logic for checking .bashrc on Linux
#ue4
#android
Change 3144331 on 2016/09/28 by Dmitry.Rekman
Linux: repair ARM server builds.
- Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1).
Change 3144354 on 2016/09/28 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
this is intermediate, not fully working
Change 3144368 on 2016/09/28 by Josh.Adams
- Moved the new Social files into NFL
Change 3144395 on 2016/09/28 by Chris.Babcock
Add missing functions for AndroidWebBrowserWindow
#ue4
#android
Change 3144417 on 2016/09/28 by Josh.Adams
- Probable fix for FWebBrowserWindow missing virtuals
Change 3144438 on 2016/09/28 by Jeff.Campeau
XDK updated to 160802
Change 3144569 on 2016/09/29 by Dmitry.Rekman
Linux: allow a selectable clock source (UE-36564).
- The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew.
- Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there.
#tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm).
Change 3145108 on 2016/09/29 by Joe.Graf
Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools)
Change 3145245 on 2016/09/29 by Joe.Graf
#wolf
Checking in removal of plugin use on Win64 per Josh's request
Change 3145514 on 2016/09/29 by Will.Fissler
Updated Mac Info.plist files to disable high DPI on macOS 10.12
Change 3145538 on 2016/09/29 by Josh.Adams
- Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots.
Change 3145540 on 2016/09/29 by Josh.Adams
- Fix for checking some Wolf dev tool installation existence
- Fix for various Wolf build issues
- Fix for Wolf devices not showing up in Launch on
Change 3145542 on 2016/09/29 by Josh.Adams
- Pulled over Wolf changes from Wolf branch into Dev-Platform
Change 3145572 on 2016/09/29 by Josh.Adams
- Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people.
#jira UE-36591
Change 3145769 on 2016/09/29 by Chris.Babcock
Remove duplicate platforms from deploy list in UFE
#jira UE-36636
#ue4
Change 3146061 on 2016/09/29 by Chris.Babcock
Linux: be less spammy in log when launching external procs
#jira UE-36638
#ue4
#linux
Change 3146208 on 2016/09/29 by Dmitry.Rekman
Linux: fix PhysX crash (UE-36613).
- PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above.
- This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun.
#jira UE-36613
Change 3146476 on 2016/09/30 by Josh.Adams
- Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose
Change 3146554 on 2016/09/30 by Josh.Adams
- Removed another wolf secret log
Change 3146626 on 2016/09/30 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3146712 on 2016/09/30 by Josh.Adams
- Fixed case for building Android on Linux
#jira #UE-36652
Change 3146844 on 2016/09/30 by Josh.Adams
- Removed ES2 shader compiling from TVOS, and force Metal compiling
#jira UE-36306
Change 3146865 on 2016/09/30 by Daniel.Lamb
Removed temp logging for materials
#test Launch on paragon
Change 3146874 on 2016/09/30 by Dmitry.Rekman
Linux: add rpath for libTextureConverter.so (UE-36620).
Change 3147030 on 2016/09/30 by Josh.Adams
- Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks
#jira UE-36623
Change 3147151 on 2016/09/30 by Josh.Adams
- Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling?
Change 3147621 on 2016/09/30 by Michael.Trepka
Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac
Change 3147712 on 2016/09/30 by Josh.Adams
- Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform.
#jira UE-36225
Change 3147725 on 2016/09/30 by Josh.Adams
- Fixed yet another Wolf log for people with Wolf access but no SDK
[CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
- > SetWindow ( FVector2D ( 420 * DPIScaleFactor , 10 * DPIScaleFactor ) , false )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
#lockdown josh.adams
Change 2970373 on 2016/05/09 by Lee.Clark
PS4 - Fix NumInstances not getting reset after DrawIndirect calls
Change 2972873 on 2016/05/10 by Michael.Trepka
Correct initial position for SlateViewer windows on Mac
Change 2974363 on 2016/05/11 by Mark.Satterthwaite
Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect.
Change 2975921 on 2016/05/12 by Michael.Trepka
Removed unused AdjustWindowRegion declaration from LinuxWindow.h
#codereview Dmitry.Rekman
Change 2977002 on 2016/05/13 by Michael.Trepka
Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready
#codereview Ben.Marsh
Change 2977337 on 2016/05/13 by Brent.Pease
UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error
+ Prevent illegal characters from being entered in the packaging UI
+ Report an error from iPhonePackager if a illegal bundle id is specified
+ Convert special characters to XML equivalents
- Correctly check for the presence of iTunes 12 when packaging iOS games on Windows
- Improve ios certificate and provision message in package settings UI
#codereview peter.sauerbrei
Change 2977509 on 2016/05/13 by Brent.Pease
+ Fix mac compile error
Change 2978036 on 2016/05/14 by Mark.Satterthwaite
One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN.
#jira UE-30777
Change 2978037 on 2016/05/14 by Mark.Satterthwaite
Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago.
Change 2978333 on 2016/05/16 by Lee.Clark
Fix packaging of non-code projects when plugins are enabled
#codereview Peter.Sauerbrei
Change 2978780 on 2016/05/16 by Mark.Satterthwaite
Reduce temporary allocations required to set uniform parameters in Metal.
Change 2979680 on 2016/05/16 by Nick.Shin
editor's HTML5 platform settings was missing due to the emscripten SDK move
should have been included with CL: #2946251
Change 2979681 on 2016/05/16 by Nick.Shin
cleaned up websocket processing for HTML5
#jira UE-13657 - HTML5 plugin OnRawRecieve overflow
Change 2979701 on 2016/05/16 by Brent.Pease
UE-28421 - Message box cannot be closed after accessing the home screen on iOS
+ Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution
Change 2980766 on 2016/05/17 by Jeremiah.Waldron
Adding Android build support for HarfBuzz
- using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them
- Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config>
Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly
#jira UE-28586
#codereview chris.babcock
Change 2980953 on 2016/05/17 by Jeremiah.Waldron
Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo
#jira UE-28586
Change 2981039 on 2016/05/17 by Jeff.Campeau
ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support)
Change 2981054 on 2016/05/17 by Jeff.Campeau
Enable Live OSS for Orion on Xbox One
Change 2981553 on 2016/05/18 by Jeff.Campeau
Enable Oodle for Xbox One
Change 2981555 on 2016/05/18 by Jeff.Campeau
Scalability settings for Xbox One
Change 2981774 on 2016/05/18 by Keith.Judge
Xbox One - Duplicating Movie Player fix from 4.12.
Change 2981789 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12.
Change 2981802 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12.
Change 2981875 on 2016/05/18 by Keith.Judge
Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12.
Change 2981900 on 2016/05/18 by Keith.Judge
Xbox One - D3D11Query refactor. Duplicated from 4.12
Change 2981945 on 2016/05/18 by Nick.Shin
filled out response headers for HTML5 platform
#jira UE-26047 - HTML5 HTTP Response Headers not implemented
Change 2981981 on 2016/05/18 by Lee.Clark
PS4 - Fix COTF not updating files
#codereview Daniel.Lamb
Change 2982246 on 2016/05/18 by Michael.Trepka
Fixed Mono compile errors in UT build scripts
Change 2983869 on 2016/05/19 by Mark.Satterthwaite
Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures.
#jira UE-29557
Change 2983871 on 2016/05/19 by Mark.Satterthwaite
Pool Metal texture update buffers to reduce churn.
Change 2983892 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors.
Change 2983898 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists.
Change 2983911 on 2016/05/19 by Mark.Satterthwaite
Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen.
Change 2983916 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected.
Change 2984874 on 2016/05/20 by Keith.Judge
Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps.
#jira UEPLAT-1295
Change 2985446 on 2016/05/20 by Mark.Satterthwaite
Remove the non-functional -metaldebug option from MetalRHI.
Change 2985827 on 2016/05/20 by Nick.Shin
call EndSession() onbeforeunload()
note: API CHANGE
- HTML5JavaScripteFx.{js,h}
- UE_MakeHTTPDataRequest()
#jira UE-22285 - Session End events are not generated for HTML5
Change 2986013 on 2016/05/20 by Jeremiah.Waldron
PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio)
Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo
Pulled from Release-4.12 CL
#jira UE-30782
#codereview chris.babcock, Peter.Sauerbrei
Change 2986057 on 2016/05/20 by Mark.Satterthwaite
Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI.
Change 2986059 on 2016/05/20 by Mark.Satterthwaite
Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes).
Change 2986060 on 2016/05/20 by Mark.Satterthwaite
Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level.
Change 2986063 on 2016/05/20 by Mark.Satterthwaite
Missing change from previous CL.
Change 2986066 on 2016/05/20 by Mark.Satterthwaite
More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame.
Change 2986455 on 2016/05/23 by Keith.Judge
Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler.
Change 2986886 on 2016/05/23 by Mark.Satterthwaite
Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier.
Change 2986955 on 2016/05/23 by Brent.Pease
+ Do not error out if "[PROJECT_NAME]" is in the bundle ID
#codereview peter.sauerbrei
Change 2987304 on 2016/05/23 by Chris.Babcock
Remove old Android platforms
#ue4
#android
#codeview Josh.Adams
Change 2987571 on 2016/05/23 by Mark.Satterthwaite
Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass)
#jira UE-31111
Change 2987591 on 2016/05/23 by Mark.Satterthwaite
Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5.
Change 2987679 on 2016/05/23 by Mark.Satterthwaite
Re-enable tiled reflections on Nvidia by default now that they work.
Change 2987799 on 2016/05/24 by Mark.Satterthwaite
Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac).
Change 2989395 on 2016/05/25 by Lee.Clark
PS4 - Fix shader output / render target format mismatch for sparse MRT.
Change 2990003 on 2016/05/25 by Jeremiah.Waldron
When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function.
Change 2990393 on 2016/05/25 by Mark.Satterthwaite
Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal...
Change 2990516 on 2016/05/25 by Brent.Pease
+ UEPLAT-1294 - Support for local notifications
+ UEPLAT-1254 - Add BP event for device orientation change
+ Added a new class based on UGameInstance for mobile device callbacks
+ Ensured IOSAppDelegate.cpp follows convention for lambda functions
Change 2991361 on 2016/05/26 by Jeremiah.Waldron
Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it
Change 2992450 on 2016/05/27 by Mark.Satterthwaite
Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders.
Change 2993027 on 2016/05/27 by Mark.Satterthwaite
Fix typo for new CFLAG_BoundsChecking enumeration value.
Change 2993594 on 2016/05/27 by Mark.Satterthwaite
Build fix - check not assert...
Change 2993595 on 2016/05/27 by Mark.Satterthwaite
Fix typo from Xcode hang...
Change 2993614 on 2016/05/28 by Mark.Satterthwaite
At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers.
Change 2993747 on 2016/05/28 by Mark.Satterthwaite
Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used.
Change 2994256 on 2016/05/31 by Lee.Clark
PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working.
#codereview Chad.Taylor,Aaron.McLeran
Change 2994281 on 2016/05/31 by Rolando.Caloca
DP - Allow hlslcc to process type casts containing the 'const' keyword
- it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile.
#codereview Mark.Satterthwaite, Dmitry.Rekman
#jira UE-31411
Change 2994467 on 2016/05/31 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 2994493 on 2016/05/31 by Daniel.Lamb
Fixed issue with DDC commandlet not caching things from the startup packages list.
Change 2994644 on 2016/05/31 by Mark.Satterthwaite
Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project.
Change 2996074 on 2016/06/01 by Lee.Clark
PS4 - Fix GS mode not getting disabled when using parallel contexts.
#codereview Marcus.Wassmer
Change 2996129 on 2016/06/01 by Brent.Pease
Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch.
Change 2996130 on 2016/06/01 by Jeremiah.Waldron
PR #2387 part 2 (Contributed by gameDNAstudio)
Adding ability to consume purchases during GooglePlay RestorePurchases
This also touches IOS due to changes to base classes and function signatures
#codereview chris.babcock, Peter.Sauerbrei
Change 2996441 on 2016/06/01 by Jeremiah.Waldron
Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio)
Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function.
#codereview chris.babcock
Change 2996514 on 2016/06/01 by Jeff.Campeau
Fix merge issue from main
#jira UE-31502
Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick
https://jira.ol.epicgames.net/browse/UE-31446
Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed.
Renamed handleReserveFailed to handleReserveFailedLightweight
Change 2997235 on 2016/06/01 by Jeremiah.Waldron
RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node.
The IAP product in Match3 is non-consumable so just passing an empty array where necessary
Change 2997241 on 2016/06/01 by Jeremiah.Waldron
OnlineSubsystemGameCircle Plugin
- Leaderboards
- Achievements
- Friends
- IAP
- External UI Interface
- Runtime Settings in Project Settings Plugin section when plugin is enabled
- Disabled by default
#jira UEPLAT-105
#codereview chris.babcock
Change 2997618 on 2016/06/02 by Lee.Clark
#UE4Docs: Removed PS4MapFileUtil info
Change 2997840 on 2016/06/02 by Jeremiah.Waldron
Removing trace logging from OnlineSubsystemGameCircle_APL
Change 2998754 on 2016/06/02 by Brent.Pease
Change BlueprintMobileLibrary to BlueprintPlatformLibrary
Change 3000762 on 2016/06/03 by Jeff.Campeau
Add example rating info to ShooterGame
Change 3001037 on 2016/06/04 by Brent.Pease
+ Add ui screens for delegate test, local notification test, and iap test
+ Implement delegate test
Change 3001250 on 2016/06/05 by Brent.Pease
+ Initial pass at IAP test screen
Change 3001639 on 2016/06/06 by Jeff.Campeau
Fix Xbox One build issue with DX12
#codereview Zabir.Hoque
Change 3002574 on 2016/06/06 by Jeremiah.Waldron
Adding Android Install Location to Android platform runtime settings and manifest generation
Change 3002780 on 2016/06/06 by Brent.Pease
+ Initial implementation of local notification test
Change 3003005 on 2016/06/06 by Jeremiah.Waldron
OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute
Change 3004392 on 2016/06/07 by Jeremiah.Waldron
Fixing typo in APL comment :)
Change 3005768 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3005929 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3006151 on 2016/06/08 by Peter.Sauerbrei
fix for LocalNotifications not available on TVOS
#lockdown josh.adams
Change 3006183 on 2016/06/08 by Brent.Pease
Manual merge CL#3000242 from Release-4.12 into Dev-Platform
#lockdown josh.adams
Change 3006296 on 2016/06/08 by Peter.Sauerbrei
submit an updated iPhonePackager and support DLLs
#lockdown josh.adams
Change 3006378 on 2016/06/08 by Peter.Sauerbrei
fix for API update to RestorePurchases
#codereview brent.pease
#lockdown josh.adams
#lockdown nick.penwarden
[CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
# endif
2014-03-14 14:13:41 -04:00
- > Split
(
FTabManager : : NewStack ( )
- > AddTab ( " TestSuite2 " , ETabState : : OpenedTab )
- > AddTab ( " TestSuite1 " , ETabState : : OpenedTab )
2014-10-16 13:28:42 -04:00
- > AddTab ( " RenderTransformManipulator " , ETabState : : OpenedTab )
2014-12-16 07:36:00 -05:00
- > AddTab ( " WidgetGalleryTab " , ETabState : : OpenedTab )
2014-03-14 14:13:41 -04:00
)
2014-07-09 05:15:50 -04:00
)
# if PLATFORM_SUPPORTS_MULTIPLE_NATIVE_WINDOWS
- > AddArea
(
// This area will get a 400x600 window at 10,10
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948319 on 2016/04/19 by Nick.Shin
update zlib to v1.2.8
part 1 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2948661 on 2016/04/19 by Nick.Shin
keep using old zlibs until they are recompiled with the newer version
Change 2948737 on 2016/04/19 by Nick.Shin
build warning fix
Change 2949334 on 2016/04/20 by Nick.Shin
fix library path
for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set...
Change 2951556 on 2016/04/21 by Nick.Shin
static libs double checked
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2951559 on 2016/04/21 by Nick.Shin
static libs double checked
forgot these files - they were in another changelist
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2952411 on 2016/04/22 by Nick.Shin
add win32 build targets for zlib openssl libcurl libwebsockets
part 1 of 2: these are the C# build scripts
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
Change 3118163 on 2016/09/08 by Josh.Adams
perm test 2, not a useful file at all
Change 3121142 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3121150 on 2016/09/12 by Daniel.Lamb
Added warning logs to help track down issue UE-33453.
Change 3121201 on 2016/09/12 by Keith.Judge
Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix.
Change 3121302 on 2016/09/12 by Joe.Graf
Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors
Change 3121379 on 2016/09/12 by Dmitry.Rekman
Linux: only link libraries that export needed symbols (UE-35720).
- Fixes very long startup times of modular builds.
- Includes PR #2778 by slonopotamus.
#jira UE-35720
Change 3121383 on 2016/09/12 by Dmitry.Rekman
Linux: added some missing _API declarations on symbols used externally.
- Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't).
Change 3121456 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3122939 on 2016/09/13 by Luke.Thatcher
[PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service.
- Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone.
Change 3123040 on 2016/09/13 by Brent.Pease
+ Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now.
Change 3123664 on 2016/09/13 by Nick.Shin
this was originally checked into: release 4.13.1
bringing here to dev-platform
-- original submit comments --
first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing"
next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop
jira UE-35363 - Huge game window when launching onto Safari 9.1.2
Change 3125282 on 2016/09/14 by Michael.Trepka
Fixed iOS and tvOS code indexing in Xcode project
Change 3126812 on 2016/09/15 by Josh.Adams
Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes:
- Added Parse function to JsonObject.cs to be able to parse a string
- Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU()
- Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
- Converted the PS4MallocCrash class into a generic one (that Wolf is now also using)
- Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread
- Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere
- Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects
- Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever)
- Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool.
- Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini)
- Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain.
- Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening
- Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct.
- Renamed a UT copy of a global function to not linker-conflict
- Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4.
- Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists)
- Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority()
- Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads?
- Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move.
Change 3126842 on 2016/09/15 by Michael.Trepka
Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation.
Change 3126956 on 2016/09/15 by Michael.Trepka
Added support for compiling Vulkan shaders for Android on Mac
Change 3127206 on 2016/09/15 by Michael.Trepka
PR #2604: Remove some warnings. (Contributed by reapazor)
Change 3127324 on 2016/09/15 by Michael.Trepka
Allow third party dylibs on Mac to be loaded from plugin subfolders
Change 3127924 on 2016/09/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3128369 on 2016/09/16 by Nick.Shin
zlib 1.2.8
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128377 on 2016/09/16 by Nick.Shin
openssl 1_0_2h
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128383 on 2016/09/16 by Nick.Shin
libcurl 7_48_0
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128384 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128464 on 2016/09/16 by Nick.Shin
webRTC rev.12643
NOTE: VS2015
- only Win64 is available
- Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment
NOTE: VS2013
- not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist
- also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways
FUTURE NOTE:
- will continue to try to get VS2015 Win32 functional
- and am working on trying to get VS2013 tested
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128500 on 2016/09/16 by Nick.Shin
zlib 1.2.8 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128504 on 2016/09/16 by Nick.Shin
openssl 1_0_2h - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128506 on 2016/09/16 by Nick.Shin
libcurl 7_48_0 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128508 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128513 on 2016/09/16 by Nick.Shin
webRTC rev.12643 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128602 on 2016/09/16 by Nick.Shin
webRTC rev.9862 - Win64 VS2013
NOTE:
- not tested (i'm working on getting a VS2013 pro license)
- checking in for testing purposes
WARNING:
- VS2013 is no longer supported by webRTC latest
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128605 on 2016/09/16 by Nick.Shin
re-enabling updated ThirdParySoftware libs:
- zlib (v.1.2.8)
- openssl (1.0.2h)
- libcurl (7_48_0)
- libwebsocket (v.1.7.4)
- webRTC (rev.12643)
to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build...
Change 3128651 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605
Change 3128704 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605 - this time actually compiling it...
Change 3128825 on 2016/09/16 by Dmitry.Rekman
Linux: proper fix for too slow startup times (UE-35967).
- Pull request #2793 by slonopotamus.
- Now without stripping dependencies on libraries specified before.
- Contains a work around for ld bug <2.25.
Change 3128972 on 2016/09/16 by Nick.Shin
fix to local build error.
Change 3129283 on 2016/09/16 by Brent.Pease
+ Add Android local notification support based on existing system used for iOS
+ Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release
Change 3129494 on 2016/09/17 by Nick.Shin
fix CIS build errors
Change 3129503 on 2016/09/17 by Dmitry.Rekman
Fix Linux build (case sensitivity issue).
Change 3129514 on 2016/09/17 by Nick.Shin
fix CIS build errors for consoles - missing zlib include path
special thanks to Dmitry.Rekman for pointing me in the right direction
Change 3129647 on 2016/09/17 by Dmitry.Rekman
Linux: fix non-unity build.
Change 3131043 on 2016/09/19 by Nick.Shin
archiving build instructions/steps when building:
- zlib (v.1.2.8)
win: #3128369
osx: #3128500
- openssl (1.0.2h)
win: #3128377
osx: #3128504
- libcurl (7_48_0)
win: #3128383
osx: #3128506
- libwebsocket (v.1.7.4)
win: #3128384
osx: #3128508
- webRTC
win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP
osx: #3128513
Change 3132801 on 2016/09/20 by Dmitry.Rekman
Linux: support specifying default OpenGL version via configs (UE-34777).
- The first targeted RHI is going to be used.
Change 3132905 on 2016/09/20 by Josh.Adams
- Fixed up some paths with the WolfPlat rename
Change 3133148 on 2016/09/20 by Josh.Adams
- Only show UT EULA if PLATFORM_DESKTOP
Change 3133152 on 2016/09/20 by Josh.Adams
- Beginning support for applets. Disabled unless you have a special SDK with applet support.
Change 3133169 on 2016/09/20 by Josh.Adams
- Fixed issue with Wolf access but no SDK installed
Change 3133344 on 2016/09/20 by Daniel.Lamb
Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile.
Added new flag to limit number of concurrent shader compiles.
#test Cook QAGame, Cook Paragon
Change 3133345 on 2016/09/20 by Daniel.Lamb
FRedirectCollector collects string asset references all the time when running the editor.
#test Cook paragon cook QAGame.
Change 3133852 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated.
Change 3133875 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2)
Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick
Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'.
Change 3134544 on 2016/09/21 by Josh.Adams
- Reduced UT textures for Wolf
Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick
FPS4Time::SystemTime now calculates the local machine time, instead of UTC.
#jira UE-35170
Change 3135036 on 2016/09/21 by Michael.Trepka
Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process
Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick
GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32
Change 3135292 on 2016/09/21 by Jeff.Campeau
Change include order to favor the XDK edition specific headers where available.
Change 3136414 on 2016/09/22 by Josh.Adams
- Fixed a checkf() that had the case reversed
#jira ue-36311
Change 3137082 on 2016/09/22 by Dmitry.Rekman
Added support for Linux installed builds to 4.14
Change 3137220 on 2016/09/22 by Dmitry.Rekman
Linux: do not rebuild hlslcc on each setup.
- Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary.
Change 3137227 on 2016/09/22 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3137259 on 2016/09/22 by Dmitry.Rekman
Linux installed build: fix CIS (missed one .csproj)
Change 3137290 on 2016/09/22 by Dmitry.Rekman
Linux installed builds: fix for the resulting directory.
Change 3137291 on 2016/09/22 by Chris.Babcock
Restore texture filtering mode properly when movie played on Android
#jira UE-36342
#ue4
#android
Change 3137376 on 2016/09/22 by Dmitry.Rekman
Linux: re-enabled crash handler stack smash protection.
- Race condition in FRunnableThreadPThread has been previously fixed.
Change 3138498 on 2016/09/23 by Dmitry.Rekman
Linux: add missed package for installed builds.
- mono-devel package for resgen2.
Change 3138523 on 2016/09/23 by Dmitry.Rekman
Linux: Update hlslcc now that we're not rebuilding it each time.
Change 3138658 on 2016/09/23 by Josh.Adams
- Moved UT's Social Plugin into NotForLicensees
Change 3139042 on 2016/09/23 by Dmitry.Rekman
Linux: more robust check of installed packages.
- Also added mono-devel to the list of packages installed on 14.04.
Change 3139674 on 2016/09/26 by Dmitry.Rekman
Fix crash when editing widget blueprints (UE-35185).
- Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping.
- Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795).
Change 3140203 on 2016/09/26 by Josh.Adams
- Wolf Fix for SHIPPING
Change 3140206 on 2016/09/26 by Josh.Adams
- NEX work, still in progress
Change 3140276 on 2016/09/26 by Josh.Adams
- Fixed Wolf compile error
Change 3140485 on 2016/09/26 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3140570 on 2016/09/26 by Dmitry.Rekman
SDL2: Delete obsolete files.
- We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space.
Change 3140577 on 2016/09/26 by Dmitry.Rekman
Fix CudaTest monolithic build.
- Not the best fix, the better fix is to build against bundled libc++.
Change 3141184 on 2016/09/27 by Keith.Judge
Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert.
#jira UE-35973
Change 3141623 on 2016/09/27 by Chris.Babcock
Support hiding virtual keyboard on Android
#jira UE-34201
#ue4
#android
Change 3141887 on 2016/09/27 by Joe.Graf
Added support for additional plugin directories that are specified by the .uproject file
New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins
Change 3141916 on 2016/09/27 by Josh.Adams
- Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925)
Change 3141926 on 2016/09/27 by Josh.Adams
- Support for skipping Wolf user selector (-nologinui)
Change 3141938 on 2016/09/27 by Chris.Babcock
Allow Android media player to seek past 999ms (contributed by rcywongaa)
#jira UE-36453
#PR #2797
#ue4
#android
Change 3142207 on 2016/09/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3142219 on 2016/09/27 by Josh.Adams
- Wolf PhysX 3.4 libs and includes
Change 3142220 on 2016/09/27 by Josh.Adams
- File that had to be fixed up after main merge (missed adding it to the huge integrate CL)
Change 3142314 on 2016/09/27 by Chase.McAllister
#jira UE-35011 fixes to some assets to remove redundancies/output log spam
Change 3142510 on 2016/09/27 by Daniel.Lamb
Fixed up resave lightmaps commandlet so that world transforms don't get applied twice.
#jira UE-35942
Change 3142650 on 2016/09/27 by Chris.Babcock
Android support for Linux by yaakuro
- requires CodeWorks for Android Linux installed and OpenJDK 1.8
- need to set Android SDK paths manually in Project Settings
#jira UE-32752
#jira UE-32753
#PR #2564
#PR #2565
#ue4
#android
#linux
Change 3142802 on 2016/09/27 by Dmitry.Rekman
Upgrade to SDL 2.0.5-ish (still technically 2.0.4).
- Upstream revision 10374:dccf51aee79b.
- Merged all our changes hopefully.
Change 3143075 on 2016/09/28 by Luke.Thatcher
[RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro.
#jira UE-33077
Change 3143219 on 2016/09/28 by Daniel.Lamb
Added new is compiling function which tells you if it's really compiling instead of lying.
If def out additional logging for debugging shader compilation issue for 4.14 release.
Change 3143428 on 2016/09/28 by Luke.Thatcher
[PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061
Change 3143488 on 2016/09/28 by Daniel.Lamb
Changed defaults for skip cooking editor content to true.
Change 3143526 on 2016/09/28 by Daniel.Lamb
Increased the concurrent shader compile limit while in the cooker.
#test Cook paragon
Change 3143874 on 2016/09/28 by Chris.Babcock
Read Android environment variables from .bashrc on Linux
#jira UE-36565
#ue4
#android
#linux
Change 3143911 on 2016/09/28 by Dmitry.Rekman
Fix SDL EGL API binding (UE-18979).
- Contains PR #1398 by x414e54.
- Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade.
Change 3143929 on 2016/09/28 by Daniel.Lamb
Removed some more temporary logging.
#test Cook paragon
Change 3143959 on 2016/09/28 by Jeff.Campeau
Media Player for Xbox One
Change 3143997 on 2016/09/28 by Dmitry.Rekman
Linux: faster linking in Debug.
- Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating.
Change 3144004 on 2016/09/28 by Dmitry.Rekman
Linux: make SCW dump core on crash in debug builds.
- If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space).
Change 3144007 on 2016/09/28 by Dmitry.Rekman
Linux: Allow equals character in command line parameter value (UE-26406).
- PR #2019 by bozzaro.
- Allows passing parameters like -Switch=Key=Value.
Change 3144042 on 2016/09/28 by Jeff.Campeau
Add tag for DX12 support being experimental in target settings.
#jira UE-36150
Change 3144068 on 2016/09/28 by Dmitry.Rekman
Linux: enable using xgConsole in UAT (UE-28096).
- PR #2144 by bozzaro.
- Picks correct xgConsole binary.
- Allegedly fixes crash in CombineXGEItemFile on mono.
Change 3144120 on 2016/09/28 by Michael.Trepka
Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/...
Change 3144172 on 2016/09/28 by Chris.Babcock
Add libpng 1.5.27 for Android
#jira UE-36573
#ue4
#android
Change 3144318 on 2016/09/28 by Chris.Babcock
Correct logic for checking .bashrc on Linux
#ue4
#android
Change 3144331 on 2016/09/28 by Dmitry.Rekman
Linux: repair ARM server builds.
- Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1).
Change 3144354 on 2016/09/28 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
this is intermediate, not fully working
Change 3144368 on 2016/09/28 by Josh.Adams
- Moved the new Social files into NFL
Change 3144395 on 2016/09/28 by Chris.Babcock
Add missing functions for AndroidWebBrowserWindow
#ue4
#android
Change 3144417 on 2016/09/28 by Josh.Adams
- Probable fix for FWebBrowserWindow missing virtuals
Change 3144438 on 2016/09/28 by Jeff.Campeau
XDK updated to 160802
Change 3144569 on 2016/09/29 by Dmitry.Rekman
Linux: allow a selectable clock source (UE-36564).
- The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew.
- Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there.
#tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm).
Change 3145108 on 2016/09/29 by Joe.Graf
Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools)
Change 3145245 on 2016/09/29 by Joe.Graf
#wolf
Checking in removal of plugin use on Win64 per Josh's request
Change 3145514 on 2016/09/29 by Will.Fissler
Updated Mac Info.plist files to disable high DPI on macOS 10.12
Change 3145538 on 2016/09/29 by Josh.Adams
- Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots.
Change 3145540 on 2016/09/29 by Josh.Adams
- Fix for checking some Wolf dev tool installation existence
- Fix for various Wolf build issues
- Fix for Wolf devices not showing up in Launch on
Change 3145542 on 2016/09/29 by Josh.Adams
- Pulled over Wolf changes from Wolf branch into Dev-Platform
Change 3145572 on 2016/09/29 by Josh.Adams
- Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people.
#jira UE-36591
Change 3145769 on 2016/09/29 by Chris.Babcock
Remove duplicate platforms from deploy list in UFE
#jira UE-36636
#ue4
Change 3146061 on 2016/09/29 by Chris.Babcock
Linux: be less spammy in log when launching external procs
#jira UE-36638
#ue4
#linux
Change 3146208 on 2016/09/29 by Dmitry.Rekman
Linux: fix PhysX crash (UE-36613).
- PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above.
- This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun.
#jira UE-36613
Change 3146476 on 2016/09/30 by Josh.Adams
- Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose
Change 3146554 on 2016/09/30 by Josh.Adams
- Removed another wolf secret log
Change 3146626 on 2016/09/30 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3146712 on 2016/09/30 by Josh.Adams
- Fixed case for building Android on Linux
#jira #UE-36652
Change 3146844 on 2016/09/30 by Josh.Adams
- Removed ES2 shader compiling from TVOS, and force Metal compiling
#jira UE-36306
Change 3146865 on 2016/09/30 by Daniel.Lamb
Removed temp logging for materials
#test Launch on paragon
Change 3146874 on 2016/09/30 by Dmitry.Rekman
Linux: add rpath for libTextureConverter.so (UE-36620).
Change 3147030 on 2016/09/30 by Josh.Adams
- Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks
#jira UE-36623
Change 3147151 on 2016/09/30 by Josh.Adams
- Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling?
Change 3147621 on 2016/09/30 by Michael.Trepka
Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac
Change 3147712 on 2016/09/30 by Josh.Adams
- Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform.
#jira UE-36225
Change 3147725 on 2016/09/30 by Josh.Adams
- Fixed yet another Wolf log for people with Wolf access but no SDK
[CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
FTabManager : : NewArea ( 400 * DPIScaleFactor , 600 * DPIScaleFactor )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
#lockdown josh.adams
Change 2970373 on 2016/05/09 by Lee.Clark
PS4 - Fix NumInstances not getting reset after DrawIndirect calls
Change 2972873 on 2016/05/10 by Michael.Trepka
Correct initial position for SlateViewer windows on Mac
Change 2974363 on 2016/05/11 by Mark.Satterthwaite
Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect.
Change 2975921 on 2016/05/12 by Michael.Trepka
Removed unused AdjustWindowRegion declaration from LinuxWindow.h
#codereview Dmitry.Rekman
Change 2977002 on 2016/05/13 by Michael.Trepka
Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready
#codereview Ben.Marsh
Change 2977337 on 2016/05/13 by Brent.Pease
UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error
+ Prevent illegal characters from being entered in the packaging UI
+ Report an error from iPhonePackager if a illegal bundle id is specified
+ Convert special characters to XML equivalents
- Correctly check for the presence of iTunes 12 when packaging iOS games on Windows
- Improve ios certificate and provision message in package settings UI
#codereview peter.sauerbrei
Change 2977509 on 2016/05/13 by Brent.Pease
+ Fix mac compile error
Change 2978036 on 2016/05/14 by Mark.Satterthwaite
One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN.
#jira UE-30777
Change 2978037 on 2016/05/14 by Mark.Satterthwaite
Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago.
Change 2978333 on 2016/05/16 by Lee.Clark
Fix packaging of non-code projects when plugins are enabled
#codereview Peter.Sauerbrei
Change 2978780 on 2016/05/16 by Mark.Satterthwaite
Reduce temporary allocations required to set uniform parameters in Metal.
Change 2979680 on 2016/05/16 by Nick.Shin
editor's HTML5 platform settings was missing due to the emscripten SDK move
should have been included with CL: #2946251
Change 2979681 on 2016/05/16 by Nick.Shin
cleaned up websocket processing for HTML5
#jira UE-13657 - HTML5 plugin OnRawRecieve overflow
Change 2979701 on 2016/05/16 by Brent.Pease
UE-28421 - Message box cannot be closed after accessing the home screen on iOS
+ Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution
Change 2980766 on 2016/05/17 by Jeremiah.Waldron
Adding Android build support for HarfBuzz
- using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them
- Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config>
Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly
#jira UE-28586
#codereview chris.babcock
Change 2980953 on 2016/05/17 by Jeremiah.Waldron
Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo
#jira UE-28586
Change 2981039 on 2016/05/17 by Jeff.Campeau
ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support)
Change 2981054 on 2016/05/17 by Jeff.Campeau
Enable Live OSS for Orion on Xbox One
Change 2981553 on 2016/05/18 by Jeff.Campeau
Enable Oodle for Xbox One
Change 2981555 on 2016/05/18 by Jeff.Campeau
Scalability settings for Xbox One
Change 2981774 on 2016/05/18 by Keith.Judge
Xbox One - Duplicating Movie Player fix from 4.12.
Change 2981789 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12.
Change 2981802 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12.
Change 2981875 on 2016/05/18 by Keith.Judge
Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12.
Change 2981900 on 2016/05/18 by Keith.Judge
Xbox One - D3D11Query refactor. Duplicated from 4.12
Change 2981945 on 2016/05/18 by Nick.Shin
filled out response headers for HTML5 platform
#jira UE-26047 - HTML5 HTTP Response Headers not implemented
Change 2981981 on 2016/05/18 by Lee.Clark
PS4 - Fix COTF not updating files
#codereview Daniel.Lamb
Change 2982246 on 2016/05/18 by Michael.Trepka
Fixed Mono compile errors in UT build scripts
Change 2983869 on 2016/05/19 by Mark.Satterthwaite
Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures.
#jira UE-29557
Change 2983871 on 2016/05/19 by Mark.Satterthwaite
Pool Metal texture update buffers to reduce churn.
Change 2983892 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors.
Change 2983898 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists.
Change 2983911 on 2016/05/19 by Mark.Satterthwaite
Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen.
Change 2983916 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected.
Change 2984874 on 2016/05/20 by Keith.Judge
Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps.
#jira UEPLAT-1295
Change 2985446 on 2016/05/20 by Mark.Satterthwaite
Remove the non-functional -metaldebug option from MetalRHI.
Change 2985827 on 2016/05/20 by Nick.Shin
call EndSession() onbeforeunload()
note: API CHANGE
- HTML5JavaScripteFx.{js,h}
- UE_MakeHTTPDataRequest()
#jira UE-22285 - Session End events are not generated for HTML5
Change 2986013 on 2016/05/20 by Jeremiah.Waldron
PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio)
Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo
Pulled from Release-4.12 CL
#jira UE-30782
#codereview chris.babcock, Peter.Sauerbrei
Change 2986057 on 2016/05/20 by Mark.Satterthwaite
Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI.
Change 2986059 on 2016/05/20 by Mark.Satterthwaite
Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes).
Change 2986060 on 2016/05/20 by Mark.Satterthwaite
Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level.
Change 2986063 on 2016/05/20 by Mark.Satterthwaite
Missing change from previous CL.
Change 2986066 on 2016/05/20 by Mark.Satterthwaite
More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame.
Change 2986455 on 2016/05/23 by Keith.Judge
Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler.
Change 2986886 on 2016/05/23 by Mark.Satterthwaite
Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier.
Change 2986955 on 2016/05/23 by Brent.Pease
+ Do not error out if "[PROJECT_NAME]" is in the bundle ID
#codereview peter.sauerbrei
Change 2987304 on 2016/05/23 by Chris.Babcock
Remove old Android platforms
#ue4
#android
#codeview Josh.Adams
Change 2987571 on 2016/05/23 by Mark.Satterthwaite
Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass)
#jira UE-31111
Change 2987591 on 2016/05/23 by Mark.Satterthwaite
Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5.
Change 2987679 on 2016/05/23 by Mark.Satterthwaite
Re-enable tiled reflections on Nvidia by default now that they work.
Change 2987799 on 2016/05/24 by Mark.Satterthwaite
Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac).
Change 2989395 on 2016/05/25 by Lee.Clark
PS4 - Fix shader output / render target format mismatch for sparse MRT.
Change 2990003 on 2016/05/25 by Jeremiah.Waldron
When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function.
Change 2990393 on 2016/05/25 by Mark.Satterthwaite
Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal...
Change 2990516 on 2016/05/25 by Brent.Pease
+ UEPLAT-1294 - Support for local notifications
+ UEPLAT-1254 - Add BP event for device orientation change
+ Added a new class based on UGameInstance for mobile device callbacks
+ Ensured IOSAppDelegate.cpp follows convention for lambda functions
Change 2991361 on 2016/05/26 by Jeremiah.Waldron
Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it
Change 2992450 on 2016/05/27 by Mark.Satterthwaite
Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders.
Change 2993027 on 2016/05/27 by Mark.Satterthwaite
Fix typo for new CFLAG_BoundsChecking enumeration value.
Change 2993594 on 2016/05/27 by Mark.Satterthwaite
Build fix - check not assert...
Change 2993595 on 2016/05/27 by Mark.Satterthwaite
Fix typo from Xcode hang...
Change 2993614 on 2016/05/28 by Mark.Satterthwaite
At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers.
Change 2993747 on 2016/05/28 by Mark.Satterthwaite
Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used.
Change 2994256 on 2016/05/31 by Lee.Clark
PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working.
#codereview Chad.Taylor,Aaron.McLeran
Change 2994281 on 2016/05/31 by Rolando.Caloca
DP - Allow hlslcc to process type casts containing the 'const' keyword
- it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile.
#codereview Mark.Satterthwaite, Dmitry.Rekman
#jira UE-31411
Change 2994467 on 2016/05/31 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 2994493 on 2016/05/31 by Daniel.Lamb
Fixed issue with DDC commandlet not caching things from the startup packages list.
Change 2994644 on 2016/05/31 by Mark.Satterthwaite
Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project.
Change 2996074 on 2016/06/01 by Lee.Clark
PS4 - Fix GS mode not getting disabled when using parallel contexts.
#codereview Marcus.Wassmer
Change 2996129 on 2016/06/01 by Brent.Pease
Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch.
Change 2996130 on 2016/06/01 by Jeremiah.Waldron
PR #2387 part 2 (Contributed by gameDNAstudio)
Adding ability to consume purchases during GooglePlay RestorePurchases
This also touches IOS due to changes to base classes and function signatures
#codereview chris.babcock, Peter.Sauerbrei
Change 2996441 on 2016/06/01 by Jeremiah.Waldron
Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio)
Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function.
#codereview chris.babcock
Change 2996514 on 2016/06/01 by Jeff.Campeau
Fix merge issue from main
#jira UE-31502
Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick
https://jira.ol.epicgames.net/browse/UE-31446
Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed.
Renamed handleReserveFailed to handleReserveFailedLightweight
Change 2997235 on 2016/06/01 by Jeremiah.Waldron
RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node.
The IAP product in Match3 is non-consumable so just passing an empty array where necessary
Change 2997241 on 2016/06/01 by Jeremiah.Waldron
OnlineSubsystemGameCircle Plugin
- Leaderboards
- Achievements
- Friends
- IAP
- External UI Interface
- Runtime Settings in Project Settings Plugin section when plugin is enabled
- Disabled by default
#jira UEPLAT-105
#codereview chris.babcock
Change 2997618 on 2016/06/02 by Lee.Clark
#UE4Docs: Removed PS4MapFileUtil info
Change 2997840 on 2016/06/02 by Jeremiah.Waldron
Removing trace logging from OnlineSubsystemGameCircle_APL
Change 2998754 on 2016/06/02 by Brent.Pease
Change BlueprintMobileLibrary to BlueprintPlatformLibrary
Change 3000762 on 2016/06/03 by Jeff.Campeau
Add example rating info to ShooterGame
Change 3001037 on 2016/06/04 by Brent.Pease
+ Add ui screens for delegate test, local notification test, and iap test
+ Implement delegate test
Change 3001250 on 2016/06/05 by Brent.Pease
+ Initial pass at IAP test screen
Change 3001639 on 2016/06/06 by Jeff.Campeau
Fix Xbox One build issue with DX12
#codereview Zabir.Hoque
Change 3002574 on 2016/06/06 by Jeremiah.Waldron
Adding Android Install Location to Android platform runtime settings and manifest generation
Change 3002780 on 2016/06/06 by Brent.Pease
+ Initial implementation of local notification test
Change 3003005 on 2016/06/06 by Jeremiah.Waldron
OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute
Change 3004392 on 2016/06/07 by Jeremiah.Waldron
Fixing typo in APL comment :)
Change 3005768 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3005929 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3006151 on 2016/06/08 by Peter.Sauerbrei
fix for LocalNotifications not available on TVOS
#lockdown josh.adams
Change 3006183 on 2016/06/08 by Brent.Pease
Manual merge CL#3000242 from Release-4.12 into Dev-Platform
#lockdown josh.adams
Change 3006296 on 2016/06/08 by Peter.Sauerbrei
submit an updated iPhonePackager and support DLLs
#lockdown josh.adams
Change 3006378 on 2016/06/08 by Peter.Sauerbrei
fix for API update to RestorePurchases
#codereview brent.pease
#lockdown josh.adams
#lockdown nick.penwarden
[CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
# if PLATFORM_MAC
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948319 on 2016/04/19 by Nick.Shin
update zlib to v1.2.8
part 1 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2948661 on 2016/04/19 by Nick.Shin
keep using old zlibs until they are recompiled with the newer version
Change 2948737 on 2016/04/19 by Nick.Shin
build warning fix
Change 2949334 on 2016/04/20 by Nick.Shin
fix library path
for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set...
Change 2951556 on 2016/04/21 by Nick.Shin
static libs double checked
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2951559 on 2016/04/21 by Nick.Shin
static libs double checked
forgot these files - they were in another changelist
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2952411 on 2016/04/22 by Nick.Shin
add win32 build targets for zlib openssl libcurl libwebsockets
part 1 of 2: these are the C# build scripts
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
Change 3118163 on 2016/09/08 by Josh.Adams
perm test 2, not a useful file at all
Change 3121142 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3121150 on 2016/09/12 by Daniel.Lamb
Added warning logs to help track down issue UE-33453.
Change 3121201 on 2016/09/12 by Keith.Judge
Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix.
Change 3121302 on 2016/09/12 by Joe.Graf
Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors
Change 3121379 on 2016/09/12 by Dmitry.Rekman
Linux: only link libraries that export needed symbols (UE-35720).
- Fixes very long startup times of modular builds.
- Includes PR #2778 by slonopotamus.
#jira UE-35720
Change 3121383 on 2016/09/12 by Dmitry.Rekman
Linux: added some missing _API declarations on symbols used externally.
- Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't).
Change 3121456 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3122939 on 2016/09/13 by Luke.Thatcher
[PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service.
- Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone.
Change 3123040 on 2016/09/13 by Brent.Pease
+ Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now.
Change 3123664 on 2016/09/13 by Nick.Shin
this was originally checked into: release 4.13.1
bringing here to dev-platform
-- original submit comments --
first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing"
next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop
jira UE-35363 - Huge game window when launching onto Safari 9.1.2
Change 3125282 on 2016/09/14 by Michael.Trepka
Fixed iOS and tvOS code indexing in Xcode project
Change 3126812 on 2016/09/15 by Josh.Adams
Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes:
- Added Parse function to JsonObject.cs to be able to parse a string
- Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU()
- Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
- Converted the PS4MallocCrash class into a generic one (that Wolf is now also using)
- Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread
- Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere
- Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects
- Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever)
- Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool.
- Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini)
- Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain.
- Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening
- Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct.
- Renamed a UT copy of a global function to not linker-conflict
- Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4.
- Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists)
- Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority()
- Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads?
- Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move.
Change 3126842 on 2016/09/15 by Michael.Trepka
Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation.
Change 3126956 on 2016/09/15 by Michael.Trepka
Added support for compiling Vulkan shaders for Android on Mac
Change 3127206 on 2016/09/15 by Michael.Trepka
PR #2604: Remove some warnings. (Contributed by reapazor)
Change 3127324 on 2016/09/15 by Michael.Trepka
Allow third party dylibs on Mac to be loaded from plugin subfolders
Change 3127924 on 2016/09/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3128369 on 2016/09/16 by Nick.Shin
zlib 1.2.8
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128377 on 2016/09/16 by Nick.Shin
openssl 1_0_2h
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128383 on 2016/09/16 by Nick.Shin
libcurl 7_48_0
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128384 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128464 on 2016/09/16 by Nick.Shin
webRTC rev.12643
NOTE: VS2015
- only Win64 is available
- Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment
NOTE: VS2013
- not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist
- also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways
FUTURE NOTE:
- will continue to try to get VS2015 Win32 functional
- and am working on trying to get VS2013 tested
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128500 on 2016/09/16 by Nick.Shin
zlib 1.2.8 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128504 on 2016/09/16 by Nick.Shin
openssl 1_0_2h - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128506 on 2016/09/16 by Nick.Shin
libcurl 7_48_0 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128508 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128513 on 2016/09/16 by Nick.Shin
webRTC rev.12643 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128602 on 2016/09/16 by Nick.Shin
webRTC rev.9862 - Win64 VS2013
NOTE:
- not tested (i'm working on getting a VS2013 pro license)
- checking in for testing purposes
WARNING:
- VS2013 is no longer supported by webRTC latest
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128605 on 2016/09/16 by Nick.Shin
re-enabling updated ThirdParySoftware libs:
- zlib (v.1.2.8)
- openssl (1.0.2h)
- libcurl (7_48_0)
- libwebsocket (v.1.7.4)
- webRTC (rev.12643)
to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build...
Change 3128651 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605
Change 3128704 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605 - this time actually compiling it...
Change 3128825 on 2016/09/16 by Dmitry.Rekman
Linux: proper fix for too slow startup times (UE-35967).
- Pull request #2793 by slonopotamus.
- Now without stripping dependencies on libraries specified before.
- Contains a work around for ld bug <2.25.
Change 3128972 on 2016/09/16 by Nick.Shin
fix to local build error.
Change 3129283 on 2016/09/16 by Brent.Pease
+ Add Android local notification support based on existing system used for iOS
+ Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release
Change 3129494 on 2016/09/17 by Nick.Shin
fix CIS build errors
Change 3129503 on 2016/09/17 by Dmitry.Rekman
Fix Linux build (case sensitivity issue).
Change 3129514 on 2016/09/17 by Nick.Shin
fix CIS build errors for consoles - missing zlib include path
special thanks to Dmitry.Rekman for pointing me in the right direction
Change 3129647 on 2016/09/17 by Dmitry.Rekman
Linux: fix non-unity build.
Change 3131043 on 2016/09/19 by Nick.Shin
archiving build instructions/steps when building:
- zlib (v.1.2.8)
win: #3128369
osx: #3128500
- openssl (1.0.2h)
win: #3128377
osx: #3128504
- libcurl (7_48_0)
win: #3128383
osx: #3128506
- libwebsocket (v.1.7.4)
win: #3128384
osx: #3128508
- webRTC
win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP
osx: #3128513
Change 3132801 on 2016/09/20 by Dmitry.Rekman
Linux: support specifying default OpenGL version via configs (UE-34777).
- The first targeted RHI is going to be used.
Change 3132905 on 2016/09/20 by Josh.Adams
- Fixed up some paths with the WolfPlat rename
Change 3133148 on 2016/09/20 by Josh.Adams
- Only show UT EULA if PLATFORM_DESKTOP
Change 3133152 on 2016/09/20 by Josh.Adams
- Beginning support for applets. Disabled unless you have a special SDK with applet support.
Change 3133169 on 2016/09/20 by Josh.Adams
- Fixed issue with Wolf access but no SDK installed
Change 3133344 on 2016/09/20 by Daniel.Lamb
Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile.
Added new flag to limit number of concurrent shader compiles.
#test Cook QAGame, Cook Paragon
Change 3133345 on 2016/09/20 by Daniel.Lamb
FRedirectCollector collects string asset references all the time when running the editor.
#test Cook paragon cook QAGame.
Change 3133852 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated.
Change 3133875 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2)
Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick
Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'.
Change 3134544 on 2016/09/21 by Josh.Adams
- Reduced UT textures for Wolf
Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick
FPS4Time::SystemTime now calculates the local machine time, instead of UTC.
#jira UE-35170
Change 3135036 on 2016/09/21 by Michael.Trepka
Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process
Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick
GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32
Change 3135292 on 2016/09/21 by Jeff.Campeau
Change include order to favor the XDK edition specific headers where available.
Change 3136414 on 2016/09/22 by Josh.Adams
- Fixed a checkf() that had the case reversed
#jira ue-36311
Change 3137082 on 2016/09/22 by Dmitry.Rekman
Added support for Linux installed builds to 4.14
Change 3137220 on 2016/09/22 by Dmitry.Rekman
Linux: do not rebuild hlslcc on each setup.
- Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary.
Change 3137227 on 2016/09/22 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3137259 on 2016/09/22 by Dmitry.Rekman
Linux installed build: fix CIS (missed one .csproj)
Change 3137290 on 2016/09/22 by Dmitry.Rekman
Linux installed builds: fix for the resulting directory.
Change 3137291 on 2016/09/22 by Chris.Babcock
Restore texture filtering mode properly when movie played on Android
#jira UE-36342
#ue4
#android
Change 3137376 on 2016/09/22 by Dmitry.Rekman
Linux: re-enabled crash handler stack smash protection.
- Race condition in FRunnableThreadPThread has been previously fixed.
Change 3138498 on 2016/09/23 by Dmitry.Rekman
Linux: add missed package for installed builds.
- mono-devel package for resgen2.
Change 3138523 on 2016/09/23 by Dmitry.Rekman
Linux: Update hlslcc now that we're not rebuilding it each time.
Change 3138658 on 2016/09/23 by Josh.Adams
- Moved UT's Social Plugin into NotForLicensees
Change 3139042 on 2016/09/23 by Dmitry.Rekman
Linux: more robust check of installed packages.
- Also added mono-devel to the list of packages installed on 14.04.
Change 3139674 on 2016/09/26 by Dmitry.Rekman
Fix crash when editing widget blueprints (UE-35185).
- Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping.
- Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795).
Change 3140203 on 2016/09/26 by Josh.Adams
- Wolf Fix for SHIPPING
Change 3140206 on 2016/09/26 by Josh.Adams
- NEX work, still in progress
Change 3140276 on 2016/09/26 by Josh.Adams
- Fixed Wolf compile error
Change 3140485 on 2016/09/26 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3140570 on 2016/09/26 by Dmitry.Rekman
SDL2: Delete obsolete files.
- We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space.
Change 3140577 on 2016/09/26 by Dmitry.Rekman
Fix CudaTest monolithic build.
- Not the best fix, the better fix is to build against bundled libc++.
Change 3141184 on 2016/09/27 by Keith.Judge
Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert.
#jira UE-35973
Change 3141623 on 2016/09/27 by Chris.Babcock
Support hiding virtual keyboard on Android
#jira UE-34201
#ue4
#android
Change 3141887 on 2016/09/27 by Joe.Graf
Added support for additional plugin directories that are specified by the .uproject file
New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins
Change 3141916 on 2016/09/27 by Josh.Adams
- Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925)
Change 3141926 on 2016/09/27 by Josh.Adams
- Support for skipping Wolf user selector (-nologinui)
Change 3141938 on 2016/09/27 by Chris.Babcock
Allow Android media player to seek past 999ms (contributed by rcywongaa)
#jira UE-36453
#PR #2797
#ue4
#android
Change 3142207 on 2016/09/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3142219 on 2016/09/27 by Josh.Adams
- Wolf PhysX 3.4 libs and includes
Change 3142220 on 2016/09/27 by Josh.Adams
- File that had to be fixed up after main merge (missed adding it to the huge integrate CL)
Change 3142314 on 2016/09/27 by Chase.McAllister
#jira UE-35011 fixes to some assets to remove redundancies/output log spam
Change 3142510 on 2016/09/27 by Daniel.Lamb
Fixed up resave lightmaps commandlet so that world transforms don't get applied twice.
#jira UE-35942
Change 3142650 on 2016/09/27 by Chris.Babcock
Android support for Linux by yaakuro
- requires CodeWorks for Android Linux installed and OpenJDK 1.8
- need to set Android SDK paths manually in Project Settings
#jira UE-32752
#jira UE-32753
#PR #2564
#PR #2565
#ue4
#android
#linux
Change 3142802 on 2016/09/27 by Dmitry.Rekman
Upgrade to SDL 2.0.5-ish (still technically 2.0.4).
- Upstream revision 10374:dccf51aee79b.
- Merged all our changes hopefully.
Change 3143075 on 2016/09/28 by Luke.Thatcher
[RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro.
#jira UE-33077
Change 3143219 on 2016/09/28 by Daniel.Lamb
Added new is compiling function which tells you if it's really compiling instead of lying.
If def out additional logging for debugging shader compilation issue for 4.14 release.
Change 3143428 on 2016/09/28 by Luke.Thatcher
[PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061
Change 3143488 on 2016/09/28 by Daniel.Lamb
Changed defaults for skip cooking editor content to true.
Change 3143526 on 2016/09/28 by Daniel.Lamb
Increased the concurrent shader compile limit while in the cooker.
#test Cook paragon
Change 3143874 on 2016/09/28 by Chris.Babcock
Read Android environment variables from .bashrc on Linux
#jira UE-36565
#ue4
#android
#linux
Change 3143911 on 2016/09/28 by Dmitry.Rekman
Fix SDL EGL API binding (UE-18979).
- Contains PR #1398 by x414e54.
- Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade.
Change 3143929 on 2016/09/28 by Daniel.Lamb
Removed some more temporary logging.
#test Cook paragon
Change 3143959 on 2016/09/28 by Jeff.Campeau
Media Player for Xbox One
Change 3143997 on 2016/09/28 by Dmitry.Rekman
Linux: faster linking in Debug.
- Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating.
Change 3144004 on 2016/09/28 by Dmitry.Rekman
Linux: make SCW dump core on crash in debug builds.
- If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space).
Change 3144007 on 2016/09/28 by Dmitry.Rekman
Linux: Allow equals character in command line parameter value (UE-26406).
- PR #2019 by bozzaro.
- Allows passing parameters like -Switch=Key=Value.
Change 3144042 on 2016/09/28 by Jeff.Campeau
Add tag for DX12 support being experimental in target settings.
#jira UE-36150
Change 3144068 on 2016/09/28 by Dmitry.Rekman
Linux: enable using xgConsole in UAT (UE-28096).
- PR #2144 by bozzaro.
- Picks correct xgConsole binary.
- Allegedly fixes crash in CombineXGEItemFile on mono.
Change 3144120 on 2016/09/28 by Michael.Trepka
Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/...
Change 3144172 on 2016/09/28 by Chris.Babcock
Add libpng 1.5.27 for Android
#jira UE-36573
#ue4
#android
Change 3144318 on 2016/09/28 by Chris.Babcock
Correct logic for checking .bashrc on Linux
#ue4
#android
Change 3144331 on 2016/09/28 by Dmitry.Rekman
Linux: repair ARM server builds.
- Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1).
Change 3144354 on 2016/09/28 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
this is intermediate, not fully working
Change 3144368 on 2016/09/28 by Josh.Adams
- Moved the new Social files into NFL
Change 3144395 on 2016/09/28 by Chris.Babcock
Add missing functions for AndroidWebBrowserWindow
#ue4
#android
Change 3144417 on 2016/09/28 by Josh.Adams
- Probable fix for FWebBrowserWindow missing virtuals
Change 3144438 on 2016/09/28 by Jeff.Campeau
XDK updated to 160802
Change 3144569 on 2016/09/29 by Dmitry.Rekman
Linux: allow a selectable clock source (UE-36564).
- The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew.
- Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there.
#tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm).
Change 3145108 on 2016/09/29 by Joe.Graf
Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools)
Change 3145245 on 2016/09/29 by Joe.Graf
#wolf
Checking in removal of plugin use on Win64 per Josh's request
Change 3145514 on 2016/09/29 by Will.Fissler
Updated Mac Info.plist files to disable high DPI on macOS 10.12
Change 3145538 on 2016/09/29 by Josh.Adams
- Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots.
Change 3145540 on 2016/09/29 by Josh.Adams
- Fix for checking some Wolf dev tool installation existence
- Fix for various Wolf build issues
- Fix for Wolf devices not showing up in Launch on
Change 3145542 on 2016/09/29 by Josh.Adams
- Pulled over Wolf changes from Wolf branch into Dev-Platform
Change 3145572 on 2016/09/29 by Josh.Adams
- Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people.
#jira UE-36591
Change 3145769 on 2016/09/29 by Chris.Babcock
Remove duplicate platforms from deploy list in UFE
#jira UE-36636
#ue4
Change 3146061 on 2016/09/29 by Chris.Babcock
Linux: be less spammy in log when launching external procs
#jira UE-36638
#ue4
#linux
Change 3146208 on 2016/09/29 by Dmitry.Rekman
Linux: fix PhysX crash (UE-36613).
- PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above.
- This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun.
#jira UE-36613
Change 3146476 on 2016/09/30 by Josh.Adams
- Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose
Change 3146554 on 2016/09/30 by Josh.Adams
- Removed another wolf secret log
Change 3146626 on 2016/09/30 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3146712 on 2016/09/30 by Josh.Adams
- Fixed case for building Android on Linux
#jira #UE-36652
Change 3146844 on 2016/09/30 by Josh.Adams
- Removed ES2 shader compiling from TVOS, and force Metal compiling
#jira UE-36306
Change 3146865 on 2016/09/30 by Daniel.Lamb
Removed temp logging for materials
#test Launch on paragon
Change 3146874 on 2016/09/30 by Dmitry.Rekman
Linux: add rpath for libTextureConverter.so (UE-36620).
Change 3147030 on 2016/09/30 by Josh.Adams
- Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks
#jira UE-36623
Change 3147151 on 2016/09/30 by Josh.Adams
- Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling?
Change 3147621 on 2016/09/30 by Michael.Trepka
Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac
Change 3147712 on 2016/09/30 by Josh.Adams
- Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform.
#jira UE-36225
Change 3147725 on 2016/09/30 by Josh.Adams
- Fixed yet another Wolf log for people with Wolf access but no SDK
[CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
- > SetWindow ( FVector2D ( 10 * DPIScaleFactor , 32 * DPIScaleFactor ) , false )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
#lockdown josh.adams
Change 2970373 on 2016/05/09 by Lee.Clark
PS4 - Fix NumInstances not getting reset after DrawIndirect calls
Change 2972873 on 2016/05/10 by Michael.Trepka
Correct initial position for SlateViewer windows on Mac
Change 2974363 on 2016/05/11 by Mark.Satterthwaite
Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect.
Change 2975921 on 2016/05/12 by Michael.Trepka
Removed unused AdjustWindowRegion declaration from LinuxWindow.h
#codereview Dmitry.Rekman
Change 2977002 on 2016/05/13 by Michael.Trepka
Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready
#codereview Ben.Marsh
Change 2977337 on 2016/05/13 by Brent.Pease
UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error
+ Prevent illegal characters from being entered in the packaging UI
+ Report an error from iPhonePackager if a illegal bundle id is specified
+ Convert special characters to XML equivalents
- Correctly check for the presence of iTunes 12 when packaging iOS games on Windows
- Improve ios certificate and provision message in package settings UI
#codereview peter.sauerbrei
Change 2977509 on 2016/05/13 by Brent.Pease
+ Fix mac compile error
Change 2978036 on 2016/05/14 by Mark.Satterthwaite
One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN.
#jira UE-30777
Change 2978037 on 2016/05/14 by Mark.Satterthwaite
Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago.
Change 2978333 on 2016/05/16 by Lee.Clark
Fix packaging of non-code projects when plugins are enabled
#codereview Peter.Sauerbrei
Change 2978780 on 2016/05/16 by Mark.Satterthwaite
Reduce temporary allocations required to set uniform parameters in Metal.
Change 2979680 on 2016/05/16 by Nick.Shin
editor's HTML5 platform settings was missing due to the emscripten SDK move
should have been included with CL: #2946251
Change 2979681 on 2016/05/16 by Nick.Shin
cleaned up websocket processing for HTML5
#jira UE-13657 - HTML5 plugin OnRawRecieve overflow
Change 2979701 on 2016/05/16 by Brent.Pease
UE-28421 - Message box cannot be closed after accessing the home screen on iOS
+ Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution
Change 2980766 on 2016/05/17 by Jeremiah.Waldron
Adding Android build support for HarfBuzz
- using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them
- Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config>
Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly
#jira UE-28586
#codereview chris.babcock
Change 2980953 on 2016/05/17 by Jeremiah.Waldron
Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo
#jira UE-28586
Change 2981039 on 2016/05/17 by Jeff.Campeau
ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support)
Change 2981054 on 2016/05/17 by Jeff.Campeau
Enable Live OSS for Orion on Xbox One
Change 2981553 on 2016/05/18 by Jeff.Campeau
Enable Oodle for Xbox One
Change 2981555 on 2016/05/18 by Jeff.Campeau
Scalability settings for Xbox One
Change 2981774 on 2016/05/18 by Keith.Judge
Xbox One - Duplicating Movie Player fix from 4.12.
Change 2981789 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12.
Change 2981802 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12.
Change 2981875 on 2016/05/18 by Keith.Judge
Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12.
Change 2981900 on 2016/05/18 by Keith.Judge
Xbox One - D3D11Query refactor. Duplicated from 4.12
Change 2981945 on 2016/05/18 by Nick.Shin
filled out response headers for HTML5 platform
#jira UE-26047 - HTML5 HTTP Response Headers not implemented
Change 2981981 on 2016/05/18 by Lee.Clark
PS4 - Fix COTF not updating files
#codereview Daniel.Lamb
Change 2982246 on 2016/05/18 by Michael.Trepka
Fixed Mono compile errors in UT build scripts
Change 2983869 on 2016/05/19 by Mark.Satterthwaite
Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures.
#jira UE-29557
Change 2983871 on 2016/05/19 by Mark.Satterthwaite
Pool Metal texture update buffers to reduce churn.
Change 2983892 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors.
Change 2983898 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists.
Change 2983911 on 2016/05/19 by Mark.Satterthwaite
Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen.
Change 2983916 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected.
Change 2984874 on 2016/05/20 by Keith.Judge
Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps.
#jira UEPLAT-1295
Change 2985446 on 2016/05/20 by Mark.Satterthwaite
Remove the non-functional -metaldebug option from MetalRHI.
Change 2985827 on 2016/05/20 by Nick.Shin
call EndSession() onbeforeunload()
note: API CHANGE
- HTML5JavaScripteFx.{js,h}
- UE_MakeHTTPDataRequest()
#jira UE-22285 - Session End events are not generated for HTML5
Change 2986013 on 2016/05/20 by Jeremiah.Waldron
PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio)
Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo
Pulled from Release-4.12 CL
#jira UE-30782
#codereview chris.babcock, Peter.Sauerbrei
Change 2986057 on 2016/05/20 by Mark.Satterthwaite
Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI.
Change 2986059 on 2016/05/20 by Mark.Satterthwaite
Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes).
Change 2986060 on 2016/05/20 by Mark.Satterthwaite
Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level.
Change 2986063 on 2016/05/20 by Mark.Satterthwaite
Missing change from previous CL.
Change 2986066 on 2016/05/20 by Mark.Satterthwaite
More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame.
Change 2986455 on 2016/05/23 by Keith.Judge
Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler.
Change 2986886 on 2016/05/23 by Mark.Satterthwaite
Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier.
Change 2986955 on 2016/05/23 by Brent.Pease
+ Do not error out if "[PROJECT_NAME]" is in the bundle ID
#codereview peter.sauerbrei
Change 2987304 on 2016/05/23 by Chris.Babcock
Remove old Android platforms
#ue4
#android
#codeview Josh.Adams
Change 2987571 on 2016/05/23 by Mark.Satterthwaite
Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass)
#jira UE-31111
Change 2987591 on 2016/05/23 by Mark.Satterthwaite
Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5.
Change 2987679 on 2016/05/23 by Mark.Satterthwaite
Re-enable tiled reflections on Nvidia by default now that they work.
Change 2987799 on 2016/05/24 by Mark.Satterthwaite
Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac).
Change 2989395 on 2016/05/25 by Lee.Clark
PS4 - Fix shader output / render target format mismatch for sparse MRT.
Change 2990003 on 2016/05/25 by Jeremiah.Waldron
When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function.
Change 2990393 on 2016/05/25 by Mark.Satterthwaite
Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal...
Change 2990516 on 2016/05/25 by Brent.Pease
+ UEPLAT-1294 - Support for local notifications
+ UEPLAT-1254 - Add BP event for device orientation change
+ Added a new class based on UGameInstance for mobile device callbacks
+ Ensured IOSAppDelegate.cpp follows convention for lambda functions
Change 2991361 on 2016/05/26 by Jeremiah.Waldron
Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it
Change 2992450 on 2016/05/27 by Mark.Satterthwaite
Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders.
Change 2993027 on 2016/05/27 by Mark.Satterthwaite
Fix typo for new CFLAG_BoundsChecking enumeration value.
Change 2993594 on 2016/05/27 by Mark.Satterthwaite
Build fix - check not assert...
Change 2993595 on 2016/05/27 by Mark.Satterthwaite
Fix typo from Xcode hang...
Change 2993614 on 2016/05/28 by Mark.Satterthwaite
At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers.
Change 2993747 on 2016/05/28 by Mark.Satterthwaite
Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used.
Change 2994256 on 2016/05/31 by Lee.Clark
PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working.
#codereview Chad.Taylor,Aaron.McLeran
Change 2994281 on 2016/05/31 by Rolando.Caloca
DP - Allow hlslcc to process type casts containing the 'const' keyword
- it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile.
#codereview Mark.Satterthwaite, Dmitry.Rekman
#jira UE-31411
Change 2994467 on 2016/05/31 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 2994493 on 2016/05/31 by Daniel.Lamb
Fixed issue with DDC commandlet not caching things from the startup packages list.
Change 2994644 on 2016/05/31 by Mark.Satterthwaite
Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project.
Change 2996074 on 2016/06/01 by Lee.Clark
PS4 - Fix GS mode not getting disabled when using parallel contexts.
#codereview Marcus.Wassmer
Change 2996129 on 2016/06/01 by Brent.Pease
Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch.
Change 2996130 on 2016/06/01 by Jeremiah.Waldron
PR #2387 part 2 (Contributed by gameDNAstudio)
Adding ability to consume purchases during GooglePlay RestorePurchases
This also touches IOS due to changes to base classes and function signatures
#codereview chris.babcock, Peter.Sauerbrei
Change 2996441 on 2016/06/01 by Jeremiah.Waldron
Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio)
Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function.
#codereview chris.babcock
Change 2996514 on 2016/06/01 by Jeff.Campeau
Fix merge issue from main
#jira UE-31502
Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick
https://jira.ol.epicgames.net/browse/UE-31446
Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed.
Renamed handleReserveFailed to handleReserveFailedLightweight
Change 2997235 on 2016/06/01 by Jeremiah.Waldron
RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node.
The IAP product in Match3 is non-consumable so just passing an empty array where necessary
Change 2997241 on 2016/06/01 by Jeremiah.Waldron
OnlineSubsystemGameCircle Plugin
- Leaderboards
- Achievements
- Friends
- IAP
- External UI Interface
- Runtime Settings in Project Settings Plugin section when plugin is enabled
- Disabled by default
#jira UEPLAT-105
#codereview chris.babcock
Change 2997618 on 2016/06/02 by Lee.Clark
#UE4Docs: Removed PS4MapFileUtil info
Change 2997840 on 2016/06/02 by Jeremiah.Waldron
Removing trace logging from OnlineSubsystemGameCircle_APL
Change 2998754 on 2016/06/02 by Brent.Pease
Change BlueprintMobileLibrary to BlueprintPlatformLibrary
Change 3000762 on 2016/06/03 by Jeff.Campeau
Add example rating info to ShooterGame
Change 3001037 on 2016/06/04 by Brent.Pease
+ Add ui screens for delegate test, local notification test, and iap test
+ Implement delegate test
Change 3001250 on 2016/06/05 by Brent.Pease
+ Initial pass at IAP test screen
Change 3001639 on 2016/06/06 by Jeff.Campeau
Fix Xbox One build issue with DX12
#codereview Zabir.Hoque
Change 3002574 on 2016/06/06 by Jeremiah.Waldron
Adding Android Install Location to Android platform runtime settings and manifest generation
Change 3002780 on 2016/06/06 by Brent.Pease
+ Initial implementation of local notification test
Change 3003005 on 2016/06/06 by Jeremiah.Waldron
OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute
Change 3004392 on 2016/06/07 by Jeremiah.Waldron
Fixing typo in APL comment :)
Change 3005768 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3005929 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3006151 on 2016/06/08 by Peter.Sauerbrei
fix for LocalNotifications not available on TVOS
#lockdown josh.adams
Change 3006183 on 2016/06/08 by Brent.Pease
Manual merge CL#3000242 from Release-4.12 into Dev-Platform
#lockdown josh.adams
Change 3006296 on 2016/06/08 by Peter.Sauerbrei
submit an updated iPhonePackager and support DLLs
#lockdown josh.adams
Change 3006378 on 2016/06/08 by Peter.Sauerbrei
fix for API update to RestorePurchases
#codereview brent.pease
#lockdown josh.adams
#lockdown nick.penwarden
[CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
# else
Copying //UE4/Dev-Platform to //UE4/Dev-Main (Source: //UE4/Dev-Platform @ 3147796)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948319 on 2016/04/19 by Nick.Shin
update zlib to v1.2.8
part 1 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2948661 on 2016/04/19 by Nick.Shin
keep using old zlibs until they are recompiled with the newer version
Change 2948737 on 2016/04/19 by Nick.Shin
build warning fix
Change 2949334 on 2016/04/20 by Nick.Shin
fix library path
for some reason, NetworkFileSystem and HttpNetworkReplayStreaming on Mac platform needs full path - even though lib path was set...
Change 2951556 on 2016/04/21 by Nick.Shin
static libs double checked
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2951559 on 2016/04/21 by Nick.Shin
static libs double checked
forgot these files - they were in another changelist
#jira UE-29674 - Editor fails to open in Dev-Platform
Change 2952411 on 2016/04/22 by Nick.Shin
add win32 build targets for zlib openssl libcurl libwebsockets
part 1 of 2: these are the C# build scripts
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
Change 3118163 on 2016/09/08 by Josh.Adams
perm test 2, not a useful file at all
Change 3121142 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3121150 on 2016/09/12 by Daniel.Lamb
Added warning logs to help track down issue UE-33453.
Change 3121201 on 2016/09/12 by Keith.Judge
Xbox One - Replicate CL 3114357 from 4.13 branch. ESRAM clear on create fix.
Change 3121302 on 2016/09/12 by Joe.Graf
Fixed up the IMPLEMENT_MODULE macro usage to avoid the link errors
Change 3121379 on 2016/09/12 by Dmitry.Rekman
Linux: only link libraries that export needed symbols (UE-35720).
- Fixes very long startup times of modular builds.
- Includes PR #2778 by slonopotamus.
#jira UE-35720
Change 3121383 on 2016/09/12 by Dmitry.Rekman
Linux: added some missing _API declarations on symbols used externally.
- Compiling editor with -fvisibility=hidden works after this fix (although running still doesn't).
Change 3121456 on 2016/09/12 by Daniel.Lamb
Attempt to fix deterministic cooking issue for particlelodlevel.
Ensure the spawn module has had postload called on it before using.
#test Paragon cook
Change 3122939 on 2016/09/13 by Luke.Thatcher
[PLATFORM] [PS4] [!] Skip orbismemdmp files in the PS4 crash handler web service.
- Writing these files to disk causes orbis-tm.exe to take a file lock on them, which means we can't move the crash directory to the landing zone.
Change 3123040 on 2016/09/13 by Brent.Pease
+ Fix VS compile error by removing ENGINE_API from virtual method decls since ENGINE_API is defined for the entire class now.
Change 3123664 on 2016/09/13 by Nick.Shin
this was originally checked into: release 4.13.1
bringing here to dev-platform
-- original submit comments --
first, safari has a problem with firing off "window resized" events - causing an infinite loop of the window "resizing"
next, retina has "bigger" size calculations going off -- so y-delta checks greater than 2 are done to prevent resize event firing off in an infinite loop
jira UE-35363 - Huge game window when launching onto Safari 9.1.2
Change 3125282 on 2016/09/14 by Michael.Trepka
Fixed iOS and tvOS code indexing in Xcode project
Change 3126812 on 2016/09/15 by Josh.Adams
Merged Wolf support into Dev-Platform (hidden from almost all people still). Non-Wolf-specific changes:
- Added Parse function to JsonObject.cs to be able to parse a string
- Replaced some hacky post-reflection-capture functions with RHISubmitCommandsAndFlushGPU()
- Split PLATFORM_HAS_BSD_SOCKET_FEATURE_GETADDRINFO off from PLATFORM_HAS_BSD_SOCKET_FEATURE_GETHOSTNAME
- Converted the PS4MallocCrash class into a generic one (that Wolf is now also using)
- Added AddGenericToInQueueOnlineThread(), useful running a delegate on Online thread instead of game thread
- Refactored the GL shader compiler to allow Wolf to modify behavior without a lot of if WOLF checks everywhere
- Added ability in the cross compiler to convert the global uniform arrays into named uniform buffer objects
- Added ability for GL shader compiler to output original resources names ("VertColor" instead of "u_v[3]" or whatever)
- Added "FORCELODGROUP" console command that will apply a StaticMesh LODGroup to selected meshes in the editor. This can batch-Simplygonify all meshes in a level. Should maybe become an editor tool.
- Added ability for arrays of structs to specify a property to be the key. So, with LODGroups, the Name key inside the struct can be the unique key, so when you have multiple .ini files in the hierarchy overriding the same LODGroup by name, it will repalce the first with the second, instead of adding two entries with the same name. Set by @ArrayName=KeyPropertyName. Per Object Config sections need a little different handling, which uses * (see BaseDeviceProfiles.ini)
- Added ability to change DeviceProfiles at runtime. Use "dp.override <name>". If you do it again to another one, it will reset the settings to what they were originally, before applying the second new DP. This is because the second DP may not set all settings the first one did, but we want to undo the first settings that the second doesn't contain.
- Added FRHICommandListImmediate::IsStalled() - returns true while FRHICommandListImmediate::StallRHIThread is happening
- Changed runtime GetFeatureLevelMaxTextureSamplers() calls to the new GetMaxTextureSamplers() which can now be handled by the platform. Renamed GetFeatureLevelMaxTextureSamplers to GetExpectedFeatureLevelMaxTextureSamplers() (only used by the shader editor) to guess at what maybe the samplers count will be - but it's not guaranteed correct.
- Renamed a UT copy of a global function to not linker-conflict
- Changed the OOMBackupMemoryPool to allow each platform to set how much memory to allocate. See FPlatformMemory::GetBackMemoryPoolSize(). Defaults to 0, which was the previous behavior with the now removed FPlatformMemory::SupportBackupMemoryPool(), which was only true in Windows and PS4.
- Added an OOM delegate so other systems can get a callback after OOM occurs (after deleting the backup memory pool if it exists)
- Changed SetQualityLevels() (in Scalability.cpp) to no longer change the SetBy priority when setting CVars, and now keeps the SetBy the same as it was. Helps with conflicts between game settings and device profiles. See SetWithCurrentPriority()
- Added GetRenderingThreadPriority to FPlatformAffinity to allow a platform override priority. Not sure about this one, so may remove it, or maybe add more priorities for all the threads?
- Added a new file into the ini hierarchy to begin fixing the Engine/Base -> Project/Default -> Engine/Platform -> Project/Platform mess. We now have Engine/Base -> Engine/BasePlatform -> Project/Default -> Engine/Platform -> Project/Platform. However, Engine/Platform will soonm be deprecated as we move things over to Engine/BasePlatform, that are safe to move.
Change 3126842 on 2016/09/15 by Michael.Trepka
Make SAssertPicker's search box the default widget to focus on activate so that it doesn't get deactivated on Mac, where we get the window activation event in a tick after SAssertPicker creation.
Change 3126956 on 2016/09/15 by Michael.Trepka
Added support for compiling Vulkan shaders for Android on Mac
Change 3127206 on 2016/09/15 by Michael.Trepka
PR #2604: Remove some warnings. (Contributed by reapazor)
Change 3127324 on 2016/09/15 by Michael.Trepka
Allow third party dylibs on Mac to be loaded from plugin subfolders
Change 3127924 on 2016/09/16 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3128369 on 2016/09/16 by Nick.Shin
zlib 1.2.8
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128377 on 2016/09/16 by Nick.Shin
openssl 1_0_2h
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128383 on 2016/09/16 by Nick.Shin
libcurl 7_48_0
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128384 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128464 on 2016/09/16 by Nick.Shin
webRTC rev.12643
NOTE: VS2015
- only Win64 is available
- Win32 versions is crashing (e.g. EpicGamesLauncher) at the moment
NOTE: VS2013
- not tested (i'm working on getting a VS2013 pro license) - so not checking in with this changelist
- also, VS2013 is no longer supported by webRTC build scripts, so it will be old anyways
FUTURE NOTE:
- will continue to try to get VS2015 Win32 functional
- and am working on trying to get VS2013 tested
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128500 on 2016/09/16 by Nick.Shin
zlib 1.2.8 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128504 on 2016/09/16 by Nick.Shin
openssl 1_0_2h - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128506 on 2016/09/16 by Nick.Shin
libcurl 7_48_0 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128508 on 2016/09/16 by Nick.Shin
libwebsockets 1.7.4 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128513 on 2016/09/16 by Nick.Shin
webRTC rev.12643 - OSX
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128602 on 2016/09/16 by Nick.Shin
webRTC rev.9862 - Win64 VS2013
NOTE:
- not tested (i'm working on getting a VS2013 pro license)
- checking in for testing purposes
WARNING:
- VS2013 is no longer supported by webRTC latest
headers and lib updates
part of [ zlib openssl libcurl libwebsockets webrtc ] updates
Change 3128605 on 2016/09/16 by Nick.Shin
re-enabling updated ThirdParySoftware libs:
- zlib (v.1.2.8)
- openssl (1.0.2h)
- libcurl (7_48_0)
- libwebsocket (v.1.7.4)
- webRTC (rev.12643)
to the codereviewers, in my attempt to ensure the older libs are still used for console, mobile and linux -- please refer to this checkin if i broke the build...
Change 3128651 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605
Change 3128704 on 2016/09/16 by Nick.Shin
fix Win32 build error from CL: #3128605 - this time actually compiling it...
Change 3128825 on 2016/09/16 by Dmitry.Rekman
Linux: proper fix for too slow startup times (UE-35967).
- Pull request #2793 by slonopotamus.
- Now without stripping dependencies on libraries specified before.
- Contains a work around for ld bug <2.25.
Change 3128972 on 2016/09/16 by Nick.Shin
fix to local build error.
Change 3129283 on 2016/09/16 by Brent.Pease
+ Add Android local notification support based on existing system used for iOS
+ Initial API has been added for cancelling local notifications but the actual platform implementation will be done in the next release
Change 3129494 on 2016/09/17 by Nick.Shin
fix CIS build errors
Change 3129503 on 2016/09/17 by Dmitry.Rekman
Fix Linux build (case sensitivity issue).
Change 3129514 on 2016/09/17 by Nick.Shin
fix CIS build errors for consoles - missing zlib include path
special thanks to Dmitry.Rekman for pointing me in the right direction
Change 3129647 on 2016/09/17 by Dmitry.Rekman
Linux: fix non-unity build.
Change 3131043 on 2016/09/19 by Nick.Shin
archiving build instructions/steps when building:
- zlib (v.1.2.8)
win: #3128369
osx: #3128500
- openssl (1.0.2h)
win: #3128377
osx: #3128504
- libcurl (7_48_0)
win: #3128383
osx: #3128506
- libwebsocket (v.1.7.4)
win: #3128384
osx: #3128508
- webRTC
win: #3128464 (rev.12643 for vs2015) + 3128602 (rev:9862 for vs2013) -- NOTE: win32 is WiP
osx: #3128513
Change 3132801 on 2016/09/20 by Dmitry.Rekman
Linux: support specifying default OpenGL version via configs (UE-34777).
- The first targeted RHI is going to be used.
Change 3132905 on 2016/09/20 by Josh.Adams
- Fixed up some paths with the WolfPlat rename
Change 3133148 on 2016/09/20 by Josh.Adams
- Only show UT EULA if PLATFORM_DESKTOP
Change 3133152 on 2016/09/20 by Josh.Adams
- Beginning support for applets. Disabled unless you have a special SDK with applet support.
Change 3133169 on 2016/09/20 by Josh.Adams
- Fixed issue with Wolf access but no SDK installed
Change 3133344 on 2016/09/20 by Daniel.Lamb
Fixed issue with Iterative cooking not detecting changes to ini files which are loaded using LoadLocalFile.
Added new flag to limit number of concurrent shader compiles.
#test Cook QAGame, Cook Paragon
Change 3133345 on 2016/09/20 by Daniel.Lamb
FRedirectCollector collects string asset references all the time when running the editor.
#test Cook paragon cook QAGame.
Change 3133852 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated.
Change 3133875 on 2016/09/21 by Luke.Thatcher
[PLATFORM] [PS4] [^] Performing merge between 3.508.201 LCUE files in CarefullyRedist and Dev-Platform to populate integration history. No files have actually changed in this CL, only Perforce metadata is updated. (Attempt 2)
Change 3134403 on 2016/09/21 by Jonathan.Fitzpatrick
Per PS4 documentation, app_type requires the alternate spelling of 'upgradeable', 'upgradable'.
Change 3134544 on 2016/09/21 by Josh.Adams
- Reduced UT textures for Wolf
Change 3134915 on 2016/09/21 by Jonathan.Fitzpatrick
FPS4Time::SystemTime now calculates the local machine time, instead of UTC.
#jira UE-35170
Change 3135036 on 2016/09/21 by Michael.Trepka
Quit the UE4EditorServices app when quitting the Launcher if it was the launcher that spawned the services process
Change 3135142 on 2016/09/21 by Jonathan.Fitzpatrick
GetBackMemoryPoolSize returned bool on PS4 by accident, should be uint32
Change 3135292 on 2016/09/21 by Jeff.Campeau
Change include order to favor the XDK edition specific headers where available.
Change 3136414 on 2016/09/22 by Josh.Adams
- Fixed a checkf() that had the case reversed
#jira ue-36311
Change 3137082 on 2016/09/22 by Dmitry.Rekman
Added support for Linux installed builds to 4.14
Change 3137220 on 2016/09/22 by Dmitry.Rekman
Linux: do not rebuild hlslcc on each setup.
- Now that hlslcc is set to use bundled libc++ there should be no STL binary compatibility conflicts between the engine and hlslcc binary.
Change 3137227 on 2016/09/22 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3137259 on 2016/09/22 by Dmitry.Rekman
Linux installed build: fix CIS (missed one .csproj)
Change 3137290 on 2016/09/22 by Dmitry.Rekman
Linux installed builds: fix for the resulting directory.
Change 3137291 on 2016/09/22 by Chris.Babcock
Restore texture filtering mode properly when movie played on Android
#jira UE-36342
#ue4
#android
Change 3137376 on 2016/09/22 by Dmitry.Rekman
Linux: re-enabled crash handler stack smash protection.
- Race condition in FRunnableThreadPThread has been previously fixed.
Change 3138498 on 2016/09/23 by Dmitry.Rekman
Linux: add missed package for installed builds.
- mono-devel package for resgen2.
Change 3138523 on 2016/09/23 by Dmitry.Rekman
Linux: Update hlslcc now that we're not rebuilding it each time.
Change 3138658 on 2016/09/23 by Josh.Adams
- Moved UT's Social Plugin into NotForLicensees
Change 3139042 on 2016/09/23 by Dmitry.Rekman
Linux: more robust check of installed packages.
- Also added mono-devel to the list of packages installed on 14.04.
Change 3139674 on 2016/09/26 by Dmitry.Rekman
Fix crash when editing widget blueprints (UE-35185).
- Caused by name collision due to copy/pasted code; aliased classes diverged and this resulted in all kinds of weird memory stomping.
- Renamed the class and also applied the same workaround (removing static) to prevent likely crashes on exit as happened with the original class (see UE-30795).
Change 3140203 on 2016/09/26 by Josh.Adams
- Wolf Fix for SHIPPING
Change 3140206 on 2016/09/26 by Josh.Adams
- NEX work, still in progress
Change 3140276 on 2016/09/26 by Josh.Adams
- Fixed Wolf compile error
Change 3140485 on 2016/09/26 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3140570 on 2016/09/26 by Dmitry.Rekman
SDL2: Delete obsolete files.
- We now have local changes to SDL2, so this tarball is no longer accurate and just takes unnecessary space.
Change 3140577 on 2016/09/26 by Dmitry.Rekman
Fix CudaTest monolithic build.
- Not the best fix, the better fix is to build against bundled libc++.
Change 3141184 on 2016/09/27 by Keith.Judge
Add FXboxOneApplication::GetXboxOneApplication to fix a save/load game assert.
#jira UE-35973
Change 3141623 on 2016/09/27 by Chris.Babcock
Support hiding virtual keyboard on Android
#jira UE-34201
#ue4
#android
Change 3141887 on 2016/09/27 by Joe.Graf
Added support for additional plugin directories that are specified by the .uproject file
New plugin wizard adds to the additional plugin directories if the user specifies a directory outside of Engine/Plugins or Game/Plugins
Change 3141916 on 2016/09/27 by Josh.Adams
- Worked around compile issues (at least with Wolf UT). This is well documented in a Jira (UE-29925)
Change 3141926 on 2016/09/27 by Josh.Adams
- Support for skipping Wolf user selector (-nologinui)
Change 3141938 on 2016/09/27 by Chris.Babcock
Allow Android media player to seek past 999ms (contributed by rcywongaa)
#jira UE-36453
#PR #2797
#ue4
#android
Change 3142207 on 2016/09/27 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3142219 on 2016/09/27 by Josh.Adams
- Wolf PhysX 3.4 libs and includes
Change 3142220 on 2016/09/27 by Josh.Adams
- File that had to be fixed up after main merge (missed adding it to the huge integrate CL)
Change 3142314 on 2016/09/27 by Chase.McAllister
#jira UE-35011 fixes to some assets to remove redundancies/output log spam
Change 3142510 on 2016/09/27 by Daniel.Lamb
Fixed up resave lightmaps commandlet so that world transforms don't get applied twice.
#jira UE-35942
Change 3142650 on 2016/09/27 by Chris.Babcock
Android support for Linux by yaakuro
- requires CodeWorks for Android Linux installed and OpenJDK 1.8
- need to set Android SDK paths manually in Project Settings
#jira UE-32752
#jira UE-32753
#PR #2564
#PR #2565
#ue4
#android
#linux
Change 3142802 on 2016/09/27 by Dmitry.Rekman
Upgrade to SDL 2.0.5-ish (still technically 2.0.4).
- Upstream revision 10374:dccf51aee79b.
- Merged all our changes hopefully.
Change 3143075 on 2016/09/28 by Luke.Thatcher
[RENDERING] [~] Add check to FBatchedElements::AddSprite to catch null textures. If the texture is null here, we will crash later in the RHI. At least now we'll get the callstack of the code adding the null textured sprite, since I don't have a repro.
#jira UE-33077
Change 3143219 on 2016/09/28 by Daniel.Lamb
Added new is compiling function which tells you if it's really compiling instead of lying.
If def out additional logging for debugging shader compilation issue for 4.14 release.
Change 3143428 on 2016/09/28 by Luke.Thatcher
[PLATFORM] [PS4] [+] Use PS4 SDK 4.008.061
Change 3143488 on 2016/09/28 by Daniel.Lamb
Changed defaults for skip cooking editor content to true.
Change 3143526 on 2016/09/28 by Daniel.Lamb
Increased the concurrent shader compile limit while in the cooker.
#test Cook paragon
Change 3143874 on 2016/09/28 by Chris.Babcock
Read Android environment variables from .bashrc on Linux
#jira UE-36565
#ue4
#android
#linux
Change 3143911 on 2016/09/28 by Dmitry.Rekman
Fix SDL EGL API binding (UE-18979).
- Contains PR #1398 by x414e54.
- Also fixes offscreen backend that needed to provide a global mouse state after the SDL upgrade.
Change 3143929 on 2016/09/28 by Daniel.Lamb
Removed some more temporary logging.
#test Cook paragon
Change 3143959 on 2016/09/28 by Jeff.Campeau
Media Player for Xbox One
Change 3143997 on 2016/09/28 by Dmitry.Rekman
Linux: faster linking in Debug.
- Do not apply --as-needed to Debug build since taking a hit of several tens of seconds on startup is better than linking for ~4 more minutes when iterating.
Change 3144004 on 2016/09/28 by Dmitry.Rekman
Linux: make SCW dump core on crash in debug builds.
- If the editor (not SCW itself) is built in Debug, make SCW dump cores if they ever crash. This makes it debug easier (at the risk of running of disk space).
Change 3144007 on 2016/09/28 by Dmitry.Rekman
Linux: Allow equals character in command line parameter value (UE-26406).
- PR #2019 by bozzaro.
- Allows passing parameters like -Switch=Key=Value.
Change 3144042 on 2016/09/28 by Jeff.Campeau
Add tag for DX12 support being experimental in target settings.
#jira UE-36150
Change 3144068 on 2016/09/28 by Dmitry.Rekman
Linux: enable using xgConsole in UAT (UE-28096).
- PR #2144 by bozzaro.
- Picks correct xgConsole binary.
- Allegedly fixes crash in CombineXGEItemFile on mono.
Change 3144120 on 2016/09/28 by Michael.Trepka
Copying //Tasks/UE4/Dev-HighDPI/... to //UE4/Dev-Platform/...
Change 3144172 on 2016/09/28 by Chris.Babcock
Add libpng 1.5.27 for Android
#jira UE-36573
#ue4
#android
Change 3144318 on 2016/09/28 by Chris.Babcock
Correct logic for checking .bashrc on Linux
#ue4
#android
Change 3144331 on 2016/09/28 by Dmitry.Rekman
Linux: repair ARM server builds.
- Also: print info about C++ library being used and allow the override via environment variable UE4_LINUX_USE_LIBCXX (either 0 or 1).
Change 3144354 on 2016/09/28 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
this is intermediate, not fully working
Change 3144368 on 2016/09/28 by Josh.Adams
- Moved the new Social files into NFL
Change 3144395 on 2016/09/28 by Chris.Babcock
Add missing functions for AndroidWebBrowserWindow
#ue4
#android
Change 3144417 on 2016/09/28 by Josh.Adams
- Probable fix for FWebBrowserWindow missing virtuals
Change 3144438 on 2016/09/28 by Jeff.Campeau
XDK updated to 160802
Change 3144569 on 2016/09/29 by Dmitry.Rekman
Linux: allow a selectable clock source (UE-36564).
- The engine will now select the best performing clock on start instead of hard-coding CLOCK_REALTIME. This will happen as part of global initialization before main() to prevent clock skew.
- Also fixes a problem of the engine not being able to start on Windows 10 since previously hard-coded clock id was not supported there.
#tests Compiled and ran a few targets (including non-monolithic). Tried bogus clock sources. Haven't actually tried on Win10 (don't have a machine atm).
Change 3145108 on 2016/09/29 by Joe.Graf
Fixed cases where path relative external plugin paths would generate the wrong path when running Unreal Header Tool (and probably other tools)
Change 3145245 on 2016/09/29 by Joe.Graf
#wolf
Checking in removal of plugin use on Win64 per Josh's request
Change 3145514 on 2016/09/29 by Will.Fissler
Updated Mac Info.plist files to disable high DPI on macOS 10.12
Change 3145538 on 2016/09/29 by Josh.Adams
- Worked around a physics task graph issue with using the new lock free stuff on Wolf, joining PS4 and XboxOne. Wolf was crashing on some boots.
Change 3145540 on 2016/09/29 by Josh.Adams
- Fix for checking some Wolf dev tool installation existence
- Fix for various Wolf build issues
- Fix for Wolf devices not showing up in Launch on
Change 3145542 on 2016/09/29 by Josh.Adams
- Pulled over Wolf changes from Wolf branch into Dev-Platform
Change 3145572 on 2016/09/29 by Josh.Adams
- Cleaned up Wolf SDK error logs which really messed up GenProjectFiles for some class of people.
#jira UE-36591
Change 3145769 on 2016/09/29 by Chris.Babcock
Remove duplicate platforms from deploy list in UFE
#jira UE-36636
#ue4
Change 3146061 on 2016/09/29 by Chris.Babcock
Linux: be less spammy in log when launching external procs
#jira UE-36638
#ue4
#linux
Change 3146208 on 2016/09/29 by Dmitry.Rekman
Linux: fix PhysX crash (UE-36613).
- PX_RESTRICT was unwarrantedly applied to memMove, allowing clang to replace the memmove() call to memcpy() at -O2 and above.
- This caused PxArray::remove() to duplicate the elements of its array (in POD case) and this opened doors to all kinds of fun.
#jira UE-36613
Change 3146476 on 2016/09/30 by Josh.Adams
- Moved a UBT log that could pollute QA logs with Wolf secrets to Verbose
Change 3146554 on 2016/09/30 by Josh.Adams
- Removed another wolf secret log
Change 3146626 on 2016/09/30 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3146712 on 2016/09/30 by Josh.Adams
- Fixed case for building Android on Linux
#jira #UE-36652
Change 3146844 on 2016/09/30 by Josh.Adams
- Removed ES2 shader compiling from TVOS, and force Metal compiling
#jira UE-36306
Change 3146865 on 2016/09/30 by Daniel.Lamb
Removed temp logging for materials
#test Launch on paragon
Change 3146874 on 2016/09/30 by Dmitry.Rekman
Linux: add rpath for libTextureConverter.so (UE-36620).
Change 3147030 on 2016/09/30 by Josh.Adams
- Version check workaround for IOS9.3/TVOS9.2 defining __IPHONE_10_0 which breaks our IOS10 code checks
#jira UE-36623
Change 3147151 on 2016/09/30 by Josh.Adams
- Fixed zlib.build.cs for XboxOne, which came in from another branch without an include path, yet somehow main is compiling?
Change 3147621 on 2016/09/30 by Michael.Trepka
Fix for setting up RPATHs for third party dylibs for packaged code-based games on Mac
Change 3147712 on 2016/09/30 by Josh.Adams
- Fixed metal crash StrategyGame crash. Recent code was checking IsES2Platform for HDR decoding in scene capture, and Metal hasn't been IsES2 since may. Changed to IsMobilePlatform.
#jira UE-36225
Change 3147725 on 2016/09/30 by Josh.Adams
- Fixed yet another Wolf log for people with Wolf access but no SDK
[CL 3147801 by Josh Adams in Main branch]
2016-09-30 21:21:09 -04:00
- > SetWindow ( FVector2D ( 10 * DPIScaleFactor , 10 * DPIScaleFactor ) , false )
Copying //UE4/Dev-Platform to //UE4/Main (Source: //UE4/Dev-Platform @ 3008177)
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2948322 on 2016/04/19 by Nick.Shin
update libwebsockets to v1.7.4
part 4 of 4 - doing this in stages for tracking purposes
#jira UEPLAT-1246 - Update libWebsockets
#jira UEPLAT-1221 - update websocket library
#jira UEPLAT-1204 - Rebuild libwebsockets with SSL
Change 2970016 on 2016/05/07 by Nick.Shin
undo all of the following upgrades:
- zlib
- openssl
- libcurl
- libwebsockets
and reset webrtc
#jira UE-30298 - Fortnite and Orion crash on login
#lockdown josh.adams
Change 2970373 on 2016/05/09 by Lee.Clark
PS4 - Fix NumInstances not getting reset after DrawIndirect calls
Change 2972873 on 2016/05/10 by Michael.Trepka
Correct initial position for SlateViewer windows on Mac
Change 2974363 on 2016/05/11 by Mark.Satterthwaite
Fix invoking buils using distcc from UFE - the command-line executed to access the number of parallel tasks was incorrect.
Change 2975921 on 2016/05/12 by Michael.Trepka
Removed unused AdjustWindowRegion declaration from LinuxWindow.h
#codereview Dmitry.Rekman
Change 2977002 on 2016/05/13 by Michael.Trepka
Make sure dSYM generation action in UBT on Mac does not start before the source dylib is ready
#codereview Ben.Marsh
Change 2977337 on 2016/05/13 by Brent.Pease
UE-27805 - Adding special characters into the BundleDisplayName or BundleName causes packaging error
+ Prevent illegal characters from being entered in the packaging UI
+ Report an error from iPhonePackager if a illegal bundle id is specified
+ Convert special characters to XML equivalents
- Correctly check for the presence of iTunes 12 when packaging iOS games on Windows
- Improve ios certificate and provision message in package settings UI
#codereview peter.sauerbrei
Change 2977509 on 2016/05/13 by Brent.Pease
+ Fix mac compile error
Change 2978036 on 2016/05/14 by Mark.Satterthwaite
One-line tweak that resolves incorrect rendering of the colour LUT because float imprecision allows -ve values to be passed into a call to pow which then generates NaN.
#jira UE-30777
Change 2978037 on 2016/05/14 by Mark.Satterthwaite
Fix a heap-use-after-free bug spotted by AddressSanitizer - you can't assume that the UObject system will be available in ShutdownModule() - on OS X it may have been killed a long time ago.
Change 2978333 on 2016/05/16 by Lee.Clark
Fix packaging of non-code projects when plugins are enabled
#codereview Peter.Sauerbrei
Change 2978780 on 2016/05/16 by Mark.Satterthwaite
Reduce temporary allocations required to set uniform parameters in Metal.
Change 2979680 on 2016/05/16 by Nick.Shin
editor's HTML5 platform settings was missing due to the emscripten SDK move
should have been included with CL: #2946251
Change 2979681 on 2016/05/16 by Nick.Shin
cleaned up websocket processing for HTML5
#jira UE-13657 - HTML5 plugin OnRawRecieve overflow
Change 2979701 on 2016/05/16 by Brent.Pease
UE-28421 - Message box cannot be closed after accessing the home screen on iOS
+ Implement a timeout when waiting for a reply after sending background/foreground/suspend events from the main thread to the game thread. This solves the immediate problem presented in the jira bug report, however, there are deeper issues with the consequences of blocking the game thread that are not addressed. Perhaps structuring the game thread loop to know about modal dialogs so that it can receive these events even when a modal dialog is up could be a better longer term solution
Change 2980766 on 2016/05/17 by Jeremiah.Waldron
Adding Android build support for HarfBuzz
- using a combination of android-cmake (from https://github.com/taka-no-me/android-cmake) to create the build files and Visual Studio 2015 to compile them
- Adding Debug and RelWithDebInfo compiled binaries to harfbuzz-1.2.4/Android/<arch>/<config>
Tested armv7 with TextShapingTest project on a GalaxyNote3 and text showed up correctly
#jira UE-28586
#codereview chris.babcock
Change 2980953 on 2016/05/17 by Jeremiah.Waldron
Changing HarfBuzz build script and libs to use Release instead of RelWithDebInfo
#jira UE-28586
Change 2981039 on 2016/05/17 by Jeff.Campeau
ICMP support disabled for Xbox One and basic address processing wrappers provided (needed for Oodle support)
Change 2981054 on 2016/05/17 by Jeff.Campeau
Enable Live OSS for Orion on Xbox One
Change 2981553 on 2016/05/18 by Jeff.Campeau
Enable Oodle for Xbox One
Change 2981555 on 2016/05/18 by Jeff.Campeau
Scalability settings for Xbox One
Change 2981774 on 2016/05/18 by Keith.Judge
Xbox One - Duplicating Movie Player fix from 4.12.
Change 2981789 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate fast semantics rendertarget unbind/clear/rebind fix from 4.12.
Change 2981802 on 2016/05/18 by Keith.Judge
Xbox One - Duplicate of distance field AO/Shadow fixes from 4.12.
Change 2981875 on 2016/05/18 by Keith.Judge
Xbox One - Dynamic VB/IB refactor. Duplicated from 4.12.
Change 2981900 on 2016/05/18 by Keith.Judge
Xbox One - D3D11Query refactor. Duplicated from 4.12
Change 2981945 on 2016/05/18 by Nick.Shin
filled out response headers for HTML5 platform
#jira UE-26047 - HTML5 HTTP Response Headers not implemented
Change 2981981 on 2016/05/18 by Lee.Clark
PS4 - Fix COTF not updating files
#codereview Daniel.Lamb
Change 2982246 on 2016/05/18 by Michael.Trepka
Fixed Mono compile errors in UT build scripts
Change 2983869 on 2016/05/19 by Mark.Satterthwaite
Explicitly retain/release all the MTLTexture objects in FMetalSurface without the assumptions about them being the same object - the recent stencil & SRV related changes make those assumptions invalid and could lead to over-releasing some textures.
#jira UE-29557
Change 2983871 on 2016/05/19 by Mark.Satterthwaite
Pool Metal texture update buffers to reduce churn.
Change 2983892 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2972885: Enable Metal resource lifetime delay on all platforms, not just iOS to try and address intermittent invalid resource errors.
Change 2983898 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2982825: Correctly wait for the dispatch semaphore when clearing the Metal resource free lists.
Change 2983911 on 2016/05/19 by Mark.Satterthwaite
Change Metal SubmitCommandsHint to use an enum of flags rather than boolean variables to control behaviour so that its clearer to the reader what is going to happen.
Change 2983916 on 2016/05/19 by Mark.Satterthwaite
Duplicate 4.12 CL #2974765: Workaround for UE-30069 - on Nvidia Macs we are breaking the GMux swap the second time we run the engine and it isn't clear why, so instead explicitly select the Metal device ourselves and don't allow the OS to swap the GPU driving the display. This will potentially reduce performance a little if the discrete GPU isn't already driving the display but until we know how we are clobbering the GMux/driver it is all we can do. This only applies to 10.11.5 with the default OS X drivers where there is more than one GPU in the system, earlier versions of OS X and the Nvidia WebDrivers are unaffected.
Change 2984874 on 2016/05/20 by Keith.Judge
Xbox One - Re-enable shader DXBC intermediate bytecode stripping, except for geometry and hull shaders where there's a possibility of runtime recompilation in certain combinations. Saves ~2MB in TM-ShaderModels, will save more in larger maps.
#jira UEPLAT-1295
Change 2985446 on 2016/05/20 by Mark.Satterthwaite
Remove the non-functional -metaldebug option from MetalRHI.
Change 2985827 on 2016/05/20 by Nick.Shin
call EndSession() onbeforeunload()
note: API CHANGE
- HTML5JavaScripteFx.{js,h}
- UE_MakeHTTPDataRequest()
#jira UE-22285 - Session End events are not generated for HTML5
Change 2986013 on 2016/05/20 by Jeremiah.Waldron
PR #2387: In-App Purchases - parameters needed for Receipt Validation (Contributed by gameDNAstudio)
Also touches IOS because of added RawPrice member in FInAppPurchaseProductInfo
Pulled from Release-4.12 CL
#jira UE-30782
#codereview chris.babcock, Peter.Sauerbrei
Change 2986057 on 2016/05/20 by Mark.Satterthwaite
Further changes to ensure that UE-30710 really is fixed while also not live-leaking memory in MetalRHI.
Change 2986059 on 2016/05/20 by Mark.Satterthwaite
Move the Metal uniform buffers into the same resource pool as all the other buffers and add stats for how many buffers are in the pool, how much memory is in use, free and wasted (due to aligned-buffer sizes).
Change 2986060 on 2016/05/20 by Mark.Satterthwaite
Disable tiled-reflections on Nvidia & Intel Metal until they sort out the sample command on cube-arrays ignoring the lod level.
Change 2986063 on 2016/05/20 by Mark.Satterthwaite
Missing change from previous CL.
Change 2986066 on 2016/05/20 by Mark.Satterthwaite
More Metal stats tracking the number & memory size of id<MTLBuffer>'s allocated/released each frame.
Change 2986455 on 2016/05/23 by Keith.Judge
Xbox One - Fix precompile promise in shader compiler to not stop subsequent defines from being parsed by D3DCompiler.
Change 2986886 on 2016/05/23 by Mark.Satterthwaite
Duplicate 4.12 CL #2986880: Fix UE-31124 due to bad array iteration logic - amazing that this hadn't been seen earlier.
Change 2986955 on 2016/05/23 by Brent.Pease
+ Do not error out if "[PROJECT_NAME]" is in the bundle ID
#codereview peter.sauerbrei
Change 2987304 on 2016/05/23 by Chris.Babcock
Remove old Android platforms
#ue4
#android
#codeview Josh.Adams
Change 2987571 on 2016/05/23 by Mark.Satterthwaite
Duplicate CL #2967998: Integrate - MaterialParameterCollections now create default resources (uniform buffers) which are used when no valid FScene is present (eg DrawTile while exporting materials to lightmass)
#jira UE-31111
Change 2987591 on 2016/05/23 by Mark.Satterthwaite
Remove usage of MTLRender/ComputeEncoder setSamplerState/s calls that take Min & Max Lod overrides - they currently don't work as expected on some GPU drivers and as we don't use them anywhere and I can't see that we will removing them costs us nothing and fixes tiled reflections on Nvidia with Metal SM5.
Change 2987679 on 2016/05/23 by Mark.Satterthwaite
Re-enable tiled reflections on Nvidia by default now that they work.
Change 2987799 on 2016/05/24 by Mark.Satterthwaite
Add a shader compile option "r.Shaders.ZeroInitialise" that we can turn on to force explicit zero-initialisation of local & temporary variables in hlslcc - so far only implemented for Metal. The default behaviour remains to omit zero-initialisation but the option is helpful to eliminate or track down uninitialised access in shaders that are causing real bugs (e.g. POM material relying on zero-initialised loop counters causing hangs/bad rendering on Mac).
Change 2989395 on 2016/05/25 by Lee.Clark
PS4 - Fix shader output / render target format mismatch for sparse MRT.
Change 2990003 on 2016/05/25 by Jeremiah.Waldron
When creating our own ConfigCacheIni in GetConfigCacheIni_APL, do not assume that the Engine ini was requested. Instead use the baseIniName passed to the function.
Change 2990393 on 2016/05/25 by Mark.Satterthwaite
Back out changelist 2961310 - causes more problems than it solves. DistanceField rendering will still work on Intel Metal SM5 and may work on AMD but will be broken on Nvidia due to a bad access within the compute shader - there's no bounds checking in Metal...
Change 2990516 on 2016/05/25 by Brent.Pease
+ UEPLAT-1294 - Support for local notifications
+ UEPLAT-1254 - Add BP event for device orientation change
+ Added a new class based on UGameInstance for mobile device callbacks
+ Ensured IOSAppDelegate.cpp follows convention for lambda functions
Change 2991361 on 2016/05/26 by Jeremiah.Waldron
Move InAppPurchase class to StoreHelper.java so GooglePlay and Amazon store helpers can use it
Change 2992450 on 2016/05/27 by Mark.Satterthwaite
Optional r.Shaders.BoundsChecking flag to control whether shader platforms should manually enforce buffer access bounds - HLSL returns zero or ignores invalid reads & writes but Metal leaves the behaviour undefined and some drivers then fail. By default this is off and its whatever the native platform behaviour is, enabling it will cost some amount of performance as the shader translator inserts additional instructions to try and match D3D as accurately as possible. This is required to fix GPU restart errors on some Metal drivers when using SM5 rendering features including DistanceField shaders.
Change 2993027 on 2016/05/27 by Mark.Satterthwaite
Fix typo for new CFLAG_BoundsChecking enumeration value.
Change 2993594 on 2016/05/27 by Mark.Satterthwaite
Build fix - check not assert...
Change 2993595 on 2016/05/27 by Mark.Satterthwaite
Fix typo from Xcode hang...
Change 2993614 on 2016/05/28 by Mark.Satterthwaite
At least for now enable shader zero-initialisation and bounds-checking on Mac to ensure that Metal shaders are compiled with semantics that approximate those HLSL assumes. This may cost some performance but will avoid a few GPU restarts on some vendor drivers.
Change 2993747 on 2016/05/28 by Mark.Satterthwaite
Separate texture & buffer references in the Metal backend as they bind to separate arrays in the runtime to avoid giving the side-table buffer an innaccessible binding index. Also the side-table doesn't need to be emitted if no buffer SRV or UAV is used.
Change 2994256 on 2016/05/31 by Lee.Clark
PS4 - Fix unitialized Head Position from HMD tracker when tracking fails. Fixes a problem with A3D audio not working.
#codereview Chad.Taylor,Aaron.McLeran
Change 2994281 on 2016/05/31 by Rolando.Caloca
DP - Allow hlslcc to process type casts containing the 'const' keyword
- it isn't strictly complete as it will simply omit the type qualifier from the cast in the AST but it is sufficient for FortniteFoliage_MasterMaterial to compile.
#codereview Mark.Satterthwaite, Dmitry.Rekman
#jira UE-31411
Change 2994467 on 2016/05/31 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 2994493 on 2016/05/31 by Daniel.Lamb
Fixed issue with DDC commandlet not caching things from the startup packages list.
Change 2994644 on 2016/05/31 by Mark.Satterthwaite
Updated hlslcc Mac binaries with fix for UE-31411 which RCO accepted and submitted + script for building parsers on POSIX OSes hooked up to an Xcode scheme in the project.
Change 2996074 on 2016/06/01 by Lee.Clark
PS4 - Fix GS mode not getting disabled when using parallel contexts.
#codereview Marcus.Wassmer
Change 2996129 on 2016/06/01 by Brent.Pease
Manual merge of Pete's dsym generation fix (CL#2996089) from the 4.12 branch.
Change 2996130 on 2016/06/01 by Jeremiah.Waldron
PR #2387 part 2 (Contributed by gameDNAstudio)
Adding ability to consume purchases during GooglePlay RestorePurchases
This also touches IOS due to changes to base classes and function signatures
#codereview chris.babcock, Peter.Sauerbrei
Change 2996441 on 2016/06/01 by Jeremiah.Waldron
Relates to PR #2387: Adding ability to consume purchases during GooglePlay RestorePurchases (Contributed by gameDNAstudio)
Missing changes from part 2 reworked so that there is still only one RestorePurchases function which takes the product IDs and consumable flags. I reflected this in StoreHelper so no casting is necessary in GameActivity and the soon-to-be-added AmazonStoreHelper in the GameCircle plugin will still work dynamically with GameActivity since it will call StoreHelper functionality rather than a GooglePlayStoreHelper specific function.
#codereview chris.babcock
Change 2996514 on 2016/06/01 by Jeff.Campeau
Fix merge issue from main
#jira UE-31502
Change 2996740 on 2016/06/01 by Jonathan.Fitzpatrick
https://jira.ol.epicgames.net/browse/UE-31446
Two PS4 source files fail during unity builds due to name conflict with handleReserveFailed.
Renamed handleReserveFailed to handleReserveFailedLightweight
Change 2997235 on 2016/06/01 by Jeremiah.Waldron
RestorePurchases fix up in Match3 since the new Restore consumable stuff adds an additional pin to the Restore node.
The IAP product in Match3 is non-consumable so just passing an empty array where necessary
Change 2997241 on 2016/06/01 by Jeremiah.Waldron
OnlineSubsystemGameCircle Plugin
- Leaderboards
- Achievements
- Friends
- IAP
- External UI Interface
- Runtime Settings in Project Settings Plugin section when plugin is enabled
- Disabled by default
#jira UEPLAT-105
#codereview chris.babcock
Change 2997618 on 2016/06/02 by Lee.Clark
#UE4Docs: Removed PS4MapFileUtil info
Change 2997840 on 2016/06/02 by Jeremiah.Waldron
Removing trace logging from OnlineSubsystemGameCircle_APL
Change 2998754 on 2016/06/02 by Brent.Pease
Change BlueprintMobileLibrary to BlueprintPlatformLibrary
Change 3000762 on 2016/06/03 by Jeff.Campeau
Add example rating info to ShooterGame
Change 3001037 on 2016/06/04 by Brent.Pease
+ Add ui screens for delegate test, local notification test, and iap test
+ Implement delegate test
Change 3001250 on 2016/06/05 by Brent.Pease
+ Initial pass at IAP test screen
Change 3001639 on 2016/06/06 by Jeff.Campeau
Fix Xbox One build issue with DX12
#codereview Zabir.Hoque
Change 3002574 on 2016/06/06 by Jeremiah.Waldron
Adding Android Install Location to Android platform runtime settings and manifest generation
Change 3002780 on 2016/06/06 by Brent.Pease
+ Initial implementation of local notification test
Change 3003005 on 2016/06/06 by Jeremiah.Waldron
OnlineSubsystemGameCircle plugin - adding setting for Fire TV support. Using that specification in the APL to Add/Update android.hardware.touchscreen feature required attribute
Change 3004392 on 2016/06/07 by Jeremiah.Waldron
Fixing typo in APL comment :)
Change 3005768 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3005929 on 2016/06/08 by Josh.Adams
Merging //UE4/Dev-Main to Dev-Platform (//UE4/Dev-Platform)
Change 3006151 on 2016/06/08 by Peter.Sauerbrei
fix for LocalNotifications not available on TVOS
#lockdown josh.adams
Change 3006183 on 2016/06/08 by Brent.Pease
Manual merge CL#3000242 from Release-4.12 into Dev-Platform
#lockdown josh.adams
Change 3006296 on 2016/06/08 by Peter.Sauerbrei
submit an updated iPhonePackager and support DLLs
#lockdown josh.adams
Change 3006378 on 2016/06/08 by Peter.Sauerbrei
fix for API update to RestorePurchases
#codereview brent.pease
#lockdown josh.adams
#lockdown nick.penwarden
[CL 3008183 by Josh Adams in Main branch]
2016-06-09 17:45:44 -04:00
# endif
2014-07-09 05:15:50 -04:00
- > Split
(
// The area contains a single tab with the widget reflector.
FTabManager : : NewStack ( ) - > AddTab ( " WidgetReflector " , ETabState : : OpenedTab )
)
)
# endif
;
2014-03-14 14:13:41 -04:00
FGlobalTabmanager : : Get ( ) - > RestoreFrom ( Layout , TSharedPtr < SWindow > ( ) ) ;
}
void MakeSplitterTest ( )
{
TSharedRef < SWindow > TestWindow = SNew ( SWindow )
. ClientSize ( FVector2D ( 640 , 480 ) )
. AutoCenter ( EAutoCenter : : PrimaryWorkArea )
[
SNew ( SSplitterTest )
] ;
FSlateApplication : : Get ( ) . AddWindow ( TestWindow ) ;
}
2015-01-30 10:13:53 -05:00
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
2014-03-14 14:13:41 -04:00
# undef LOCTEXT_NAMESPACE
2015-08-19 07:53:45 -04:00
# endif // #if !UE_BUILD_SHIPPING