2016-01-07 08:17:16 -05:00
// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
# include "MaterialEditorModule.h"
2014-05-22 11:33:54 -04:00
2014-10-07 16:39:44 -04:00
# include "MaterialGraph/MaterialGraphNode_Comment.h"
2014-05-22 11:33:54 -04:00
# include "Materials/MaterialExpressionBreakMaterialAttributes.h"
# include "Materials/MaterialExpressionCollectionParameter.h"
# include "Materials/MaterialExpressionComment.h"
# include "Materials/MaterialExpressionComponentMask.h"
# include "Materials/MaterialExpressionConstant.h"
# include "Materials/MaterialExpressionConstant2Vector.h"
# include "Materials/MaterialExpressionConstant3Vector.h"
# include "Materials/MaterialExpressionConstant4Vector.h"
2014-07-21 04:33:11 -04:00
# include "Materials/MaterialExpressionDynamicParameter.h"
2014-05-22 11:33:54 -04:00
# include "Materials/MaterialExpressionFontSampleParameter.h"
# include "Materials/MaterialExpressionFunctionInput.h"
# include "Materials/MaterialExpressionFunctionOutput.h"
# include "Materials/MaterialExpressionParameter.h"
# include "Materials/MaterialExpressionParticleSubUV.h"
# include "Materials/MaterialExpressionRotateAboutAxis.h"
# include "Materials/MaterialExpressionScalarParameter.h"
# include "Materials/MaterialExpressionStaticComponentMaskParameter.h"
# include "Materials/MaterialExpressionTextureSampleParameter.h"
# include "Materials/MaterialExpressionTextureObject.h"
# include "Materials/MaterialExpressionTextureSampleParameter2D.h"
# include "Materials/MaterialExpressionTextureSampleParameterCube.h"
# include "Materials/MaterialExpressionTextureSampleParameterSubUV.h"
# include "Materials/MaterialExpressionTransformPosition.h"
# include "Materials/MaterialExpressionVectorParameter.h"
# include "Materials/MaterialFunction.h"
2015-04-10 03:30:54 -04:00
# include "Materials/MaterialParameterCollection.h"
2014-05-22 11:33:54 -04:00
2014-03-14 14:13:41 -04:00
# include "MaterialEditorActions.h"
# include "MaterialExpressionClasses.h"
# include "MaterialCompiler.h"
2014-05-21 10:00:58 -04:00
# include "EditorSupportDelegates.h"
2014-03-14 14:13:41 -04:00
# include "Toolkits/IToolkitHost.h"
# include "Editor/EditorWidgets/Public/EditorWidgets.h"
# include "AssetRegistryModule.h"
# include "AssetToolsModule.h"
# include "SMaterialEditorViewport.h"
# include "SMaterialEditorTitleBar.h"
# include "PreviewScene.h"
# include "ScopedTransaction.h"
# include "BusyCursor.h"
# include "Editor/PropertyEditor/Public/PropertyEditorModule.h"
# include "Editor/PropertyEditor/Public/IDetailsView.h"
# include "MaterialEditorDetailCustomization.h"
# include "MaterialInstanceEditor.h"
# include "Editor/WorkspaceMenuStructure/Public/WorkspaceMenuStructureModule.h"
# include "EditorViewportCommands.h"
# include "GraphEditor.h"
# include "GraphEditorActions.h"
# include "BlueprintEditorUtils.h"
# include "EdGraphUtilities.h"
# include "SNodePanel.h"
# include "MaterialEditorUtilities.h"
# include "SMaterialPalette.h"
2014-04-23 18:30:12 -04:00
# include "FindInMaterial.h"
2014-08-27 20:35:19 -04:00
# include "SColorPicker.h"
2014-09-05 08:25:23 -04:00
# include "EditorClassUtils.h"
# include "IDocumentation.h"
2014-10-14 22:50:06 -04:00
# include "SDockTab.h"
2014-03-14 14:13:41 -04:00
# include "Developer/MessageLog/Public/MessageLogModule.h"
2014-05-29 17:02:05 -04:00
# include "Particles/ParticleSystemComponent.h"
2014-10-14 22:50:06 -04:00
# include "GenericCommands.h"
2015-04-10 03:30:54 -04:00
# include "CanvasTypes.h"
# include "Engine/Selection.h"
# include "Engine/TextureCube.h"
2014-03-14 14:13:41 -04:00
# define LOCTEXT_NAMESPACE "MaterialEditor"
DEFINE_LOG_CATEGORY_STATIC ( LogMaterialEditor , Log , All ) ;
2014-08-26 14:02:18 -04:00
static TAutoConsoleVariable < int32 > CVarMaterialEdUseDevShaders (
TEXT ( " r.MaterialEditor.UseDevShaders " ) ,
0 ,
TEXT ( " Toggles whether the material editor will use shaders that include extra overhead incurred by the editor. Material editor must be re-opened if changed at runtime. " ) ,
ECVF_RenderThreadSafe ) ;
2014-03-14 14:13:41 -04:00
const FName FMaterialEditor : : PreviewTabId ( TEXT ( " MaterialEditor_Preview " ) ) ;
const FName FMaterialEditor : : GraphCanvasTabId ( TEXT ( " MaterialEditor_GraphCanvas " ) ) ;
const FName FMaterialEditor : : PropertiesTabId ( TEXT ( " MaterialEditor_MaterialProperties " ) ) ;
const FName FMaterialEditor : : HLSLCodeTabId ( TEXT ( " MaterialEditor_HLSLCode " ) ) ;
const FName FMaterialEditor : : PaletteTabId ( TEXT ( " MaterialEditor_Palette " ) ) ;
const FName FMaterialEditor : : StatsTabId ( TEXT ( " MaterialEditor_Stats " ) ) ;
2014-04-23 18:21:07 -04:00
const FName FMaterialEditor : : FindTabId ( TEXT ( " MaterialEditor_Find " ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-02 18:09:23 -04:00
///////////////////////////
// FMatExpressionPreview //
///////////////////////////
2014-03-14 14:13:41 -04:00
bool FMatExpressionPreview : : ShouldCache ( EShaderPlatform Platform , const FShaderType * ShaderType , const FVertexFactoryType * VertexFactoryType ) const
{
if ( VertexFactoryType = = FindVertexFactoryType ( FName ( TEXT ( " FLocalVertexFactory " ) , FNAME_Find ) ) )
{
// we only need the non-light-mapped, base pass, local vertex factory shaders for drawing an opaque Material Tile
// @todo: Added a FindShaderType by fname or something"
2014-08-25 14:41:54 -04:00
if ( IsMobilePlatform ( Platform ) )
2014-03-14 14:13:41 -04:00
{
2014-07-10 10:39:54 -04:00
if ( FCString : : Stristr ( ShaderType - > GetName ( ) , TEXT ( " BasePassForForwardShadingVSFNoLightMapPolicy " ) ) | |
FCString : : Stristr ( ShaderType - > GetName ( ) , TEXT ( " BasePassForForwardShadingPSFNoLightMapPolicy " ) ) )
{
return true ;
}
2014-03-14 14:13:41 -04:00
}
2014-07-10 10:39:54 -04:00
else
2014-03-14 14:13:41 -04:00
{
2014-07-10 10:39:54 -04:00
if ( FCString : : Stristr ( ShaderType - > GetName ( ) , TEXT ( " BasePassVSFNoLightMapPolicy " ) ) | |
FCString : : Stristr ( ShaderType - > GetName ( ) , TEXT ( " BasePassHSFNoLightMapPolicy " ) ) | |
FCString : : Stristr ( ShaderType - > GetName ( ) , TEXT ( " BasePassDSFNoLightMapPolicy " ) ) )
{
return true ;
}
else if ( FCString : : Stristr ( ShaderType - > GetName ( ) , TEXT ( " BasePassPSFNoLightMapPolicy " ) ) )
{
return true ;
}
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3028916)
#lockdown nick.penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3006483 on 2016/06/08 by Simon.Tovey
Fix for UE-31653
Instance params from the Spawn, Required and TypeData modules were not being autopopulated.
Change 3006514 on 2016/06/08 by Zabir.Hoque
MIGRATING FIX @ Request
Off by 1 error on reflection roughness calculation affecting 4.12. When I hoisted the max mip index i did a -1 on both sides(c++ & hlsl). This is the simplest hotfix. In 4.13 I'll remove the shader instruction and only do the "-1" in c++ this 1 less shader instruction.
#CodeReview: Marcus.Wassmer, Daniel.Wright
Change 3006605 on 2016/06/08 by Rolando.Caloca
DR - vk - Remove a bunch of unused code, clean up some todos
Change 3006969 on 2016/06/08 by HaarmPieter.Duiker
Add #ifdefs around inverse tonemapping to avoid performance hit in normal use
Change 3007240 on 2016/06/09 by Chris.Bunner
Made a pass at fixing global shader compile warnings and errors.
Change 3007242 on 2016/06/09 by Chris.Bunner
Don't force unlit mode when re-loading a map.
#jira UE-31247
Change 3007243 on 2016/06/09 by Chris.Bunner
Cache InvalidLightmapSettings material for instanced meshes.
#jira UE-31182
Change 3007258 on 2016/06/09 by Chris.Bunner
Fixed refractive depth bias material parameter.
Change 3007466 on 2016/06/09 by Rolando.Caloca
DR - Use vulkan debug marker extension directly from header
Change 3007504 on 2016/06/09 by Martin.Mittring
added refresh button to ImageVerifier
Change 3007528 on 2016/06/09 by Martin.Mittring
ALU optimization to SSR, minor perf difference on NVTitan, needs to to be profiled on lower end
make render more deterministic
Change 3007551 on 2016/06/09 by Chris.Bunner
Reverted constant type change in previous commit.
Change 3007559 on 2016/06/09 by Martin.Mittring
updated ImageValidator
Change 3007584 on 2016/06/09 by Rolando.Caloca
DR - Fix case when not running under RD
Change 3007668 on 2016/06/09 by Rolando.Caloca
DR - vk - Split layers/extensions by required/optional
Change 3007820 on 2016/06/09 by Rolando.Caloca
DR - Android compile fix
Change 3007926 on 2016/06/09 by Martin.Mittring
fixed UI scaling in ImageVerifyer
Change 3007931 on 2016/06/09 by John.Billon
-Fixed cutouts not working for certain sized texture/subUV size combinations.
-Also fixed issue with subUV module not being postloaded consistently on startup.
#Jira UE-31583
Change 3008023 on 2016/06/09 by Martin.Mittring
refactor noise code in shaders
Change 3008127 on 2016/06/09 by Zabir.Hoque
Merging back hot fixes:
1. Fix DX12 crashing due to oclusion queries waiting on incorrect sync point. Integrating change from MS.
2. Immediate context should flush directly and not attempt to flush the immediate context, ie. itself.
Change 3008129 on 2016/06/09 by Daniel.Wright
Disabled r.ProfileGPU.PrintAssetSummary by default due to spam
Change 3008169 on 2016/06/09 by Rolando.Caloca
DR - Fix mobile rendering not freeing resource when using RHI thread
Change 3008429 on 2016/06/09 by Uriel.Doyon
Enabled texture streaming new metrics.
Added progress bar while texture streaming is being built.
Added debug shader validation to prevent crashes when there are uniform expression set mismatches.
Added texture streaming build to "Build All"
Change 3008436 on 2016/06/09 by Uriel.Doyon
Fixed shipping build
Change 3008833 on 2016/06/10 by Rolando.Caloca
DR - Allow RenderTargets to be easily shared via GPU to other DX or OpenGL applications
Submitted by Allar
PR #1864
#jira UE-24545
Change 3008842 on 2016/06/10 by Rolando.Caloca
DR - Remove vertex densities view mode
Change 3008857 on 2016/06/10 by John.Billon
Added a PostLoad to ParticleModuleSubUV to call postload on the SubUV animation to ensure that the animation is loaded in time for caching.
Change 3008870 on 2016/06/10 by Rolando.Caloca
DR - Rebuild hlslcc libs (missing from last merge)
Change 3008925 on 2016/06/10 by John.Billon
Fixed r.ScreenPercentage.Editor
#Jira UE-31549
Change 3009028 on 2016/06/10 by Daniel.Wright
Shadow depth refactor
* Shadow setup and render target allocation now happens in InitViews, and shadow depth rendering happens at one spot in the frame
* This provides control over where shadow depths are rendered for things like async compute, and allows easy atlasing of shadowmaps for forward shading
* The 33Mb of shadow depth buffers in FSceneRenderTargets has been removed, and shadow depth buffers are now allocated as needed
* A large amount of duplicated code to handle each shadow type has been combined
* Cleaner parallel rendering: no more view hacking for the shadow depth pass, no more shadow depths in the middle of translucency
* 'vis ShadowDepthAtlas' or 'vis WholeSceneShadowMap' must now be used to visualize the shadow depth textures
Change 3009032 on 2016/06/10 by Daniel.Wright
Fixed crash with simple forward shading in the material editor
Change 3009178 on 2016/06/10 by Rolando.Caloca
DR - Add support for multi callbacks on HlslParser, added a write to string callback
Change 3009268 on 2016/06/10 by Daniel.Wright
Warning fixes
Change 3009416 on 2016/06/10 by Martin.Mittring
moved decal rendering code in common spot for upcoming MeshDecal rendering
Change 3009433 on 2016/06/10 by John.Billon
Adding ensures for translucency lighting volume render target acesses.
#Jira UE-31578
Change 3009449 on 2016/06/10 by Daniel.Wright
Fixed whole scene point light shadow depths getting rendered redundantly
Change 3009675 on 2016/06/10 by Martin.Mittring
fixed Clang compiling
Change 3009815 on 2016/06/10 by Martin.Mittring
renamed IsUsedWithDeferredDecal to IsDeferredDecal
to be more correct
Change 3009946 on 2016/06/10 by Martin.Mittring
minor optimization
Change 3010270 on 2016/06/11 by HaarmPieter.Duiker
Update gamut transformations used when dumping EXRs to account for bug UE-29935
Change 3011423 on 2016/06/13 by Martin.Mittring
fixed default of bOutputsVelocityInBasePass
#code_review:Rolando.Caloca
#test:PC
Change 3011448 on 2016/06/13 by Martin.Mittring
minor engine code cleanup
#code_review:Olaf.Piesche
#test:PC
Change 3011991 on 2016/06/13 by Daniel.Wright
Fixed downsampled translucency crash in VR
Change 3011993 on 2016/06/13 by Daniel.Wright
Stationary Mobility for primitive components is allowed again, with the meaning 'moves rarely'
Mobility tooltips now reflect whether a primitive component or light component is being inspected
Change 3012096 on 2016/06/13 by Daniel.Wright
Missing file from cl 3011993
Change 3012546 on 2016/06/14 by John.Billon
Added r.ContactShadows.Enable CVar to allow contact shadows to be globally disabled/enabled
#Jira OR-23282
Change 3012706 on 2016/06/14 by John.Billon
Renamed r.ContactShadows.Enable to r.ContactShadows
Change 3012992 on 2016/06/14 by Rolando.Caloca
DR - vk - Fixed backbuffer/swapchain order with RHI thread enabled
- Added support for CustomPresent
Change 3013030 on 2016/06/14 by Rolando.Caloca
DR - vk - Fix dev issue
Change 3013423 on 2016/06/14 by Martin.Mittring
removed code redundancy for easier upcoming changes
#test:PC
Change 3013451 on 2016/06/14 by Martin.Mittring
removed no longer needed debug cvar
#test:PC
Change 3013643 on 2016/06/14 by Zabir.Hoque
Fix API only being inlined in the cpp and not avaialble in the .h
Change 3013696 on 2016/06/14 by Olaf.Piesche
Adding missing quality level spawn rate scaling on GPU emitters
Change 3013736 on 2016/06/14 by Daniel.Wright
Cached shadowmaps for whole scene point and spot light shadows
* Controlled by 'r.Shadow.CacheWholeSceneShadows', defaults to enabled (7ms -> 1.5ms of shadow depths on Titan for ~20 lights)
* Primitives with Static or Stationary mobility have their depths cached, as long as the light is not moving
* Primitives with Movable mobility or using World Position Offset in their materials will not have their depths cached
* Cached shadowmaps are copied each frame and then movable primitive depths composited
* Fast paths exist for when there were no static primitives (skip cached shadowmap) or movable primitives (project directly from cached shadowmap)
* 'r.Shadow.CacheWPOPrimitives' controls whether materials using WPO can be cached (default is off for correctness)
* 'r.Shadow.CachedShadowsCastFromMovablePrimitives' can be used to force off all support for movable primitives, skipping the shadowmap copies (1.5ms -> 0ms of shadow depths for ~20 lights)
Change 3014103 on 2016/06/15 by Daniel.Wright
Compile fix
Change 3014507 on 2016/06/15 by Simon.Tovey
Resurrected Niagara playground and moved to Samples/NotForLicencees
Change 3014931 on 2016/06/15 by Martin.Mittring
moved r.RenderInternals code into renderer to be able to access more low level data
#test:PC, paragon
Change 3014933 on 2016/06/15 by Martin.Mittring
nicer text
Change 3014956 on 2016/06/15 by Daniel.Wright
Fixed HLOD and mesh LODs getting hit by Lightmass ray traces that didn't originate from a mesh
Volume lighting samples and precomputed visibility cells are now only placed on LOD0 (of both mesh LODs and HLOD)
Change 3014985 on 2016/06/15 by Uriel.Doyon
Enabled Texture Build shaders on Mac
Exposed IStreamingManager::AddViewSlaveLocation in ENGINE_API
Fixed issue FStreamingManagerTexture::ConditionalUpdateStaticData which would to update some data in shipping.
Fixed r.Streaming.MipBias not affecting maximum allowed resolution, showing warnings of texture streaming overbudgets
#jira UE-30566
#jira UE-31098
Change 3014995 on 2016/06/15 by Rolando.Caloca
DR - vk - Removed RHI thread wait on acquire image
- Move Descriptor pool into context
Change 3015002 on 2016/06/15 by Rolando.Caloca
DR - Add (disabled) additional cvar for r.DumpShaderDebugWorkerCommandLine
Change 3015041 on 2016/06/15 by Martin.Mittring
fixed ImageValidator crashing when using files that exist only in ref or test folder
Change 3015309 on 2016/06/15 by Rolando.Caloca
DR - vk - Enable fence re-use on SDKs >= 1.0.16.0
Change 3015356 on 2016/06/15 by Rolando.Caloca
DR - vk - Prep for staging buffer refactor
Change 3015430 on 2016/06/15 by Martin.Mittring
minor optimization for subsurfacescatteringprofile
Change 3016097 on 2016/06/16 by Simon.Tovey
Enabling Niagara by default in the Niagara playground
Change 3016098 on 2016/06/16 by Simon.Tovey
Some misc fixup to get niagara working again
Change 3016183 on 2016/06/16 by Rolando.Caloca
DR - vk - Recreate buffer view for volatile buffers
Change 3016225 on 2016/06/16 by Marcus.Wassmer
Duplicate reflection fixes from 4.12 hotfixes.
Change 3016289 on 2016/06/16 by Chris.Bunner
Always gather MP_Normal definitions as they can be shared by other material properties.
#jira UE-31792
Change 3016294 on 2016/06/16 by Daniel.Wright
Fix for ensure accessing CVarCacheWPOPrimitives in game
Change 3016305 on 2016/06/16 by Daniel.Wright
Raised r.Shadow.CSM.MaxCascades to 10 on Epic scalability level, which it should have always been
Change 3016330 on 2016/06/16 by Daniel.Wright
Cached shadowmaps are tossed after 5s of not being used for rendering - helps in the case where you fly through a bunch of lights and never look back
Skipping shadow depth cubemap clear if there will be a cached shadowmap copy later - saves .4ms on PS4 for a close up point light
Stats for shadowmap memory used under 'stat shadowrendering'
Change 3016506 on 2016/06/16 by Daniel.Wright
Fixed crash building map in SunTemple due to null access
Change 3016703 on 2016/06/16 by Uriel.Doyon
Fixed warning due to floating point imprecision when building texture streaming
Change 3016718 on 2016/06/16 by Daniel.Wright
Volume lighting samples use adaptive sampling final gather
* Increases their build time by 2x but improves quality in difficult cases (small bright sources of bounce lighting)
Change 3016871 on 2016/06/16 by Max.Chen
Sequencer: Added support for the named "PerformanceCapture" event which like Matinee, calls GEngine->PerformanceCapture to output a screenshot when the event fires. Refactor event track/sections so that the player is passed to the trigger events evaluation.
Copy from Dev-Sequencer
#jira UE-32093
Change 3017189 on 2016/06/16 by Zabir.Hoque
Fix GBuffer format selection type-o.
#CodeReview: Marcus.Wassmer
Change 3017241 on 2016/06/16 by Martin.Mittring
optimized and cleaned up rendering in transluceny, distortion, custom mesh drawing
#code_review:Daniel.Wright, Marcus.Wassmer, Nick.Penwarden
Change 3017856 on 2016/06/17 by Rolando.Caloca
DR - Missing GL enum
Change 3017910 on 2016/06/17 by Ben.Woodhouse
- Added a Video Buffer to ensure smooth submission of frames from CEF. Without this, we can get multiple texture updates per engine frame, which causes stuttering at high framerates
- Disable hardware acceleration on Windows, since this causes severe performance issues with video rendering
Please note: To actually see 60fps video, you need to ensure the browser frame rate passed into FWebBrowserSingleton::CreateBrowserWindow is set to 60 (default is 24)
#RB:Keli.Hloedversson,Martin.Mittring
Change 3018126 on 2016/06/17 by Ben.Woodhouse
Fix build warning on Mac
#RB:David.Hill
Change 3018167 on 2016/06/17 by Chris.Bunner
Handle case when float4 is passed to TransformPosition material node.
#jira UE-24980
Change 3018246 on 2016/06/17 by Benjamin.Hyder
Submitting Preliminary ShadowRefactor TestMap
Change 3018330 on 2016/06/17 by Benjamin.Hyder
labeled ShadowRefactor map
Change 3018377 on 2016/06/17 by Chris.Bunner
Removed additional node creation when initializing a RotateAboutAxis node.
#jira UE-8034
Change 3018433 on 2016/06/17 by Rolando.Caloca
DR - Fix some clang warnings on Vulkan
Change 3018664 on 2016/06/17 by Martin.Mittring
unified some code for easier maintainance, fixed missing multiply from former change (CL 2933812)
#test:PC
#code_review:Marcus.Wassmer,Brian.Karis
Change 3019023 on 2016/06/19 by Benjamin.Hyder
Re-Labeled ShadowRefactor map
Change 3019024 on 2016/06/19 by Benjamin.Hyder
Correcting Translucent Volume (Non-Directional) settings
Change 3019026 on 2016/06/19 by Benjamin.Hyder
Correcting Lighting ShadowRefactor map
Change 3019414 on 2016/06/20 by Allan.Bentham
Refactor mobile shadows
Change 3019494 on 2016/06/20 by Gil.Gribb
Merging //UE4/Dev-Main@3018959 to Dev-Rendering (//UE4/Dev-Rendering)
Change 3019504 on 2016/06/20 by John.Billon
-Created a blueprint node (ExportRenderTarget and ExportTexture2D) to export render targets/textures as HDR images to disk.
-Moved HDR export code(FHDRExportHelper and CubemapUnwrapUtils) to runtime from editor to allow access from blueprints.
-Created a small common interface for blueprints and the editor itself to use for exporting.
#Jira UE-31429
Change 3019561 on 2016/06/20 by Gil.Gribb
UE4 - Worked around afulness of windows scheduler. This would occasionally cause hitches on quad core machines with additional load in the tick task manager.
Change 3019616 on 2016/06/20 by Rolando.Caloca
DR - Replicate change in DevRendering to fix splotches on characters with morph targets
Change: 3019599
O - Fix flickering on heroes with morph targets
Change 3019627 on 2016/06/20 by Rolando.Caloca
DR - Doh! Compile fix
Change 3019674 on 2016/06/20 by Simon.Tovey
Ripped out the quick hacky VM debugger I wrote a while back.
Over complicated the VM and didn't do enough work to justify it.
Will revisit debugging and profiling of VM scripts in future.
Change 3019691 on 2016/06/20 by Ben.Woodhouse
Add a per-object shadow setting for directional lights (r.Shadow.PerObjectDirectionalDepthBias), which is independent of the CSM setting. Often a smaller bias is desirable on per-object shadows, where detailed self-shadowing is needed.
This change also makes the CSM naming consistent with what the setting actually does (the old setting was named r.shadow.csm, although it affects per-object shadows as well as CSMs).
#RB:Martin.Mittring, Daniel.Wright
Change 3019741 on 2016/06/20 by John.Billon
Fixed compile error on mac.
Change 3019984 on 2016/06/20 by Martin.Mittring
minor optimization
Change 3020172 on 2016/06/20 by Zachary.Wilson
Fixing mesh distance fields for engine content cube and cylinder by setting distance field resolution to 2. for UE-26783 #rb: none
Change 3020195 on 2016/06/20 by Zachary.Wilson
Fixing engine coontent sphere's distance fields for UE-26783, distance fields resolution set to 2. #rb: none
Change 3020196 on 2016/06/20 by Rolando.Caloca
DR - Appease static analysis
Change 3020231 on 2016/06/20 by Zachary.Wilson
Making basic shapes consistent distance field resolution scale. #rb: none
Change 3020468 on 2016/06/20 by David.Hill
CameraWS UE-29146
Change 3020502 on 2016/06/20 by Benjamin.Hyder
Adding AutomationMatinee Camera for RenderOutputValidation
Change 3020508 on 2016/06/20 by Benjamin.Hyder
Adding AutomationMatinee for RenderOutputValidation
Change 3020514 on 2016/06/20 by Benjamin.Hyder
Setting Autoplay for AutomationMatinee (sequence)
Change 3020561 on 2016/06/20 by Daniel.Wright
Removed outdated comment on uniform expression assert
Change 3021268 on 2016/06/21 by Daniel.Wright
Scaled sphere intersection for indirect capsule shadows
* Fixes the discontinuity when capsule axis points close to the light direction
* GPU cost is effectively the same (more expensive to compute, but tighter culling)
Change 3021325 on 2016/06/21 by Daniel.Wright
Split ShadowRendering.cpp into ShadowDepthRendering.cpp
Change 3021355 on 2016/06/21 by Daniel.Wright
Fixed RTDF shadows (broken by shadowmap caching)
Change 3021444 on 2016/06/21 by Daniel.Wright
Fixed crash due to Depth drawing policy not using the default material shader map properly
Change 3021543 on 2016/06/21 by Daniel.Wright
Fixed drawing to a Canvas after EndDrawCanvasToRenderTarget causing a crash
Fixed DrawMaterialToRenderTarget breaking the Canvas object that BeginDrawCanvasToRenderTarget returns
Change 3021749 on 2016/06/21 by Daniel.Wright
Moved RenderBasePass and dependencies into BasePassRendering.cpp
Moved RenderPrePass and dependencies into DepthRendering.cpp
Change 3021766 on 2016/06/21 by Benjamin.Hyder
Adding 150dynamiclights level to Dev-Folder
Change 3021971 on 2016/06/21 by Daniel.Wright
Removed the CPU-culled light grid which is used to implement TLM_SurfacePerPixelLighting, in preparation for a GPU-culled light grid implementation
* TLM_SurfacePerPixelLighting now behaves like TLM_Surface
Change 3022760 on 2016/06/22 by Chris.Bunner
Merge fixup.
Change 3022911 on 2016/06/22 by Rolando.Caloca
DR - Added r.D3DDumpD3DAsmFile to enable dumping the fxc disassembly when dumping shaders
Change 3023037 on 2016/06/22 by Rolando.Caloca
DR - Fix for the case of global destructors calling FlushRenderingCommands() after the RHI has been destroyed
Change 3023139 on 2016/06/22 by Daniel.Wright
Added on screen message for when VisualizeMeshDistanceFields is requested but engine scalability settings have DFAO disabled
Change 3023231 on 2016/06/22 by Daniel.Wright
Only allowing opaque per-object shadows or CSM in the mobile renderer
Change 3023415 on 2016/06/22 by Daniel.Wright
Fix crash in dx12 trying to clear stencil when there is no stencil in the depth target
Change 3024888 on 2016/06/23 by Daniel.Wright
Fixed preshadows being rendered redundantly with multiple lights
Change 3025119 on 2016/06/23 by Martin.Mittring
added MeshDecal content to RenderTest
Change 3025122 on 2016/06/23 by Martin.Mittring
enabled DBuffer for RenderTest
Change 3025153 on 2016/06/23 by Marc.Olano
Fix Spherical Particle Opacity. Particles using this stopped rendering sometime after 4.10.
Needed to use world space without shader offsets, not absolute world space.
Change 3025180 on 2016/06/23 by Marc.Olano
Use translated world space for particle centers.
Better fix for Spherical Particle Opacity problems, but with fingers in more pies. Includes rename of particle center vertex factory variables.
Change 3025265 on 2016/06/23 by David.Hill
Bilbords translucent during PIE - lighting model was incorrectly set in gbuffer
#jira UE-26165
Change 3025269 on 2016/06/23 by Ryan.Brucks
Adding new Testmap for Pixel Depth Offset velocities with Temporal AA
Change 3025345 on 2016/06/23 by Benjamin.Hyder
Submitting MeshDecal Content
Change 3025444 on 2016/06/23 by Benjamin.Hyder
updating content for MeshDecal
Change 3025491 on 2016/06/23 by Benjamin.Hyder
Updating DecalMesh Textures
Change 3025802 on 2016/06/23 by Martin.Mittring
added to readme
Change 3026475 on 2016/06/24 by Rolando.Caloca
DR - Show current state of r.RHIThread.Enable when not using param
Change 3026479 on 2016/06/24 by Rolando.Caloca
DR - Upgrade glslang to 1.0.17.0
Change 3026480 on 2016/06/24 by Rolando.Caloca
DR - Vulkan headers to 1.0.17.0
Change 3026481 on 2016/06/24 by Rolando.Caloca
DR - Vulkan wrapper for extra logging
Change 3026491 on 2016/06/24 by Rolando.Caloca
DR - Missed file
Change 3026574 on 2016/06/24 by Rolando.Caloca
DR - vk - Enabled fence reuse on 1.0.17.0
- Added more logging info
Change 3026656 on 2016/06/24 by Frank.Fella
Niagara - Prevent sequencer uobjects from being garbage collected.
Change 3026657 on 2016/06/24 by Benjamin.Hyder
Updating Rendertestmap to latest
Change 3026723 on 2016/06/24 by Rolando.Caloca
DR - Fix for ES3.1 RHIs
Change 3026784 on 2016/06/24 by Martin.Mittring
New feature: Mesh Decals / Material layers (Chris.Bunner is the goto person on MeshDecals from now on)
Change 3026866 on 2016/06/24 by Olaf.Piesche
#jira OR-18363
#jira UE-27780
fix distortion in particle macro uvs
[CL 3028922 by Gil Gribb in Main branch]
2016-06-27 13:42:20 -04:00
else if ( FCString : : Stristr ( ShaderType - > GetName ( ) , TEXT ( " Simple " ) ) )
{
return true ;
}
2014-03-14 14:13:41 -04:00
}
}
return false ;
}
2015-01-13 19:47:46 -05:00
int32 FMatExpressionPreview : : CompilePropertyAndSetMaterialProperty ( EMaterialProperty Property , FMaterialCompiler * Compiler , EShaderFrequency OverrideShaderFrequency , bool bUsePreviousFrameTime ) const
2014-03-14 14:13:41 -04:00
{
2014-07-11 15:14:35 -04:00
// needs to be called in this function!!
2015-01-13 19:47:46 -05:00
Compiler - > SetMaterialProperty ( Property , OverrideShaderFrequency , bUsePreviousFrameTime ) ;
2014-07-11 15:14:35 -04:00
int32 Ret = INDEX_NONE ;
2014-03-14 14:13:41 -04:00
if ( Property = = MP_EmissiveColor & & Expression . IsValid ( ) )
{
// Hardcoding output 0 as we don't have the UI to specify any other output
const int32 OutputIndex = 0 ;
// Get back into gamma corrected space, as DrawTile does not do this adjustment.
2014-07-11 15:14:35 -04:00
Ret = Compiler - > Power ( Compiler - > Max ( Expression - > CompilePreview ( Compiler , OutputIndex , - 1 ) , Compiler - > Constant ( 0 ) ) , Compiler - > Constant ( 1.f / 2.2f ) ) ;
2014-03-14 14:13:41 -04:00
}
2015-01-13 19:47:46 -05:00
else if ( Property = = MP_WorldPositionOffset )
2014-03-14 14:13:41 -04:00
{
//set to 0 to prevent off by 1 pixel errors
2014-07-11 15:14:35 -04:00
Ret = Compiler - > Constant ( 0.0f ) ;
2014-03-14 14:13:41 -04:00
}
else if ( Property > = MP_CustomizedUVs0 & & Property < = MP_CustomizedUVs7 )
{
const int32 TextureCoordinateIndex = Property - MP_CustomizedUVs0 ;
2014-07-11 15:14:35 -04:00
Ret = Compiler - > TextureCoordinate ( TextureCoordinateIndex , false , false ) ;
2014-03-14 14:13:41 -04:00
}
else
{
2014-07-11 15:14:35 -04:00
Ret = Compiler - > Constant ( 1.0f ) ;
2014-03-14 14:13:41 -04:00
}
2014-07-11 15:14:35 -04:00
// output should always be the right type for this property
return Compiler - > ForceCast ( Ret , GetMaterialPropertyType ( Property ) ) ;
2014-03-14 14:13:41 -04:00
}
void FMatExpressionPreview : : NotifyCompilationFinished ( )
{
if ( Expression . IsValid ( ) & & Expression - > GraphNode )
{
CastChecked < UMaterialGraphNode > ( Expression - > GraphNode ) - > bPreviewNeedsUpdate = true ;
}
}
2014-04-02 18:09:23 -04:00
/////////////////////
// FMaterialEditor //
/////////////////////
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
void FMaterialEditor : : RegisterTabSpawners ( const TSharedRef < class FTabManager > & InTabManager )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
WorkspaceMenuCategory = InTabManager - > AddLocalWorkspaceMenuCategory ( LOCTEXT ( " WorkspaceMenu_MaterialEditor " , " Material Editor " ) ) ;
2014-10-09 12:34:55 -04:00
auto WorkspaceMenuCategoryRef = WorkspaceMenuCategory . ToSharedRef ( ) ;
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
FAssetEditorToolkit : : RegisterTabSpawners ( InTabManager ) ;
2014-10-09 12:34:55 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
InTabManager - > RegisterTabSpawner ( PreviewTabId , FOnSpawnTab : : CreateSP ( this , & FMaterialEditor : : SpawnTab_Preview ) )
2014-03-14 14:13:41 -04:00
. SetDisplayName ( LOCTEXT ( " ViewportTab " , " Viewport " ) )
2014-10-09 12:34:55 -04:00
. SetGroup ( WorkspaceMenuCategoryRef )
. SetIcon ( FSlateIcon ( FEditorStyle : : GetStyleSetName ( ) , " LevelEditor.Tabs.Viewports " ) ) ;
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
InTabManager - > RegisterTabSpawner ( GraphCanvasTabId , FOnSpawnTab : : CreateSP ( this , & FMaterialEditor : : SpawnTab_GraphCanvas ) )
2014-03-14 14:13:41 -04:00
. SetDisplayName ( LOCTEXT ( " GraphCanvasTab " , " Graph " ) )
2014-10-09 12:34:55 -04:00
. SetGroup ( WorkspaceMenuCategoryRef )
. SetIcon ( FSlateIcon ( FEditorStyle : : GetStyleSetName ( ) , " GraphEditor.EventGraph_16x " ) ) ;
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
InTabManager - > RegisterTabSpawner ( PropertiesTabId , FOnSpawnTab : : CreateSP ( this , & FMaterialEditor : : SpawnTab_MaterialProperties ) )
2014-03-14 14:13:41 -04:00
. SetDisplayName ( LOCTEXT ( " DetailsTab " , " Details " ) )
2014-10-09 12:34:55 -04:00
. SetGroup ( WorkspaceMenuCategoryRef )
. SetIcon ( FSlateIcon ( FEditorStyle : : GetStyleSetName ( ) , " LevelEditor.Tabs.Details " ) ) ;
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
InTabManager - > RegisterTabSpawner ( PaletteTabId , FOnSpawnTab : : CreateSP ( this , & FMaterialEditor : : SpawnTab_Palette ) )
2014-04-23 18:21:07 -04:00
. SetDisplayName ( LOCTEXT ( " PaletteTab " , " Palette " ) )
2014-10-09 12:34:55 -04:00
. SetGroup ( WorkspaceMenuCategoryRef )
. SetIcon ( FSlateIcon ( FEditorStyle : : GetStyleSetName ( ) , " Kismet.Tabs.Palette " ) ) ;
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
InTabManager - > RegisterTabSpawner ( StatsTabId , FOnSpawnTab : : CreateSP ( this , & FMaterialEditor : : SpawnTab_Stats ) )
2014-04-23 18:21:07 -04:00
. SetDisplayName ( LOCTEXT ( " StatsTab " , " Stats " ) )
2014-10-09 12:34:55 -04:00
. SetGroup ( WorkspaceMenuCategoryRef )
. SetIcon ( FSlateIcon ( FEditorStyle : : GetStyleSetName ( ) , " LevelEditor.Tabs.StatsViewer " ) ) ;
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
InTabManager - > RegisterTabSpawner ( FindTabId , FOnSpawnTab : : CreateSP ( this , & FMaterialEditor : : SpawnTab_Find ) )
2014-04-23 18:21:07 -04:00
. SetDisplayName ( LOCTEXT ( " FindTab " , " Find Results " ) )
2014-10-09 12:34:55 -04:00
. SetGroup ( WorkspaceMenuCategoryRef )
. SetIcon ( FSlateIcon ( FEditorStyle : : GetStyleSetName ( ) , " Kismet.Tabs.FindResults " ) ) ;
2014-04-23 18:21:07 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
InTabManager - > RegisterTabSpawner ( HLSLCodeTabId , FOnSpawnTab : : CreateSP ( this , & FMaterialEditor : : SpawnTab_HLSLCode ) )
2014-03-14 14:13:41 -04:00
. SetDisplayName ( LOCTEXT ( " HLSLCodeTab " , " HLSL Code " ) )
2015-04-30 16:52:00 -04:00
. SetGroup ( WorkspaceMenuCategoryRef )
. SetIcon ( FSlateIcon ( FEditorStyle : : GetStyleSetName ( ) , " MaterialEditor.Tabs.HLSLCode " ) ) ;
2015-05-21 14:20:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
OnRegisterTabSpawners ( ) . Broadcast ( InTabManager ) ;
2014-03-14 14:13:41 -04:00
}
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
void FMaterialEditor : : UnregisterTabSpawners ( const TSharedRef < class FTabManager > & InTabManager )
2014-03-14 14:13:41 -04:00
{
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
FAssetEditorToolkit : : UnregisterTabSpawners ( InTabManager ) ;
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
InTabManager - > UnregisterTabSpawner ( PreviewTabId ) ;
InTabManager - > UnregisterTabSpawner ( GraphCanvasTabId ) ;
InTabManager - > UnregisterTabSpawner ( PropertiesTabId ) ;
InTabManager - > UnregisterTabSpawner ( PaletteTabId ) ;
InTabManager - > UnregisterTabSpawner ( StatsTabId ) ;
InTabManager - > UnregisterTabSpawner ( FindTabId ) ;
InTabManager - > UnregisterTabSpawner ( HLSLCodeTabId ) ;
2015-05-21 14:20:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2945310 on 2016/04/15 by Jon.Nabozny
Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked.
#JIRA UE-29368
Change 2945490 on 2016/04/15 by Jon.Nabozny
Remove extraneous changes introduced in CL-2945310.
Change 2946706 on 2016/04/18 by James.Golding
Checkin of slice test assets
Change 2947895 on 2016/04/19 by Benn.Gallagher
PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom)
#jira UE-29567
Change 2947944 on 2016/04/19 by Benn.Gallagher
Fixed a few extra needless bone container copies
Change 2948279 on 2016/04/19 by Marc.Audy
Add well defined Map and Set Property names
Change 2948280 on 2016/04/19 by Marc.Audy
Properly name parameters
Change 2948792 on 2016/04/19 by Marc.Audy
Remove unused ini class name settings
Change 2948917 on 2016/04/19 by Aaron.McLeran
UE-29654 FadeIn invalidates Audio Components in 4.11
Change 2949567 on 2016/04/20 by James.Golding
- Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half
- Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used
- Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace.
- Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary
- Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function
Change 2950482 on 2016/04/20 by Aaron.McLeran
FORT-22973 SoundMix Fade Time not fading audio properly
- Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes.
Change 2951102 on 2016/04/21 by Thomas.Sarkanen
Un-deprecated blueprint functions for attachment/detachment
Renamed functions to <FuncName> (Deprecated).
Hid functions in the BP context menu so new ones cant be added.
#jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled.
Change 2951173 on 2016/04/21 by James.Golding
Fix cap geom generation when more than one polygon is generated
Fix CIS warning in KismetProceduralMeshLibrary.cpp
Change 2951334 on 2016/04/21 by Osman.Tsjardiwal
Add CapMaterial param to SliceProceduralMesh util
Change 2951528 on 2016/04/21 by Marc.Audy
Fix spelling errors in comments
Change 2952933 on 2016/04/22 by Lukasz.Furman
fixed behavior tree getting stuck on instantly finished gameplay tasks
copy of CL# 2952930
Change 2953948 on 2016/04/24 by James.Golding
Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor)
Change 2954558 on 2016/04/25 by Marc.Audy
Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp
#jira UE-29038
Change 2954865 on 2016/04/25 by Aaron.McLeran
UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types.
Change 2955009 on 2016/04/25 by Zak.Middleton
#ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf.
Change 2955878 on 2016/04/26 by Benn.Gallagher
[Epic Friday] - Added spherical constraints to anim dynamics
Change 2956380 on 2016/04/26 by Lina.Halper
PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance)
Change 2956383 on 2016/04/26 by Lina.Halper
Fixed to match coding standard
Change 2957866 on 2016/04/27 by Zak.Middleton
#ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log.
- Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update.
- "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging.
#tests QA-Surfaces multiplayer, walking in to moving objects and pawns.
Change 2957953 on 2016/04/27 by Aaron.McLeran
UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing.
Change 2958011 on 2016/04/27 by Jon.Nabozny
CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results.
#JIRA UE-29525
Change 2958321 on 2016/04/27 by Lukasz.Furman
path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests
Change 2959506 on 2016/04/28 by Aaron.McLeran
PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel)
Change 2959686 on 2016/04/28 by Marc.Audy
Correctly handle multiple viewpoints when significance is being sorted descending
Change 2959773 on 2016/04/28 by Marc.Audy
Fix shadowing warning
Change 2959785 on 2016/04/28 by Aaron.McLeran
UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances
Change 2960852 on 2016/04/29 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738
Change 2960946 on 2016/04/29 by Marc.Audy
Fix post merge compile error
Change 2962501 on 2016/05/02 by Marc.Audy
Remove interim GetMutableAttach accessors and use the variables directly now that they are private
Change 2962535 on 2016/05/02 by Marc.Audy
Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478
Change 2962578 on 2016/05/02 by Marc.Audy
Switch ObjectGraphMove to using UserFlags instead of custom move data
Change 2962651 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2962662 on 2016/05/02 by Lukasz.Furman
deprecated old implementation of gameplay debugger
#jira UE-30011
Change 2962919 on 2016/05/02 by Marc.Audy
VS2015 shadow variable fixes
Change 2963475 on 2016/05/02 by Mieszko.Zielinski
Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4
#jira UE-30176
Change 2964098 on 2016/05/03 by Marc.Audy
Spelling fix
Change 2964099 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964156 on 2016/05/03 by Marc.Audy
VS2015 shadow variable fixes
Change 2964272 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable fixes
Change 2964395 on 2016/05/03 by Marc.Audy
VS2015 Shadow Variable Fixes
Change 2964460 on 2016/05/03 by Marc.Audy
Reschedule coolingdown tick functions during pause frames.
#jira UE-30221
Change 2964666 on 2016/05/03 by Marc.Audy
Fix shipping compile error
[CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
OnUnregisterTabSpawners ( ) . Broadcast ( InTabManager ) ;
2014-03-14 14:13:41 -04:00
}
void FMaterialEditor : : InitEditorForMaterial ( UMaterial * InMaterial )
{
check ( InMaterial ) ;
OriginalMaterial = InMaterial ;
MaterialFunction = NULL ;
OriginalMaterialObject = InMaterial ;
ExpressionPreviewMaterial = NULL ;
// Create a copy of the material for preview usage (duplicating to a different class than original!)
// Propagate all object flags except for RF_Standalone, otherwise the preview material won't GC once
// the material editor releases the reference.
Copying //UE4/Dev-Framework to //UE4/Main @ 2775446
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2720537 on 2015/10/07 by Aaron.McLeran
Audio Optimization: Implementing an audio update delta time so audio isn't updated with every engine tick
Change 2746582 on 2015/10/29 by Aaron.McLeran
Implementing single ray-cast sound occlusion
- Fixing/Implementing sound occlusion using one ray cast
- Update rate of the ray cast is conifgurable by the user
- User can enabled/disable occlusion and set various properties of the occlusion at the audio component level
- Occlusion ray-casts are made at a slower rate than the audio engine is updated
- The following properties are supported:
* LowPassFilterFrequency (the LPF cutoff frequency of the per-voice filter to apply if a sound is occluded)
* OcclusionVolumeAttenuation (the volume attenuation to apply to sounds that are occluded)
* OcclusionInterpolationTime (how fast a sound moves from occluded to unoccluded... allows user-defined interpolation times, avoids fast parameter setting for smoother transitions)
- Fixed how low-pass filter frequency is applied on platforms that support it.
* Changed the older HighFrequencyGain parameter to a more understandable and correct LowPassFilterFrequency parameter
* Updated the parameter for the various other features that use per-voice LPF (e.g. audio volumes, distance-based filtering)
* Added backward-compatibility code to take old HighFrequencyGain params to new LowPassFilterFrequency params.
* At the lowest level, there is only one filter which is applied to a sound, but the parameter that has the lowest cutoff frequency is the one used
* Fixed how the parameter is applied at the lower-level in XAudio2 and CoreAudio. The old parameter was incorrectly applied.
* XAudio2 documentation on the low-pass-fitler frequency cutoff param is confirmed incorrect through testing.
#rb zak.middleton
Change 2765174 on 2015/11/12 by Aaron.McLeran
UE-23091 More fixage for NaN audio log spam
Last checkin for this (CL 2760896) was fixing a legit issue but there was still an issue that I was rarely catching during the FN gate encounter in AITestbed after about 5 min of gate defense.
To track down, I added a lot more logging and asserts on NaN numbers in the audio code, enabled ENABLE_NAN_DIAGNOSTIC in UnrealMathUtility.h.
- Was able to trace another cause of the NaNs in audio to 2 uninitialized variables in SoundAttenuationSettings struct: OmniRadius and StereoSpread.
- Zak M suggested the change of the const ref position vector in ListenerPosition and the usage of GetSafeNormal() in Audio.cpp since the value returned by GetLocation() is a temporary and Normalize() is unsafe.
- I removed the flag for the XAudio2 call to compute doppler since we don't use that value and it could've been as source of more NaNs in X3DAudioCalculate
#codereview Zak.Middleton
#rb Zak.Middleton
Change 2765467 on 2015/11/13 by James.Golding
- Allow -ms option to work with 'stat dumphitches' for controlling min time logged
#rb gil.gribb
Change 2765746 on 2015/11/13 by Benn.Gallagher
Added buckets for update rate shift tags (for staggering anim updates)
#jira UE-23213
#rb Bruce.Nesbit
Change 2765747 on 2015/11/13 by Benn.Gallagher
Fixes for bone length calculation in anim dynamics chains.
#rb Bruce.Nesbit
Change 2765749 on 2015/11/13 by Benn.Gallagher
Removed allocations from local CS blends for skeletal controls.
#rb Bruce.Nesbit
Change 2765752 on 2015/11/13 by Benn.Gallagher
Lod mapping support for URO customization
#jira UE-23211
#rb Bruce.Nesbit
Change 2765965 on 2015/11/13 by Marc.Audy
Remove outdated code in LoadMap previously used for matching up downloaded packages from servers. These code paths no longer operate, but in the case where a PIE client was connecting to a non-PIE server (not really supported, but possible), it would cause the Editor Level package to be flagged as as PIE package and cause a crash on exit of PIE
#jira UE-21181
#rb Josh.Markiewicz
Change 2766071 on 2015/11/13 by Mieszko.Zielinski
Fixed dumb mistake in AEQSTestingPawn::PostLoad #UE4
the 'bTickDuringGame == bTickDuringGame' thing
#rb John.Abercrombie
Change 2766086 on 2015/11/13 by Mieszko.Zielinski
Exposing NavModifierComponent to ENGINE_API #UE4
#codereview Lukasz.Furman
Change 2766345 on 2015/11/13 by Mieszko.Zielinski
No longer compiling AISystem's creation out from client builds #UE4
Instead AISystem's instantiation on clients is configurable via UAISystemBase::bInstantiateAISystemOnClient config variable
Change 2766346 on 2015/11/13 by Mieszko.Zielinski
Improvements to EQS test scoring function preview #UE4
#rb Lukasz.Furman
Change 2766528 on 2015/11/13 by Stan.Melax
multiple materials/chunks on a single cloth sim mesh
This supposedly used to work in 4.7 but broke for 4.8
It looks like previous change 2493547 may have introduced the condition statement that makes multiple materials not include all of there verts.
Changing this to instead check for the bounds on the skinningmap instead of the NumRealSimVerts which doesn't look like it takes the offset into consideration.
jira:
#UE-23300
https://jira.ol.epicgames.net/browse/UE-23300
https://answers.unrealengine.com/questions/287833/apex-not-working-on-multiple-materials-since-48.html
Double tested code change with test asset from https://jira.ol.epicgames.net/browse/UE-10674
#rb Benn.Gallagher
Change 2766546 on 2015/11/13 by Marc.Audy
Throw warning for orphaned looping sounds caused by a looping sound node
Don't do somewhat expensive (due to weak pointer) orphaned sound checks in test or shipping
#rb Aaron.McLeran
Change 2766917 on 2015/11/14 by Jurre.deBaare
Fix UE4-23349 Simplygon doens't support sub 64 pixel textures
Change 2767742 on 2015/11/16 by Marc.Audy
Restructure SignificanceManager to store significance manager references in a FGCObject Module class instead of using a singleton.
Improve performance by eliminating StaticFindObjectFast calls in ::Get and force inlining Get calls
#rb Zak.Middleton, Rob.Manuszewski
Change 2767827 on 2015/11/16 by Zak.Middleton
#ue4 - Perf: avoid SmoothClientPosition() calls once the target mesh offset has been reached.
- New flag bNetworkSmoothingComplete indicates whether smoothing has reached the destination. This is set to false when a new network position is received.
- Also fixes trying to smooth rotation towards identity rotation before receiving network updates.
- Deprecated FNetworkPredictionData_Client_Character::CurrentSmoothTime in favor of saving last update time, to prevent needing to update time every tick (since we skip updates now).
#rb Dan.Youhon
Change 2768070 on 2015/11/16 by Marc.Audy
Change StaticDuplicateObject and DuplicateObject to take FName instead of char* (existing usages can automatically convert to FName so no backwards compatibility issues)
Fixup usages to avoid unnecessary string -> char* -> name conversions
Change AActor::CreateComponentFromTemplate to take an FName instead of FString, deprecated FString version
#rb Gil.Gribb
Change 2768121 on 2015/11/16 by Marc.Audy
Forceinline GetFName
Change 2768161 on 2015/11/16 by Aaron.McLeran
Checking occlusion back in
- Bug was due to improper interpolation of LPFFrequency values in audio volumes.
Change 2769428 on 2015/11/17 by Thomas.Sarkanen
Fixed backwards-compatibility issues with FExposedValueCopyRecord
Added PostSerialize function to patch up older data to the new format (copies properties->property FNames).
Made sure to zero FExposedValueCopyRecord in its constructor, prevents uninitialized variable issues when generating CRCs. This is necessary despite these members being UPROPERTYs because they are simply built on the stack then stuffed into the new CDO during compilation.
UE-23268 - EDITOR CRASH: Assertion failed: ((UObject*)ContainerPtr)->IsA((UClass*)GetOuter())
#rb James.Golding
#codereview Mike.Beach,Bob.Tellez
Change 2769488 on 2015/11/17 by Benn.Gallagher
DrawCanvas and debug string support for skeletal controls - accessed using "Skeletal Controls" option in Show->Display Info in Persona
#rb Martin.Wilson
Change 2769545 on 2015/11/17 by Benn.Gallagher
Added space conversion options to copy bone node.
#jira OR-9430
#rb Martin.Wilson
Change 2770228 on 2015/11/17 by Marc.Audy
Fix cause of assert firing when detaching if AttachTo(AttachParent) returns false
#rb Ori.Cohen
#jira UE-23366
Change 2770489 on 2015/11/17 by Marc.Audy
Make ::Serialize WITH_EDITORONLY_DATA since it did nothing otherwise
Change 2770761 on 2015/11/17 by Aaron.McLeran
Removing optimization disablement
- Forgot to remove these lines before checking in/testing.
Change 2771375 on 2015/11/18 by Thomas.Sarkanen
Added initialzation of internal state machine desc ptrs to (finally) remove random crashes when using sub-state machines
#rb Benn.Gallagher
Change 2771697 on 2015/11/18 by Jeff.Farris
Sensible defaults for APlayerController::ClientPlayCameraAnim and ClientPlayCameraShake
#rb marc.audy
Change 2771755 on 2015/11/18 by Marc.Audy
Put back in the recursion block for destroy actor
#rb James.Golding
Change 2772217 on 2015/11/18 by Marc.Audy
Update axis inversion to work the same way as sensitivity instead of old problematic way
Also change to use Reset instead of Empty(Array.Num())
#rb Jeff.Farris
Change 2772686 on 2015/11/18 by Aaron.McLeran
Fixing HRTF spatialization coordinate bug.
Don't need to convert to xaudio2 coordinates for HRTF spatialization
#rb chad.taylor
Change 2772766 on 2015/11/18 by Aaron.McLeran
Fixing HRTF spatialization with xaudio2 voice pools
- Issue was caused by 2 issues:
- effect chains weren't properly clearing their state between uses (SetEffectChain(nullptr) releases the effect for use with other voices)
- Not re-setting MaxEffectChainChannels = 0 in CreateSource() was causing re-used SoundSources to release their XAudio2 voices to the wrong pool.
#rb chad.taylor
Change 2773027 on 2015/11/19 by Thomas.Sarkanen
PR #1765: Git Plugin can find the git.exe binary installed on the Local AppData user directory (Contributed by SRombauts)
#rb Thomas.Sarkanen
Change 2773142 on 2015/11/19 by Benn.Gallagher
Optimized SafeSetCSBoneTransforms, no longer doing 2 iterations over the whole pose.
- Only iterating beyond the index of the first bone transform, cutting off all bones before
- No longer using a bone mask the size of the skeleton, just an array of interesting nodes
- No longer attempting to convert a transform if it isn't necessary (which was happening a lot)
#rb Laurent.Delayen
Change 2773212 on 2015/11/19 by Richard.Hinckley
#jira UEDOC-2685
Removing ugly comment. Not going to remove the node itself for backward compatibility.
Change 2773351 on 2015/11/19 by Zak.Middleton
#orion - Make sure we don't skip a final visual update when character mesh interpolation tries to stop smoothing once it reaches its destination. We keep setting bNetworkSmoothingComplete to false until the first visual update, at which point if it remains true we will stop getting updates.
#rb Dan.Youhon
Change 2773599 on 2015/11/19 by Marc.Audy
Fix shadow variable, initialization order, and incorrect placement of ENGINE_API that fails compiles on clang
#codereview Aaron.McLeran
Change 2773661 on 2015/11/19 by Richard.Hinckley
#jira UEDOC-2685
Following up by deprecating the CastToPlayerController function for 4.11.
Change 2774707 on 2015/11/19 by Stan.Melax
FCollisionQueryParams constructor API pitfall
Deprecating something that will call the unintended constructor if the programmer provides a string literal instead of explicitly creating an FName.
So this line of code:
FCollisionQueryParams Param(FName(TEXT("DragDropTrace")));
will invoke:
FCollisionQueryParams::FCollisionQueryParams(FName,bool=false,...)
But this line of code:
FCollisionQueryParams Param(TEXT("DragDropTrace"));
invokes:
FCollisionQueryParams::FCollisionQueryParams(bool)
Yes that actually happens, the string literal (the TEXT("whatever")) ends up specifies a bool parameter instead of a FName parameter. So the name is lost and a flag (that is usually set to false) is now set to true (since the string literal address is non-NULL). Yeah, that's could potentially be not what the programmer had intended.
It looks like this interface was introduced in CL 1792949
back in august 2013. Since its been a couple of years, we'll phase it out using the deprecation approach.
Making an API change would break things for existing projects.
If it had been a more recent change we could have probably just gone down to a single constructor right away.
Figured out that going one step further and removing bool param's default and adding a default constructor would minimize the number of places that will be hit with this deprecation. So, yes this is *increasing* the number of construtors temporarily, but this solution has minimal impact on the community. Later after other to-be-deprecated constructor gets removed, the two remaining can be combined into one with defaults for all parameters.
see also
https://udn.unrealengine.com/questions/269512/dangerous-fcollisionqueryparams-overloads.html
#codereview ori.cohen
[CL 2775460 by Marc Audy in Main branch]
2015-11-20 11:02:37 -05:00
Material = ( UMaterial * ) StaticDuplicateObject ( OriginalMaterial , GetTransientPackage ( ) , NAME_None , ~ RF_Standalone , UPreviewMaterial : : StaticClass ( ) ) ;
2014-03-14 14:13:41 -04:00
2014-08-26 14:02:18 -04:00
Material - > CancelOutstandingCompilation ( ) ; //The material is compiled later on anyway so no need to do it in Duplication/PostLoad.
//I'm hackily canceling the jobs here but we should really not add the jobs in the first place. <<--- TODO
Material - > bAllowDevelopmentShaderCompile = CVarMaterialEdUseDevShaders . GetValueOnGameThread ( ) ;
2014-03-14 14:13:41 -04:00
// Remove NULL entries, so the rest of the material editor can assume all entries of Material->Expressions are valid
// This can happen if an expression class was removed
for ( int32 ExpressionIndex = Material - > Expressions . Num ( ) - 1 ; ExpressionIndex > = 0 ; ExpressionIndex - - )
{
if ( ! Material - > Expressions [ ExpressionIndex ] )
{
Material - > Expressions . RemoveAt ( ExpressionIndex ) ;
}
}
}
void FMaterialEditor : : InitEditorForMaterialFunction ( UMaterialFunction * InMaterialFunction )
{
check ( InMaterialFunction ) ;
Material = NULL ;
MaterialFunction = InMaterialFunction ;
OriginalMaterialObject = InMaterialFunction ;
ExpressionPreviewMaterial = NULL ;
// Create a temporary material to preview the material function
2015-02-09 05:43:45 -05:00
Material = NewObject < UMaterial > ( ) ;
2014-03-14 14:13:41 -04:00
{
2014-07-28 17:01:21 -04:00
FArchiveUObject DummyArchive ;
2014-03-14 14:13:41 -04:00
// Hack: serialize the new material with an archive that does nothing so that its material resources are created
Material - > Serialize ( DummyArchive ) ;
}
2014-05-30 07:55:38 -04:00
Material - > SetShadingModel ( MSM_Unlit ) ;
2014-03-14 14:13:41 -04:00
// Propagate all object flags except for RF_Standalone, otherwise the preview material function won't GC once
// the material editor releases the reference.
Copying //UE4/Dev-Framework to //UE4/Main @ 2775446
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2720537 on 2015/10/07 by Aaron.McLeran
Audio Optimization: Implementing an audio update delta time so audio isn't updated with every engine tick
Change 2746582 on 2015/10/29 by Aaron.McLeran
Implementing single ray-cast sound occlusion
- Fixing/Implementing sound occlusion using one ray cast
- Update rate of the ray cast is conifgurable by the user
- User can enabled/disable occlusion and set various properties of the occlusion at the audio component level
- Occlusion ray-casts are made at a slower rate than the audio engine is updated
- The following properties are supported:
* LowPassFilterFrequency (the LPF cutoff frequency of the per-voice filter to apply if a sound is occluded)
* OcclusionVolumeAttenuation (the volume attenuation to apply to sounds that are occluded)
* OcclusionInterpolationTime (how fast a sound moves from occluded to unoccluded... allows user-defined interpolation times, avoids fast parameter setting for smoother transitions)
- Fixed how low-pass filter frequency is applied on platforms that support it.
* Changed the older HighFrequencyGain parameter to a more understandable and correct LowPassFilterFrequency parameter
* Updated the parameter for the various other features that use per-voice LPF (e.g. audio volumes, distance-based filtering)
* Added backward-compatibility code to take old HighFrequencyGain params to new LowPassFilterFrequency params.
* At the lowest level, there is only one filter which is applied to a sound, but the parameter that has the lowest cutoff frequency is the one used
* Fixed how the parameter is applied at the lower-level in XAudio2 and CoreAudio. The old parameter was incorrectly applied.
* XAudio2 documentation on the low-pass-fitler frequency cutoff param is confirmed incorrect through testing.
#rb zak.middleton
Change 2765174 on 2015/11/12 by Aaron.McLeran
UE-23091 More fixage for NaN audio log spam
Last checkin for this (CL 2760896) was fixing a legit issue but there was still an issue that I was rarely catching during the FN gate encounter in AITestbed after about 5 min of gate defense.
To track down, I added a lot more logging and asserts on NaN numbers in the audio code, enabled ENABLE_NAN_DIAGNOSTIC in UnrealMathUtility.h.
- Was able to trace another cause of the NaNs in audio to 2 uninitialized variables in SoundAttenuationSettings struct: OmniRadius and StereoSpread.
- Zak M suggested the change of the const ref position vector in ListenerPosition and the usage of GetSafeNormal() in Audio.cpp since the value returned by GetLocation() is a temporary and Normalize() is unsafe.
- I removed the flag for the XAudio2 call to compute doppler since we don't use that value and it could've been as source of more NaNs in X3DAudioCalculate
#codereview Zak.Middleton
#rb Zak.Middleton
Change 2765467 on 2015/11/13 by James.Golding
- Allow -ms option to work with 'stat dumphitches' for controlling min time logged
#rb gil.gribb
Change 2765746 on 2015/11/13 by Benn.Gallagher
Added buckets for update rate shift tags (for staggering anim updates)
#jira UE-23213
#rb Bruce.Nesbit
Change 2765747 on 2015/11/13 by Benn.Gallagher
Fixes for bone length calculation in anim dynamics chains.
#rb Bruce.Nesbit
Change 2765749 on 2015/11/13 by Benn.Gallagher
Removed allocations from local CS blends for skeletal controls.
#rb Bruce.Nesbit
Change 2765752 on 2015/11/13 by Benn.Gallagher
Lod mapping support for URO customization
#jira UE-23211
#rb Bruce.Nesbit
Change 2765965 on 2015/11/13 by Marc.Audy
Remove outdated code in LoadMap previously used for matching up downloaded packages from servers. These code paths no longer operate, but in the case where a PIE client was connecting to a non-PIE server (not really supported, but possible), it would cause the Editor Level package to be flagged as as PIE package and cause a crash on exit of PIE
#jira UE-21181
#rb Josh.Markiewicz
Change 2766071 on 2015/11/13 by Mieszko.Zielinski
Fixed dumb mistake in AEQSTestingPawn::PostLoad #UE4
the 'bTickDuringGame == bTickDuringGame' thing
#rb John.Abercrombie
Change 2766086 on 2015/11/13 by Mieszko.Zielinski
Exposing NavModifierComponent to ENGINE_API #UE4
#codereview Lukasz.Furman
Change 2766345 on 2015/11/13 by Mieszko.Zielinski
No longer compiling AISystem's creation out from client builds #UE4
Instead AISystem's instantiation on clients is configurable via UAISystemBase::bInstantiateAISystemOnClient config variable
Change 2766346 on 2015/11/13 by Mieszko.Zielinski
Improvements to EQS test scoring function preview #UE4
#rb Lukasz.Furman
Change 2766528 on 2015/11/13 by Stan.Melax
multiple materials/chunks on a single cloth sim mesh
This supposedly used to work in 4.7 but broke for 4.8
It looks like previous change 2493547 may have introduced the condition statement that makes multiple materials not include all of there verts.
Changing this to instead check for the bounds on the skinningmap instead of the NumRealSimVerts which doesn't look like it takes the offset into consideration.
jira:
#UE-23300
https://jira.ol.epicgames.net/browse/UE-23300
https://answers.unrealengine.com/questions/287833/apex-not-working-on-multiple-materials-since-48.html
Double tested code change with test asset from https://jira.ol.epicgames.net/browse/UE-10674
#rb Benn.Gallagher
Change 2766546 on 2015/11/13 by Marc.Audy
Throw warning for orphaned looping sounds caused by a looping sound node
Don't do somewhat expensive (due to weak pointer) orphaned sound checks in test or shipping
#rb Aaron.McLeran
Change 2766917 on 2015/11/14 by Jurre.deBaare
Fix UE4-23349 Simplygon doens't support sub 64 pixel textures
Change 2767742 on 2015/11/16 by Marc.Audy
Restructure SignificanceManager to store significance manager references in a FGCObject Module class instead of using a singleton.
Improve performance by eliminating StaticFindObjectFast calls in ::Get and force inlining Get calls
#rb Zak.Middleton, Rob.Manuszewski
Change 2767827 on 2015/11/16 by Zak.Middleton
#ue4 - Perf: avoid SmoothClientPosition() calls once the target mesh offset has been reached.
- New flag bNetworkSmoothingComplete indicates whether smoothing has reached the destination. This is set to false when a new network position is received.
- Also fixes trying to smooth rotation towards identity rotation before receiving network updates.
- Deprecated FNetworkPredictionData_Client_Character::CurrentSmoothTime in favor of saving last update time, to prevent needing to update time every tick (since we skip updates now).
#rb Dan.Youhon
Change 2768070 on 2015/11/16 by Marc.Audy
Change StaticDuplicateObject and DuplicateObject to take FName instead of char* (existing usages can automatically convert to FName so no backwards compatibility issues)
Fixup usages to avoid unnecessary string -> char* -> name conversions
Change AActor::CreateComponentFromTemplate to take an FName instead of FString, deprecated FString version
#rb Gil.Gribb
Change 2768121 on 2015/11/16 by Marc.Audy
Forceinline GetFName
Change 2768161 on 2015/11/16 by Aaron.McLeran
Checking occlusion back in
- Bug was due to improper interpolation of LPFFrequency values in audio volumes.
Change 2769428 on 2015/11/17 by Thomas.Sarkanen
Fixed backwards-compatibility issues with FExposedValueCopyRecord
Added PostSerialize function to patch up older data to the new format (copies properties->property FNames).
Made sure to zero FExposedValueCopyRecord in its constructor, prevents uninitialized variable issues when generating CRCs. This is necessary despite these members being UPROPERTYs because they are simply built on the stack then stuffed into the new CDO during compilation.
UE-23268 - EDITOR CRASH: Assertion failed: ((UObject*)ContainerPtr)->IsA((UClass*)GetOuter())
#rb James.Golding
#codereview Mike.Beach,Bob.Tellez
Change 2769488 on 2015/11/17 by Benn.Gallagher
DrawCanvas and debug string support for skeletal controls - accessed using "Skeletal Controls" option in Show->Display Info in Persona
#rb Martin.Wilson
Change 2769545 on 2015/11/17 by Benn.Gallagher
Added space conversion options to copy bone node.
#jira OR-9430
#rb Martin.Wilson
Change 2770228 on 2015/11/17 by Marc.Audy
Fix cause of assert firing when detaching if AttachTo(AttachParent) returns false
#rb Ori.Cohen
#jira UE-23366
Change 2770489 on 2015/11/17 by Marc.Audy
Make ::Serialize WITH_EDITORONLY_DATA since it did nothing otherwise
Change 2770761 on 2015/11/17 by Aaron.McLeran
Removing optimization disablement
- Forgot to remove these lines before checking in/testing.
Change 2771375 on 2015/11/18 by Thomas.Sarkanen
Added initialzation of internal state machine desc ptrs to (finally) remove random crashes when using sub-state machines
#rb Benn.Gallagher
Change 2771697 on 2015/11/18 by Jeff.Farris
Sensible defaults for APlayerController::ClientPlayCameraAnim and ClientPlayCameraShake
#rb marc.audy
Change 2771755 on 2015/11/18 by Marc.Audy
Put back in the recursion block for destroy actor
#rb James.Golding
Change 2772217 on 2015/11/18 by Marc.Audy
Update axis inversion to work the same way as sensitivity instead of old problematic way
Also change to use Reset instead of Empty(Array.Num())
#rb Jeff.Farris
Change 2772686 on 2015/11/18 by Aaron.McLeran
Fixing HRTF spatialization coordinate bug.
Don't need to convert to xaudio2 coordinates for HRTF spatialization
#rb chad.taylor
Change 2772766 on 2015/11/18 by Aaron.McLeran
Fixing HRTF spatialization with xaudio2 voice pools
- Issue was caused by 2 issues:
- effect chains weren't properly clearing their state between uses (SetEffectChain(nullptr) releases the effect for use with other voices)
- Not re-setting MaxEffectChainChannels = 0 in CreateSource() was causing re-used SoundSources to release their XAudio2 voices to the wrong pool.
#rb chad.taylor
Change 2773027 on 2015/11/19 by Thomas.Sarkanen
PR #1765: Git Plugin can find the git.exe binary installed on the Local AppData user directory (Contributed by SRombauts)
#rb Thomas.Sarkanen
Change 2773142 on 2015/11/19 by Benn.Gallagher
Optimized SafeSetCSBoneTransforms, no longer doing 2 iterations over the whole pose.
- Only iterating beyond the index of the first bone transform, cutting off all bones before
- No longer using a bone mask the size of the skeleton, just an array of interesting nodes
- No longer attempting to convert a transform if it isn't necessary (which was happening a lot)
#rb Laurent.Delayen
Change 2773212 on 2015/11/19 by Richard.Hinckley
#jira UEDOC-2685
Removing ugly comment. Not going to remove the node itself for backward compatibility.
Change 2773351 on 2015/11/19 by Zak.Middleton
#orion - Make sure we don't skip a final visual update when character mesh interpolation tries to stop smoothing once it reaches its destination. We keep setting bNetworkSmoothingComplete to false until the first visual update, at which point if it remains true we will stop getting updates.
#rb Dan.Youhon
Change 2773599 on 2015/11/19 by Marc.Audy
Fix shadow variable, initialization order, and incorrect placement of ENGINE_API that fails compiles on clang
#codereview Aaron.McLeran
Change 2773661 on 2015/11/19 by Richard.Hinckley
#jira UEDOC-2685
Following up by deprecating the CastToPlayerController function for 4.11.
Change 2774707 on 2015/11/19 by Stan.Melax
FCollisionQueryParams constructor API pitfall
Deprecating something that will call the unintended constructor if the programmer provides a string literal instead of explicitly creating an FName.
So this line of code:
FCollisionQueryParams Param(FName(TEXT("DragDropTrace")));
will invoke:
FCollisionQueryParams::FCollisionQueryParams(FName,bool=false,...)
But this line of code:
FCollisionQueryParams Param(TEXT("DragDropTrace"));
invokes:
FCollisionQueryParams::FCollisionQueryParams(bool)
Yes that actually happens, the string literal (the TEXT("whatever")) ends up specifies a bool parameter instead of a FName parameter. So the name is lost and a flag (that is usually set to false) is now set to true (since the string literal address is non-NULL). Yeah, that's could potentially be not what the programmer had intended.
It looks like this interface was introduced in CL 1792949
back in august 2013. Since its been a couple of years, we'll phase it out using the deprecation approach.
Making an API change would break things for existing projects.
If it had been a more recent change we could have probably just gone down to a single constructor right away.
Figured out that going one step further and removing bool param's default and adding a default constructor would minimize the number of places that will be hit with this deprecation. So, yes this is *increasing* the number of construtors temporarily, but this solution has minimal impact on the community. Later after other to-be-deprecated constructor gets removed, the two remaining can be combined into one with defaults for all parameters.
see also
https://udn.unrealengine.com/questions/269512/dangerous-fcollisionqueryparams-overloads.html
#codereview ori.cohen
[CL 2775460 by Marc Audy in Main branch]
2015-11-20 11:02:37 -05:00
MaterialFunction = ( UMaterialFunction * ) StaticDuplicateObject ( InMaterialFunction , GetTransientPackage ( ) , NAME_None , ~ RF_Standalone , UMaterialFunction : : StaticClass ( ) ) ;
2014-03-14 14:13:41 -04:00
MaterialFunction - > ParentFunction = InMaterialFunction ;
OriginalMaterial = Material ;
}
void FMaterialEditor : : InitMaterialEditor ( const EToolkitMode : : Type Mode , const TSharedPtr < class IToolkitHost > & InitToolkitHost , UObject * ObjectToEdit )
{
EditorOptions = NULL ;
bMaterialDirty = false ;
bStatsFromPreviewMaterial = false ;
ColorPickerObject = NULL ;
2014-04-23 18:21:07 -04:00
// Support undo/redo
Material - > SetFlags ( RF_Transactional ) ;
2014-04-02 18:09:23 -04:00
2014-04-23 18:21:07 -04:00
GEditor - > RegisterForUndo ( this ) ;
2014-04-02 18:09:23 -04:00
2014-04-23 18:21:07 -04:00
if ( ! Material - > MaterialGraph )
{
Material - > MaterialGraph = CastChecked < UMaterialGraph > ( FBlueprintEditorUtils : : CreateNewGraph ( Material , NAME_None , UMaterialGraph : : StaticClass ( ) , UMaterialGraphSchema : : StaticClass ( ) ) ) ;
}
Material - > MaterialGraph - > Material = Material ;
Material - > MaterialGraph - > MaterialFunction = MaterialFunction ;
Material - > MaterialGraph - > RealtimeDelegate . BindSP ( this , & FMaterialEditor : : IsToggleRealTimeExpressionsChecked ) ;
Material - > MaterialGraph - > MaterialDirtyDelegate . BindSP ( this , & FMaterialEditor : : SetMaterialDirty ) ;
Material - > MaterialGraph - > ToggleCollapsedDelegate . BindSP ( this , & FMaterialEditor : : ToggleCollapsed ) ;
2014-03-14 14:13:41 -04:00
// copy material usage
for ( int32 Usage = 0 ; Usage < MATUSAGE_MAX ; Usage + + )
{
const EMaterialUsage UsageEnum = ( EMaterialUsage ) Usage ;
if ( OriginalMaterial - > GetUsageByFlag ( UsageEnum ) )
{
bool bNeedsRecompile = false ;
Material - > SetMaterialUsage ( bNeedsRecompile , UsageEnum ) ;
}
}
// Manually copy bUsedAsSpecialEngineMaterial as it is duplicate transient to prevent accidental creation of new special engine materials
Material - > bUsedAsSpecialEngineMaterial = OriginalMaterial - > bUsedAsSpecialEngineMaterial ;
// Register our commands. This will only register them if not previously registered
FGraphEditorCommands : : Register ( ) ;
FMaterialEditorCommands : : Register ( ) ;
FMaterialEditorSpawnNodeCommands : : Register ( ) ;
FEditorSupportDelegates : : MaterialUsageFlagsChanged . AddRaw ( this , & FMaterialEditor : : OnMaterialUsageFlagsChanged ) ;
2014-10-23 21:38:06 -04:00
FEditorSupportDelegates : : VectorParameterDefaultChanged . AddRaw ( this , & FMaterialEditor : : OnVectorParameterDefaultChanged ) ;
FEditorSupportDelegates : : ScalarParameterDefaultChanged . AddRaw ( this , & FMaterialEditor : : OnScalarParameterDefaultChanged ) ;
2014-03-14 14:13:41 -04:00
FAssetRegistryModule & AssetRegistryModule = FModuleManager : : GetModuleChecked < FAssetRegistryModule > ( TEXT ( " AssetRegistry " ) ) ;
AssetRegistryModule . Get ( ) . OnAssetRenamed ( ) . AddSP ( this , & FMaterialEditor : : RenameAssetFromRegistry ) ;
CreateInternalWidgets ( ) ;
2014-04-02 18:09:23 -04:00
// Do setup previously done in SMaterialEditorCanvas
2014-04-23 18:21:07 -04:00
SetPreviewMaterial ( Material ) ;
Material - > bIsPreviewMaterial = true ;
FMaterialEditorUtilities : : InitExpressions ( Material ) ;
2014-03-14 14:13:41 -04:00
2015-06-22 15:55:50 -04:00
UpdatePreviewViewportsVisibility ( ) ;
2014-03-14 14:13:41 -04:00
BindCommands ( ) ;
2014-04-23 18:21:07 -04:00
const TSharedRef < FTabManager : : FLayout > StandaloneDefaultLayout = FTabManager : : NewLayout ( " Standalone_MaterialEditor_Layout_v5 " )
2014-03-14 14:13:41 -04:00
- > AddArea
(
FTabManager : : NewPrimaryArea ( ) - > SetOrientation ( Orient_Vertical )
- > Split
(
FTabManager : : NewStack ( )
- > SetSizeCoefficient ( 0.1f )
- > SetHideTabWell ( true )
- > AddTab ( GetToolbarTabId ( ) , ETabState : : OpenedTab )
)
- > Split
(
FTabManager : : NewSplitter ( ) - > SetOrientation ( Orient_Horizontal ) - > SetSizeCoefficient ( 0.9f )
- > Split
(
FTabManager : : NewSplitter ( ) - > SetOrientation ( Orient_Vertical ) - > SetSizeCoefficient ( 0.2f )
- > Split
(
FTabManager : : NewStack ( )
- > SetHideTabWell ( true )
- > AddTab ( PreviewTabId , ETabState : : OpenedTab )
)
- > Split
(
FTabManager : : NewStack ( )
- > AddTab ( PropertiesTabId , ETabState : : OpenedTab )
)
)
- > Split
(
FTabManager : : NewSplitter ( ) - > SetOrientation ( Orient_Vertical )
- > SetSizeCoefficient ( 0.80f )
- > Split
(
FTabManager : : NewStack ( )
- > SetSizeCoefficient ( 0.8f )
- > SetHideTabWell ( true )
- > AddTab ( GraphCanvasTabId , ETabState : : OpenedTab )
)
- > Split
(
FTabManager : : NewStack ( )
- > SetSizeCoefficient ( 0.20f )
- > AddTab ( StatsTabId , ETabState : : ClosedTab )
2014-04-23 18:21:07 -04:00
- > AddTab ( FindTabId , ETabState : : ClosedTab )
2014-03-14 14:13:41 -04:00
)
)
- > Split
(
FTabManager : : NewSplitter ( ) - > SetOrientation ( Orient_Horizontal ) - > SetSizeCoefficient ( 0.2f )
- > Split
(
FTabManager : : NewStack ( )
- > AddTab ( PaletteTabId , ETabState : : OpenedTab )
)
)
)
) ;
const bool bCreateDefaultStandaloneMenu = true ;
const bool bCreateDefaultToolbar = true ;
// Add the preview material to the objects being edited, so that we can find this editor from the temporary material graph
TArray < UObject * > ObjectsToEdit ;
ObjectsToEdit . Add ( ObjectToEdit ) ;
ObjectsToEdit . Add ( Material ) ;
FAssetEditorToolkit : : InitAssetEditor ( Mode , InitToolkitHost , MaterialEditorAppIdentifier , StandaloneDefaultLayout , bCreateDefaultStandaloneMenu , bCreateDefaultToolbar , ObjectsToEdit , false ) ;
2014-10-09 12:34:55 -04:00
2015-05-21 14:20:41 -04:00
AddMenuExtender ( GetMenuExtensibilityManager ( ) - > GetAllExtenders ( GetToolkitCommands ( ) , GetEditingObjects ( ) ) ) ;
2014-03-14 14:13:41 -04:00
IMaterialEditorModule * MaterialEditorModule = & FModuleManager : : LoadModuleChecked < IMaterialEditorModule > ( " MaterialEditor " ) ;
AddMenuExtender ( MaterialEditorModule - > GetMenuExtensibilityManager ( ) - > GetAllExtenders ( GetToolkitCommands ( ) , GetEditingObjects ( ) ) ) ;
ExtendToolbar ( ) ;
RegenerateMenusAndToolbars ( ) ;
// @todo toolkit world centric editing
/*if( IsWorldCentricAssetEditor() )
{
SpawnToolkitTab ( GetToolbarTabId ( ) , FString ( ) , EToolkitTabSpot : : ToolBar ) ;
SpawnToolkitTab ( PreviewTabId , FString ( ) , EToolkitTabSpot : : Viewport ) ;
SpawnToolkitTab ( GraphCanvasTabId , FString ( ) , EToolkitTabSpot : : Document ) ;
SpawnToolkitTab ( PropertiesTabId , FString ( ) , EToolkitTabSpot : : Details ) ;
} */
// Load editor settings from disk.
LoadEditorSettings ( ) ;
// Set the preview mesh for the material. This call must occur after the toolbar is initialized.
2015-02-19 00:33:19 -05:00
if ( ! SetPreviewAssetByName ( * Material - > PreviewMesh . ToString ( ) ) )
2014-03-14 14:13:41 -04:00
{
// The material preview mesh couldn't be found or isn't loaded. Default to the one of the primitive types.
2015-02-19 00:33:19 -05:00
SetPreviewAsset ( GUnrealEd - > GetThumbnailManager ( ) - > EditorSphere ) ;
2014-03-14 14:13:41 -04:00
}
// Initialize expression previews.
if ( MaterialFunction )
{
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 3050373)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2973846 on 2016/05/11 by Jamie.Dale
Exposed FConfigValue::ExpandValue and added FConfigValue::CollapseValue
These are both static and can be used to expand or collapse the macros used in our config files (mostly when dealing with paths), in code that has to deal with the config system, but isn't internal to the config system (mostly things that deal with default configs outside of UObjects).
The old non-static version of FConfigValue::ExpandValue is now FConfigValue::ExpandValueInternal, which just calls FConfigValue::ExpandValue on SavedValue and ExpandedValue.
This also changes some code that was using FString.Replace to use FString.ReplaceInline. This reduces allocations, and also allows us to avoid another string comparison to see whether the strings are identical (as ReplaceInline returns the number of replacements that were made).
Change 2973847 on 2016/05/11 by Jamie.Dale
Changing the loading phase in the localization dashboard now writes to the default config
#jira UE-30482
Change 2973866 on 2016/05/11 by Jamie.Dale
Deprecated some functions that were taking an unused position.
These unused parameters caused confusion and lead to UE-30276. The old versions have been deprecated, and new versions without those parameters have been added. Existing code has been updated to call the non-deprecated version.
- FViewportFrame::ResizeFrame
- FSceneViewport::ResizeFrame
- FSceneViewport::ResizeViewport
Change 2974505 on 2016/05/11 by Nick.Darnell
PR #2309: Added Combobox styling (Contributed by Chris528)
Change 2975241 on 2016/05/12 by Richard.TalbotWatkin
Made sRGB Preview the default in the Color Picker.
Change 2975390 on 2016/05/12 by Jamie.Dale
Made sure that en-US-POSIX is in our list of available cultures
Some people use machine tags as their native text, so they need an invariant machine like culture to use as their native culture. en-US-POSIX is perfect for this.
Change 2975411 on 2016/05/12 by Jamie.Dale
PR #2237: Fixed formatting of Error_TooManyMaterials message (Contributed by pfranz)
Change 2975559 on 2016/05/12 by Jamie.Dale
Dialogue Wave VO direction can now be localized
This is gathered as editor-only data.
#jira UE-28715
Change 2975710 on 2016/05/12 by Jamie.Dale
Implemented UObject::IsLocalizedResource to test whether the object belongs to a localized package
Change 2975728 on 2016/05/12 by Jamie.Dale
Exported dialogue scripts now include a column that says whether they have a localized recording of that line of dialogue
#jira UETOOL-794
Change 2975763 on 2016/05/12 by Jamie.Dale
We no longer warn if asked to check out a UNC path when running the GatherText commandlets
#jira UE-25833
Change 2975766 on 2016/05/12 by Jamie.Dale
Resolved some loc key conflicts
#jira UE-25833
Change 2975774 on 2016/05/12 by Jamie.Dale
PO files now only contain a single entry in the case of a native translation being exported
They used to contain the original entry, as well as an entry for the native translation, however the original entry would never be used.
This change also cleans up some directory walking code that was looking for archive files, and replaces it with code to load the specific archive file.
Change 2975776 on 2016/05/12 by Jamie.Dale
Downgraded a PO file import warning that isn't really an issue
#jira UE-25833
Change 2976675 on 2016/05/13 by Jamie.Dale
Fixed some more fallout from changes to use the window position when changing the game viewport mode
- FSceneViewport::ResizeFrame:
- Fixed the HMD monitor info setting the wrong variables.
- Fixed SetWindowMode and ResizeViewport potentially being passed two different modes.
- We now only move the window if we need to (this avoids issues with WindowedFullscreen window positioning).
- FWindowsWindow::MoveWindowTo:
- Now treats the screen space position it's given as relative to the top-left of the window, rather than the top-left of the windows' client area.
- FWindowsApplication:
- WM_MOVE was passing a screen space position relative to the top-left of the windows' client area, rather than its window area like Slate expected.
#jira UE-30276
#jira UE-30677
Change 2976804 on 2016/05/13 by Jamie.Dale
Slight optimization to FICUInternationalization::FindOrMakeCulture to avoid hitting the filesystem until we know we need to
Change 2976967 on 2016/05/13 by Alexis.Matte
#jira UE-30687 Cannot import a skeletal mesh scale to zero
Change 2977042 on 2016/05/13 by Alexis.Matte
#jira UE-29952 log a warning if fbx exceed the maximum number of LOD.
#2326 Github PR
#code review matt.kuhlenschmidt
Change 2977074 on 2016/05/13 by Jamie.Dale
Follow up to CL# 2976804 to avoid a potential change in behavior
Change 2977076 on 2016/05/13 by Jamie.Dale
Some tidy up and optimization to SCulturePicker
Change 2977327 on 2016/05/13 by Alex.Delesky
Now deleting the Redirector package on Redirector Fix Up rather than simply removing it from the Content Browser.
#jira UE-30423
Change 2977499 on 2016/05/13 by Alexis.Matte
#jira UE-29475
Enable UStruct child property to be favorite
Change 2978415 on 2016/05/16 by Jamie.Dale
We now pre-load all the culture data when starting the editor to avoid a UI hitch later
Change 2978517 on 2016/05/16 by Alex.Delesky
#jira UE-29406
Creating a static mesh from a geometry brush and then attempting to reimport the mesh will no longer crash the editor.
Change 2978518 on 2016/05/16 by Alex.Delesky
#jira UE-28210
The FBX Importer no longer runs cleanup upon failing to import an FBX file and won't crash the engine the next time an FBX is imported within the same editor session.
Change 2978556 on 2016/05/16 by Alexis.Matte
Fbx tests automation
#jira UE-29635
Change 2978797 on 2016/05/16 by Alexis.Matte
#jira UE-30774
- prevent baking the pivot if we transform the vertex with the absolute transform.
- Also make sure we set the identity for the Max puivot in case we dont bake the pivot and we dont transform the vertex with the absolute transform.
#code review matt.kuhlenschmidt
Change 2978965 on 2016/05/16 by Alexis.Matte
FBX importer, fix the socket rotation.
#jira UE-30094
Change 2980613 on 2016/05/17 by Jamie.Dale
Moved the XLOC UAT localization provider to be publicly accessible
Change 2980614 on 2016/05/17 by Jamie.Dale
Reference update for project move
Change 2980633 on 2016/05/17 by Jamie.Dale
Made the culture mapping used between XLOC and UE4 configurable on a per-project basis
You can now override GetEpicCultureToXLocLanguageId in your custom localization provider in order to change the default mappings.
Change 2980836 on 2016/05/17 by Jamie.Dale
Added -LocalizationSteps flag to allow you to only run a subset of the UAT "Localise" command
You can pass any of the following steps: Download, Gather, Import, Export, Compile, GenerateReports, Upload
Change 2982700 on 2016/05/18 by Jamie.Dale
Fixed the loc package gather potentially adding the same source location multiple times
Change 2983906 on 2016/05/19 by Jamie.Dale
Slight cleanup of the way we register localization gatherer callbacks
Change 2984356 on 2016/05/19 by Chris.Wood
Removed temporary analytics API change needed for earlier hot fix
[UE-31005] - Undo temp Hardware Survey API change from 4.10 - CL 2782817
Change 2986679 on 2016/05/23 by Alex.Delesky
#jira UE-24747 - Importing FBX files that contain meshes that do not have non-degenerate triangles will no longer crash the editor on import, and will warn the user that the meshes are bad.
Change 2986798 on 2016/05/23 by Alex.Delesky
#jira UE-31136 - Chord Input fields will no longer display the blinking edit cursor if they do not have focus.
Change 2987106 on 2016/05/23 by Alexis.Matte
Fbx importer, fail import must not create a package in the content browser
#jira UE-31154
Change 2987563 on 2016/05/23 by Alex.Delesky
#jira UE-30988 - Changed the default window mode when launching a game from the .uproject file to Windowed
Change 2987564 on 2016/05/23 by Alex.Delesky
#jira UE-28856 - Fixed a crash that could potentially occur when starting up PIE while dragging objects like widgets in the editor.
Change 2988321 on 2016/05/24 by Jamie.Dale
Added a way to backup and restore the selection state of a level (its actors and components) in a way that can be reapplied even if the level is reloaded
Change 2988708 on 2016/05/24 by Jamie.Dale
Fix for crash when missing the fallback/last resort font
Change 2988782 on 2016/05/24 by Jamie.Dale
Added the ability to version each localized string individually when loaded into the localization manager
The single 32-bit global history has now been replaced with two 16-bit histories. One is global, and is updated whenever the culture is changed (or a LocRes file is loaded), and the other is local to each string, and is updated if the display string is changed outside of a culture update (to handle cases where the display string is changed, but the key is preserved). Changing the global history will reset all local histories.
Because of the change from an int32 to a uint16, 0, rather than INDEX_NONE, is now considered the "unset" value for a history.
Change 2988856 on 2016/05/24 by Jamie.Dale
Added a way to get the package(s) of the object(s) being edited by a property panel
Typically the package is just the outermost of the object being edited, however there are some cases where this may not be the case:
- UMG widgets edit a transient copy of the real data, so we use the SetObjectPackageOverrides to override the package these objects should use to be the real asset package.
- Structs (UDS, Data Table, etc) don't have a way to get to their package, so you have to specify it on their FStructOnScope instance (see FStructOnScope::GetPackage and FStructOnScope::SetPackage). This has been hooked up for the UDS and Data Table editors.
Change 2988955 on 2016/05/24 by Alex.Delesky
#jira UE-30645 - Adding in support for splash images to support .png and .jpg files. In general, this adds multi-extension support for external image references and external image picker modules.
Git Request #2376
Change 2989418 on 2016/05/25 by Jamie.Dale
Added a way to count text references within a package that match the given search criteria
This can be used to detect whether a localization ID is unique within its package.
The following search modes are available:
- MatchId: Detect a reference if it matches the given ID (ignoring the source text)
- MatchSource: Detect a reference if it matches the given ID and source string
- MismatchSource: Detect a reference if it matches the given ID but has a different source string
Change 2989436 on 2016/05/25 by Jamie.Dale
Added "root-level" meta-data (meta-data associated with the package rather than an object within it)
Change 2989471 on 2016/05/25 by Alexis.Matte
Fbx scene importer, fix naming clash when creating package we now also look in memory to find existing package not just on disk
Change 2989639 on 2016/05/25 by Jamie.Dale
Added static version of FName::IsValidXName
This allows you to verify name-like strings without having to convert them to an FName (and thus add them to the name table)
Change 2989716 on 2016/05/25 by Alex.Delesky
#jira UE-30828 - The Standalone Session Frontend will now render the names of automation tests correctly instead of as solid white blocks.
Change 2990100 on 2016/05/25 by Alexis.Matte
Fix crash when reimporting a mesh that originaly exceed the maximum number of LOD
#jira UE-30907
Change 2991442 on 2016/05/26 by Bob.Tellez
#UE4 Fix components in world not rendering when saved without a physics scene.
Change 2991736 on 2016/05/26 by Bob.Tellez
#UE4 Fix duplicated worlds not being initialized when inactive. Re-enabled duplication of worlds in the content browser.
Change 2991942 on 2016/05/26 by Alex.Delesky
#jira UE-31012 - Setting a Decimal Grid Interval value to 0 and using it will no longer crash the editor or cause an editor crash on startup.
Change 2991994 on 2016/05/26 by Alex.Delesky
#jira UE-31177 - Attempting to export an entire level as an object file and choosing to export all materials as images will no longer crash the editor.
Change 2994037 on 2016/05/30 by Alexis.Matte
Add Fbx Automation Tests
- static mesh import reimport (sections and materials)
- skeletal mesh import and reimport (sections and materials also bone position)
- static/skeletal mesh LODs (import, add, reimport)
- rigid mesh (import, reimport)
Change 2994253 on 2016/05/31 by Alexis.Matte
Mikkt crash when computing the normals if there is more vertex then the number of wedge
#jira UE-29143
Change 2994260 on 2016/05/31 by Alexis.Matte
Make sure we cannot modify fbx test plan when json file is read only
Change 2994431 on 2016/05/31 by Alex.Delesky
#jira UE-21900 - The scale widget should now render all axes when using an orthographic camera.
Change 2994432 on 2016/05/31 by Alex.Delesky
#jira UE-31328 - New objects dragged into the scene will now comply with the Surface Snapping option in the viewport, and will not use the Surface Offset if snapping is disabled.
Change 2994537 on 2016/05/31 by Richard.TalbotWatkin
Fixed potential crash in the Mesh Paint tool when non-transactable actors are in the SelectedActors list following a Redo.
#jira UE-31172 - Crash related to Vertex Painting - MeshPaint!CastChecked<AActor,UObject>()
Change 2994983 on 2016/05/31 by Richard.TalbotWatkin
Added some guard code to protect against a crash when editing geometry. Repro currently unknown, ensure was added in order to try to get more information.
#jira UE-30820 - UT EDITOR: CRASH: Crash in Public Release CL#2973693
Change 2995022 on 2016/05/31 by Jamie.Dale
PR #2428: Added missing END_OPTIMIZATION macro to SOutputLog (Contributed by MatzeOGH)
Change 2995027 on 2016/05/31 by Jamie.Dale
PR #2409: fixed a small typo in GraphEditor.h (Contributed by MatzeOGH)
Change 2995963 on 2016/06/01 by Alex.Delesky
#jira UE-31317 - The transform gizmo will no longer block the placement of a material onto a mesh.
Change 2997002 on 2016/06/01 by Cody.Albert
Fix to ensure ActiveTopLevelWindow is properly set after a window is destroyed
#jira UE-31448
Change 2998013 on 2016/06/02 by Alexis.Matte
Prevent static mesh materials array to grow when using the reset button in the staticmesh editor.
#jira UE-12931
Change 2998370 on 2016/06/02 by Alexis.Matte
Fbx Automation, add some import LOD test in case the options are not ok
Change 2999709 on 2016/06/03 by Jamie.Dale
Fixed some issues with gathering text from BP bytecode
Bytecode in Blueprints is very volatile, and can only be safely gathered after it's been compiled (which is not guaranteed to have happened by the time we save the package). This change avoids caching any assets that contain scripts (non-data-only Blueprints), and instead will always load them to perform a gather (which will ensure the Blueprint bytecode is up-to-date due to compile-on-load).
Change 2999755 on 2016/06/03 by Richard.TalbotWatkin
Fixes to Spline Mesh collision generation.
- Fixed a serious issue with DDC ID generation, in that the static mesh wasn't forming a part of the key, hence any two spline meshes with identical properties but different meshes would yield the same cache entry.
- Fixed how different collision boxes are transformed when rebuilding physics meshes. Convex collision transforms are now correctly taken into account, and spherical and capsule collision now gets correctly translated when a scale is applied to the start or end of the spline mesh.
- Optimized physics rebuilding. A new BodySetup object is now only created when needed, otherwise it is reused.
#jira UE-31361 - Splines handle box collision and collision from other shapes differently
Change 2999973 on 2016/06/03 by Jamie.Dale
We now skip bulk data when detecting text references
#jira UE-31596
Change 3000159 on 2016/06/03 by Alex.Delesky
#jira UE-30244 - Added a safeguard against a potential crash when editing BSP brushes before placing another BSP brush into the level.
Change 3001814 on 2016/06/06 by Alexis.Matte
Make sure the staticmesh Materials list dont grow when we reimport or override a LOD other then the base mesh.
Add a fbx test to make sure the problem is flag by automation test
#jira UE-1394
Change 3001820 on 2016/06/06 by Alex.Delesky
#jira UE-19079 - Widget Blueprints should no longer crash when dragging widgets from one blueprint to a second and then compiling the second blueprint.
Change 3001915 on 2016/06/06 by Alexis.Matte
Make sure we check attribute type before checking attribute unique ID in case of unique id clash.
#jira UE-31214
Change 3002026 on 2016/06/06 by Alexis.Matte
Importing morph target should not import textures like materials since the base mesh already import thoses.
UDN Question:
https://udn.unrealengine.com/questions/293973/does-importing-an-fbx-with-morph-targets-cause-a-m.html
Change 3002623 on 2016/06/06 by Jamie.Dale
Fixing more loc conflicts
Change 3002883 on 2016/06/06 by Jamie.Dale
Adding retry when dealing with OneSky
This is attempting to compensate for some timeouts with OneSky, which were also noticed when testing UE-31413
Change 3003004 on 2016/06/06 by Trung.Le
#jira UE-13101 - Make "Description" field for a BluePrint Function multiline
Change 3003859 on 2016/06/07 by Alexis.Matte
#jira UE-30436 Refresh the property editor when a array element is added, remove, insert, delete and the property is favorite
Change 3004132 on 2016/06/07 by Jamie.Dale
Fixed a hash conflict that could occur when both the case-sensitive and case-insensitive FName hashes were identical
This resulted in the case-preserving FName being added to the head of the linked list for the bucket, which caused any subsequent name lookups to return that name index for the comparison index (since it matched an insensitive string comparison), rather than the name index of the first case-variant of that name that was added to the bucket.
This change has new entries be inserted at the tail of the list, which ensures that enumeration for a case-insensitive name will always find the same entry in the bucket (the first one that was ever added) and will continue to compare correctly.
Change 3004286 on 2016/06/07 by Jamie.Dale
Ensured that assignments that publish new names to the bucket are atomic
Change 3004310 on 2016/06/07 by Jamie.Dale
Ensured FName internal hashes are returned as uint16
Change 3004381 on 2016/06/07 by Jamie.Dale
FAsyncPackage now creates the meta-data before processing the remaining exports
This matches the behavior of FLinkerLoad::LoadAllObjects, as other objects may depend on the meta-data being loaded before them.
Change 3004765 on 2016/06/07 by Alex.Delesky
#jira UE-31498 - Material thumbnails will now render the full sphere rather than an extreme close-up of the material.
Change 3005754 on 2016/06/08 by Trung.Le
Allow whitespace for meta class names
#jira UE-31668
Change 3005755 on 2016/06/08 by Stephan.Jiang
UMGSequencePlayer implements GetPlaybackContext() and return UserWidget->GetWorld() if it's valid
#jira UE-31299
Change 3006512 on 2016/06/08 by Alex.Delesky
#jira UE-31572 - The "All Classes" tab in the Modes panel will now refresh when a placeable asset is created, renamed, or deleted without needed to navigate away from the tab first.
Change 3006760 on 2016/06/08 by Jamie.Dale
Added support for stable localization keys
This feature adds support for preserving the existing key of an FText property when editing the source string, providing that it is the only reference to that string within the package. A side effect of this is that you're now able to specify custom keys for FText properties since we can now verify that the custom key won't cause an identity conflict.
In order to limit the search domain for uniqueness to a single package, we've added the concept of a "localization namespace" to packages (stored in the meta-data). Each package is given a unique namespace, which is appended to the user-defined namespace of the text when it is modified, saved, or duplicated. This package namespace ensures that the same user-defined namespace and key may be used in different packages without causing an identity conflict.
In order to access the package namespace within the Core code that hosts FText (which doesn't know about UPackage), FArchive now provides a GetLocalizationNamespace function to access the package namespace within the Core code, and a SetLocalizationNamespace function for CoreUObject and Engine code to pass down the package namespace from their packages.
If you have an archive that handles duplicating objects into a different package, or duplicating packages themselves, then you'll want to make sure it's setting the package namespace correctly. FObjectReader and FObjectWriter have been updated to do this, and serve as a good example. FDuplicateDataReader (used by StaticDuplicateObject), and FCopyPropertiesArchiveObjectWriter (used when compiling Blueprints) have also been updated to set the package namespace, as they both handle copying objects between packages. TextNamespaceUtil provides a suite of functions for getting at (or setting) the namespace for a package.
Keys will start to stabilize naturally over time once this feature is enabled, however the StabilizeLocalizationKeys commandlet may also be used to stabilize all the keys for a game at once. Running it for a game under source control would look something like this:
MyGame -run=StabilizeLocalizationKeys -IncludeGame -NativeCulture=en -EnableSCC
This commandlet also updates your localization archives to use the new text identities, however you'll still need to run a localization gather and localization compile before the updated translations will be available for your game.
Note: This feature is currently disabled via the USE_STABLE_LOCALIZATION_KEYS define. It will be enabled at a later date.
#jira UETOOL-796
Change 3007501 on 2016/06/09 by Trung.Le
#jira UE-31722
Fix MaterialFunctions crash when editing text in Libraries Category Text field. Solution: Removed PredEdit and PostEdit from IEditableTextProperty, its derived types and other code that was calling them. The new SetText method already calls NotifyPreChange and NotifyPostChange to properly create/destroy ScopedTransaction.
Change 3007524 on 2016/06/09 by Jamie.Dale
Added some additional checks to avoid re-keying text when duplicating for PIE
Change 3007564 on 2016/06/09 by Jamie.Dale
PR #2401: DataTable import/export improvements (Contributed by bozaro)
Change 3007653 on 2016/06/09 by Jamie.Dale
PR #2459: Generate JSON for nested structs in DataTable rows (Contributed by jorgenpt)
Change 3008019 on 2016/06/09 by Jamie.Dale
Updated structs to export as JSON when displaying them in the Data Table editor
This produces much cleaner results than using the text export method (which will use the internal names for user defined structs).
This also cleans up the FDataTableExporterCSV and FDataTableExporterJSON APIs so that you don't need to pass in a UDataTable if you're not going to use it.
#jira UE-29958
Change 3008052 on 2016/06/09 by Jamie.Dale
Fixed bug importing an array inside a JSON Data Table
This was noticed when testing a GitHub PR, but the JSON importer for a Data Table was appending the new data to the array rather than replacing it. It now clears the array prior to importing.
Change 3008875 on 2016/06/10 by Jamie.Dale
PR #2406: Git plugin: Fix for Git diff not working in UE 4.12 (and master) (Contributed by SRombauts)
Change 3008879 on 2016/06/10 by Jamie.Dale
PR #2484: Git Plugin: fix the Submit To Source Control menu broken by new "migrate" support in 4.12 (and master) (Contributed by SRombauts)
Change 3008990 on 2016/06/10 by Alex.Delesky
#jira UE-15699 - Submitting to source control via the editor should now check for current asset status before prompting the user to submit their changes. This should prevent files that had been previously deleted from being readded to source.
Change 3008991 on 2016/06/10 by Alex.Delesky
#jira UE-31688 - The Output Log will now automatically anchor to the bottom of the scroll bar when the user scrolls all the way down using the mouse wheel or clicking and dragging the content window.
Change 3010856 on 2016/06/13 by Alexis.Matte
#jira UE-31713 Fix a serialize issue for skeletal mesh with apex cloth.
Change 3011736 on 2016/06/13 by Jamie.Dale
Adding missing plurals.res file
This is needed to get plural form information from ICU.
#jira UETOOL-875
Change 3012387 on 2016/06/14 by Richard.TalbotWatkin
Disabled the Paste context menu action if the property is marked as EditConst.
#jira UE-27469 - User is able to paste values into a read-only setting
Change 3012971 on 2016/06/14 by Stephan.Jiang
Editor Preferences->Widget Designer now have two options to toggle the visibilities of widgets created from Engine content folder and Developers folder.
By default, visibility for engine content is off and developers is on
#jira UE-31657
Change 3013111 on 2016/06/14 by Jamie.Dale
Unified the number, percentage, and currency formatting between the ICU and Legacy text implementations
Removed all the old legacy number formatting code, and removed the calls to the ICU specific number formatting. Everything is now using FastDecimalFormat as this will allow some optimizations later when formatting numbers in FText::Format.
Change 3015438 on 2016/06/15 by Cody.Albert
Fixing ScrollBy function to calculate new scroll offset based on the current scroll offset and not the current desired scroll offset (which may not be the same during an animation)
#jira UE-32082
Change 3016782 on 2016/06/16 by Richard.TalbotWatkin
Corrected ConvexHull2D so that it returns an empty set of indices when passed an empty points array.
Change 3016949 on 2016/06/16 by Jamie.Dale
Added FastDecimalFormat overloads to write into an existing string
This helps avoid an extra allocation if you already have a pre-sized string that you're writing the number to (as is the case in FText::Format).
Change 3016952 on 2016/06/16 by Jamie.Dale
Changed an Add for an Emplace to avoid moving a temporary
Change 3016954 on 2016/06/16 by Jamie.Dale
Updated some FText code to avoid creating temporary objects just to move data through a hierarchy
There was some code in FText and its internal types that were using pass-by-value as a marshaller to move data through a hierarchy. This resulted in temporary objects being created and destroyed to facilitate the movement of data.
This change has all the internal FText code (private FText constructors, internal text data, and internal text history) take its movable types as an r-value reference. This avoids the temporary objects, but also makes it impossible to accidentally copy a construction argument when you meant to move it (you can still copy, but the copy must be explicit).
In addition to this, FText::FromString and FText::AsCultureInvariant now have two overloads, const FString& and FString&&, to avoid them creating a temporary when you're invoking a move. FText::ChangeKey now takes its parameters by const& as their data wasn't being moved further down the chain, so the by-value copy was wasteful.
Change 3019021 on 2016/06/19 by Richard.TalbotWatkin
When deleting a brush, ensure geometry is rebuilt before updating the details panel according to the selection change, so that the old Surface Properties don't continue to appear.
#jira UE-8966 - Surface Properties of a BSP remain in the details panel after the BSP is deleted
Change 3019022 on 2016/06/19 by Richard.TalbotWatkin
Fixed issue where the Surface Properties category in the Details panel doesn't appear after selecting a surface on a Brush which has just been placed.
#jira UE-31916 - Selecting an edge of BSP geometry then a face does not show Surface Properties while in Place mode
#jira UE-31915 - Selecting BSP face does not show Surface Properties in Details
Change 3019025 on 2016/06/19 by Richard.TalbotWatkin
Fixed issue which was stopping 'Cancel' from correctly returning a 'Cancelled' result during P4 asynchronous ops.
#jira UE-28595 - Submit to Source Control: "Checking for assets to check in..." cancel button does not cancel operation, editor becomes unresponsive
Change 3020050 on 2016/06/20 by Cody.Albert
Changed window centering logic to correctly work when monitor 1 isn't set to primary monitor.
#jira UE-32173
Change 3021145 on 2016/06/21 by Jamie.Dale
Added support for text format argument modifiers
These can be used to mutate a format argument before appending it to the resultant formatted string, and are applied to the preceding argument via a pipe, eg) "{Arg}|plural(one=is,other=are)".
We provide a few of these by default:
- |plural(key=val,...)
- |ordinal(key=val,...)
Provides support for cardinal and ordinal plural forms, where key may be any of "one", "two", "few", "many", or "other", and val may be any optionally quoted string.
- |gender(masculine,feminine,[neuter])
Provides support for gender forms, where the 0th item is the masculine version, the 1st item is the feminine version, and the 2nd item is an optional neuter version. The values may be any optionally quoted string.
- |hpp(consonant,vowel)
Provides support for Hangul post-positions, where the 0th item is the consonant suffix, and the 1st item is the verb suffix. The values may be any optionally quoted string.
Major changes:
- Exposed the ICU plural form handling via FCulture::GetPluralForm.
- Updated the FText formatting code to use an expression evaluator (to support the more complex expressions needed for the argument modifiers).
- Added FTextFormat to store a pre-compiled format expression. Re-using one of these if you're performing a lot of formats with the same FText will increase your performance (as around half of the FText::Format cost can be compilation, via an implicit construction of FTextFormat).
- Updated the FText::Format(...) family of functions to take their format string as FTextFormat, and take their arguments as FFormatArgumentValue. This allows us access to the real numeric types within the format code, but doesn't break the existing API as these types are implicitly constructible from the old parameters (FText).
- Converted text history to store their format string as an FTextFormat in-case they need to perform a re-format (this is still saved as an FText).
Breaking changes:
- The rules for the escape token have been simplified, and there is an incredibly unlikely chance that this may affect some text:
- The ` character will now only escape a valid character (producing only the escaped character in the final string), or it will be ignored and inserted as a literal character, eg) "`{F" -> "{F", and "`F" -> "`F".
- Previously it would also remove the escape character when it followed { or }, eg) "{`" -> "{" and "}`" -> "}", rather than "{`" and "}`" like you might expect. It would also have previously removed a ` at the end of a string due to a parser bug.
Change 3021156 on 2016/06/21 by Jamie.Dale
Updated LinuxToolChain to use the same output delegate for all of its actions when cross-compiling
This avoids the compile and link actions being split into different batches.
Change 3021280 on 2016/06/21 by Richard.TalbotWatkin
Fixed bug in parsing LOD in UStaticMeshComponent::ImportCustomProperties (thanks to Aurelien Cordonnier).
#jira UE-31937 - UDN code submission for UStaticMeshComponent::ImportCustomProperties parsing bug
Change 3022949 on 2016/06/22 by Alex.Delesky
#jira UE-31944 - Upgrading Subversion binaries to version 1.9.4.
Change 3023092 on 2016/06/22 by Jamie.Dale
Downgraded some checks to ensures and added an early out
#jira UE-32009
Change 3023154 on 2016/06/22 by Jamie.Dale
Ported over CL# 3018771 to the UE automation
This fixes an issue where a downloaded PO file smaller than the one already on disk leaving a mix of both files on disk (rather than the existing file on disk being truncated).
Change 3023579 on 2016/06/22 by Jamie.Dale
Expanded the Blueprint FormatText node to support numeric and gender types
These are needed to correctly support the new plural and gender forms that can be used in format strings, as these require actual numeric/enum data to be passed into the format arguments, rather than pre-formatted text.
Major changes:
- The FormatText node for Blueprints now uses PC_Wildcard as its pin type for format arguments instead of PC_Text.
- Any existing literal text argument data in the pin is hoisted out into a "Make Literal Text" node which is then connected to the pin.
- FFormatArgumentData has been updated to be variant on the data needed by Blueprints. It's now a less comprehensive and non-unioned version of FFormatArgumentValue.
- The version of FText::Format taking FFormatArgumentData has been deprecated as its usage was internal to Blueprints and we have much better ways to format text in C++. Any existing C++ using that (of which we have none internally) should be updated to use FFormatArgumentValue instead.
Change 3023915 on 2016/06/22 by Jamie.Dale
Cleaned up some of the UK2Node_FormatText expansion code to avoid unchecked literals
Change 3024813 on 2016/06/23 by Jamie.Dale
Renamed FContext to FManifestContext to better reflect its purpose and avoid naming conflicts with other code
Change 3024852 on 2016/06/23 by Nick.Darnell
FBX - Updating automation tests with the changes to chunk and chunk index removal and them being merged with sections.
Change 3024994 on 2016/06/23 by Nick.Darnell
UMG - Removing the DesignerWidgetTree, instead going to directly inject the widget tree into the partially constructed UUserWidget during design time, when refreshing the preview. This avoids doing something a little dangerous and sketchy like updating the living class instance with a new designer tree that all new instances will begin biasing using. Also making the preview widget explictly non-transactional as there's no reason to track changes to the preview, all the changes that need to be tracked should be on the template widget. This should fix the crash in the widget designer when you Undo just after compiling the widget blueprint.
#jira UE-31155
Change 3025194 on 2016/06/23 by Alex.Delesky
#jira UE-31155 - Compilation error fix.
Change 3025255 on 2016/06/23 by Alex.Delesky
#jira UE-21900 - Redoing changes done in CL 2994431 since it got stomped. Reinstates the grabber handles and ensures consistent scaling on the scale widget in orthographic viewports.
Change 3025460 on 2016/06/23 by Cody.Albert
Fixed issue where widget components would misalign when aspect ratio was being constrained
#jira UE-29637
Change 3025508 on 2016/06/23 by Cody.Albert
Adding support for adjusting animation playback speed
#jira UE-32222
Change 3026444 on 2016/06/24 by Jamie.Dale
Fixed crash caused by bad access of shared this when closing an active IME context
This was only needed to get the owner window, which we now cache when the IME context is created.
#jira UE-32240
Change 3028358 on 2016/06/27 by Jamie.Dale
Fixed IMEs not working due to no window being cached
#jira UE-32240
Change 3028464 on 2016/06/27 by Alex.Delesky
#jira UE-31873 - A single "Files need check-out" notification will now be shown instead of multiple notifications if multiple files need to be checked out, and updated as more files need to be checked out.
Change 3028524 on 2016/06/27 by Chris.Wood
Switched off uploads to legacy Crash Report Receiver.
[UE-31252] - Switch off deprecated CRR upload in Crash Report Client
Also added CRC version string, added to crash context from CRC config
Change 3028840 on 2016/06/27 by Alexis.Matte
#jira UE-32306 replace material bad name character by an underscore when doing a scen import.
Change 3028924 on 2016/06/27 by Alexis.Matte
#jira UE-32125 Make sure we can add a plan when a fbx file is drop in the fbx automation test folder
Change 3029044 on 2016/06/27 by Alex.Delesky
#jira UE-31944 - Updating SVN binaries for Mac to 1.9.4
Change 3029276 on 2016/06/27 by Alex.Delesky
#jira UE-31531 - A user can now select the base class when creating a new physical material.
PR #2462: added dialog, which enables picking base class for asset (Contributed by iniside)
Change 3029459 on 2016/06/27 by Alexis.Matte
#jira UE-32354 Make sure we set all blueprint component to the correct mobility set in the scene import options.
Change 3030577 on 2016/06/28 by Nick.Darnell
PR #2531: Git plugin: fix wrong status icons (Contributed by SRombauts)
Change 3030587 on 2016/06/28 by Alexis.Matte
#jira UE-32251 add missing body setup variables when restoring the body setup value after a re-import of a staticmesh
Change 3030946 on 2016/06/28 by Alexis.Matte
#jira UE-32515 prevent crash when re-import staticmesh userdata
Change 3031115 on 2016/06/28 by Jamie.Dale
The DDC builder now gives the shader compile worker a chance to catch up when it pauses to run a GC pass
This prevents an issue where the shader backlog could cause massive amounts of memory to be consumed.
Change 3031146 on 2016/06/28 by Jamie.Dale
Fixed errors when building with USE_STABLE_LOCALIZATION_KEYS enabled caused by UEdGraphPin no longer being a UObject
Change 3031357 on 2016/06/28 by Nick.Darnell
PR #2431: Add plugin support to the editor class wizard. (Contributed by Koderz)
Change 3031515 on 2016/06/28 by Jamie.Dale
Fixed game targets not being able to depend on other game targets
Change 3031520 on 2016/06/28 by Jamie.Dale
Localization compilation now specifies an ArchiveName to use
Change 3031671 on 2016/06/28 by Nick.Darnell
Editor - Checking to see if a weak variable is valid before using it in the editor build window.
Change 3032013 on 2016/06/28 by Matt.Kuhlenschmidt
Added ability to invert the Y axis in editor viewports for mouse look and orbit
Change 3032495 on 2016/06/29 by Jamie.Dale
Fixed some measuring issues with bi-directional text within a right-flowed document
There were three main issues:
1) Measuring blocks was measuring visual glyphs rather than logical glyphs (this caused bad measures/wrapping and overlapped rendering).
2) The text layout would consider blocks visually contiguous without making sure the block flow direction matched the line flow direction (this caused bad highlights).
3) The text layout would fail to compensate for a non-contiguous block that had a flow direction different to the line flow direction (it was hard-coded for RTL in LTR, so broke for LTR in RTL - this caused bad highlights).
#jira UE-32526
Change 3032533 on 2016/06/29 by Nick.Darnell
UMG - The widget component now extends from UMeshComponent, it can have a custom material applied to it, in order to achieve cooler effects - like ignoring the depth buffer. Users who use this option are encouraged to start with the widget components default material and work from there. The widget component now offers the ability to automatically size the render target to be the desired size of the widget - note that this can go real bad if your widget wants to be really big.
Change 3032855 on 2016/06/29 by Alexis.Matte
#jira UE-32508 Remove the cachewindow from the FTextInputMethodContext constructor since it will be cache only when the IME is activated
#test please re-test also UE-32240
Change 3033145 on 2016/06/29 by Alex.Delesky
#jira UE-32239 - The PropertyEditorModule will no longer cause a crash on editor shutdown if a SDetailsView widget tries to force refresh itself when the Slate application is no longer initialized.
Change 3033147 on 2016/06/29 by Alex.Delesky
#jira UE-32326 - Clicking on the "Install {compiler}" button when trying to create a new code class or code project will now not crash the engine if it fails to open the installation file for write, nor will it create multiple notifications if the button is pressed repeatedly.
This also addresses a potential issue with static initialization order when it comes to adding TickableEditorObjects to its corresponding array, since it was wholly possible for a statically initialized TickableEditorObject to initialize itself and add itself to the tickable objects arra before the tickable objects array was initialized, causing that object to not get ticked at runtime and causing a crash when the editor was closed.
Change 3033162 on 2016/06/29 by Alex.Delesky
#jira UE-31827 - Undo/redo now works in the Material function editor.
Change 3033391 on 2016/06/29 by Matt.Kuhlenschmidt
Fix post process settings blendable picker not being readable in the details panel
Change 3033498 on 2016/06/29 by Matt.Kuhlenschmidt
Fixed huge number of redundant calls to CanEditChange and
DiffersFromDefault that were causing massive performance loss when
thousands of objects are selected. CanEditChange and DiffersFromDefault
are now cached each time a property value changes.
Fixed redundant calls for getting visualizers for each selected
object. This is now cached on selection
Change 3033504 on 2016/06/29 by Matt.Kuhlenschmidt
Fix Mass customization on the body instance not working with undo/redo or reset to default
Change 3034357 on 2016/06/30 by Alex.Delesky
#jira UE-31184 - Renamed the multiple collision components in the cascade particle system to more accurately reflect what they represent.
Change 3035915 on 2016/07/01 by Richard.TalbotWatkin
Fix to SListPanel so that those with horizontal arrangement (i.e. from STileView) use the number of desired items instead of the number of actual items in order to calculate the desired size of the geometry. This fixes the case where an STileView is contained within an SScrollBox.
#jira UE-32195 - STileView no longer works correctly when placed inside of a SScrollBox
Change 3035951 on 2016/07/01 by Richard.TalbotWatkin
Fixed issue when importing a brush, so that the brush is always validated (relinked), whether it be a static or dynamic brush. This is because the process of rebuilding a dynamic brush sets the link indices to signify FBspSurf indices from the UModel instead of FPoly indices (the FPoly::iLink member is overloaded in its meaning). Always forcing a relink correctly sets the linked list of coplanars.
#jira UE-32087 - Crash occurs when creating Static Mesh from Trigger Volume
Change 3036991 on 2016/07/04 by Alexis.Matte
#jira UETOOL-901 Scene importer now support the rigid mesh animation
Change 3037037 on 2016/07/04 by Jamie.Dale
Fixed regression in editable text box alignment
Text was no longer vertically aligned center since SEditableText was converted to use a text layout. This vertical alignment is now handled by the outer SEditableTextBox instead.
Change 3037057 on 2016/07/04 by Richard.TalbotWatkin
Fixed screenshots when running automation tests so that they are saved locally when a FAutomationWorkerScreenMessage is received.
#jira UE-29815 - In-game screenshot isn't working under certain circumstances
Change 3037082 on 2016/07/04 by Chris.Wood
Added detection of asserts and passing assert flag and crash type string to crash reports.
[UE-30592] - Crash Reporter should determine crash type on client and pass string to server
Reviewe by Steve with reservations about the static variable for setting asserted state. While not thread-aware, this is probably accurate enough for the purpose of crash reporting, certainly for now. I'm submitting it like this because the work required to add fully thread-aware fix is not necessary at this point.
Change 3037095 on 2016/07/04 by Alexis.Matte
Fix the bone name when duplicating a socket.
Change 3037453 on 2016/07/05 by Stephan.Jiang
Adding ability to animate the root wigdet #2
FHierarchyRoot adds the preview widget instead of CDO to selectedobjects in widgetblueprint
the properties are then migrated back to the CDO
#UE 31810
Change 3037487 on 2016/07/05 by Jamie.Dale
Fixed crash caused by stale BP pointer
#jira UE-32325
Change 3037488 on 2016/07/05 by Jamie.Dale
Fixed a crash that could occur when a class and a folder had the same name
Change 3037526 on 2016/07/05 by Jamie.Dale
Speculative fix for a potential race condition when shutting down the editor while a "launch" was in progress
The launch-thread could potentially queue up a request after the game-thread had requested it cancel, and cleared out any queued tasks. This change has the game-thread wait for the launch-thread to acknowledge its cancellation before continuing with editor shutdown.
#jira UE-17688
Change 3037557 on 2016/07/05 by Alex.Delesky
#jira UE-32424 - Added a safeguard to ensure that renaming a world that was duplicated from another world would not crash the editor if both worlds' lightmaps and shadowmaps were still active in memory, due to the editor attempting to rename identical textures from different packages to the same location.
The actual fix to this issue was performed in an earlier CL, but this should prevent the editor from crashing if the issue returns.
Change 3037558 on 2016/07/05 by Alex.Delesky
#jira UE-32285 - Importing assets to the Content Browser via drag and drop operations are no longer permitted while the UI file picker dialog is opened.
Change 3037559 on 2016/07/05 by Alex.Delesky
#jira UE-32075 - The user can no longer attempt to import non-FBX and non-OBJ files when importing into a level.
Change 3037593 on 2016/07/05 by Stephan.Jiang
GitHub #2549: Add function for setting the playback rate of UMG animations
original code shelved in CL 3033449
#UE-32653
Change 3037605 on 2016/07/05 by Jamie.Dale
Fixed infinite recursion that could happen when gather loc from an object with a custom callback
#jira UE-32670
Change 3037649 on 2016/07/05 by Nick.Darnell
PR #2538: [WidgetBlueprintLibrary] GetAllWidgetsOfClass, Added META ~ DeterminesOutputType, DynamicOutputParam, removes the need for extra cast, Rama (Contributed by EverNewJoy)
Change 3037652 on 2016/07/05 by Nick.Darnell
Clean - Removing commented out code.
Change 3037658 on 2016/07/05 by Matt.Kuhlenschmidt
Fix initial hitch when dragging around in a color picker opened from a material expression node.
Change 3037679 on 2016/07/05 by Nick.Darnell
Engine - Texture2D no longer forces the MIP level to 0 for TextureGroup_UI textures.
Change 3037757 on 2016/07/05 by Nick.Darnell
PR #2447: WebBrowser widget: Added GetUrl method and OnUrlChanged property (Contributed by nelbok)
Change 3037840 on 2016/07/05 by Nick.Darnell
UMG - Now allowing for spirtes to be used just like textures and materials on UMG widgets anywhere that takes a brush, can now also take a Sprite. There is now a ISlateTextureAtlasInterface interface that any UObject may now implement if it wishes to integrate with UMG to provide its atlas data in a form Slate can understand.
Change 3037924 on 2016/07/05 by Jamie.Dale
Re-ordered variable initialization to appease a warning on Mac
Change 3037981 on 2016/07/05 by Jamie.Dale
Fixed crash where FColorStructCustomization could call SetPerObjectValues with an empty array
#jira UE-32639
Change 3038075 on 2016/07/05 by Cody.Albert
Removed misleading error message in HandleCECommand
#jira 28007
Change 3038231 on 2016/07/05 by Alexis.Matte
#jira UE-30694 We set the section collision only if there is an imported collision or a generated one. If there is no collision we do not set the collision flag.
Change 3038275 on 2016/07/05 by Alex.Delesky
#jira UE-32689 - "Game Gets Mouse Control" will now override the Capture Mouse on Launch setting when launching the game from within a Level Viewport (i.e., within the editor window itself).
Change 3039310 on 2016/07/06 by Trung.Le
#jira UE-25005 Change PIE Key Bindings
- Removed Shift+F1 and Esc from BaseInput.ini
- Created new customizable key binding for
+ Shift+F1: same functionality.
+ Esc: now will pause the play session and bring back the mouse cursor. Clicking the mouse on the viewport should resume play session.
+ Shift+Esc: now will stop the play session
Change 3039458 on 2016/07/06 by Trung.Le
Removed unused code in StaticMeshLight.cpp
Change 3039827 on 2016/07/06 by Frank.Fella
FString - Fix divide overload path concatenation for empty paths since there are several places in the engine that expect using that doing { path / "" } will append a / onto path.
#jira UE-31959
Change 3041094 on 2016/07/07 by Nick.Darnell
WebBrowser - Fixing an issue where the web browser widget plugin wasn't loading soon enough to be properly loaded in time if it was referenced by game nessesary content thatloads in the Default stage of the pipeline, so moving it to PreDefault.
#jira UE-32694
Change 3041110 on 2016/07/07 by Matt.Kuhlenschmidt
Fix visualizers on blueprint actors not working when the internal components are trashed and replaced
Change 3041302 on 2016/07/07 by Chris.Wood
Increased buffer size for crash uploads.
[UE-32151] - High number of crashes read from S3 by Crash Report Process are failing to unpack
Trivial change in dev branch - no code review
Change 3041969 on 2016/07/07 by Nick.Darnell
UMG - Input Key Selector now no longer adds a bogus Selected Key property to the details panel.
Change 3041971 on 2016/07/07 by Nick.Darnell
UMG - Not using separate settings for the Engine/Developer folders visible in the UMG palette, now just using the same setting that powers the content browser.
Change 3042612 on 2016/07/08 by Trung.Le
#jira UE-25005, set Shift+Esc defaults to toggle play/pause and Esc remains defaults to quit
Change 3042732 on 2016/07/08 by mitchell.wilson
Adding test content for UMG Paper 2d Atlas test
Change 3042780 on 2016/07/08 by mitchell.wilson
Updating UMG_Paper2d test content for UMG Paper 2d Atlas testing
Change 3042870 on 2016/07/08 by mitchell.wilson
Renaming UMG_Paper2d to UMG_Sprite
Change 3044104 on 2016/07/10 by Nick.Darnell
PR #2104: Improved widget input support (Contributed by projectgheist)
Change 3044107 on 2016/07/10 by Nick.Darnell
Slate - Fixing the slider handle rendering to no longer run off the edge and get cut off.
#jira UE-25750
Change 3044377 on 2016/07/11 by Chris.Wood
Add Slack messaging module - Epic Friday
Change 3044536 on 2016/07/11 by Alex.Delesky
#jira UE-7293 - Mouse locking to viewport is now determined off an enum instead of a boolean, to allow for more flexibility when upgrading with new features.
Change 3044922 on 2016/07/11 by Nick.Darnell
Slate/UMG - Working on better support for VR interactions with Slate widgets. This change fixes a lot of issues with the way interaction works with slate widgets rendered in the virtual world. Breakages, direct mouse interaction with widgets in the virtual world is no longer supported. Those kinds of interactions must all use the WidgetInteractionComponent now, which by default works similar to the lasers in VREditor for interaction. However - you can disable automatic hittesting, and instead provide a custom hitresult instead if you want to use screen tracing and act like you're just a mouse cursor that is supported. Menu anchors now properly function inside of widgets in the virtual world. Performance improvements - the viewport no longer arranges all 3d widgets every frame. Additionally, Widget Components now support a whole bunch of methods for reducing how often they redraw to help control performance, they also support manual refresh. This automatically works in tandem with the widget interaction component to request refresh whenever the widget interaction component is interacting with the widget, thus giving you a simple way to only redraw widgets that the user is hovering on top of. Unrelated - this change also fixes Stop navigation commands not working with Next/Prev navigation - Wrap is still unsupported.
Change 3045157 on 2016/07/11 by Nick.Darnell
Slate - Always consume the bottom face button of the analog cursor, even if it's a repeat.
Change 3045355 on 2016/07/11 by Matt.Kuhlenschmidt
Added logging for unreproducible top 10 crash in matinee when a track ends up not being able to add a keyframe
Change 3045358 on 2016/07/11 by Alex.Delesky
#jira UE-31179 - The editor should now log additional information and hit an assertion if the editor tries to construct FObjectOrAssetData using invalid data. This doesn't stop the crash, but should help get some extra info when it does break.
Change 3045371 on 2016/07/11 by Matt.Kuhlenschmidt
Enable the widget reflector from the editor console by typing "widgetreflector"
Change 3045387 on 2016/07/11 by Stephan.Jiang
Stripping off 'b' in the propertyname so that "Is Enabled" is animated properly.
#UE-31874
Change 3046093 on 2016/07/12 by Nick.Darnell
UMG - The Slider now exposes the IsFocusable option from Slate.
#jira UE-32960
Change 3046094 on 2016/07/12 by Alexis.Matte
#jira UE-32807 scene re-import blueprint hierarchy kept some part of old blueprint component value.
Change 3046104 on 2016/07/12 by Stephan.Jiang
typo "Syc" causing the "Sync" button doesn't show Slateicon
#UE-31409
Change 3046142 on 2016/07/12 by Nick.Darnell
Orion - Upgrading more code to use the new input mode functions and not the deprecated ones.
Change 3046165 on 2016/07/12 by Nick.Darnell
UMG - Fixing a crash on the widget component if the render target is null when reapplied through widget component data.
#jira UE-32844
Change 3046255 on 2016/07/12 by Nick.Darnell
UT - More build warning fixes for the new Input Mode methods.
Change 3046604 on 2016/07/12 by Richard.Hinckley
Adding a template file and code to support creating a UInterface directly from the New C++ Class wizard.
Change 3047071 on 2016/07/12 by Matt.Kuhlenschmidt
Better way of summoning the widget reflector from the console
Change 3047842 on 2016/07/13 by Matt.Kuhlenschmidt
Mark Subdivision surface setting as advanced since it is experimental and definitely for advanced users only
Change 3048754 on 2016/07/13 by Trung.Le
#jira UE-32159 Automatically regain focus after user gets mouse control during PIE session so we can continue process PIE keybinding commands
Change 3048756 on 2016/07/13 by Trung.Le
Removed default toggle pause/play keybinding from BaseInput.ini, instead we should use the action defined in DebuggerCommands that is customizable
Change 3048865 on 2016/07/13 by Trung.Le
#jira UE-32159 SGlobalPlayWorldActions widget shouldn't clear out active widget pointer when it's being handled properly
Change 3048892 on 2016/07/13 by Nick.Darnell
UMG - Fixing a problem with the interaction component, it now does some basic intelligent ignoring of anything it's attached to - excluding widget components. So it's easier to attach it to things that might be inside of a say a player collision capsule. Also removing the 'Max Interaction Distance' from the widget component as that is no longer the arbitor of interaction distance.
#jira UE-33250
Change 3049096 on 2016/07/13 by Trung.Le
Wrap SGlobalPlayActions around ViewportWidget instead of making it a child of ViewportWidget. This was causing PIE to stop working when there are other UMG in game.
#jira UE-33259
Change 3049177 on 2016/07/13 by Stephan.Jiang
Fixing the "No Animation Selected" tag shows up after switching back from Graph to Designer.
#UE-33016
Change 3049726 on 2016/07/14 by Stephan.Jiang
Adding icons for terrain mirror tool
#UE-20588
Change 3049957 on 2016/07/14 by Nick.Darnell
Slate - Fixing a small bug in the virtual user function - was preventing getting the same virtual user multiple times if it had already been created. Adding an option to the widget component to control the focusabilty of the underlying slate window that's created to host the widget content. Adding an option to the widget interaction component to control if it should be simulating mouse input at all - use this to effectively disable hit testing, and changing hover states and the like.
Change 3049994 on 2016/07/14 by Stephan.Jiang
Set viewed animtion to current animtion after switching from Graph to Designer
(This is for "No Animation Selected" showing up when switching)
#UE-33016
Change 3050194 on 2016/07/14 by Stephan.Jiang
Added ability to replace the widget the track is currently bound to
Also includes changes in WidgetBlueprintEditor to send delegate to AnimationtabSummoner when switching from Graph to Designer
#UE-31809
[CL 3050870 by Matt Kuhlenschmidt in Main branch]
2016-07-14 19:07:16 -04:00
// Support undo/redo for the material function if it exists
MaterialFunction - > SetFlags ( RF_Transactional ) ;
2014-03-14 14:13:41 -04:00
Material - > Expressions = MaterialFunction - > FunctionExpressions ;
Material - > EditorComments = MaterialFunction - > FunctionEditorComments ;
// Remove NULL entries, so the rest of the material editor can assume all entries of Material->Expressions are valid
// This can happen if an expression class was removed
for ( int32 ExpressionIndex = Material - > Expressions . Num ( ) - 1 ; ExpressionIndex > = 0 ; ExpressionIndex - - )
{
if ( ! Material - > Expressions [ ExpressionIndex ] )
{
Material - > Expressions . RemoveAt ( ExpressionIndex ) ;
}
}
if ( Material - > Expressions . Num ( ) = = 0 )
{
// If this is an empty functions, create an output by default and start previewing it
2014-04-02 18:09:23 -04:00
if ( GraphEditor . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
2015-11-05 13:00:12 -05:00
check ( ! bMaterialDirty ) ;
2014-03-14 14:13:41 -04:00
UMaterialExpression * Expression = CreateNewMaterialExpression ( UMaterialExpressionFunctionOutput : : StaticClass ( ) , FVector2D ( 200 , 300 ) , false , true ) ;
SetPreviewExpression ( Expression ) ;
2015-11-05 13:00:12 -05:00
// This shouldn't count as having dirtied the material, so reset the flag
bMaterialDirty = false ;
2014-03-14 14:13:41 -04:00
}
}
else
{
bool bSetPreviewExpression = false ;
UMaterialExpressionFunctionOutput * FirstOutput = NULL ;
for ( int32 ExpressionIndex = Material - > Expressions . Num ( ) - 1 ; ExpressionIndex > = 0 ; ExpressionIndex - - )
{
UMaterialExpression * Expression = Material - > Expressions [ ExpressionIndex ] ;
// Setup the expression to be used with the preview material instead of the function
Expression - > Function = NULL ;
Expression - > Material = Material ;
UMaterialExpressionFunctionOutput * FunctionOutput = Cast < UMaterialExpressionFunctionOutput > ( Expression ) ;
if ( FunctionOutput )
{
FirstOutput = FunctionOutput ;
if ( FunctionOutput - > bLastPreviewed )
{
bSetPreviewExpression = true ;
// Preview the last output previewed
2014-04-23 18:21:07 -04:00
SetPreviewExpression ( FunctionOutput ) ;
2014-03-14 14:13:41 -04:00
}
}
2014-04-23 18:21:07 -04:00
}
2014-03-14 14:13:41 -04:00
if ( ! bSetPreviewExpression & & FirstOutput )
{
2014-04-23 18:21:07 -04:00
SetPreviewExpression ( FirstOutput ) ;
2014-03-14 14:13:41 -04:00
}
}
2014-04-23 18:06:41 -04:00
}
2014-03-14 14:13:41 -04:00
2014-09-11 08:13:08 -04:00
// Store the name of this material (for the tutorial widget meta)
Material - > MaterialGraph - > OriginalMaterialFullName = OriginalMaterial - > GetName ( ) ;
2014-04-23 18:21:07 -04:00
Material - > MaterialGraph - > RebuildGraph ( ) ;
RecenterEditor ( ) ;
2014-07-08 10:58:56 -04:00
//Make sure the preview material is initialized.
UpdatePreviewMaterial ( true ) ;
RegenerateCodeView ( true ) ;
2014-04-23 18:21:07 -04:00
ForceRefreshExpressionPreviews ( ) ;
}
2014-03-14 14:13:41 -04:00
FMaterialEditor : : FMaterialEditor ( )
: bMaterialDirty ( false )
, bStatsFromPreviewMaterial ( false )
, Material ( NULL )
, OriginalMaterial ( NULL )
, ExpressionPreviewMaterial ( NULL )
2014-04-23 20:20:58 -04:00
, EmptyMaterial ( NULL )
2014-03-14 14:13:41 -04:00
, PreviewExpression ( NULL )
, MaterialFunction ( NULL )
, OriginalMaterialObject ( NULL )
, EditorOptions ( NULL )
, ScopedTransaction ( NULL )
, bAlwaysRefreshAllPreviews ( false )
, bHideUnusedConnectors ( false )
2014-07-08 10:58:56 -04:00
, bLivePreview ( true )
2014-03-14 14:13:41 -04:00
, bIsRealtime ( false )
, bShowStats ( true )
2014-04-23 20:20:58 -04:00
, bShowBuiltinStats ( false )
2014-03-14 14:13:41 -04:00
, bShowMobileStats ( false )
2015-05-21 14:20:41 -04:00
, MenuExtensibilityManager ( new FExtensibilityManager )
, ToolBarExtensibilityManager ( new FExtensibilityManager )
2014-03-14 14:13:41 -04:00
{
}
FMaterialEditor : : ~ FMaterialEditor ( )
{
2015-05-21 14:20:41 -04:00
// Broadcast that this editor is going down to all listeners
OnMaterialEditorClosed ( ) . Broadcast ( ) ;
2014-10-23 21:38:06 -04:00
for ( int32 ParameterIndex = 0 ; ParameterIndex < OverriddenVectorParametersToRevert . Num ( ) ; ParameterIndex + + )
{
SetVectorParameterDefaultOnDependentMaterials ( OverriddenVectorParametersToRevert [ ParameterIndex ] , FLinearColor : : Black , false ) ;
}
for ( int32 ParameterIndex = 0 ; ParameterIndex < OverriddenScalarParametersToRevert . Num ( ) ; ParameterIndex + + )
{
SetScalarParameterDefaultOnDependentMaterials ( OverriddenScalarParametersToRevert [ ParameterIndex ] , 0 , false ) ;
}
2014-03-14 14:13:41 -04:00
// Unregister this delegate
FEditorSupportDelegates : : MaterialUsageFlagsChanged . RemoveAll ( this ) ;
2014-10-23 21:38:06 -04:00
FEditorSupportDelegates : : VectorParameterDefaultChanged . RemoveAll ( this ) ;
FEditorSupportDelegates : : ScalarParameterDefaultChanged . RemoveAll ( this ) ;
2014-03-14 14:13:41 -04:00
// Null out the expression preview material so they can be GC'ed
ExpressionPreviewMaterial = NULL ;
// Save editor settings to disk.
SaveEditorSettings ( ) ;
MaterialDetailsView . Reset ( ) ;
2014-04-23 18:21:07 -04:00
{
SCOPED_SUSPEND_RENDERING_THREAD ( true ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ExpressionPreviews . Empty ( ) ;
2014-03-14 14:13:41 -04:00
}
2014-04-23 18:21:07 -04:00
check ( ! ScopedTransaction ) ;
GEditor - > UnregisterForUndo ( this ) ;
}
2014-03-14 14:13:41 -04:00
void FMaterialEditor : : GetAllMaterialExpressionGroups ( TArray < FString > * OutGroups )
{
for ( int32 MaterialExpressionIndex = 0 ; MaterialExpressionIndex < Material - > Expressions . Num ( ) ; + + MaterialExpressionIndex )
{
UMaterialExpression * MaterialExpression = Material - > Expressions [ MaterialExpressionIndex ] ;
UMaterialExpressionParameter * Switch = Cast < UMaterialExpressionParameter > ( MaterialExpression ) ;
UMaterialExpressionTextureSampleParameter * TextureS = Cast < UMaterialExpressionTextureSampleParameter > ( MaterialExpression ) ;
UMaterialExpressionFontSampleParameter * FontS = Cast < UMaterialExpressionFontSampleParameter > ( MaterialExpression ) ;
if ( Switch )
{
OutGroups - > AddUnique ( Switch - > Group . ToString ( ) ) ;
}
if ( TextureS )
{
OutGroups - > AddUnique ( TextureS - > Group . ToString ( ) ) ;
}
if ( FontS )
{
OutGroups - > AddUnique ( FontS - > Group . ToString ( ) ) ;
}
}
}
2015-06-22 15:55:50 -04:00
void FMaterialEditor : : UpdatePreviewViewportsVisibility ( )
{
if ( Material - > IsUIMaterial ( ) )
{
PreviewViewport - > SetVisibility ( EVisibility : : Collapsed ) ;
PreviewUIViewport - > SetVisibility ( EVisibility : : Visible ) ;
}
else
{
PreviewViewport - > SetVisibility ( EVisibility : : Visible ) ;
PreviewUIViewport - > SetVisibility ( EVisibility : : Collapsed ) ;
}
}
2014-03-14 14:13:41 -04:00
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
void FMaterialEditor : : CreateInternalWidgets ( )
{
2015-06-22 15:55:50 -04:00
PreviewViewport = SNew ( SMaterialEditor3DPreviewViewport )
2014-03-14 14:13:41 -04:00
. MaterialEditor ( SharedThis ( this ) ) ;
2015-06-22 15:55:50 -04:00
PreviewUIViewport = SNew ( SMaterialEditorUIPreviewViewport , Material ) ;
2014-03-14 14:13:41 -04:00
FPropertyEditorModule & PropertyEditorModule = FModuleManager : : GetModuleChecked < FPropertyEditorModule > ( " PropertyEditor " ) ;
2014-04-23 18:21:07 -04:00
GraphEditor = CreateGraphEditorWidget ( ) ;
// Manually set zoom level to avoid deferred zooming
GraphEditor - > SetViewLocation ( FVector2D : : ZeroVector , 1 ) ;
2015-01-26 17:14:50 -05:00
const FDetailsViewArgs DetailsViewArgs ( false , false , true , FDetailsViewArgs : : HideNameArea , true , this ) ;
2014-04-23 18:21:07 -04:00
MaterialDetailsView = PropertyEditorModule . CreateDetailView ( DetailsViewArgs ) ;
2014-03-14 14:13:41 -04:00
FOnGetDetailCustomizationInstance LayoutExpressionParameterDetails = FOnGetDetailCustomizationInstance : : CreateStatic (
& FMaterialExpressionParameterDetails : : MakeInstance , FOnCollectParameterGroups : : CreateSP ( this , & FMaterialEditor : : GetAllMaterialExpressionGroups ) ) ;
MaterialDetailsView - > RegisterInstancedCustomPropertyLayout (
UMaterialExpressionParameter : : StaticClass ( ) ,
LayoutExpressionParameterDetails
) ;
MaterialDetailsView - > RegisterInstancedCustomPropertyLayout (
UMaterialExpressionFontSampleParameter : : StaticClass ( ) ,
LayoutExpressionParameterDetails
) ;
MaterialDetailsView - > RegisterInstancedCustomPropertyLayout (
UMaterialExpressionTextureSampleParameter : : StaticClass ( ) ,
LayoutExpressionParameterDetails
) ;
FOnGetDetailCustomizationInstance LayoutCollectionParameterDetails = FOnGetDetailCustomizationInstance : : CreateStatic ( & FMaterialExpressionCollectionParameterDetails : : MakeInstance ) ;
MaterialDetailsView - > RegisterInstancedCustomPropertyLayout (
UMaterialExpressionCollectionParameter : : StaticClass ( ) ,
LayoutCollectionParameterDetails
) ;
2015-06-22 15:55:50 -04:00
PropertyEditorModule . RegisterCustomClassLayout ( UMaterial : : StaticClass ( ) - > GetFName ( ) , FOnGetDetailCustomizationInstance : : CreateStatic ( & FMaterialDetailCustomization : : MakeInstance ) ) ;
2014-04-23 18:21:07 -04:00
Palette = SNew ( SMaterialPalette , SharedThis ( this ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
FMessageLogModule & MessageLogModule = FModuleManager : : LoadModuleChecked < FMessageLogModule > ( " MessageLog " ) ;
FMessageLogInitializationOptions LogOptions ;
// Show Pages so that user is never allowed to clear log messages
2014-08-26 14:02:18 -04:00
LogOptions . bShowPages = false ;
LogOptions . bShowFilters = false ; //TODO - Provide custom filters? E.g. "Critical Errors" vs "Errors" needed for materials?
LogOptions . bAllowClear = false ;
2014-04-23 18:21:07 -04:00
LogOptions . MaxPageCount = 1 ;
StatsListing = MessageLogModule . CreateLogListing ( " MaterialEditorStats " , LogOptions ) ;
2014-03-14 14:13:41 -04:00
2014-09-16 13:46:20 -04:00
Stats = MessageLogModule . CreateLogListingWidget ( StatsListing . ToSharedRef ( ) ) ;
2014-04-23 18:21:07 -04:00
FindResults =
SNew ( SFindInMaterial , SharedThis ( this ) ) ;
2014-03-14 14:13:41 -04:00
CodeViewUtility =
SNew ( SVerticalBox )
// Copy Button
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
SNew ( SHorizontalBox )
+ SHorizontalBox : : Slot ( )
. AutoWidth ( )
. Padding ( 2.0f , 0.0f )
. VAlign ( VAlign_Center )
. HAlign ( HAlign_Left )
[
SNew ( SButton )
2014-04-23 18:06:41 -04:00
. Text ( LOCTEXT ( " CopyHLSLButton " , " Copy " ) )
. ToolTipText ( LOCTEXT ( " CopyHLSLButtonToolTip " , " Copies all HLSL code to the clipboard. " ) )
2014-03-14 14:13:41 -04:00
. ContentPadding ( 3 )
. OnClicked ( this , & FMaterialEditor : : CopyCodeViewTextToClipboard )
]
]
// Separator
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
SNew ( SSeparator )
] ;
CodeView =
SNew ( SScrollBox )
+ SScrollBox : : Slot ( ) . Padding ( 5 )
[
SNew ( STextBlock )
. Text ( this , & FMaterialEditor : : GetCodeViewText )
] ;
RegenerateCodeView ( ) ;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
FName FMaterialEditor : : GetToolkitFName ( ) const
{
return FName ( " MaterialEditor " ) ;
}
FText FMaterialEditor : : GetBaseToolkitName ( ) const
{
return LOCTEXT ( " AppLabel " , " Material Editor " ) ;
}
FText FMaterialEditor : : GetToolkitName ( ) const
{
const UObject * EditingObject = GetEditingObjects ( ) [ 0 ] ;
const bool bDirtyState = EditingObject - > GetOutermost ( ) - > IsDirty ( ) ;
// Overridden to accommodate editing of multiple objects (original and preview materials)
FFormatNamedArguments Args ;
Args . Add ( TEXT ( " ObjectName " ) , FText : : FromString ( EditingObject - > GetName ( ) ) ) ;
Args . Add ( TEXT ( " DirtyState " ) , bDirtyState ? FText : : FromString ( TEXT ( " * " ) ) : FText : : GetEmpty ( ) ) ;
return FText : : Format ( LOCTEXT ( " MaterialEditorAppLabel " , " {ObjectName}{DirtyState} " ) , Args ) ;
}
2015-05-26 09:14:55 -04:00
FText FMaterialEditor : : GetToolkitToolTipText ( ) const
{
const UObject * EditingObject = GetEditingObjects ( ) [ 0 ] ;
// Overridden to accommodate editing of multiple objects (original and preview materials)
return FAssetEditorToolkit : : GetToolTipTextForObject ( EditingObject ) ;
}
2014-03-14 14:13:41 -04:00
FString FMaterialEditor : : GetWorldCentricTabPrefix ( ) const
{
return LOCTEXT ( " WorldCentricTabPrefix " , " Material " ) . ToString ( ) ;
}
FLinearColor FMaterialEditor : : GetWorldCentricTabColorScale ( ) const
{
return FLinearColor ( 0.3f , 0.2f , 0.5f , 0.5f ) ;
}
void FMaterialEditor : : Tick ( float InDeltaTime )
{
2014-04-23 18:21:07 -04:00
UpdateMaterialInfoList ( ) ;
UpdateGraphNodeStates ( ) ;
}
2014-03-14 14:13:41 -04:00
TStatId FMaterialEditor : : GetStatId ( ) const
{
RETURN_QUICK_DECLARE_CYCLE_STAT ( FMaterialEditor , STATGROUP_Tickables ) ;
}
void FMaterialEditor : : UpdateThumbnailInfoPreviewMesh ( UMaterialInterface * MatInterface )
{
if ( MatInterface )
{
FAssetToolsModule & AssetToolsModule = FModuleManager : : LoadModuleChecked < FAssetToolsModule > ( " AssetTools " ) ;
TWeakPtr < IAssetTypeActions > AssetTypeActions = AssetToolsModule . Get ( ) . GetAssetTypeActionsForClass ( MatInterface - > GetClass ( ) ) ;
if ( AssetTypeActions . IsValid ( ) )
{
USceneThumbnailInfoWithPrimitive * OriginalThumbnailInfo = Cast < USceneThumbnailInfoWithPrimitive > ( AssetTypeActions . Pin ( ) - > GetThumbnailInfo ( MatInterface ) ) ;
if ( OriginalThumbnailInfo )
{
OriginalThumbnailInfo - > PreviewMesh = MatInterface - > PreviewMesh ;
MatInterface - > PostEditChange ( ) ;
}
}
}
}
void FMaterialEditor : : ExtendToolbar ( )
{
struct Local
{
2014-04-23 18:21:07 -04:00
static void FillToolbar ( FToolBarBuilder & ToolbarBuilder )
2014-03-14 14:13:41 -04:00
{
ToolbarBuilder . BeginSection ( " Apply " ) ;
{
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . Apply ) ;
}
ToolbarBuilder . EndSection ( ) ;
2014-04-23 18:21:07 -04:00
ToolbarBuilder . BeginSection ( " Search " ) ;
{
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . FindInMaterial ) ;
}
ToolbarBuilder . EndSection ( ) ;
2014-03-14 14:13:41 -04:00
ToolbarBuilder . BeginSection ( " Graph " ) ;
{
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . CameraHome ) ;
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . CleanUnusedExpressions ) ;
2014-07-03 09:13:33 -04:00
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . ShowHideConnectors ) ;
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . ToggleLivePreview ) ;
2014-03-14 14:13:41 -04:00
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . ToggleRealtimeExpressions ) ;
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . AlwaysRefreshAllPreviews ) ;
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . ToggleMaterialStats ) ;
ToolbarBuilder . AddToolBarButton ( FMaterialEditorCommands : : Get ( ) . ToggleMobileStats ) ;
}
ToolbarBuilder . EndSection ( ) ;
}
} ;
TSharedPtr < FExtender > ToolbarExtender = MakeShareable ( new FExtender ) ;
ToolbarExtender - > AddToolBarExtension (
" Asset " ,
EExtensionHook : : After ,
GetToolkitCommands ( ) ,
2014-04-23 18:21:07 -04:00
FToolBarExtensionDelegate : : CreateStatic ( & Local : : FillToolbar )
2014-03-14 14:13:41 -04:00
) ;
AddToolbarExtender ( ToolbarExtender ) ;
2015-05-21 14:20:41 -04:00
AddToolbarExtender ( GetToolBarExtensibilityManager ( ) - > GetAllExtenders ( GetToolkitCommands ( ) , GetEditingObjects ( ) ) ) ;
2014-03-14 14:13:41 -04:00
IMaterialEditorModule * MaterialEditorModule = & FModuleManager : : LoadModuleChecked < IMaterialEditorModule > ( " MaterialEditor " ) ;
AddToolbarExtender ( MaterialEditorModule - > GetToolBarExtensibilityManager ( ) - > GetAllExtenders ( GetToolkitCommands ( ) , GetEditingObjects ( ) ) ) ;
}
UMaterialInterface * FMaterialEditor : : GetMaterialInterface ( ) const
{
return Material ;
}
2015-02-19 00:33:19 -05:00
bool FMaterialEditor : : ApproveSetPreviewAsset ( UObject * InAsset )
2014-03-14 14:13:41 -04:00
{
bool bApproved = true ;
2015-02-19 00:33:19 -05:00
2014-03-14 14:13:41 -04:00
// Only permit the use of a skeletal mesh if the material has bUsedWithSkeltalMesh.
2015-02-19 00:33:19 -05:00
if ( USkeletalMesh * SkeletalMesh = Cast < USkeletalMesh > ( InAsset ) )
2014-03-14 14:13:41 -04:00
{
2015-02-19 00:33:19 -05:00
if ( ! Material - > bUsedWithSkeletalMesh )
{
FMessageDialog : : Open ( EAppMsgType : : Ok , NSLOCTEXT ( " UnrealEd " , " Error_MaterialEditor_CantPreviewOnSkelMesh " , " Can't preview on the specified skeletal mesh because the material has not been compiled with bUsedWithSkeletalMesh. " ) ) ;
bApproved = false ;
}
2014-03-14 14:13:41 -04:00
}
2015-02-19 00:33:19 -05:00
2014-03-14 14:13:41 -04:00
return bApproved ;
}
Copying //UE4/Dev-Sequencer to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2859626 on 2016/02/08 by Max.Preussner
Editor: Added SaveAs functionality to content asset editors
Change 2859666 on 2016/02/08 by Max.Chen
Sequencer: Fix crash in CheckForWorldGCLeaks when loading a new map because spawnables are left behind.
#jira UE-25616
Change 2859685 on 2016/02/08 by Max.Chen
Sequencer: Add prompt to save sub level sequences if they are dirty
#jira UE-26510
Change 2859715 on 2016/02/08 by Thomas.Sarkanen
Adding actor spawning recording
Actors are queued for record on spawn then added to the list like manually-specifed ones.
Changed almost everything about UActorRecording. We now record on a per-component basis, with property tracks encapsulated in each actor recording. Much effort is expended to make sure that the correct components are owned by their respective actors, as we can add and remove components at runtime, but they must be created up-front in the UMovieScene Blueprints. We go as far as to add our own SCS nodes to make sure components are correctly spawned.
Fixed infinite loop in FSequencer::AddSpawnable.
Fixed visibility track instance to work with scene components as well as actors.
Fixed particle track instance to work on UParticleSystemComponent rather than just AEmitters.
Added particle recorder.
Moved animation recording into an animation property recorder rather than having it as a special case. This still uses the animation recorder under the hood.
Moved old-style Matinee animation control into FMovieSceneSkeletalAnimationTrackInstance & made this work on USkeletalMeshComponents directly, rather than via the old interface.
Exposed SetMatineeAnimPositionInner and PreviewMatineeSetAnimPositionInner in FAnimMontageInstance so those utility functions can be used externally to Engine.
Added a predicate version of UMovieScene::FindPossessable.
Exposed UMovieSceneParticleSection::AddKey externally via MOVIESCENETRACKS_API so I can programmatically add keys.
Fixed a crash in FScalableFloatDetails::CustomizeHeader when selecting PIE projectiles in Orion.
Moved all recorders over to recording Actors or Components & store UObjects instead of AActors.
Allowed skeletal animation tracks on components as well as actors.
Change 2862675 on 2016/02/10 by Max.Chen
Sequencer: Add option to link the sequencer curve editor with the sequencer timeline.
Under General Options->Link Curve Editor Time Range. The default is false, so the sequencer and curve editor have separate time ranges.
#jira UE-25933
Change 2862699 on 2016/02/11 by Max.Chen
Sequencer: Added a playback status of jumping which the AudioTrack and Skeletal Mesh Track (anim notifies) ignores for updates. This is used to updating thumbnail at certain times.
#jira UE-26447, UE-26671
Change 2862712 on 2016/02/11 by Max.Chen
Sequencer: Fix spawnables firing off their particles. Disable auto activate on spawnable components
#jira UE-26390
Change 2862719 on 2016/02/11 by Max.Preussner
Editor: Refactored detail customizations for colors, rotators, vectors
- broke color and rotator customizations out into their own files
- added vector customizations (placeholder)
- cleaned up localization namespaces, forward declarations
Change 2866454 on 2016/02/14 by Max.Preussner
Sequencer: Removed ULevelEditorSequencerSettings; moved default settings into INI
Change 2866455 on 2016/02/14 by Thomas.Sarkanen
Sequence recorder can now record replays
Added extra edtior-only UI to the replay playback controls to record sequences. Curretnly very placeholder: only records the entire sequence and provides no feedback in the UI if it is recording.
Fixed bindings to recorded objects not working in various circumstances. Added the ability to manually create a binding.
Recompiled actor blueprints post-record if we added components.
Fixed a null ptr dereference in FOrionTeamUIInfo::Update.
Removed tolerances when reducing tracks - they are now 'very small'.
Added actor filter so actors of certain classes can be recorded.
Change 2866458 on 2016/02/14 by Max.Chen
Sequencer: Fix anim notifies that fire at shot cuts. Anim notifies are fired from the last position to the current position. When jumping cuts, we want the delta to be 0 so that the anim notifies before the shot are not fired off.
#jira UE-26390, UE-26671
Change 2866459 on 2016/02/14 by Max.Chen
Sequencer: Add option to toggle visibility of combined keys
Change 2866466 on 2016/02/14 by Frank.Fella
Sequencer - Add a track for controlling streamed level visibilty and remove visibility code from the master level blueprint.
Change 2866470 on 2016/02/14 by Max.Chen
Sequencer: Add return value to indicate data has changed when a section has been added. This fixes a bug where creating a new section doesn't seem to add a key.
#jira UE-26837
Change 2866481 on 2016/02/14 by Max.Preussner
Sequencer: Implemented Presets for adding tracks automatically based on actor type (UE-24513)
#Jira: UE-24513
Change 2866482 on 2016/02/14 by Max.Chen
Sequencer: Allow for any actor that has a camera component to be a camera cut.
#jira UE-26777
Change 2866484 on 2016/02/14 by Thomas.Sarkanen
Added in/out times to sequence recording
Also added the optional ability to record different actor types (heroes, projectiles, minions).
Change 2866495 on 2016/02/14 by Max.Chen
Sequencer: Need to limit camera control to the section bounds of the camera cut otherwise, control won't be relinquished back to player at the end of the playback.
#jira UE-26886
[CL 2874647 by Max Chen in Main branch]
2016-02-19 21:36:27 -05:00
void FMaterialEditor : : GetSaveableObjects ( TArray < UObject * > & OutObjects ) const
{
if ( ( MaterialFunction ! = nullptr ) & & MaterialFunction - > ParentFunction )
{
OutObjects . Add ( MaterialFunction - > ParentFunction ) ;
}
else
{
OutObjects . Add ( OriginalMaterial ) ;
}
}
2014-03-14 14:13:41 -04:00
void FMaterialEditor : : SaveAsset_Execute ( )
{
UE_LOG ( LogMaterialEditor , Log , TEXT ( " Saving and Compiling material %s " ) , * GetEditingObjects ( ) [ 0 ] - > GetName ( ) ) ;
2015-01-30 16:12:10 -05:00
if ( bMaterialDirty )
{
UpdateOriginalMaterial ( ) ;
}
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Sequencer to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2859626 on 2016/02/08 by Max.Preussner
Editor: Added SaveAs functionality to content asset editors
Change 2859666 on 2016/02/08 by Max.Chen
Sequencer: Fix crash in CheckForWorldGCLeaks when loading a new map because spawnables are left behind.
#jira UE-25616
Change 2859685 on 2016/02/08 by Max.Chen
Sequencer: Add prompt to save sub level sequences if they are dirty
#jira UE-26510
Change 2859715 on 2016/02/08 by Thomas.Sarkanen
Adding actor spawning recording
Actors are queued for record on spawn then added to the list like manually-specifed ones.
Changed almost everything about UActorRecording. We now record on a per-component basis, with property tracks encapsulated in each actor recording. Much effort is expended to make sure that the correct components are owned by their respective actors, as we can add and remove components at runtime, but they must be created up-front in the UMovieScene Blueprints. We go as far as to add our own SCS nodes to make sure components are correctly spawned.
Fixed infinite loop in FSequencer::AddSpawnable.
Fixed visibility track instance to work with scene components as well as actors.
Fixed particle track instance to work on UParticleSystemComponent rather than just AEmitters.
Added particle recorder.
Moved animation recording into an animation property recorder rather than having it as a special case. This still uses the animation recorder under the hood.
Moved old-style Matinee animation control into FMovieSceneSkeletalAnimationTrackInstance & made this work on USkeletalMeshComponents directly, rather than via the old interface.
Exposed SetMatineeAnimPositionInner and PreviewMatineeSetAnimPositionInner in FAnimMontageInstance so those utility functions can be used externally to Engine.
Added a predicate version of UMovieScene::FindPossessable.
Exposed UMovieSceneParticleSection::AddKey externally via MOVIESCENETRACKS_API so I can programmatically add keys.
Fixed a crash in FScalableFloatDetails::CustomizeHeader when selecting PIE projectiles in Orion.
Moved all recorders over to recording Actors or Components & store UObjects instead of AActors.
Allowed skeletal animation tracks on components as well as actors.
Change 2862675 on 2016/02/10 by Max.Chen
Sequencer: Add option to link the sequencer curve editor with the sequencer timeline.
Under General Options->Link Curve Editor Time Range. The default is false, so the sequencer and curve editor have separate time ranges.
#jira UE-25933
Change 2862699 on 2016/02/11 by Max.Chen
Sequencer: Added a playback status of jumping which the AudioTrack and Skeletal Mesh Track (anim notifies) ignores for updates. This is used to updating thumbnail at certain times.
#jira UE-26447, UE-26671
Change 2862712 on 2016/02/11 by Max.Chen
Sequencer: Fix spawnables firing off their particles. Disable auto activate on spawnable components
#jira UE-26390
Change 2862719 on 2016/02/11 by Max.Preussner
Editor: Refactored detail customizations for colors, rotators, vectors
- broke color and rotator customizations out into their own files
- added vector customizations (placeholder)
- cleaned up localization namespaces, forward declarations
Change 2866454 on 2016/02/14 by Max.Preussner
Sequencer: Removed ULevelEditorSequencerSettings; moved default settings into INI
Change 2866455 on 2016/02/14 by Thomas.Sarkanen
Sequence recorder can now record replays
Added extra edtior-only UI to the replay playback controls to record sequences. Curretnly very placeholder: only records the entire sequence and provides no feedback in the UI if it is recording.
Fixed bindings to recorded objects not working in various circumstances. Added the ability to manually create a binding.
Recompiled actor blueprints post-record if we added components.
Fixed a null ptr dereference in FOrionTeamUIInfo::Update.
Removed tolerances when reducing tracks - they are now 'very small'.
Added actor filter so actors of certain classes can be recorded.
Change 2866458 on 2016/02/14 by Max.Chen
Sequencer: Fix anim notifies that fire at shot cuts. Anim notifies are fired from the last position to the current position. When jumping cuts, we want the delta to be 0 so that the anim notifies before the shot are not fired off.
#jira UE-26390, UE-26671
Change 2866459 on 2016/02/14 by Max.Chen
Sequencer: Add option to toggle visibility of combined keys
Change 2866466 on 2016/02/14 by Frank.Fella
Sequencer - Add a track for controlling streamed level visibilty and remove visibility code from the master level blueprint.
Change 2866470 on 2016/02/14 by Max.Chen
Sequencer: Add return value to indicate data has changed when a section has been added. This fixes a bug where creating a new section doesn't seem to add a key.
#jira UE-26837
Change 2866481 on 2016/02/14 by Max.Preussner
Sequencer: Implemented Presets for adding tracks automatically based on actor type (UE-24513)
#Jira: UE-24513
Change 2866482 on 2016/02/14 by Max.Chen
Sequencer: Allow for any actor that has a camera component to be a camera cut.
#jira UE-26777
Change 2866484 on 2016/02/14 by Thomas.Sarkanen
Added in/out times to sequence recording
Also added the optional ability to record different actor types (heroes, projectiles, minions).
Change 2866495 on 2016/02/14 by Max.Chen
Sequencer: Need to limit camera control to the section bounds of the camera cut otherwise, control won't be relinquished back to player at the end of the playback.
#jira UE-26886
[CL 2874647 by Max Chen in Main branch]
2016-02-19 21:36:27 -05:00
IMaterialEditor : : SaveAsset_Execute ( ) ;
}
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Sequencer to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2859626 on 2016/02/08 by Max.Preussner
Editor: Added SaveAs functionality to content asset editors
Change 2859666 on 2016/02/08 by Max.Chen
Sequencer: Fix crash in CheckForWorldGCLeaks when loading a new map because spawnables are left behind.
#jira UE-25616
Change 2859685 on 2016/02/08 by Max.Chen
Sequencer: Add prompt to save sub level sequences if they are dirty
#jira UE-26510
Change 2859715 on 2016/02/08 by Thomas.Sarkanen
Adding actor spawning recording
Actors are queued for record on spawn then added to the list like manually-specifed ones.
Changed almost everything about UActorRecording. We now record on a per-component basis, with property tracks encapsulated in each actor recording. Much effort is expended to make sure that the correct components are owned by their respective actors, as we can add and remove components at runtime, but they must be created up-front in the UMovieScene Blueprints. We go as far as to add our own SCS nodes to make sure components are correctly spawned.
Fixed infinite loop in FSequencer::AddSpawnable.
Fixed visibility track instance to work with scene components as well as actors.
Fixed particle track instance to work on UParticleSystemComponent rather than just AEmitters.
Added particle recorder.
Moved animation recording into an animation property recorder rather than having it as a special case. This still uses the animation recorder under the hood.
Moved old-style Matinee animation control into FMovieSceneSkeletalAnimationTrackInstance & made this work on USkeletalMeshComponents directly, rather than via the old interface.
Exposed SetMatineeAnimPositionInner and PreviewMatineeSetAnimPositionInner in FAnimMontageInstance so those utility functions can be used externally to Engine.
Added a predicate version of UMovieScene::FindPossessable.
Exposed UMovieSceneParticleSection::AddKey externally via MOVIESCENETRACKS_API so I can programmatically add keys.
Fixed a crash in FScalableFloatDetails::CustomizeHeader when selecting PIE projectiles in Orion.
Moved all recorders over to recording Actors or Components & store UObjects instead of AActors.
Allowed skeletal animation tracks on components as well as actors.
Change 2862675 on 2016/02/10 by Max.Chen
Sequencer: Add option to link the sequencer curve editor with the sequencer timeline.
Under General Options->Link Curve Editor Time Range. The default is false, so the sequencer and curve editor have separate time ranges.
#jira UE-25933
Change 2862699 on 2016/02/11 by Max.Chen
Sequencer: Added a playback status of jumping which the AudioTrack and Skeletal Mesh Track (anim notifies) ignores for updates. This is used to updating thumbnail at certain times.
#jira UE-26447, UE-26671
Change 2862712 on 2016/02/11 by Max.Chen
Sequencer: Fix spawnables firing off their particles. Disable auto activate on spawnable components
#jira UE-26390
Change 2862719 on 2016/02/11 by Max.Preussner
Editor: Refactored detail customizations for colors, rotators, vectors
- broke color and rotator customizations out into their own files
- added vector customizations (placeholder)
- cleaned up localization namespaces, forward declarations
Change 2866454 on 2016/02/14 by Max.Preussner
Sequencer: Removed ULevelEditorSequencerSettings; moved default settings into INI
Change 2866455 on 2016/02/14 by Thomas.Sarkanen
Sequence recorder can now record replays
Added extra edtior-only UI to the replay playback controls to record sequences. Curretnly very placeholder: only records the entire sequence and provides no feedback in the UI if it is recording.
Fixed bindings to recorded objects not working in various circumstances. Added the ability to manually create a binding.
Recompiled actor blueprints post-record if we added components.
Fixed a null ptr dereference in FOrionTeamUIInfo::Update.
Removed tolerances when reducing tracks - they are now 'very small'.
Added actor filter so actors of certain classes can be recorded.
Change 2866458 on 2016/02/14 by Max.Chen
Sequencer: Fix anim notifies that fire at shot cuts. Anim notifies are fired from the last position to the current position. When jumping cuts, we want the delta to be 0 so that the anim notifies before the shot are not fired off.
#jira UE-26390, UE-26671
Change 2866459 on 2016/02/14 by Max.Chen
Sequencer: Add option to toggle visibility of combined keys
Change 2866466 on 2016/02/14 by Frank.Fella
Sequencer - Add a track for controlling streamed level visibilty and remove visibility code from the master level blueprint.
Change 2866470 on 2016/02/14 by Max.Chen
Sequencer: Add return value to indicate data has changed when a section has been added. This fixes a bug where creating a new section doesn't seem to add a key.
#jira UE-26837
Change 2866481 on 2016/02/14 by Max.Preussner
Sequencer: Implemented Presets for adding tracks automatically based on actor type (UE-24513)
#Jira: UE-24513
Change 2866482 on 2016/02/14 by Max.Chen
Sequencer: Allow for any actor that has a camera component to be a camera cut.
#jira UE-26777
Change 2866484 on 2016/02/14 by Thomas.Sarkanen
Added in/out times to sequence recording
Also added the optional ability to record different actor types (heroes, projectiles, minions).
Change 2866495 on 2016/02/14 by Max.Chen
Sequencer: Need to limit camera control to the section bounds of the camera cut otherwise, control won't be relinquished back to player at the end of the playback.
#jira UE-26886
[CL 2874647 by Max Chen in Main branch]
2016-02-19 21:36:27 -05:00
void FMaterialEditor : : SaveAssetAs_Execute ( )
{
UE_LOG ( LogMaterialEditor , Log , TEXT ( " Saving and Compiling material %s " ) , * GetEditingObjects ( ) [ 0 ] - > GetName ( ) ) ;
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Sequencer to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2859626 on 2016/02/08 by Max.Preussner
Editor: Added SaveAs functionality to content asset editors
Change 2859666 on 2016/02/08 by Max.Chen
Sequencer: Fix crash in CheckForWorldGCLeaks when loading a new map because spawnables are left behind.
#jira UE-25616
Change 2859685 on 2016/02/08 by Max.Chen
Sequencer: Add prompt to save sub level sequences if they are dirty
#jira UE-26510
Change 2859715 on 2016/02/08 by Thomas.Sarkanen
Adding actor spawning recording
Actors are queued for record on spawn then added to the list like manually-specifed ones.
Changed almost everything about UActorRecording. We now record on a per-component basis, with property tracks encapsulated in each actor recording. Much effort is expended to make sure that the correct components are owned by their respective actors, as we can add and remove components at runtime, but they must be created up-front in the UMovieScene Blueprints. We go as far as to add our own SCS nodes to make sure components are correctly spawned.
Fixed infinite loop in FSequencer::AddSpawnable.
Fixed visibility track instance to work with scene components as well as actors.
Fixed particle track instance to work on UParticleSystemComponent rather than just AEmitters.
Added particle recorder.
Moved animation recording into an animation property recorder rather than having it as a special case. This still uses the animation recorder under the hood.
Moved old-style Matinee animation control into FMovieSceneSkeletalAnimationTrackInstance & made this work on USkeletalMeshComponents directly, rather than via the old interface.
Exposed SetMatineeAnimPositionInner and PreviewMatineeSetAnimPositionInner in FAnimMontageInstance so those utility functions can be used externally to Engine.
Added a predicate version of UMovieScene::FindPossessable.
Exposed UMovieSceneParticleSection::AddKey externally via MOVIESCENETRACKS_API so I can programmatically add keys.
Fixed a crash in FScalableFloatDetails::CustomizeHeader when selecting PIE projectiles in Orion.
Moved all recorders over to recording Actors or Components & store UObjects instead of AActors.
Allowed skeletal animation tracks on components as well as actors.
Change 2862675 on 2016/02/10 by Max.Chen
Sequencer: Add option to link the sequencer curve editor with the sequencer timeline.
Under General Options->Link Curve Editor Time Range. The default is false, so the sequencer and curve editor have separate time ranges.
#jira UE-25933
Change 2862699 on 2016/02/11 by Max.Chen
Sequencer: Added a playback status of jumping which the AudioTrack and Skeletal Mesh Track (anim notifies) ignores for updates. This is used to updating thumbnail at certain times.
#jira UE-26447, UE-26671
Change 2862712 on 2016/02/11 by Max.Chen
Sequencer: Fix spawnables firing off their particles. Disable auto activate on spawnable components
#jira UE-26390
Change 2862719 on 2016/02/11 by Max.Preussner
Editor: Refactored detail customizations for colors, rotators, vectors
- broke color and rotator customizations out into their own files
- added vector customizations (placeholder)
- cleaned up localization namespaces, forward declarations
Change 2866454 on 2016/02/14 by Max.Preussner
Sequencer: Removed ULevelEditorSequencerSettings; moved default settings into INI
Change 2866455 on 2016/02/14 by Thomas.Sarkanen
Sequence recorder can now record replays
Added extra edtior-only UI to the replay playback controls to record sequences. Curretnly very placeholder: only records the entire sequence and provides no feedback in the UI if it is recording.
Fixed bindings to recorded objects not working in various circumstances. Added the ability to manually create a binding.
Recompiled actor blueprints post-record if we added components.
Fixed a null ptr dereference in FOrionTeamUIInfo::Update.
Removed tolerances when reducing tracks - they are now 'very small'.
Added actor filter so actors of certain classes can be recorded.
Change 2866458 on 2016/02/14 by Max.Chen
Sequencer: Fix anim notifies that fire at shot cuts. Anim notifies are fired from the last position to the current position. When jumping cuts, we want the delta to be 0 so that the anim notifies before the shot are not fired off.
#jira UE-26390, UE-26671
Change 2866459 on 2016/02/14 by Max.Chen
Sequencer: Add option to toggle visibility of combined keys
Change 2866466 on 2016/02/14 by Frank.Fella
Sequencer - Add a track for controlling streamed level visibilty and remove visibility code from the master level blueprint.
Change 2866470 on 2016/02/14 by Max.Chen
Sequencer: Add return value to indicate data has changed when a section has been added. This fixes a bug where creating a new section doesn't seem to add a key.
#jira UE-26837
Change 2866481 on 2016/02/14 by Max.Preussner
Sequencer: Implemented Presets for adding tracks automatically based on actor type (UE-24513)
#Jira: UE-24513
Change 2866482 on 2016/02/14 by Max.Chen
Sequencer: Allow for any actor that has a camera component to be a camera cut.
#jira UE-26777
Change 2866484 on 2016/02/14 by Thomas.Sarkanen
Added in/out times to sequence recording
Also added the optional ability to record different actor types (heroes, projectiles, minions).
Change 2866495 on 2016/02/14 by Max.Chen
Sequencer: Need to limit camera control to the section bounds of the camera cut otherwise, control won't be relinquished back to player at the end of the playback.
#jira UE-26886
[CL 2874647 by Max Chen in Main branch]
2016-02-19 21:36:27 -05:00
if ( bMaterialDirty )
{
UpdateOriginalMaterial ( ) ;
2014-03-14 14:13:41 -04:00
}
Copying //UE4/Dev-Sequencer to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2859626 on 2016/02/08 by Max.Preussner
Editor: Added SaveAs functionality to content asset editors
Change 2859666 on 2016/02/08 by Max.Chen
Sequencer: Fix crash in CheckForWorldGCLeaks when loading a new map because spawnables are left behind.
#jira UE-25616
Change 2859685 on 2016/02/08 by Max.Chen
Sequencer: Add prompt to save sub level sequences if they are dirty
#jira UE-26510
Change 2859715 on 2016/02/08 by Thomas.Sarkanen
Adding actor spawning recording
Actors are queued for record on spawn then added to the list like manually-specifed ones.
Changed almost everything about UActorRecording. We now record on a per-component basis, with property tracks encapsulated in each actor recording. Much effort is expended to make sure that the correct components are owned by their respective actors, as we can add and remove components at runtime, but they must be created up-front in the UMovieScene Blueprints. We go as far as to add our own SCS nodes to make sure components are correctly spawned.
Fixed infinite loop in FSequencer::AddSpawnable.
Fixed visibility track instance to work with scene components as well as actors.
Fixed particle track instance to work on UParticleSystemComponent rather than just AEmitters.
Added particle recorder.
Moved animation recording into an animation property recorder rather than having it as a special case. This still uses the animation recorder under the hood.
Moved old-style Matinee animation control into FMovieSceneSkeletalAnimationTrackInstance & made this work on USkeletalMeshComponents directly, rather than via the old interface.
Exposed SetMatineeAnimPositionInner and PreviewMatineeSetAnimPositionInner in FAnimMontageInstance so those utility functions can be used externally to Engine.
Added a predicate version of UMovieScene::FindPossessable.
Exposed UMovieSceneParticleSection::AddKey externally via MOVIESCENETRACKS_API so I can programmatically add keys.
Fixed a crash in FScalableFloatDetails::CustomizeHeader when selecting PIE projectiles in Orion.
Moved all recorders over to recording Actors or Components & store UObjects instead of AActors.
Allowed skeletal animation tracks on components as well as actors.
Change 2862675 on 2016/02/10 by Max.Chen
Sequencer: Add option to link the sequencer curve editor with the sequencer timeline.
Under General Options->Link Curve Editor Time Range. The default is false, so the sequencer and curve editor have separate time ranges.
#jira UE-25933
Change 2862699 on 2016/02/11 by Max.Chen
Sequencer: Added a playback status of jumping which the AudioTrack and Skeletal Mesh Track (anim notifies) ignores for updates. This is used to updating thumbnail at certain times.
#jira UE-26447, UE-26671
Change 2862712 on 2016/02/11 by Max.Chen
Sequencer: Fix spawnables firing off their particles. Disable auto activate on spawnable components
#jira UE-26390
Change 2862719 on 2016/02/11 by Max.Preussner
Editor: Refactored detail customizations for colors, rotators, vectors
- broke color and rotator customizations out into their own files
- added vector customizations (placeholder)
- cleaned up localization namespaces, forward declarations
Change 2866454 on 2016/02/14 by Max.Preussner
Sequencer: Removed ULevelEditorSequencerSettings; moved default settings into INI
Change 2866455 on 2016/02/14 by Thomas.Sarkanen
Sequence recorder can now record replays
Added extra edtior-only UI to the replay playback controls to record sequences. Curretnly very placeholder: only records the entire sequence and provides no feedback in the UI if it is recording.
Fixed bindings to recorded objects not working in various circumstances. Added the ability to manually create a binding.
Recompiled actor blueprints post-record if we added components.
Fixed a null ptr dereference in FOrionTeamUIInfo::Update.
Removed tolerances when reducing tracks - they are now 'very small'.
Added actor filter so actors of certain classes can be recorded.
Change 2866458 on 2016/02/14 by Max.Chen
Sequencer: Fix anim notifies that fire at shot cuts. Anim notifies are fired from the last position to the current position. When jumping cuts, we want the delta to be 0 so that the anim notifies before the shot are not fired off.
#jira UE-26390, UE-26671
Change 2866459 on 2016/02/14 by Max.Chen
Sequencer: Add option to toggle visibility of combined keys
Change 2866466 on 2016/02/14 by Frank.Fella
Sequencer - Add a track for controlling streamed level visibilty and remove visibility code from the master level blueprint.
Change 2866470 on 2016/02/14 by Max.Chen
Sequencer: Add return value to indicate data has changed when a section has been added. This fixes a bug where creating a new section doesn't seem to add a key.
#jira UE-26837
Change 2866481 on 2016/02/14 by Max.Preussner
Sequencer: Implemented Presets for adding tracks automatically based on actor type (UE-24513)
#Jira: UE-24513
Change 2866482 on 2016/02/14 by Max.Chen
Sequencer: Allow for any actor that has a camera component to be a camera cut.
#jira UE-26777
Change 2866484 on 2016/02/14 by Thomas.Sarkanen
Added in/out times to sequence recording
Also added the optional ability to record different actor types (heroes, projectiles, minions).
Change 2866495 on 2016/02/14 by Max.Chen
Sequencer: Need to limit camera control to the section bounds of the camera cut otherwise, control won't be relinquished back to player at the end of the playback.
#jira UE-26886
[CL 2874647 by Max Chen in Main branch]
2016-02-19 21:36:27 -05:00
IMaterialEditor : : SaveAssetAs_Execute ( ) ;
2014-03-14 14:13:41 -04:00
}
bool FMaterialEditor : : OnRequestClose ( )
{
DestroyColorPicker ( ) ;
if ( bMaterialDirty )
{
// find out the user wants to do with this dirty material
EAppReturnType : : Type YesNoCancelReply = FMessageDialog : : Open ( EAppMsgType : : YesNoCancel ,
FText : : Format (
NSLOCTEXT ( " UnrealEd " , " Prompt_MaterialEditorClose " , " Would you like to apply changes to this material to the original material? \n {0} \n (No will lose all changes!) " ) ,
FText : : FromString ( OriginalMaterialObject - > GetPathName ( ) ) ) ) ;
// act on it
switch ( YesNoCancelReply )
{
case EAppReturnType : : Yes :
// update material and exit
UpdateOriginalMaterial ( ) ;
break ;
case EAppReturnType : : No :
// exit
2015-08-20 11:11:07 -04:00
bMaterialDirty = false ;
2014-03-14 14:13:41 -04:00
break ;
case EAppReturnType : : Cancel :
// don't exit
return false ;
}
}
return true ;
}
void FMaterialEditor : : DrawMaterialInfoStrings (
FCanvas * Canvas ,
const UMaterial * Material ,
const FMaterialResource * MaterialResource ,
const TArray < FString > & CompileErrors ,
int32 & DrawPositionY ,
bool bDrawInstructions )
{
check ( Material & & MaterialResource ) ;
ERHIFeatureLevel : : Type FeatureLevel = MaterialResource - > GetFeatureLevel ( ) ;
FString FeatureLevelName ;
GetFeatureLevelName ( FeatureLevel , FeatureLevelName ) ;
// The font to use when displaying info strings
UFont * FontToUse = GEngine - > GetTinyFont ( ) ;
const int32 SpacingBetweenLines = 13 ;
if ( bDrawInstructions )
{
// Display any errors and messages in the upper left corner of the viewport.
TArray < FString > Descriptions ;
TArray < int32 > InstructionCounts ;
MaterialResource - > GetRepresentativeInstructionCounts ( Descriptions , InstructionCounts ) ;
for ( int32 InstructionIndex = 0 ; InstructionIndex < Descriptions . Num ( ) ; InstructionIndex + + )
{
FString InstructionCountString = FString : : Printf ( TEXT ( " %s: %u instructions " ) , * Descriptions [ InstructionIndex ] , InstructionCounts [ InstructionIndex ] ) ;
2014-04-02 18:09:23 -04:00
Canvas - > DrawShadowedString ( 5 , DrawPositionY , * InstructionCountString , FontToUse , FLinearColor ( 1 , 1 , 0 ) ) ;
2014-03-14 14:13:41 -04:00
DrawPositionY + = SpacingBetweenLines ;
}
// Display the number of samplers used by the material.
const int32 SamplersUsed = MaterialResource - > GetSamplerUsage ( ) ;
if ( SamplersUsed > = 0 )
{
int32 MaxSamplers = GetFeatureLevelMaxTextureSamplers ( MaterialResource - > GetFeatureLevel ( ) ) ;
2014-04-02 18:09:23 -04:00
Canvas - > DrawShadowedString (
2014-03-14 14:13:41 -04:00
5 ,
DrawPositionY ,
2015-04-16 13:02:21 -04:00
* FString : : Printf ( TEXT ( " %s samplers: %u/%u " ) , FeatureLevel < = ERHIFeatureLevel : : ES3_1 ? TEXT ( " Mobile texture " ) : TEXT ( " Texture " ) , SamplersUsed , MaxSamplers ) ,
2014-03-14 14:13:41 -04:00
FontToUse ,
SamplersUsed > MaxSamplers ? FLinearColor ( 1 , 0 , 0 ) : FLinearColor ( 1 , 1 , 0 )
) ;
DrawPositionY + = SpacingBetweenLines ;
}
}
for ( int32 ErrorIndex = 0 ; ErrorIndex < CompileErrors . Num ( ) ; ErrorIndex + + )
{
2014-04-02 18:09:23 -04:00
Canvas - > DrawShadowedString ( 5 , DrawPositionY , * FString : : Printf ( TEXT ( " [%s] %s " ) , * FeatureLevelName , * CompileErrors [ ErrorIndex ] ) , FontToUse , FLinearColor ( 1 , 0 , 0 ) ) ;
2014-03-14 14:13:41 -04:00
DrawPositionY + = SpacingBetweenLines ;
}
}
void FMaterialEditor : : DrawMessages ( FViewport * InViewport , FCanvas * Canvas )
{
2014-04-23 18:21:07 -04:00
if ( PreviewExpression ! = NULL )
{
Canvas - > PushAbsoluteTransform ( FMatrix : : Identity ) ;
// The message to display in the viewport.
FString Name = FString : : Printf ( TEXT ( " Previewing: %s " ) , * PreviewExpression - > GetName ( ) ) ;
// Size of the tile we are about to draw. Should extend the length of the view in X.
const FIntPoint TileSize ( InViewport - > GetSizeXY ( ) . X , 25 ) ;
const FColor PreviewColor ( 70 , 100 , 200 ) ;
const FColor FontColor ( 255 , 255 , 128 ) ;
UFont * FontToUse = GEditor - > EditorFont ;
Canvas - > DrawTile ( 0.0f , 0.0f , TileSize . X , TileSize . Y , 0.0f , 0.0f , 0.0f , 0.0f , PreviewColor ) ;
int32 XL , YL ;
StringSize ( FontToUse , XL , YL , * Name ) ;
if ( XL > TileSize . X )
2014-03-14 14:13:41 -04:00
{
2014-04-23 18:21:07 -04:00
// There isn't enough room to show the preview expression name
Name = TEXT ( " Previewing " ) ;
2014-03-14 14:13:41 -04:00
StringSize ( FontToUse , XL , YL , * Name ) ;
}
2014-04-23 18:21:07 -04:00
// Center the string in the middle of the tile.
const FIntPoint StringPos ( ( TileSize . X - XL ) / 2 , ( ( TileSize . Y - YL ) / 2 ) + 1 ) ;
// Draw the preview message
Canvas - > DrawShadowedString ( StringPos . X , StringPos . Y , * Name , FontToUse , FontColor ) ;
Canvas - > PopTransform ( ) ;
2014-03-14 14:13:41 -04:00
}
2014-04-23 18:21:07 -04:00
}
2014-03-14 14:13:41 -04:00
void FMaterialEditor : : RecenterEditor ( )
{
UEdGraphNode * FocusNode = NULL ;
if ( MaterialFunction )
{
bool bSetPreviewExpression = false ;
UMaterialExpressionFunctionOutput * FirstOutput = NULL ;
for ( int32 ExpressionIndex = Material - > Expressions . Num ( ) - 1 ; ExpressionIndex > = 0 ; ExpressionIndex - - )
{
UMaterialExpression * Expression = Material - > Expressions [ ExpressionIndex ] ;
UMaterialExpressionFunctionOutput * FunctionOutput = Cast < UMaterialExpressionFunctionOutput > ( Expression ) ;
if ( FunctionOutput )
{
FirstOutput = FunctionOutput ;
if ( FunctionOutput - > bLastPreviewed )
{
bSetPreviewExpression = true ;
FocusNode = FunctionOutput - > GraphNode ;
}
}
}
if ( ! bSetPreviewExpression & & FirstOutput )
{
FocusNode = FirstOutput - > GraphNode ;
}
}
else
{
FocusNode = Material - > MaterialGraph - > RootNode ;
}
if ( FocusNode )
{
2014-04-23 18:21:07 -04:00
JumpToNode ( FocusNode ) ;
2014-03-14 14:13:41 -04:00
}
else
{
// Get current view location so that we don't change the zoom amount
FVector2D CurrLocation ;
float CurrZoomLevel ;
GraphEditor - > GetViewLocation ( CurrLocation , CurrZoomLevel ) ;
GraphEditor - > SetViewLocation ( FVector2D : : ZeroVector , CurrZoomLevel ) ;
}
}
2015-02-19 00:33:19 -05:00
bool FMaterialEditor : : SetPreviewAsset ( UObject * InAsset )
2014-03-14 14:13:41 -04:00
{
2015-06-22 15:55:50 -04:00
if ( PreviewViewport . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
2015-06-22 15:55:50 -04:00
return PreviewViewport - > SetPreviewAsset ( InAsset ) ;
2014-03-14 14:13:41 -04:00
}
return false ;
}
2015-02-19 00:33:19 -05:00
bool FMaterialEditor : : SetPreviewAssetByName ( const TCHAR * InAssetName )
2014-03-14 14:13:41 -04:00
{
2015-06-22 15:55:50 -04:00
if ( PreviewViewport . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
2015-06-22 15:55:50 -04:00
return PreviewViewport - > SetPreviewAssetByName ( InAssetName ) ;
2014-03-14 14:13:41 -04:00
}
return false ;
}
void FMaterialEditor : : SetPreviewMaterial ( UMaterialInterface * InMaterialInterface )
{
2016-02-01 14:57:29 -05:00
if ( Material - > IsUIMaterial ( ) )
2014-03-14 14:13:41 -04:00
{
2016-02-01 14:57:29 -05:00
if ( PreviewUIViewport . IsValid ( ) )
{
PreviewUIViewport - > SetPreviewMaterial ( InMaterialInterface ) ;
}
}
else
{
if ( PreviewViewport . IsValid ( ) )
{
PreviewViewport - > SetPreviewMaterial ( InMaterialInterface ) ;
}
2014-03-14 14:13:41 -04:00
}
}
void FMaterialEditor : : RefreshPreviewViewport ( )
{
2015-06-22 15:55:50 -04:00
if ( PreviewViewport . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
2015-06-22 15:55:50 -04:00
PreviewViewport - > RefreshViewport ( ) ;
2014-03-14 14:13:41 -04:00
}
}
void FMaterialEditor : : LoadEditorSettings ( )
{
2015-02-03 05:40:57 -05:00
EditorOptions = NewObject < UMaterialEditorOptions > ( ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
if ( EditorOptions - > bHideUnusedConnectors ) { OnShowConnectors ( ) ; }
2014-07-11 08:44:19 -04:00
if ( bLivePreview ! = EditorOptions - > bLivePreviewUpdate )
2014-07-08 10:58:56 -04:00
{
ToggleLivePreview ( ) ;
}
2014-04-23 18:21:07 -04:00
if ( EditorOptions - > bAlwaysRefreshAllPreviews ) { OnAlwaysRefreshAllPreviews ( ) ; }
if ( EditorOptions - > bRealtimeExpressionViewport ) { ToggleRealTimeExpressions ( ) ; }
2014-04-02 18:09:23 -04:00
2015-06-22 15:55:50 -04:00
if ( PreviewViewport . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
2015-06-22 15:55:50 -04:00
if ( EditorOptions - > bShowGrid )
{
PreviewViewport - > TogglePreviewGrid ( ) ;
}
if ( EditorOptions - > bShowBackground )
{
PreviewViewport - > TogglePreviewBackground ( ) ;
}
if ( EditorOptions - > bRealtimeMaterialViewport )
{
PreviewViewport - > OnToggleRealtime ( ) ;
}
2014-03-14 14:13:41 -04:00
// Load the preview scene
2015-06-22 15:55:50 -04:00
PreviewViewport - > PreviewScene . LoadSettings ( TEXT ( " MaterialEditor " ) ) ;
2014-03-14 14:13:41 -04:00
}
if ( EditorOptions - > bShowMobileStats )
{
ToggleMobileStats ( ) ;
}
2014-04-23 20:20:58 -04:00
2014-03-14 14:13:41 -04:00
// Primitive type
int32 PrimType ;
2015-04-20 10:12:55 -04:00
if ( GConfig - > GetInt ( TEXT ( " MaterialEditor " ) , TEXT ( " PrimType " ) , PrimType , GEditorPerProjectIni ) )
2014-03-14 14:13:41 -04:00
{
2015-06-22 15:55:50 -04:00
PreviewViewport - > OnSetPreviewPrimitive ( ( EThumbnailPrimType ) PrimType ) ;
2014-03-14 14:13:41 -04:00
}
}
void FMaterialEditor : : SaveEditorSettings ( )
{
// Save the preview scene
2015-06-22 15:55:50 -04:00
check ( PreviewViewport . IsValid ( ) ) ;
PreviewViewport - > PreviewScene . SaveSettings ( TEXT ( " MaterialEditor " ) ) ;
2014-03-14 14:13:41 -04:00
if ( EditorOptions )
{
2015-06-22 15:55:50 -04:00
EditorOptions - > bShowGrid = PreviewViewport - > IsTogglePreviewGridChecked ( ) ;
EditorOptions - > bShowBackground = PreviewViewport - > IsTogglePreviewBackgroundChecked ( ) ;
EditorOptions - > bRealtimeMaterialViewport = PreviewViewport - > IsRealtime ( ) ;
2014-03-14 14:13:41 -04:00
EditorOptions - > bShowMobileStats = bShowMobileStats ;
2014-04-23 18:21:07 -04:00
EditorOptions - > bHideUnusedConnectors = ! IsOnShowConnectorsChecked ( ) ;
EditorOptions - > bAlwaysRefreshAllPreviews = IsOnAlwaysRefreshAllPreviews ( ) ;
EditorOptions - > bRealtimeExpressionViewport = IsToggleRealTimeExpressionsChecked ( ) ;
2014-07-11 08:44:19 -04:00
EditorOptions - > bLivePreviewUpdate = IsToggleLivePreviewChecked ( ) ;
2014-03-14 14:13:41 -04:00
EditorOptions - > SaveConfig ( ) ;
}
2015-06-22 15:55:50 -04:00
GConfig - > SetInt ( TEXT ( " MaterialEditor " ) , TEXT ( " PrimType " ) , PreviewViewport - > PreviewPrimType , GEditorPerProjectIni ) ;
2014-03-14 14:13:41 -04:00
}
2015-01-07 09:52:40 -05:00
FText FMaterialEditor : : GetCodeViewText ( ) const
2014-03-14 14:13:41 -04:00
{
2015-01-07 09:52:40 -05:00
return FText : : FromString ( HLSLCode ) ;
2014-03-14 14:13:41 -04:00
}
FReply FMaterialEditor : : CopyCodeViewTextToClipboard ( )
{
2015-01-07 09:52:40 -05:00
FPlatformMisc : : ClipboardCopy ( * HLSLCode ) ;
2014-03-14 14:13:41 -04:00
return FReply : : Handled ( ) ;
}
2014-07-08 10:58:56 -04:00
void FMaterialEditor : : RegenerateCodeView ( bool bForce )
2014-03-14 14:13:41 -04:00
{
# define MARKTAG TEXT(" / *MARK_")
# define MARKTAGLEN 7
HLSLCode = TEXT ( " " ) ;
2014-07-08 10:58:56 -04:00
2014-10-23 21:38:06 -04:00
if ( ! CodeTab . IsValid ( ) | | ( ! bLivePreview & & ! bForce ) )
2014-07-08 10:58:56 -04:00
{
//When bLivePreview is false then the source can be out of date.
return ;
}
2014-03-14 14:13:41 -04:00
FString MarkupSource ;
2015-01-20 11:04:04 -05:00
if ( Material - > GetMaterialResource ( GMaxRHIFeatureLevel ) - > GetMaterialExpressionSource ( MarkupSource ) )
2014-03-14 14:13:41 -04:00
{
// Remove line-feeds and leave just CRs so the character counts match the selection ranges.
MarkupSource . ReplaceInline ( TEXT ( " \r " ) , TEXT ( " " ) ) ;
// Improve formatting: Convert tab to 4 spaces since STextBlock (currently) doesn't show tab characters
MarkupSource . ReplaceInline ( TEXT ( " \t " ) , TEXT ( " " ) ) ;
// Extract highlight ranges from markup tags
// Make a copy so we can insert null terminators.
TCHAR * MarkupSourceCopy = new TCHAR [ MarkupSource . Len ( ) + 1 ] ;
FCString : : Strcpy ( MarkupSourceCopy , MarkupSource . Len ( ) + 1 , * MarkupSource ) ;
TCHAR * Ptr = MarkupSourceCopy ;
while ( Ptr & & * Ptr ! = ' \0 ' )
{
TCHAR * NextTag = FCString : : Strstr ( Ptr , MARKTAG ) ;
if ( ! NextTag )
{
// No more tags, so we're done!
HLSLCode + = Ptr ;
break ;
}
// Copy the text up to the tag.
* NextTag = ' \0 ' ;
HLSLCode + = Ptr ;
// Advance past the markup tag to see what type it is (beginning or end)
NextTag + = MARKTAGLEN ;
int32 TagNumber = FCString : : Atoi ( NextTag + 1 ) ;
Ptr = FCString : : Strstr ( NextTag , TEXT ( " */ " ) ) + 2 ;
}
delete [ ] MarkupSourceCopy ;
}
}
2014-07-03 09:13:33 -04:00
void FMaterialEditor : : UpdatePreviewMaterial ( bool bForce )
2014-03-14 14:13:41 -04:00
{
2014-07-03 09:13:33 -04:00
if ( ! bLivePreview & & ! bForce )
{
//Don't update the preview material
return ;
}
2014-03-14 14:13:41 -04:00
bStatsFromPreviewMaterial = true ;
2014-04-23 18:21:07 -04:00
if ( PreviewExpression & & ExpressionPreviewMaterial )
{
PreviewExpression - > ConnectToPreviewMaterial ( ExpressionPreviewMaterial , 0 ) ;
}
2014-03-14 14:13:41 -04:00
2014-04-02 18:09:23 -04:00
if ( PreviewExpression )
2014-03-14 14:13:41 -04:00
{
// The preview material's expressions array must stay up to date before recompiling
// So that RebuildMaterialFunctionInfo will see all the nested material functions that may need to be updated
ExpressionPreviewMaterial - > Expressions = Material - > Expressions ;
2015-01-28 17:30:08 -05:00
FMaterialUpdateContext UpdateContext ( FMaterialUpdateContext : : EOptions : : SyncWithRenderingThread ) ;
2015-01-15 11:51:31 -05:00
UpdateContext . AddMaterial ( ExpressionPreviewMaterial ) ;
2014-03-14 14:13:41 -04:00
// If we are previewing an expression, update the expression preview material
ExpressionPreviewMaterial - > PreEditChange ( NULL ) ;
ExpressionPreviewMaterial - > PostEditChange ( ) ;
}
else
{
2015-01-28 17:30:08 -05:00
FMaterialUpdateContext UpdateContext ( FMaterialUpdateContext : : EOptions : : SyncWithRenderingThread ) ;
2015-01-15 11:51:31 -05:00
UpdateContext . AddMaterial ( Material ) ;
2014-03-14 14:13:41 -04:00
// Update the regular preview material when not previewing an expression.
Material - > PreEditChange ( NULL ) ;
Material - > PostEditChange ( ) ;
2014-04-23 20:20:58 -04:00
UpdateStatsMaterials ( ) ;
2014-03-14 14:13:41 -04:00
// Null out the expression preview material so they can be GC'ed
ExpressionPreviewMaterial = NULL ;
}
2014-04-02 18:09:23 -04:00
2014-03-14 14:13:41 -04:00
// Reregister all components that use the preview material, since UMaterial::PEC does not reregister components using a bIsPreviewMaterial=true material
RefreshPreviewViewport ( ) ;
}
void FMaterialEditor : : RebuildMaterialInstanceEditors ( UMaterialInstance * MatInst )
{
FAssetEditorManager & AssetEditorManager = FAssetEditorManager : : Get ( ) ;
TArray < UObject * > EditedAssets = AssetEditorManager . GetAllEditedAssets ( ) ;
for ( int32 AssetIdx = 0 ; AssetIdx < EditedAssets . Num ( ) ; AssetIdx + + )
{
UObject * EditedAsset = EditedAssets [ AssetIdx ] ;
UMaterialInstance * SourceInstance = Cast < UMaterialInstance > ( EditedAsset ) ;
if ( ! SourceInstance )
{
// Check to see if the EditedAssets are from material instance editor
UMaterialEditorInstanceConstant * EditorInstance = Cast < UMaterialEditorInstanceConstant > ( EditedAsset ) ;
if ( EditorInstance & & EditorInstance - > SourceInstance )
{
SourceInstance = Cast < UMaterialInstance > ( EditorInstance - > SourceInstance ) ;
}
}
// Ensure the material instance is valid and not a UMaterialInstanceDynamic, as that doesn't use FMaterialInstanceEditor as its editor
if ( SourceInstance ! = NULL & & ! SourceInstance - > IsA ( UMaterialInstanceDynamic : : StaticClass ( ) ) )
{
UMaterial * MICOriginalMaterial = SourceInstance - > GetMaterial ( ) ;
if ( MICOriginalMaterial = = OriginalMaterial )
{
IAssetEditorInstance * EditorInstance = AssetEditorManager . FindEditorForAsset ( EditedAsset , false ) ;
if ( EditorInstance ! = NULL )
{
FMaterialInstanceEditor * OtherEditor = static_cast < FMaterialInstanceEditor * > ( EditorInstance ) ;
OtherEditor - > RebuildMaterialInstanceEditor ( ) ;
}
}
}
}
}
void FMaterialEditor : : UpdateOriginalMaterial ( )
{
// If the Material has compilation errors, warn the user
for ( int32 i = ERHIFeatureLevel : : SM5 ; i > = 0 ; - - i )
{
ERHIFeatureLevel : : Type FeatureLevel = ( ERHIFeatureLevel : : Type ) i ;
if ( Material - > GetMaterialResource ( FeatureLevel ) - > GetCompileErrors ( ) . Num ( ) > 0 )
{
FString FeatureLevelName ;
GetFeatureLevelName ( FeatureLevel , FeatureLevelName ) ;
FSuppressableWarningDialog : : FSetupInfo Info (
FText : : Format ( NSLOCTEXT ( " UnrealEd " , " Warning_CompileErrorsInMaterial " , " The current material has compilation errors, so it will not render correctly in feature level {0}. \n Are you sure you wish to continue? " ) , FText : : FromString ( * FeatureLevelName ) ) ,
NSLOCTEXT ( " UnrealEd " , " Warning_CompileErrorsInMaterial_Title " , " Warning: Compilation errors in this Material " ) , " Warning_CompileErrorsInMaterial " ) ;
Info . ConfirmText = NSLOCTEXT ( " ModalDialogs " , " CompileErrorsInMaterialConfirm " , " Continue " ) ;
Info . CancelText = NSLOCTEXT ( " ModalDialogs " , " CompileErrorsInMaterialCancel " , " Abort " ) ;
FSuppressableWarningDialog CompileErrorsWarning ( Info ) ;
if ( CompileErrorsWarning . ShowModal ( ) = = FSuppressableWarningDialog : : Cancel )
{
return ;
}
}
}
// Make sure any graph position changes that might not have been copied are taken into account
2014-04-23 18:21:07 -04:00
Material - > MaterialGraph - > LinkMaterialExpressionsFromGraph ( ) ;
2014-03-14 14:13:41 -04:00
//remove any memory copies of shader files, so they will be reloaded from disk
//this way the material editor can be used for quick shader iteration
FlushShaderFileCache ( ) ;
//recompile and refresh the preview material so it will be updated if there was a shader change
2014-07-03 09:13:33 -04:00
//Force it even if bLivePreview is false.
UpdatePreviewMaterial ( true ) ;
2014-07-08 10:58:56 -04:00
RegenerateCodeView ( true ) ;
2014-03-14 14:13:41 -04:00
const FScopedBusyCursor BusyCursor ;
const FText LocalizedMaterialEditorApply = NSLOCTEXT ( " UnrealEd " , " ToolTip_MaterialEditorApply " , " Apply changes to original material and its use in the world. " ) ;
GWarn - > BeginSlowTask ( LocalizedMaterialEditorApply , true ) ;
GWarn - > StatusUpdate ( 1 , 1 , LocalizedMaterialEditorApply ) ;
// Handle propagation of the material function being edited
if ( MaterialFunction )
{
// Copy the expressions back from the preview material
MaterialFunction - > FunctionExpressions = Material - > Expressions ;
MaterialFunction - > FunctionEditorComments = Material - > EditorComments ;
// Preserve the thumbnail info
UThumbnailInfo * OriginalThumbnailInfo = MaterialFunction - > ParentFunction - > ThumbnailInfo ;
UThumbnailInfo * ThumbnailInfo = MaterialFunction - > ThumbnailInfo ;
MaterialFunction - > ParentFunction - > ThumbnailInfo = NULL ;
MaterialFunction - > ThumbnailInfo = NULL ;
// overwrite the original material function in place by constructing a new one with the same name
MaterialFunction - > ParentFunction = ( UMaterialFunction * ) StaticDuplicateObject (
MaterialFunction ,
MaterialFunction - > ParentFunction - > GetOuter ( ) ,
Copying //UE4/Dev-Framework to //UE4/Main @ 2775446
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2720537 on 2015/10/07 by Aaron.McLeran
Audio Optimization: Implementing an audio update delta time so audio isn't updated with every engine tick
Change 2746582 on 2015/10/29 by Aaron.McLeran
Implementing single ray-cast sound occlusion
- Fixing/Implementing sound occlusion using one ray cast
- Update rate of the ray cast is conifgurable by the user
- User can enabled/disable occlusion and set various properties of the occlusion at the audio component level
- Occlusion ray-casts are made at a slower rate than the audio engine is updated
- The following properties are supported:
* LowPassFilterFrequency (the LPF cutoff frequency of the per-voice filter to apply if a sound is occluded)
* OcclusionVolumeAttenuation (the volume attenuation to apply to sounds that are occluded)
* OcclusionInterpolationTime (how fast a sound moves from occluded to unoccluded... allows user-defined interpolation times, avoids fast parameter setting for smoother transitions)
- Fixed how low-pass filter frequency is applied on platforms that support it.
* Changed the older HighFrequencyGain parameter to a more understandable and correct LowPassFilterFrequency parameter
* Updated the parameter for the various other features that use per-voice LPF (e.g. audio volumes, distance-based filtering)
* Added backward-compatibility code to take old HighFrequencyGain params to new LowPassFilterFrequency params.
* At the lowest level, there is only one filter which is applied to a sound, but the parameter that has the lowest cutoff frequency is the one used
* Fixed how the parameter is applied at the lower-level in XAudio2 and CoreAudio. The old parameter was incorrectly applied.
* XAudio2 documentation on the low-pass-fitler frequency cutoff param is confirmed incorrect through testing.
#rb zak.middleton
Change 2765174 on 2015/11/12 by Aaron.McLeran
UE-23091 More fixage for NaN audio log spam
Last checkin for this (CL 2760896) was fixing a legit issue but there was still an issue that I was rarely catching during the FN gate encounter in AITestbed after about 5 min of gate defense.
To track down, I added a lot more logging and asserts on NaN numbers in the audio code, enabled ENABLE_NAN_DIAGNOSTIC in UnrealMathUtility.h.
- Was able to trace another cause of the NaNs in audio to 2 uninitialized variables in SoundAttenuationSettings struct: OmniRadius and StereoSpread.
- Zak M suggested the change of the const ref position vector in ListenerPosition and the usage of GetSafeNormal() in Audio.cpp since the value returned by GetLocation() is a temporary and Normalize() is unsafe.
- I removed the flag for the XAudio2 call to compute doppler since we don't use that value and it could've been as source of more NaNs in X3DAudioCalculate
#codereview Zak.Middleton
#rb Zak.Middleton
Change 2765467 on 2015/11/13 by James.Golding
- Allow -ms option to work with 'stat dumphitches' for controlling min time logged
#rb gil.gribb
Change 2765746 on 2015/11/13 by Benn.Gallagher
Added buckets for update rate shift tags (for staggering anim updates)
#jira UE-23213
#rb Bruce.Nesbit
Change 2765747 on 2015/11/13 by Benn.Gallagher
Fixes for bone length calculation in anim dynamics chains.
#rb Bruce.Nesbit
Change 2765749 on 2015/11/13 by Benn.Gallagher
Removed allocations from local CS blends for skeletal controls.
#rb Bruce.Nesbit
Change 2765752 on 2015/11/13 by Benn.Gallagher
Lod mapping support for URO customization
#jira UE-23211
#rb Bruce.Nesbit
Change 2765965 on 2015/11/13 by Marc.Audy
Remove outdated code in LoadMap previously used for matching up downloaded packages from servers. These code paths no longer operate, but in the case where a PIE client was connecting to a non-PIE server (not really supported, but possible), it would cause the Editor Level package to be flagged as as PIE package and cause a crash on exit of PIE
#jira UE-21181
#rb Josh.Markiewicz
Change 2766071 on 2015/11/13 by Mieszko.Zielinski
Fixed dumb mistake in AEQSTestingPawn::PostLoad #UE4
the 'bTickDuringGame == bTickDuringGame' thing
#rb John.Abercrombie
Change 2766086 on 2015/11/13 by Mieszko.Zielinski
Exposing NavModifierComponent to ENGINE_API #UE4
#codereview Lukasz.Furman
Change 2766345 on 2015/11/13 by Mieszko.Zielinski
No longer compiling AISystem's creation out from client builds #UE4
Instead AISystem's instantiation on clients is configurable via UAISystemBase::bInstantiateAISystemOnClient config variable
Change 2766346 on 2015/11/13 by Mieszko.Zielinski
Improvements to EQS test scoring function preview #UE4
#rb Lukasz.Furman
Change 2766528 on 2015/11/13 by Stan.Melax
multiple materials/chunks on a single cloth sim mesh
This supposedly used to work in 4.7 but broke for 4.8
It looks like previous change 2493547 may have introduced the condition statement that makes multiple materials not include all of there verts.
Changing this to instead check for the bounds on the skinningmap instead of the NumRealSimVerts which doesn't look like it takes the offset into consideration.
jira:
#UE-23300
https://jira.ol.epicgames.net/browse/UE-23300
https://answers.unrealengine.com/questions/287833/apex-not-working-on-multiple-materials-since-48.html
Double tested code change with test asset from https://jira.ol.epicgames.net/browse/UE-10674
#rb Benn.Gallagher
Change 2766546 on 2015/11/13 by Marc.Audy
Throw warning for orphaned looping sounds caused by a looping sound node
Don't do somewhat expensive (due to weak pointer) orphaned sound checks in test or shipping
#rb Aaron.McLeran
Change 2766917 on 2015/11/14 by Jurre.deBaare
Fix UE4-23349 Simplygon doens't support sub 64 pixel textures
Change 2767742 on 2015/11/16 by Marc.Audy
Restructure SignificanceManager to store significance manager references in a FGCObject Module class instead of using a singleton.
Improve performance by eliminating StaticFindObjectFast calls in ::Get and force inlining Get calls
#rb Zak.Middleton, Rob.Manuszewski
Change 2767827 on 2015/11/16 by Zak.Middleton
#ue4 - Perf: avoid SmoothClientPosition() calls once the target mesh offset has been reached.
- New flag bNetworkSmoothingComplete indicates whether smoothing has reached the destination. This is set to false when a new network position is received.
- Also fixes trying to smooth rotation towards identity rotation before receiving network updates.
- Deprecated FNetworkPredictionData_Client_Character::CurrentSmoothTime in favor of saving last update time, to prevent needing to update time every tick (since we skip updates now).
#rb Dan.Youhon
Change 2768070 on 2015/11/16 by Marc.Audy
Change StaticDuplicateObject and DuplicateObject to take FName instead of char* (existing usages can automatically convert to FName so no backwards compatibility issues)
Fixup usages to avoid unnecessary string -> char* -> name conversions
Change AActor::CreateComponentFromTemplate to take an FName instead of FString, deprecated FString version
#rb Gil.Gribb
Change 2768121 on 2015/11/16 by Marc.Audy
Forceinline GetFName
Change 2768161 on 2015/11/16 by Aaron.McLeran
Checking occlusion back in
- Bug was due to improper interpolation of LPFFrequency values in audio volumes.
Change 2769428 on 2015/11/17 by Thomas.Sarkanen
Fixed backwards-compatibility issues with FExposedValueCopyRecord
Added PostSerialize function to patch up older data to the new format (copies properties->property FNames).
Made sure to zero FExposedValueCopyRecord in its constructor, prevents uninitialized variable issues when generating CRCs. This is necessary despite these members being UPROPERTYs because they are simply built on the stack then stuffed into the new CDO during compilation.
UE-23268 - EDITOR CRASH: Assertion failed: ((UObject*)ContainerPtr)->IsA((UClass*)GetOuter())
#rb James.Golding
#codereview Mike.Beach,Bob.Tellez
Change 2769488 on 2015/11/17 by Benn.Gallagher
DrawCanvas and debug string support for skeletal controls - accessed using "Skeletal Controls" option in Show->Display Info in Persona
#rb Martin.Wilson
Change 2769545 on 2015/11/17 by Benn.Gallagher
Added space conversion options to copy bone node.
#jira OR-9430
#rb Martin.Wilson
Change 2770228 on 2015/11/17 by Marc.Audy
Fix cause of assert firing when detaching if AttachTo(AttachParent) returns false
#rb Ori.Cohen
#jira UE-23366
Change 2770489 on 2015/11/17 by Marc.Audy
Make ::Serialize WITH_EDITORONLY_DATA since it did nothing otherwise
Change 2770761 on 2015/11/17 by Aaron.McLeran
Removing optimization disablement
- Forgot to remove these lines before checking in/testing.
Change 2771375 on 2015/11/18 by Thomas.Sarkanen
Added initialzation of internal state machine desc ptrs to (finally) remove random crashes when using sub-state machines
#rb Benn.Gallagher
Change 2771697 on 2015/11/18 by Jeff.Farris
Sensible defaults for APlayerController::ClientPlayCameraAnim and ClientPlayCameraShake
#rb marc.audy
Change 2771755 on 2015/11/18 by Marc.Audy
Put back in the recursion block for destroy actor
#rb James.Golding
Change 2772217 on 2015/11/18 by Marc.Audy
Update axis inversion to work the same way as sensitivity instead of old problematic way
Also change to use Reset instead of Empty(Array.Num())
#rb Jeff.Farris
Change 2772686 on 2015/11/18 by Aaron.McLeran
Fixing HRTF spatialization coordinate bug.
Don't need to convert to xaudio2 coordinates for HRTF spatialization
#rb chad.taylor
Change 2772766 on 2015/11/18 by Aaron.McLeran
Fixing HRTF spatialization with xaudio2 voice pools
- Issue was caused by 2 issues:
- effect chains weren't properly clearing their state between uses (SetEffectChain(nullptr) releases the effect for use with other voices)
- Not re-setting MaxEffectChainChannels = 0 in CreateSource() was causing re-used SoundSources to release their XAudio2 voices to the wrong pool.
#rb chad.taylor
Change 2773027 on 2015/11/19 by Thomas.Sarkanen
PR #1765: Git Plugin can find the git.exe binary installed on the Local AppData user directory (Contributed by SRombauts)
#rb Thomas.Sarkanen
Change 2773142 on 2015/11/19 by Benn.Gallagher
Optimized SafeSetCSBoneTransforms, no longer doing 2 iterations over the whole pose.
- Only iterating beyond the index of the first bone transform, cutting off all bones before
- No longer using a bone mask the size of the skeleton, just an array of interesting nodes
- No longer attempting to convert a transform if it isn't necessary (which was happening a lot)
#rb Laurent.Delayen
Change 2773212 on 2015/11/19 by Richard.Hinckley
#jira UEDOC-2685
Removing ugly comment. Not going to remove the node itself for backward compatibility.
Change 2773351 on 2015/11/19 by Zak.Middleton
#orion - Make sure we don't skip a final visual update when character mesh interpolation tries to stop smoothing once it reaches its destination. We keep setting bNetworkSmoothingComplete to false until the first visual update, at which point if it remains true we will stop getting updates.
#rb Dan.Youhon
Change 2773599 on 2015/11/19 by Marc.Audy
Fix shadow variable, initialization order, and incorrect placement of ENGINE_API that fails compiles on clang
#codereview Aaron.McLeran
Change 2773661 on 2015/11/19 by Richard.Hinckley
#jira UEDOC-2685
Following up by deprecating the CastToPlayerController function for 4.11.
Change 2774707 on 2015/11/19 by Stan.Melax
FCollisionQueryParams constructor API pitfall
Deprecating something that will call the unintended constructor if the programmer provides a string literal instead of explicitly creating an FName.
So this line of code:
FCollisionQueryParams Param(FName(TEXT("DragDropTrace")));
will invoke:
FCollisionQueryParams::FCollisionQueryParams(FName,bool=false,...)
But this line of code:
FCollisionQueryParams Param(TEXT("DragDropTrace"));
invokes:
FCollisionQueryParams::FCollisionQueryParams(bool)
Yes that actually happens, the string literal (the TEXT("whatever")) ends up specifies a bool parameter instead of a FName parameter. So the name is lost and a flag (that is usually set to false) is now set to true (since the string literal address is non-NULL). Yeah, that's could potentially be not what the programmer had intended.
It looks like this interface was introduced in CL 1792949
back in august 2013. Since its been a couple of years, we'll phase it out using the deprecation approach.
Making an API change would break things for existing projects.
If it had been a more recent change we could have probably just gone down to a single constructor right away.
Figured out that going one step further and removing bool param's default and adding a default constructor would minimize the number of places that will be hit with this deprecation. So, yes this is *increasing* the number of construtors temporarily, but this solution has minimal impact on the community. Later after other to-be-deprecated constructor gets removed, the two remaining can be combined into one with defaults for all parameters.
see also
https://udn.unrealengine.com/questions/269512/dangerous-fcollisionqueryparams-overloads.html
#codereview ori.cohen
[CL 2775460 by Marc Audy in Main branch]
2015-11-20 11:02:37 -05:00
MaterialFunction - > ParentFunction - > GetFName ( ) ,
2014-03-14 14:13:41 -04:00
RF_AllFlags ,
MaterialFunction - > ParentFunction - > GetClass ( ) ) ;
// Restore the thumbnail info
MaterialFunction - > ParentFunction - > ThumbnailInfo = OriginalThumbnailInfo ;
MaterialFunction - > ThumbnailInfo = ThumbnailInfo ;
// Restore RF_Standalone on the original material function, as it had been removed from the preview material so that it could be GC'd.
MaterialFunction - > ParentFunction - > SetFlags ( RF_Standalone ) ;
for ( int32 ExpressionIndex = 0 ; ExpressionIndex < MaterialFunction - > ParentFunction - > FunctionExpressions . Num ( ) ; ExpressionIndex + + )
{
UMaterialExpression * CurrentExpression = MaterialFunction - > ParentFunction - > FunctionExpressions [ ExpressionIndex ] ;
Copying //UE4/Orion-Staging to //UE4/Main (originated from //Orion/Dev-General @ 2831630)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2831624 on 2016/01/17 by Marcus.Wassmer
Merge disable of FCachedReadPlatformData on PS4. Reduces memory spikes. 2830986
#rb none
#test none
#codereview Michael.Noland,James.Golding
Change 2831402 on 2016/01/17 by Marcus.Wassmer
HLOD priority and streamout changes.
Give texture pool an extra 200MB which we can afford thanks to James/Michael
#rb Chris.Gagnon
#test run agora, notice nice textures.
#lockdown Andrew.Grant
Change 2831398 on 2016/01/17 by Marcus.Wassmer
Fix 3 logic bugs with Relocate
#rb chris.gagnon
#test run game, look for corruption.
#lockdown Andrew.Grant
Change 2831372 on 2016/01/16 by Marcus.Wassmer
Update param.sfo's and lockdown version in prep for good PS4 playtest build.
#rb none
#test build from last night...
#lockdown Andrew.Grant
Change 2831274 on 2016/01/16 by Graeme.Thornton
Disable platform file cache wrapper on PS4
#codereview James.Golding
#rb none
#tests ran cooked ps4 build, timed loading (no real change), measured memory used for file handles (small)
Change 2831237 on 2016/01/16 by Sammy.James
Fix PS4 compile error
#codereview Andrew.Grant
#rb none
#tests none
Change 2831219 on 2016/01/16 by Matt.Kuhlenschmidt
Fix possible invalid access to shared movie player resource across threads causing startup crash.
#codereview marcus.wassmer
#rb none, #tests initial load
Change 2831218 on 2016/01/16 by Marcus.Wassmer
Fix bad warning case.
#codereview Martin.Mittring
#rb none
#test none
Change 2831201 on 2016/01/16 by Andrew.Grant
Added extra info about referencer to missing asset reference message
#rb none
#tests cooked, ran editor
Change 2831183 on 2016/01/16 by David.Nikdel
#OSS #PS4 #Purchasing #StoreV2
- Force failure if we have no receipts after a "successful" checkout.
- Report consumed entitlements as well as unconsumed but leave ValidationInfo empty so we can tell the difference at the application level
- Convert productIds to skuIds at checkout time
- Added PS4 Implementation of IOnlineStoreV2
- Bugfix: set bSuccessfullyStartedUp=false when InitNPGameSettings() fails
- Adjusted FOnlineStoreOffer to use FText::AsCurrencyBase
#RB: Paul.Moore
#TESTS: login, purchase redemption, store MTX purchasing on PS4 & PC
Change 2831129 on 2016/01/16 by David.Nikdel
#MCP
- Added a ctor to make converting from FOnlineError to FMcpQueryResult easier (for stuff that was already using FMcpQueryResult).
#RB: none
#TESTS: frontend
Change 2830986 on 2016/01/15 by Michael.Noland
PS4: Disabling FCachedReadPlatformFile on PS4 to significantly reduce high watermark memory consumption during blocking loads
#rb marcus.wassmer
#tests Ran Paragon PS4 down a bad path that currently does a blocking map and hero load
#lockdown andrew.grant
Change 2830943 on 2016/01/15 by Max.Chen
Sequencer: Fix bug introduced with preroll. It was also causing a crash in particle track instance.
#tests Master sequence trailer plays without crashing
#rb none
Change 2830912 on 2016/01/15 by Michael.Noland
Rendering: Exposed GRHIDeviceId (only filled in on D3D11 and D3D12 RHI's under the same circumstances as GRHIAdapterName, etc..., 0 otherwise)
#rb mieszko.zielinski
#tests Tested printing the value out
#codereview martin.mittring
Change 2830910 on 2016/01/15 by Michael.Noland
Rendering: Improved GPU driver detection logic to handle more cases
#codereview martin.mittring
#rb mieszko.zielinski
#tests Tested on my machine which was previous reporting Unknown for the values as some entries contained the key in the Settings subfolder
Change 2830776 on 2016/01/15 by Martin.Mittring
from Dev-Rendering
added ensure to track down multiple issues like
OR-11771 CRASH: User Crashed when pressing the Play button
OR-12430 CRASH: OT2 user crashed with FRHIResource::AddRef()
#rb:Gil.Gribb
#code_review:Gil.Gribb,Mark.Satterthwaite,Marcus.Wassmer
2016-01-20 11:32:08 -05:00
ensureMsgf ( CurrentExpression , TEXT ( " Invalid expression at index [%i] whilst saving material function. " ) , ExpressionIndex ) ;
2014-03-14 14:13:41 -04:00
// Link the expressions back to their function
Copying //UE4/Orion-Staging to //UE4/Main (originated from //Orion/Dev-General @ 2831630)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2831624 on 2016/01/17 by Marcus.Wassmer
Merge disable of FCachedReadPlatformData on PS4. Reduces memory spikes. 2830986
#rb none
#test none
#codereview Michael.Noland,James.Golding
Change 2831402 on 2016/01/17 by Marcus.Wassmer
HLOD priority and streamout changes.
Give texture pool an extra 200MB which we can afford thanks to James/Michael
#rb Chris.Gagnon
#test run agora, notice nice textures.
#lockdown Andrew.Grant
Change 2831398 on 2016/01/17 by Marcus.Wassmer
Fix 3 logic bugs with Relocate
#rb chris.gagnon
#test run game, look for corruption.
#lockdown Andrew.Grant
Change 2831372 on 2016/01/16 by Marcus.Wassmer
Update param.sfo's and lockdown version in prep for good PS4 playtest build.
#rb none
#test build from last night...
#lockdown Andrew.Grant
Change 2831274 on 2016/01/16 by Graeme.Thornton
Disable platform file cache wrapper on PS4
#codereview James.Golding
#rb none
#tests ran cooked ps4 build, timed loading (no real change), measured memory used for file handles (small)
Change 2831237 on 2016/01/16 by Sammy.James
Fix PS4 compile error
#codereview Andrew.Grant
#rb none
#tests none
Change 2831219 on 2016/01/16 by Matt.Kuhlenschmidt
Fix possible invalid access to shared movie player resource across threads causing startup crash.
#codereview marcus.wassmer
#rb none, #tests initial load
Change 2831218 on 2016/01/16 by Marcus.Wassmer
Fix bad warning case.
#codereview Martin.Mittring
#rb none
#test none
Change 2831201 on 2016/01/16 by Andrew.Grant
Added extra info about referencer to missing asset reference message
#rb none
#tests cooked, ran editor
Change 2831183 on 2016/01/16 by David.Nikdel
#OSS #PS4 #Purchasing #StoreV2
- Force failure if we have no receipts after a "successful" checkout.
- Report consumed entitlements as well as unconsumed but leave ValidationInfo empty so we can tell the difference at the application level
- Convert productIds to skuIds at checkout time
- Added PS4 Implementation of IOnlineStoreV2
- Bugfix: set bSuccessfullyStartedUp=false when InitNPGameSettings() fails
- Adjusted FOnlineStoreOffer to use FText::AsCurrencyBase
#RB: Paul.Moore
#TESTS: login, purchase redemption, store MTX purchasing on PS4 & PC
Change 2831129 on 2016/01/16 by David.Nikdel
#MCP
- Added a ctor to make converting from FOnlineError to FMcpQueryResult easier (for stuff that was already using FMcpQueryResult).
#RB: none
#TESTS: frontend
Change 2830986 on 2016/01/15 by Michael.Noland
PS4: Disabling FCachedReadPlatformFile on PS4 to significantly reduce high watermark memory consumption during blocking loads
#rb marcus.wassmer
#tests Ran Paragon PS4 down a bad path that currently does a blocking map and hero load
#lockdown andrew.grant
Change 2830943 on 2016/01/15 by Max.Chen
Sequencer: Fix bug introduced with preroll. It was also causing a crash in particle track instance.
#tests Master sequence trailer plays without crashing
#rb none
Change 2830912 on 2016/01/15 by Michael.Noland
Rendering: Exposed GRHIDeviceId (only filled in on D3D11 and D3D12 RHI's under the same circumstances as GRHIAdapterName, etc..., 0 otherwise)
#rb mieszko.zielinski
#tests Tested printing the value out
#codereview martin.mittring
Change 2830910 on 2016/01/15 by Michael.Noland
Rendering: Improved GPU driver detection logic to handle more cases
#codereview martin.mittring
#rb mieszko.zielinski
#tests Tested on my machine which was previous reporting Unknown for the values as some entries contained the key in the Settings subfolder
Change 2830776 on 2016/01/15 by Martin.Mittring
from Dev-Rendering
added ensure to track down multiple issues like
OR-11771 CRASH: User Crashed when pressing the Play button
OR-12430 CRASH: OT2 user crashed with FRHIResource::AddRef()
#rb:Gil.Gribb
#code_review:Gil.Gribb,Mark.Satterthwaite,Marcus.Wassmer
2016-01-20 11:32:08 -05:00
if ( CurrentExpression )
{
CurrentExpression - > Material = NULL ;
CurrentExpression - > Function = MaterialFunction - > ParentFunction ;
}
2014-03-14 14:13:41 -04:00
}
for ( int32 ExpressionIndex = 0 ; ExpressionIndex < MaterialFunction - > ParentFunction - > FunctionEditorComments . Num ( ) ; ExpressionIndex + + )
{
UMaterialExpressionComment * CurrentExpression = MaterialFunction - > ParentFunction - > FunctionEditorComments [ ExpressionIndex ] ;
Copying //UE4/Orion-Staging to //UE4/Main (originated from //Orion/Dev-General @ 2831630)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2831624 on 2016/01/17 by Marcus.Wassmer
Merge disable of FCachedReadPlatformData on PS4. Reduces memory spikes. 2830986
#rb none
#test none
#codereview Michael.Noland,James.Golding
Change 2831402 on 2016/01/17 by Marcus.Wassmer
HLOD priority and streamout changes.
Give texture pool an extra 200MB which we can afford thanks to James/Michael
#rb Chris.Gagnon
#test run agora, notice nice textures.
#lockdown Andrew.Grant
Change 2831398 on 2016/01/17 by Marcus.Wassmer
Fix 3 logic bugs with Relocate
#rb chris.gagnon
#test run game, look for corruption.
#lockdown Andrew.Grant
Change 2831372 on 2016/01/16 by Marcus.Wassmer
Update param.sfo's and lockdown version in prep for good PS4 playtest build.
#rb none
#test build from last night...
#lockdown Andrew.Grant
Change 2831274 on 2016/01/16 by Graeme.Thornton
Disable platform file cache wrapper on PS4
#codereview James.Golding
#rb none
#tests ran cooked ps4 build, timed loading (no real change), measured memory used for file handles (small)
Change 2831237 on 2016/01/16 by Sammy.James
Fix PS4 compile error
#codereview Andrew.Grant
#rb none
#tests none
Change 2831219 on 2016/01/16 by Matt.Kuhlenschmidt
Fix possible invalid access to shared movie player resource across threads causing startup crash.
#codereview marcus.wassmer
#rb none, #tests initial load
Change 2831218 on 2016/01/16 by Marcus.Wassmer
Fix bad warning case.
#codereview Martin.Mittring
#rb none
#test none
Change 2831201 on 2016/01/16 by Andrew.Grant
Added extra info about referencer to missing asset reference message
#rb none
#tests cooked, ran editor
Change 2831183 on 2016/01/16 by David.Nikdel
#OSS #PS4 #Purchasing #StoreV2
- Force failure if we have no receipts after a "successful" checkout.
- Report consumed entitlements as well as unconsumed but leave ValidationInfo empty so we can tell the difference at the application level
- Convert productIds to skuIds at checkout time
- Added PS4 Implementation of IOnlineStoreV2
- Bugfix: set bSuccessfullyStartedUp=false when InitNPGameSettings() fails
- Adjusted FOnlineStoreOffer to use FText::AsCurrencyBase
#RB: Paul.Moore
#TESTS: login, purchase redemption, store MTX purchasing on PS4 & PC
Change 2831129 on 2016/01/16 by David.Nikdel
#MCP
- Added a ctor to make converting from FOnlineError to FMcpQueryResult easier (for stuff that was already using FMcpQueryResult).
#RB: none
#TESTS: frontend
Change 2830986 on 2016/01/15 by Michael.Noland
PS4: Disabling FCachedReadPlatformFile on PS4 to significantly reduce high watermark memory consumption during blocking loads
#rb marcus.wassmer
#tests Ran Paragon PS4 down a bad path that currently does a blocking map and hero load
#lockdown andrew.grant
Change 2830943 on 2016/01/15 by Max.Chen
Sequencer: Fix bug introduced with preroll. It was also causing a crash in particle track instance.
#tests Master sequence trailer plays without crashing
#rb none
Change 2830912 on 2016/01/15 by Michael.Noland
Rendering: Exposed GRHIDeviceId (only filled in on D3D11 and D3D12 RHI's under the same circumstances as GRHIAdapterName, etc..., 0 otherwise)
#rb mieszko.zielinski
#tests Tested printing the value out
#codereview martin.mittring
Change 2830910 on 2016/01/15 by Michael.Noland
Rendering: Improved GPU driver detection logic to handle more cases
#codereview martin.mittring
#rb mieszko.zielinski
#tests Tested on my machine which was previous reporting Unknown for the values as some entries contained the key in the Settings subfolder
Change 2830776 on 2016/01/15 by Martin.Mittring
from Dev-Rendering
added ensure to track down multiple issues like
OR-11771 CRASH: User Crashed when pressing the Play button
OR-12430 CRASH: OT2 user crashed with FRHIResource::AddRef()
#rb:Gil.Gribb
#code_review:Gil.Gribb,Mark.Satterthwaite,Marcus.Wassmer
2016-01-20 11:32:08 -05:00
ensureMsgf ( CurrentExpression , TEXT ( " Invalid comment at index [%i] whilst saving material function. " ) , ExpressionIndex ) ;
2014-03-14 14:13:41 -04:00
// Link the expressions back to their function
Copying //UE4/Orion-Staging to //UE4/Main (originated from //Orion/Dev-General @ 2831630)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2831624 on 2016/01/17 by Marcus.Wassmer
Merge disable of FCachedReadPlatformData on PS4. Reduces memory spikes. 2830986
#rb none
#test none
#codereview Michael.Noland,James.Golding
Change 2831402 on 2016/01/17 by Marcus.Wassmer
HLOD priority and streamout changes.
Give texture pool an extra 200MB which we can afford thanks to James/Michael
#rb Chris.Gagnon
#test run agora, notice nice textures.
#lockdown Andrew.Grant
Change 2831398 on 2016/01/17 by Marcus.Wassmer
Fix 3 logic bugs with Relocate
#rb chris.gagnon
#test run game, look for corruption.
#lockdown Andrew.Grant
Change 2831372 on 2016/01/16 by Marcus.Wassmer
Update param.sfo's and lockdown version in prep for good PS4 playtest build.
#rb none
#test build from last night...
#lockdown Andrew.Grant
Change 2831274 on 2016/01/16 by Graeme.Thornton
Disable platform file cache wrapper on PS4
#codereview James.Golding
#rb none
#tests ran cooked ps4 build, timed loading (no real change), measured memory used for file handles (small)
Change 2831237 on 2016/01/16 by Sammy.James
Fix PS4 compile error
#codereview Andrew.Grant
#rb none
#tests none
Change 2831219 on 2016/01/16 by Matt.Kuhlenschmidt
Fix possible invalid access to shared movie player resource across threads causing startup crash.
#codereview marcus.wassmer
#rb none, #tests initial load
Change 2831218 on 2016/01/16 by Marcus.Wassmer
Fix bad warning case.
#codereview Martin.Mittring
#rb none
#test none
Change 2831201 on 2016/01/16 by Andrew.Grant
Added extra info about referencer to missing asset reference message
#rb none
#tests cooked, ran editor
Change 2831183 on 2016/01/16 by David.Nikdel
#OSS #PS4 #Purchasing #StoreV2
- Force failure if we have no receipts after a "successful" checkout.
- Report consumed entitlements as well as unconsumed but leave ValidationInfo empty so we can tell the difference at the application level
- Convert productIds to skuIds at checkout time
- Added PS4 Implementation of IOnlineStoreV2
- Bugfix: set bSuccessfullyStartedUp=false when InitNPGameSettings() fails
- Adjusted FOnlineStoreOffer to use FText::AsCurrencyBase
#RB: Paul.Moore
#TESTS: login, purchase redemption, store MTX purchasing on PS4 & PC
Change 2831129 on 2016/01/16 by David.Nikdel
#MCP
- Added a ctor to make converting from FOnlineError to FMcpQueryResult easier (for stuff that was already using FMcpQueryResult).
#RB: none
#TESTS: frontend
Change 2830986 on 2016/01/15 by Michael.Noland
PS4: Disabling FCachedReadPlatformFile on PS4 to significantly reduce high watermark memory consumption during blocking loads
#rb marcus.wassmer
#tests Ran Paragon PS4 down a bad path that currently does a blocking map and hero load
#lockdown andrew.grant
Change 2830943 on 2016/01/15 by Max.Chen
Sequencer: Fix bug introduced with preroll. It was also causing a crash in particle track instance.
#tests Master sequence trailer plays without crashing
#rb none
Change 2830912 on 2016/01/15 by Michael.Noland
Rendering: Exposed GRHIDeviceId (only filled in on D3D11 and D3D12 RHI's under the same circumstances as GRHIAdapterName, etc..., 0 otherwise)
#rb mieszko.zielinski
#tests Tested printing the value out
#codereview martin.mittring
Change 2830910 on 2016/01/15 by Michael.Noland
Rendering: Improved GPU driver detection logic to handle more cases
#codereview martin.mittring
#rb mieszko.zielinski
#tests Tested on my machine which was previous reporting Unknown for the values as some entries contained the key in the Settings subfolder
Change 2830776 on 2016/01/15 by Martin.Mittring
from Dev-Rendering
added ensure to track down multiple issues like
OR-11771 CRASH: User Crashed when pressing the Play button
OR-12430 CRASH: OT2 user crashed with FRHIResource::AddRef()
#rb:Gil.Gribb
#code_review:Gil.Gribb,Mark.Satterthwaite,Marcus.Wassmer
2016-01-20 11:32:08 -05:00
if ( CurrentExpression )
{
CurrentExpression - > Material = NULL ;
CurrentExpression - > Function = MaterialFunction - > ParentFunction ;
}
2014-03-14 14:13:41 -04:00
}
// mark the parent function as changed
MaterialFunction - > ParentFunction - > PreEditChange ( NULL ) ;
MaterialFunction - > ParentFunction - > PostEditChange ( ) ;
MaterialFunction - > ParentFunction - > MarkPackageDirty ( ) ;
// clear the dirty flag
bMaterialDirty = false ;
bStatsFromPreviewMaterial = false ;
// Create a material update context so we can safely update materials using this function.
{
FMaterialUpdateContext UpdateContext ;
// Go through all materials in memory and recompile them if they use this material function
for ( TObjectIterator < UMaterial > It ; It ; + + It )
{
UMaterial * CurrentMaterial = * It ;
if ( CurrentMaterial ! = Material )
{
bool bRecompile = false ;
// Preview materials often use expressions for rendering that are not in their Expressions array,
// And therefore their MaterialFunctionInfos are not up to date.
// However we don't want to trigger this if the Material is a preview material itself. This can now be the case with thumbnail preview materials for material functions.
if ( CurrentMaterial - > bIsPreviewMaterial & & ! Material - > bIsPreviewMaterial )
{
bRecompile = true ;
}
else
{
for ( int32 FunctionIndex = 0 ; FunctionIndex < CurrentMaterial - > MaterialFunctionInfos . Num ( ) ; FunctionIndex + + )
{
if ( CurrentMaterial - > MaterialFunctionInfos [ FunctionIndex ] . Function = = MaterialFunction - > ParentFunction )
{
bRecompile = true ;
break ;
}
}
}
if ( bRecompile )
{
UpdateContext . AddMaterial ( CurrentMaterial ) ;
// Propagate the function change to this material
CurrentMaterial - > PreEditChange ( NULL ) ;
CurrentMaterial - > PostEditChange ( ) ;
CurrentMaterial - > MarkPackageDirty ( ) ;
if ( CurrentMaterial - > MaterialGraph )
{
CurrentMaterial - > MaterialGraph - > RebuildGraph ( ) ;
}
}
}
}
}
// update the world's viewports
FEditorDelegates : : RefreshEditor . Broadcast ( ) ;
FEditorSupportDelegates : : RedrawAllViewports . Broadcast ( ) ;
}
// Handle propagation of the material being edited
else
{
2014-08-22 06:53:27 -04:00
FNavigationLockContext NavUpdateLock ( ENavigationLockReason : : MaterialUpdate ) ;
2014-03-14 14:13:41 -04:00
// Create a material update context so we can safely update materials.
{
FMaterialUpdateContext UpdateContext ;
UpdateContext . AddMaterial ( OriginalMaterial ) ;
// ensure the original copy of the material is removed from the editor's selection set
// or it will end up containing a stale, invalid entry
if ( OriginalMaterial - > IsSelected ( ) )
{
GEditor - > GetSelectedObjects ( ) - > Deselect ( OriginalMaterial ) ;
}
// Preserve the thumbnail info
UThumbnailInfo * OriginalThumbnailInfo = OriginalMaterial - > ThumbnailInfo ;
UThumbnailInfo * ThumbnailInfo = Material - > ThumbnailInfo ;
OriginalMaterial - > ThumbnailInfo = NULL ;
Material - > ThumbnailInfo = NULL ;
// A bit hacky, but disable material compilation in post load when we duplicate the material.
UMaterial : : ForceNoCompilationInPostLoad ( true ) ;
// overwrite the original material in place by constructing a new one with the same name
Copying //UE4/Dev-Framework to //UE4/Main @ 2775446
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2720537 on 2015/10/07 by Aaron.McLeran
Audio Optimization: Implementing an audio update delta time so audio isn't updated with every engine tick
Change 2746582 on 2015/10/29 by Aaron.McLeran
Implementing single ray-cast sound occlusion
- Fixing/Implementing sound occlusion using one ray cast
- Update rate of the ray cast is conifgurable by the user
- User can enabled/disable occlusion and set various properties of the occlusion at the audio component level
- Occlusion ray-casts are made at a slower rate than the audio engine is updated
- The following properties are supported:
* LowPassFilterFrequency (the LPF cutoff frequency of the per-voice filter to apply if a sound is occluded)
* OcclusionVolumeAttenuation (the volume attenuation to apply to sounds that are occluded)
* OcclusionInterpolationTime (how fast a sound moves from occluded to unoccluded... allows user-defined interpolation times, avoids fast parameter setting for smoother transitions)
- Fixed how low-pass filter frequency is applied on platforms that support it.
* Changed the older HighFrequencyGain parameter to a more understandable and correct LowPassFilterFrequency parameter
* Updated the parameter for the various other features that use per-voice LPF (e.g. audio volumes, distance-based filtering)
* Added backward-compatibility code to take old HighFrequencyGain params to new LowPassFilterFrequency params.
* At the lowest level, there is only one filter which is applied to a sound, but the parameter that has the lowest cutoff frequency is the one used
* Fixed how the parameter is applied at the lower-level in XAudio2 and CoreAudio. The old parameter was incorrectly applied.
* XAudio2 documentation on the low-pass-fitler frequency cutoff param is confirmed incorrect through testing.
#rb zak.middleton
Change 2765174 on 2015/11/12 by Aaron.McLeran
UE-23091 More fixage for NaN audio log spam
Last checkin for this (CL 2760896) was fixing a legit issue but there was still an issue that I was rarely catching during the FN gate encounter in AITestbed after about 5 min of gate defense.
To track down, I added a lot more logging and asserts on NaN numbers in the audio code, enabled ENABLE_NAN_DIAGNOSTIC in UnrealMathUtility.h.
- Was able to trace another cause of the NaNs in audio to 2 uninitialized variables in SoundAttenuationSettings struct: OmniRadius and StereoSpread.
- Zak M suggested the change of the const ref position vector in ListenerPosition and the usage of GetSafeNormal() in Audio.cpp since the value returned by GetLocation() is a temporary and Normalize() is unsafe.
- I removed the flag for the XAudio2 call to compute doppler since we don't use that value and it could've been as source of more NaNs in X3DAudioCalculate
#codereview Zak.Middleton
#rb Zak.Middleton
Change 2765467 on 2015/11/13 by James.Golding
- Allow -ms option to work with 'stat dumphitches' for controlling min time logged
#rb gil.gribb
Change 2765746 on 2015/11/13 by Benn.Gallagher
Added buckets for update rate shift tags (for staggering anim updates)
#jira UE-23213
#rb Bruce.Nesbit
Change 2765747 on 2015/11/13 by Benn.Gallagher
Fixes for bone length calculation in anim dynamics chains.
#rb Bruce.Nesbit
Change 2765749 on 2015/11/13 by Benn.Gallagher
Removed allocations from local CS blends for skeletal controls.
#rb Bruce.Nesbit
Change 2765752 on 2015/11/13 by Benn.Gallagher
Lod mapping support for URO customization
#jira UE-23211
#rb Bruce.Nesbit
Change 2765965 on 2015/11/13 by Marc.Audy
Remove outdated code in LoadMap previously used for matching up downloaded packages from servers. These code paths no longer operate, but in the case where a PIE client was connecting to a non-PIE server (not really supported, but possible), it would cause the Editor Level package to be flagged as as PIE package and cause a crash on exit of PIE
#jira UE-21181
#rb Josh.Markiewicz
Change 2766071 on 2015/11/13 by Mieszko.Zielinski
Fixed dumb mistake in AEQSTestingPawn::PostLoad #UE4
the 'bTickDuringGame == bTickDuringGame' thing
#rb John.Abercrombie
Change 2766086 on 2015/11/13 by Mieszko.Zielinski
Exposing NavModifierComponent to ENGINE_API #UE4
#codereview Lukasz.Furman
Change 2766345 on 2015/11/13 by Mieszko.Zielinski
No longer compiling AISystem's creation out from client builds #UE4
Instead AISystem's instantiation on clients is configurable via UAISystemBase::bInstantiateAISystemOnClient config variable
Change 2766346 on 2015/11/13 by Mieszko.Zielinski
Improvements to EQS test scoring function preview #UE4
#rb Lukasz.Furman
Change 2766528 on 2015/11/13 by Stan.Melax
multiple materials/chunks on a single cloth sim mesh
This supposedly used to work in 4.7 but broke for 4.8
It looks like previous change 2493547 may have introduced the condition statement that makes multiple materials not include all of there verts.
Changing this to instead check for the bounds on the skinningmap instead of the NumRealSimVerts which doesn't look like it takes the offset into consideration.
jira:
#UE-23300
https://jira.ol.epicgames.net/browse/UE-23300
https://answers.unrealengine.com/questions/287833/apex-not-working-on-multiple-materials-since-48.html
Double tested code change with test asset from https://jira.ol.epicgames.net/browse/UE-10674
#rb Benn.Gallagher
Change 2766546 on 2015/11/13 by Marc.Audy
Throw warning for orphaned looping sounds caused by a looping sound node
Don't do somewhat expensive (due to weak pointer) orphaned sound checks in test or shipping
#rb Aaron.McLeran
Change 2766917 on 2015/11/14 by Jurre.deBaare
Fix UE4-23349 Simplygon doens't support sub 64 pixel textures
Change 2767742 on 2015/11/16 by Marc.Audy
Restructure SignificanceManager to store significance manager references in a FGCObject Module class instead of using a singleton.
Improve performance by eliminating StaticFindObjectFast calls in ::Get and force inlining Get calls
#rb Zak.Middleton, Rob.Manuszewski
Change 2767827 on 2015/11/16 by Zak.Middleton
#ue4 - Perf: avoid SmoothClientPosition() calls once the target mesh offset has been reached.
- New flag bNetworkSmoothingComplete indicates whether smoothing has reached the destination. This is set to false when a new network position is received.
- Also fixes trying to smooth rotation towards identity rotation before receiving network updates.
- Deprecated FNetworkPredictionData_Client_Character::CurrentSmoothTime in favor of saving last update time, to prevent needing to update time every tick (since we skip updates now).
#rb Dan.Youhon
Change 2768070 on 2015/11/16 by Marc.Audy
Change StaticDuplicateObject and DuplicateObject to take FName instead of char* (existing usages can automatically convert to FName so no backwards compatibility issues)
Fixup usages to avoid unnecessary string -> char* -> name conversions
Change AActor::CreateComponentFromTemplate to take an FName instead of FString, deprecated FString version
#rb Gil.Gribb
Change 2768121 on 2015/11/16 by Marc.Audy
Forceinline GetFName
Change 2768161 on 2015/11/16 by Aaron.McLeran
Checking occlusion back in
- Bug was due to improper interpolation of LPFFrequency values in audio volumes.
Change 2769428 on 2015/11/17 by Thomas.Sarkanen
Fixed backwards-compatibility issues with FExposedValueCopyRecord
Added PostSerialize function to patch up older data to the new format (copies properties->property FNames).
Made sure to zero FExposedValueCopyRecord in its constructor, prevents uninitialized variable issues when generating CRCs. This is necessary despite these members being UPROPERTYs because they are simply built on the stack then stuffed into the new CDO during compilation.
UE-23268 - EDITOR CRASH: Assertion failed: ((UObject*)ContainerPtr)->IsA((UClass*)GetOuter())
#rb James.Golding
#codereview Mike.Beach,Bob.Tellez
Change 2769488 on 2015/11/17 by Benn.Gallagher
DrawCanvas and debug string support for skeletal controls - accessed using "Skeletal Controls" option in Show->Display Info in Persona
#rb Martin.Wilson
Change 2769545 on 2015/11/17 by Benn.Gallagher
Added space conversion options to copy bone node.
#jira OR-9430
#rb Martin.Wilson
Change 2770228 on 2015/11/17 by Marc.Audy
Fix cause of assert firing when detaching if AttachTo(AttachParent) returns false
#rb Ori.Cohen
#jira UE-23366
Change 2770489 on 2015/11/17 by Marc.Audy
Make ::Serialize WITH_EDITORONLY_DATA since it did nothing otherwise
Change 2770761 on 2015/11/17 by Aaron.McLeran
Removing optimization disablement
- Forgot to remove these lines before checking in/testing.
Change 2771375 on 2015/11/18 by Thomas.Sarkanen
Added initialzation of internal state machine desc ptrs to (finally) remove random crashes when using sub-state machines
#rb Benn.Gallagher
Change 2771697 on 2015/11/18 by Jeff.Farris
Sensible defaults for APlayerController::ClientPlayCameraAnim and ClientPlayCameraShake
#rb marc.audy
Change 2771755 on 2015/11/18 by Marc.Audy
Put back in the recursion block for destroy actor
#rb James.Golding
Change 2772217 on 2015/11/18 by Marc.Audy
Update axis inversion to work the same way as sensitivity instead of old problematic way
Also change to use Reset instead of Empty(Array.Num())
#rb Jeff.Farris
Change 2772686 on 2015/11/18 by Aaron.McLeran
Fixing HRTF spatialization coordinate bug.
Don't need to convert to xaudio2 coordinates for HRTF spatialization
#rb chad.taylor
Change 2772766 on 2015/11/18 by Aaron.McLeran
Fixing HRTF spatialization with xaudio2 voice pools
- Issue was caused by 2 issues:
- effect chains weren't properly clearing their state between uses (SetEffectChain(nullptr) releases the effect for use with other voices)
- Not re-setting MaxEffectChainChannels = 0 in CreateSource() was causing re-used SoundSources to release their XAudio2 voices to the wrong pool.
#rb chad.taylor
Change 2773027 on 2015/11/19 by Thomas.Sarkanen
PR #1765: Git Plugin can find the git.exe binary installed on the Local AppData user directory (Contributed by SRombauts)
#rb Thomas.Sarkanen
Change 2773142 on 2015/11/19 by Benn.Gallagher
Optimized SafeSetCSBoneTransforms, no longer doing 2 iterations over the whole pose.
- Only iterating beyond the index of the first bone transform, cutting off all bones before
- No longer using a bone mask the size of the skeleton, just an array of interesting nodes
- No longer attempting to convert a transform if it isn't necessary (which was happening a lot)
#rb Laurent.Delayen
Change 2773212 on 2015/11/19 by Richard.Hinckley
#jira UEDOC-2685
Removing ugly comment. Not going to remove the node itself for backward compatibility.
Change 2773351 on 2015/11/19 by Zak.Middleton
#orion - Make sure we don't skip a final visual update when character mesh interpolation tries to stop smoothing once it reaches its destination. We keep setting bNetworkSmoothingComplete to false until the first visual update, at which point if it remains true we will stop getting updates.
#rb Dan.Youhon
Change 2773599 on 2015/11/19 by Marc.Audy
Fix shadow variable, initialization order, and incorrect placement of ENGINE_API that fails compiles on clang
#codereview Aaron.McLeran
Change 2773661 on 2015/11/19 by Richard.Hinckley
#jira UEDOC-2685
Following up by deprecating the CastToPlayerController function for 4.11.
Change 2774707 on 2015/11/19 by Stan.Melax
FCollisionQueryParams constructor API pitfall
Deprecating something that will call the unintended constructor if the programmer provides a string literal instead of explicitly creating an FName.
So this line of code:
FCollisionQueryParams Param(FName(TEXT("DragDropTrace")));
will invoke:
FCollisionQueryParams::FCollisionQueryParams(FName,bool=false,...)
But this line of code:
FCollisionQueryParams Param(TEXT("DragDropTrace"));
invokes:
FCollisionQueryParams::FCollisionQueryParams(bool)
Yes that actually happens, the string literal (the TEXT("whatever")) ends up specifies a bool parameter instead of a FName parameter. So the name is lost and a flag (that is usually set to false) is now set to true (since the string literal address is non-NULL). Yeah, that's could potentially be not what the programmer had intended.
It looks like this interface was introduced in CL 1792949
back in august 2013. Since its been a couple of years, we'll phase it out using the deprecation approach.
Making an API change would break things for existing projects.
If it had been a more recent change we could have probably just gone down to a single constructor right away.
Figured out that going one step further and removing bool param's default and adding a default constructor would minimize the number of places that will be hit with this deprecation. So, yes this is *increasing* the number of construtors temporarily, but this solution has minimal impact on the community. Later after other to-be-deprecated constructor gets removed, the two remaining can be combined into one with defaults for all parameters.
see also
https://udn.unrealengine.com/questions/269512/dangerous-fcollisionqueryparams-overloads.html
#codereview ori.cohen
[CL 2775460 by Marc Audy in Main branch]
2015-11-20 11:02:37 -05:00
OriginalMaterial = ( UMaterial * ) StaticDuplicateObject ( Material , OriginalMaterial - > GetOuter ( ) , OriginalMaterial - > GetFName ( ) ,
2014-03-14 14:13:41 -04:00
RF_AllFlags ,
OriginalMaterial - > GetClass ( ) ) ;
// Post load has been called, allow materials to be compiled in PostLoad.
UMaterial : : ForceNoCompilationInPostLoad ( false ) ;
// Restore the thumbnail info
OriginalMaterial - > ThumbnailInfo = OriginalThumbnailInfo ;
Material - > ThumbnailInfo = ThumbnailInfo ;
// Change the original material object to the new original material
OriginalMaterialObject = OriginalMaterial ;
// Restore RF_Standalone on the original material, as it had been removed from the preview material so that it could be GC'd.
OriginalMaterial - > SetFlags ( RF_Standalone ) ;
// Manually copy bUsedAsSpecialEngineMaterial as it is duplicate transient to prevent accidental creation of new special engine materials
OriginalMaterial - > bUsedAsSpecialEngineMaterial = Material - > bUsedAsSpecialEngineMaterial ;
// If we are showing stats for mobile materials, compile the full material for ES2 here. That way we can see if permutations
// not used for preview materials fail to compile.
if ( bShowMobileStats )
{
OriginalMaterial - > SetFeatureLevelToCompile ( ERHIFeatureLevel : : ES2 , true ) ;
}
// let the material update itself if necessary
OriginalMaterial - > PreEditChange ( NULL ) ;
OriginalMaterial - > PostEditChange ( ) ;
OriginalMaterial - > MarkPackageDirty ( ) ;
// clear the dirty flag
bMaterialDirty = false ;
bStatsFromPreviewMaterial = false ;
// update the world's viewports
FEditorDelegates : : RefreshEditor . Broadcast ( ) ;
FEditorSupportDelegates : : RedrawAllViewports . Broadcast ( ) ;
// Force particle components to update their view relevance.
for ( TObjectIterator < UParticleSystemComponent > It ; It ; + + It )
{
It - > bIsViewRelevanceDirty = true ;
}
2015-05-01 11:01:10 -04:00
// Update parameter names on any child material instances
for ( TObjectIterator < UMaterialInstance > It ; It ; + + It )
{
if ( It - > Parent = = OriginalMaterial )
{
It - > UpdateParameterNames ( ) ;
}
}
2014-03-14 14:13:41 -04:00
// Leaving this scope will update all dependent material instances.
}
2015-05-01 11:01:10 -04:00
2014-03-14 14:13:41 -04:00
RebuildMaterialInstanceEditors ( NULL ) ;
}
GWarn - > EndSlowTask ( ) ;
}
void FMaterialEditor : : UpdateMaterialInfoList ( bool bForceDisplay )
{
TArray < TSharedRef < class FTokenizedMessage > > Messages ;
TArray < TSharedPtr < FMaterialInfo > > TempMaterialInfoList ;
ERHIFeatureLevel : : Type FeatureLevelsToDisplay [ 2 ] ;
int32 NumFeatureLevels = 0 ;
// Always show basic features so that errors aren't hidden
2014-10-01 09:08:51 -04:00
FeatureLevelsToDisplay [ NumFeatureLevels + + ] = GMaxRHIFeatureLevel ;
2014-03-14 14:13:41 -04:00
if ( bShowMobileStats )
{
FeatureLevelsToDisplay [ NumFeatureLevels + + ] = ERHIFeatureLevel : : ES2 ;
}
if ( NumFeatureLevels > 0 )
{
UMaterial * MaterialForStats = bStatsFromPreviewMaterial ? Material : OriginalMaterial ;
for ( int32 i = 0 ; i < NumFeatureLevels ; + + i )
{
TArray < FString > CompileErrors ;
ERHIFeatureLevel : : Type FeatureLevel = FeatureLevelsToDisplay [ i ] ;
const FMaterialResource * MaterialResource = MaterialForStats - > GetMaterialResource ( FeatureLevel ) ;
if ( MaterialFunction & & ExpressionPreviewMaterial )
{
// Add a compile error message for functions missing an output
CompileErrors = ExpressionPreviewMaterial - > GetMaterialResource ( FeatureLevel ) - > GetCompileErrors ( ) ;
bool bFoundFunctionOutput = false ;
for ( int32 ExpressionIndex = 0 ; ExpressionIndex < Material - > Expressions . Num ( ) ; ExpressionIndex + + )
{
if ( Material - > Expressions [ ExpressionIndex ] - > IsA ( UMaterialExpressionFunctionOutput : : StaticClass ( ) ) )
{
bFoundFunctionOutput = true ;
break ;
}
}
if ( ! bFoundFunctionOutput )
{
CompileErrors . Add ( TEXT ( " Missing a function output " ) ) ;
}
}
else
{
CompileErrors = MaterialResource - > GetCompileErrors ( ) ;
}
// Only show general info if stats enabled
if ( ! MaterialFunction & & bShowStats )
{
// Display any errors and messages in the upper left corner of the viewport.
TArray < FString > Descriptions ;
TArray < int32 > InstructionCounts ;
2014-04-23 20:20:58 -04:00
TArray < FString > EmptyDescriptions ;
TArray < int32 > EmptyInstructionCounts ;
2014-03-14 14:13:41 -04:00
MaterialResource - > GetRepresentativeInstructionCounts ( Descriptions , InstructionCounts ) ;
2014-08-26 14:02:18 -04:00
//Built in stats is no longer exposed to the UI but may still be useful so they're still in the code.
2014-04-23 20:20:58 -04:00
bool bBuiltinStats = false ;
const FMaterialResource * EmptyMaterialResource = EmptyMaterial ? EmptyMaterial - > GetMaterialResource ( FeatureLevel ) : NULL ;
if ( bShowBuiltinStats & & bStatsFromPreviewMaterial & & EmptyMaterialResource & & InstructionCounts . Num ( ) > 0 )
{
EmptyMaterialResource - > GetRepresentativeInstructionCounts ( EmptyDescriptions , EmptyInstructionCounts ) ;
if ( EmptyInstructionCounts . Num ( ) > 0 )
{
//The instruction counts should match. If not, the preview material has been changed without the EmptyMaterial being updated to match.
if ( ensure ( InstructionCounts . Num ( ) = = EmptyInstructionCounts . Num ( ) ) )
{
bBuiltinStats = true ;
}
}
}
2014-04-02 18:09:23 -04:00
2014-03-14 14:13:41 -04:00
for ( int32 InstructionIndex = 0 ; InstructionIndex < Descriptions . Num ( ) ; InstructionIndex + + )
{
2014-04-23 20:20:58 -04:00
FString InstructionCountString = FString : : Printf ( TEXT ( " %s: %u instructions " ) , * Descriptions [ InstructionIndex ] , InstructionCounts [ InstructionIndex ] ) ;
if ( bBuiltinStats )
2014-04-02 18:09:23 -04:00
{
2014-04-23 20:20:58 -04:00
InstructionCountString + = FString : : Printf ( TEXT ( " - Built-in instructions: %u " ) , EmptyInstructionCounts [ InstructionIndex ] ) ;
2014-04-02 18:09:23 -04:00
}
2014-03-14 14:13:41 -04:00
TempMaterialInfoList . Add ( MakeShareable ( new FMaterialInfo ( InstructionCountString , FLinearColor : : Yellow ) ) ) ;
2014-04-23 20:20:58 -04:00
TSharedRef < FTokenizedMessage > Line = FTokenizedMessage : : Create ( EMessageSeverity : : Info ) ;
Line - > AddToken ( FTextToken : : Create ( FText : : FromString ( InstructionCountString ) ) ) ;
2014-03-14 14:13:41 -04:00
Messages . Add ( Line ) ;
}
// Display the number of samplers used by the material.
const int32 SamplersUsed = MaterialResource - > GetSamplerUsage ( ) ;
if ( SamplersUsed > = 0 )
{
int32 MaxSamplers = GetFeatureLevelMaxTextureSamplers ( MaterialResource - > GetFeatureLevel ( ) ) ;
2015-04-16 13:02:21 -04:00
FString SamplersString = FString : : Printf ( TEXT ( " %s samplers: %u/%u " ) , FeatureLevel < = ERHIFeatureLevel : : ES3_1 ? TEXT ( " Mobile texture " ) : TEXT ( " Texture " ) , SamplersUsed , MaxSamplers ) ;
2014-03-14 14:13:41 -04:00
TempMaterialInfoList . Add ( MakeShareable ( new FMaterialInfo ( SamplersString , FLinearColor : : Yellow ) ) ) ;
TSharedRef < FTokenizedMessage > Line = FTokenizedMessage : : Create ( EMessageSeverity : : Info ) ;
Line - > AddToken ( FTextToken : : Create ( FText : : FromString ( SamplersString ) ) ) ;
Messages . Add ( Line ) ;
}
}
FString FeatureLevelName ;
GetFeatureLevelName ( FeatureLevel , FeatureLevelName ) ;
for ( int32 ErrorIndex = 0 ; ErrorIndex < CompileErrors . Num ( ) ; ErrorIndex + + )
{
FString ErrorString = FString : : Printf ( TEXT ( " [%s] %s " ) , * FeatureLevelName , * CompileErrors [ ErrorIndex ] ) ;
TempMaterialInfoList . Add ( MakeShareable ( new FMaterialInfo ( ErrorString , FLinearColor : : Red ) ) ) ;
TSharedRef < FTokenizedMessage > Line = FTokenizedMessage : : Create ( EMessageSeverity : : Error ) ;
Line - > AddToken ( FTextToken : : Create ( FText : : FromString ( ErrorString ) ) ) ;
Messages . Add ( Line ) ;
bForceDisplay = true ;
}
}
}
bool bNeedsRefresh = false ;
if ( TempMaterialInfoList . Num ( ) ! = MaterialInfoList . Num ( ) )
{
bNeedsRefresh = true ;
}
for ( int32 Index = 0 ; ! bNeedsRefresh & & Index < TempMaterialInfoList . Num ( ) ; + + Index )
{
if ( TempMaterialInfoList [ Index ] - > Color ! = MaterialInfoList [ Index ] - > Color )
{
bNeedsRefresh = true ;
break ;
}
if ( TempMaterialInfoList [ Index ] - > Text ! = MaterialInfoList [ Index ] - > Text )
{
bNeedsRefresh = true ;
break ;
}
}
if ( bNeedsRefresh )
{
MaterialInfoList = TempMaterialInfoList ;
/*TSharedPtr<SWidget> TitleBar = GraphEditor->GetTitleBar();
if ( TitleBar . IsValid ( ) )
{
StaticCastSharedPtr < SMaterialEditorTitleBar > ( TitleBar ) - > RequestRefresh ( ) ;
} */
StatsListing - > ClearMessages ( ) ;
StatsListing - > AddMessages ( Messages ) ;
if ( bForceDisplay )
{
TabManager - > InvokeTab ( StatsTabId ) ;
}
}
}
void FMaterialEditor : : UpdateGraphNodeStates ( )
{
2014-10-01 09:08:51 -04:00
const FMaterialResource * ErrorMaterialResource = PreviewExpression ? ExpressionPreviewMaterial - > GetMaterialResource ( GMaxRHIFeatureLevel ) : Material - > GetMaterialResource ( GMaxRHIFeatureLevel ) ;
2014-03-14 14:13:41 -04:00
const FMaterialResource * ErrorMaterialResourceES2 = NULL ;
if ( bShowMobileStats )
{
ErrorMaterialResourceES2 = PreviewExpression ? ExpressionPreviewMaterial - > GetMaterialResource ( ERHIFeatureLevel : : ES2 ) : Material - > GetMaterialResource ( ERHIFeatureLevel : : ES2 ) ;
}
bool bUpdatedErrorState = false ;
// Have to loop through everything here as there's no way to be notified when the material resource updates
for ( int32 Index = 0 ; Index < Material - > MaterialGraph - > Nodes . Num ( ) ; + + Index )
{
UMaterialGraphNode * MaterialNode = Cast < UMaterialGraphNode > ( Material - > MaterialGraph - > Nodes [ Index ] ) ;
if ( MaterialNode )
{
MaterialNode - > bIsPreviewExpression = ( PreviewExpression = = MaterialNode - > MaterialExpression ) ;
MaterialNode - > bIsErrorExpression = ( ErrorMaterialResource - > GetErrorExpressions ( ) . Find ( MaterialNode - > MaterialExpression ) ! = INDEX_NONE )
| | ( ErrorMaterialResourceES2 & & ErrorMaterialResourceES2 - > GetErrorExpressions ( ) . Find ( MaterialNode - > MaterialExpression ) ! = INDEX_NONE ) ;
if ( MaterialNode - > bIsErrorExpression & & ! MaterialNode - > bHasCompilerMessage )
{
bUpdatedErrorState = true ;
MaterialNode - > bHasCompilerMessage = true ;
MaterialNode - > ErrorMsg = MaterialNode - > MaterialExpression - > LastErrorText ;
MaterialNode - > ErrorType = EMessageSeverity : : Error ;
}
else if ( ! MaterialNode - > bIsErrorExpression & & MaterialNode - > bHasCompilerMessage )
{
bUpdatedErrorState = true ;
MaterialNode - > bHasCompilerMessage = false ;
}
}
}
if ( bUpdatedErrorState )
{
// Rebuild the SGraphNodes to display/hide error block
GraphEditor - > NotifyGraphChanged ( ) ;
}
}
void FMaterialEditor : : AddReferencedObjects ( FReferenceCollector & Collector )
{
Collector . AddReferencedObject ( EditorOptions ) ;
Collector . AddReferencedObject ( Material ) ;
Collector . AddReferencedObject ( OriginalMaterial ) ;
Collector . AddReferencedObject ( MaterialFunction ) ;
Collector . AddReferencedObject ( ExpressionPreviewMaterial ) ;
2014-04-23 20:20:58 -04:00
Collector . AddReferencedObject ( EmptyMaterial ) ;
2014-03-14 14:13:41 -04:00
}
void FMaterialEditor : : BindCommands ( )
{
const FMaterialEditorCommands & Commands = FMaterialEditorCommands : : Get ( ) ;
ToolkitCommands - > MapAction (
Commands . Apply ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnApply ) ,
FCanExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnApplyEnabled ) ) ;
ToolkitCommands - > MapAction (
FEditorViewportCommands : : Get ( ) . ToggleRealTime ,
2015-06-22 15:55:50 -04:00
FExecuteAction : : CreateSP ( PreviewViewport . ToSharedRef ( ) , & SMaterialEditor3DPreviewViewport : : OnToggleRealtime ) ,
2014-03-14 14:13:41 -04:00
FCanExecuteAction ( ) ,
2015-06-22 15:55:50 -04:00
FIsActionChecked : : CreateSP ( PreviewViewport . ToSharedRef ( ) , & SMaterialEditor3DPreviewViewport : : IsRealtime ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
FGenericCommands : : Get ( ) . Undo ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : UndoGraphAction ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
FGenericCommands : : Get ( ) . Redo ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : RedoGraphAction ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . CameraHome ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnCameraHome ) ,
FCanExecuteAction ( ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . CleanUnusedExpressions ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : CleanUnusedExpressions ) ,
FCanExecuteAction ( ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . ShowHideConnectors ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnShowConnectors ) ,
FCanExecuteAction ( ) ,
FIsActionChecked : : CreateSP ( this , & FMaterialEditor : : IsOnShowConnectorsChecked ) ) ;
2014-03-14 14:13:41 -04:00
2014-07-03 09:13:33 -04:00
ToolkitCommands - > MapAction (
Commands . ToggleLivePreview ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : ToggleLivePreview ) ,
FCanExecuteAction ( ) ,
FIsActionChecked : : CreateSP ( this , & FMaterialEditor : : IsToggleLivePreviewChecked ) ) ;
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . ToggleRealtimeExpressions ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : ToggleRealTimeExpressions ) ,
FCanExecuteAction ( ) ,
FIsActionChecked : : CreateSP ( this , & FMaterialEditor : : IsToggleRealTimeExpressionsChecked ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . AlwaysRefreshAllPreviews ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnAlwaysRefreshAllPreviews ) ,
FCanExecuteAction ( ) ,
FIsActionChecked : : CreateSP ( this , & FMaterialEditor : : IsOnAlwaysRefreshAllPreviews ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . ToggleMaterialStats ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : ToggleStats ) ,
FCanExecuteAction ( ) ,
FIsActionChecked : : CreateSP ( this , & FMaterialEditor : : IsToggleStatsChecked ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . ToggleMobileStats ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : ToggleMobileStats ) ,
FCanExecuteAction ( ) ,
FIsActionChecked : : CreateSP ( this , & FMaterialEditor : : IsToggleMobileStatsChecked ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . UseCurrentTexture ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnUseCurrentTexture ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . ConvertObjects ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnConvertObjects ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . ConvertToTextureObjects ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnConvertTextures ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . ConvertToTextureSamples ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnConvertTextures ) ) ;
2014-03-14 14:13:41 -04:00
2014-10-23 21:38:06 -04:00
ToolkitCommands - > MapAction (
Commands . ConvertToConstant ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnConvertObjects ) ) ;
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . StopPreviewNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnPreviewNode ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . StartPreviewNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnPreviewNode ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . EnableRealtimePreviewNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnToggleRealtimePreview ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . DisableRealtimePreviewNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnToggleRealtimePreview ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . SelectDownstreamNodes ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnSelectDownsteamNodes ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . SelectUpstreamNodes ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnSelectUpsteamNodes ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . RemoveFromFavorites ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : RemoveSelectedExpressionFromFavorites ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . AddToFavorites ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : AddSelectedExpressionToFavorites ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
ToolkitCommands - > MapAction (
Commands . ForceRefreshPreviews ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnForceRefreshPreviews ) ) ;
ToolkitCommands - > MapAction (
Commands . FindInMaterial ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnFindInMaterial ) ) ;
}
2014-03-14 14:13:41 -04:00
void FMaterialEditor : : OnApply ( )
{
UE_LOG ( LogMaterialEditor , Log , TEXT ( " Applying material %s " ) , * GetEditingObjects ( ) [ 0 ] - > GetName ( ) ) ;
UpdateOriginalMaterial ( ) ;
}
bool FMaterialEditor : : OnApplyEnabled ( ) const
{
return bMaterialDirty = = true ;
}
void FMaterialEditor : : OnCameraHome ( )
{
RecenterEditor ( ) ;
}
void FMaterialEditor : : OnShowConnectors ( )
{
bHideUnusedConnectors = ! bHideUnusedConnectors ;
GraphEditor - > SetPinVisibility ( bHideUnusedConnectors ? SGraphEditor : : Pin_HideNoConnection : SGraphEditor : : Pin_Show ) ;
}
bool FMaterialEditor : : IsOnShowConnectorsChecked ( ) const
{
return bHideUnusedConnectors = = false ;
}
2014-07-03 09:13:33 -04:00
void FMaterialEditor : : ToggleLivePreview ( )
{
bLivePreview = ! bLivePreview ;
if ( bLivePreview )
{
UpdatePreviewMaterial ( ) ;
2014-07-08 10:58:56 -04:00
RegenerateCodeView ( ) ;
2014-07-03 09:13:33 -04:00
}
}
bool FMaterialEditor : : IsToggleLivePreviewChecked ( ) const
{
return bLivePreview ;
}
2014-03-14 14:13:41 -04:00
void FMaterialEditor : : ToggleRealTimeExpressions ( )
{
bIsRealtime = ! bIsRealtime ;
}
bool FMaterialEditor : : IsToggleRealTimeExpressionsChecked ( ) const
{
return bIsRealtime = = true ;
}
void FMaterialEditor : : OnAlwaysRefreshAllPreviews ( )
{
bAlwaysRefreshAllPreviews = ! bAlwaysRefreshAllPreviews ;
if ( bAlwaysRefreshAllPreviews )
{
RefreshExpressionPreviews ( ) ;
}
}
bool FMaterialEditor : : IsOnAlwaysRefreshAllPreviews ( ) const
{
return bAlwaysRefreshAllPreviews = = true ;
}
void FMaterialEditor : : ToggleStats ( )
{
// Toggle the showing of material stats each time the user presses the show stats button
bShowStats = ! bShowStats ;
UpdateMaterialInfoList ( bShowStats ) ;
}
bool FMaterialEditor : : IsToggleStatsChecked ( ) const
{
return bShowStats = = true ;
}
void FMaterialEditor : : ToggleMobileStats ( )
{
// Toggle the showing of material stats each time the user presses the show stats button
bShowMobileStats = ! bShowMobileStats ;
UPreviewMaterial * PreviewMaterial = Cast < UPreviewMaterial > ( Material ) ;
if ( PreviewMaterial )
{
{
// Sync with the rendering thread but don't reregister components. We will manually do so.
FMaterialUpdateContext UpdateContext ( FMaterialUpdateContext : : EOptions : : SyncWithRenderingThread ) ;
UpdateContext . AddMaterial ( PreviewMaterial ) ;
PreviewMaterial - > SetFeatureLevelToCompile ( ERHIFeatureLevel : : ES2 , bShowMobileStats ) ;
PreviewMaterial - > ForceRecompileForRendering ( ) ;
if ( ! bStatsFromPreviewMaterial )
{
OriginalMaterial - > SetFeatureLevelToCompile ( ERHIFeatureLevel : : ES2 , bShowMobileStats ) ;
OriginalMaterial - > ForceRecompileForRendering ( ) ;
}
}
2014-04-23 20:20:58 -04:00
UpdateStatsMaterials ( ) ;
2014-03-14 14:13:41 -04:00
RefreshPreviewViewport ( ) ;
}
UpdateMaterialInfoList ( bShowMobileStats ) ;
}
bool FMaterialEditor : : IsToggleMobileStatsChecked ( ) const
{
return bShowMobileStats = = true ;
}
void FMaterialEditor : : OnUseCurrentTexture ( )
{
// Set the currently selected texture in the generic browser
// as the texture to use in all selected texture sample expressions.
FEditorDelegates : : LoadSelectedAssetsIfNeeded . Broadcast ( ) ;
UTexture * SelectedTexture = GEditor - > GetSelectedObjects ( ) - > GetTop < UTexture > ( ) ;
if ( SelectedTexture )
{
const FScopedTransaction Transaction ( NSLOCTEXT ( " UnrealEd " , " UseCurrentTexture " , " Use Current Texture " ) ) ;
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) ;
if ( GraphNode & & GraphNode - > MaterialExpression - > IsA ( UMaterialExpressionTextureBase : : StaticClass ( ) ) )
{
UMaterialExpressionTextureBase * TextureBase = static_cast < UMaterialExpressionTextureBase * > ( GraphNode - > MaterialExpression ) ;
TextureBase - > Modify ( ) ;
TextureBase - > Texture = SelectedTexture ;
TextureBase - > AutoSetSampleType ( ) ;
}
}
// Update the current preview material.
UpdatePreviewMaterial ( ) ;
Material - > MarkPackageDirty ( ) ;
RegenerateCodeView ( ) ;
RefreshExpressionPreviews ( ) ;
SetMaterialDirty ( ) ;
}
}
void FMaterialEditor : : OnConvertObjects ( )
{
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
if ( SelectedNodes . Num ( ) > 0 )
{
2014-10-23 21:38:06 -04:00
const FScopedTransaction Transaction ( LOCTEXT ( " MaterialEditorConvert " , " Material Editor: Convert " ) ) ;
2014-03-14 14:13:41 -04:00
Material - > Modify ( ) ;
Material - > MaterialGraph - > Modify ( ) ;
TArray < class UEdGraphNode * > NodesToDelete ;
TArray < class UEdGraphNode * > NodesToSelect ;
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) ;
if ( GraphNode )
{
// Look for the supported classes to convert from
UMaterialExpression * CurrentSelectedExpression = GraphNode - > MaterialExpression ;
UMaterialExpressionConstant * Constant1Expression = Cast < UMaterialExpressionConstant > ( CurrentSelectedExpression ) ;
UMaterialExpressionConstant2Vector * Constant2Expression = Cast < UMaterialExpressionConstant2Vector > ( CurrentSelectedExpression ) ;
UMaterialExpressionConstant3Vector * Constant3Expression = Cast < UMaterialExpressionConstant3Vector > ( CurrentSelectedExpression ) ;
UMaterialExpressionConstant4Vector * Constant4Expression = Cast < UMaterialExpressionConstant4Vector > ( CurrentSelectedExpression ) ;
UMaterialExpressionTextureSample * TextureSampleExpression = Cast < UMaterialExpressionTextureSample > ( CurrentSelectedExpression ) ;
UMaterialExpressionComponentMask * ComponentMaskExpression = Cast < UMaterialExpressionComponentMask > ( CurrentSelectedExpression ) ;
UMaterialExpressionParticleSubUV * ParticleSubUVExpression = Cast < UMaterialExpressionParticleSubUV > ( CurrentSelectedExpression ) ;
2014-10-23 21:38:06 -04:00
UMaterialExpressionScalarParameter * ScalarParameterExpression = Cast < UMaterialExpressionScalarParameter > ( CurrentSelectedExpression ) ;
UMaterialExpressionVectorParameter * VectorParameterExpression = Cast < UMaterialExpressionVectorParameter > ( CurrentSelectedExpression ) ;
2014-03-14 14:13:41 -04:00
// Setup the class to convert to
UClass * ClassToCreate = NULL ;
if ( Constant1Expression )
{
ClassToCreate = UMaterialExpressionScalarParameter : : StaticClass ( ) ;
}
else if ( Constant2Expression | | Constant3Expression | | Constant4Expression )
{
ClassToCreate = UMaterialExpressionVectorParameter : : StaticClass ( ) ;
}
else if ( ParticleSubUVExpression ) // Has to come before the TextureSample comparison...
{
ClassToCreate = UMaterialExpressionTextureSampleParameterSubUV : : StaticClass ( ) ;
}
else if ( TextureSampleExpression & & TextureSampleExpression - > Texture & & TextureSampleExpression - > Texture - > IsA ( UTextureCube : : StaticClass ( ) ) )
{
ClassToCreate = UMaterialExpressionTextureSampleParameterCube : : StaticClass ( ) ;
}
else if ( TextureSampleExpression )
{
ClassToCreate = UMaterialExpressionTextureSampleParameter2D : : StaticClass ( ) ;
}
else if ( ComponentMaskExpression )
{
ClassToCreate = UMaterialExpressionStaticComponentMaskParameter : : StaticClass ( ) ;
}
2014-10-23 21:38:06 -04:00
else if ( ScalarParameterExpression )
{
ClassToCreate = UMaterialExpressionConstant : : StaticClass ( ) ;
}
else if ( VectorParameterExpression )
{
2014-10-27 20:13:48 -04:00
// Technically should be a constant 4 but UMaterialExpressionVectorParameter has an rgb pin, so using Constant3 to avoid a compile error
ClassToCreate = UMaterialExpressionConstant3Vector : : StaticClass ( ) ;
2014-10-23 21:38:06 -04:00
}
2014-03-14 14:13:41 -04:00
if ( ClassToCreate )
{
UMaterialExpression * NewExpression = CreateNewMaterialExpression ( ClassToCreate , FVector2D ( GraphNode - > NodePosX , GraphNode - > NodePosY ) , false , true ) ;
if ( NewExpression )
{
UMaterialGraphNode * NewGraphNode = CastChecked < UMaterialGraphNode > ( NewExpression - > GraphNode ) ;
NewGraphNode - > ReplaceNode ( GraphNode ) ;
bool bNeedsRefresh = false ;
// Copy over expression-specific values
if ( Constant1Expression )
{
bNeedsRefresh = true ;
CastChecked < UMaterialExpressionScalarParameter > ( NewExpression ) - > DefaultValue = Constant1Expression - > R ;
}
else if ( Constant2Expression )
{
bNeedsRefresh = true ;
CastChecked < UMaterialExpressionVectorParameter > ( NewExpression ) - > DefaultValue = FLinearColor ( Constant2Expression - > R , Constant2Expression - > G , 0 ) ;
}
else if ( Constant3Expression )
{
bNeedsRefresh = true ;
CastChecked < UMaterialExpressionVectorParameter > ( NewExpression ) - > DefaultValue = Constant3Expression - > Constant ;
CastChecked < UMaterialExpressionVectorParameter > ( NewExpression ) - > DefaultValue . A = 1.0f ;
}
else if ( Constant4Expression )
{
bNeedsRefresh = true ;
CastChecked < UMaterialExpressionVectorParameter > ( NewExpression ) - > DefaultValue = Constant4Expression - > Constant ;
}
else if ( TextureSampleExpression )
{
bNeedsRefresh = true ;
UMaterialExpressionTextureSampleParameter * NewTextureExpr = CastChecked < UMaterialExpressionTextureSampleParameter > ( NewExpression ) ;
NewTextureExpr - > Texture = TextureSampleExpression - > Texture ;
NewTextureExpr - > Coordinates = TextureSampleExpression - > Coordinates ;
NewTextureExpr - > AutoSetSampleType ( ) ;
NewTextureExpr - > IsDefaultMeshpaintTexture = TextureSampleExpression - > IsDefaultMeshpaintTexture ;
NewTextureExpr - > TextureObject = TextureSampleExpression - > TextureObject ;
NewTextureExpr - > MipValue = TextureSampleExpression - > MipValue ;
2015-07-10 15:55:51 -04:00
NewTextureExpr - > CoordinatesDX = TextureSampleExpression - > CoordinatesDX ;
NewTextureExpr - > CoordinatesDY = TextureSampleExpression - > CoordinatesDY ;
2014-03-14 14:13:41 -04:00
NewTextureExpr - > MipValueMode = TextureSampleExpression - > MipValueMode ;
2015-05-28 09:07:21 -04:00
NewGraphNode - > ReconstructNode ( ) ;
2014-03-14 14:13:41 -04:00
}
else if ( ComponentMaskExpression )
{
bNeedsRefresh = true ;
UMaterialExpressionStaticComponentMaskParameter * ComponentMask = CastChecked < UMaterialExpressionStaticComponentMaskParameter > ( NewExpression ) ;
ComponentMask - > DefaultR = ComponentMaskExpression - > R ;
ComponentMask - > DefaultG = ComponentMaskExpression - > G ;
ComponentMask - > DefaultB = ComponentMaskExpression - > B ;
ComponentMask - > DefaultA = ComponentMaskExpression - > A ;
}
else if ( ParticleSubUVExpression )
{
bNeedsRefresh = true ;
CastChecked < UMaterialExpressionTextureSampleParameterSubUV > ( NewExpression ) - > Texture = ParticleSubUVExpression - > Texture ;
}
2014-10-23 21:38:06 -04:00
else if ( ScalarParameterExpression )
{
bNeedsRefresh = true ;
CastChecked < UMaterialExpressionConstant > ( NewExpression ) - > R = ScalarParameterExpression - > DefaultValue ;
}
else if ( VectorParameterExpression )
{
bNeedsRefresh = true ;
2014-10-28 12:23:01 -04:00
CastChecked < UMaterialExpressionConstant3Vector > ( NewExpression ) - > Constant = VectorParameterExpression - > DefaultValue ;
2014-10-23 21:38:06 -04:00
}
2014-03-14 14:13:41 -04:00
if ( bNeedsRefresh )
{
// Refresh the expression preview if we changed its properties after it was created
NewExpression - > bNeedToUpdatePreview = true ;
RefreshExpressionPreview ( NewExpression , true ) ;
}
NodesToDelete . AddUnique ( GraphNode ) ;
NodesToSelect . Add ( NewGraphNode ) ;
}
}
}
}
// Delete the replaced nodes
DeleteNodes ( NodesToDelete ) ;
// Select each of the newly converted expressions
for ( TArray < UEdGraphNode * > : : TConstIterator NodeIter ( NodesToSelect ) ; NodeIter ; + + NodeIter )
{
GraphEditor - > SetNodeSelection ( * NodeIter , true ) ;
}
}
}
void FMaterialEditor : : OnConvertTextures ( )
{
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
if ( SelectedNodes . Num ( ) > 0 )
{
const FScopedTransaction Transaction ( LOCTEXT ( " MaterialEditorConvertTexture " , " Material Editor: Convert to Texture " ) ) ;
Material - > Modify ( ) ;
Material - > MaterialGraph - > Modify ( ) ;
TArray < class UEdGraphNode * > NodesToDelete ;
TArray < class UEdGraphNode * > NodesToSelect ;
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) ;
if ( GraphNode )
{
// Look for the supported classes to convert from
UMaterialExpression * CurrentSelectedExpression = GraphNode - > MaterialExpression ;
UMaterialExpressionTextureSample * TextureSampleExpression = Cast < UMaterialExpressionTextureSample > ( CurrentSelectedExpression ) ;
UMaterialExpressionTextureObject * TextureObjectExpression = Cast < UMaterialExpressionTextureObject > ( CurrentSelectedExpression ) ;
// Setup the class to convert to
UClass * ClassToCreate = NULL ;
if ( TextureSampleExpression )
{
ClassToCreate = UMaterialExpressionTextureObject : : StaticClass ( ) ;
}
else if ( TextureObjectExpression )
{
ClassToCreate = UMaterialExpressionTextureSample : : StaticClass ( ) ;
}
if ( ClassToCreate )
{
UMaterialExpression * NewExpression = CreateNewMaterialExpression ( ClassToCreate , FVector2D ( GraphNode - > NodePosX , GraphNode - > NodePosY ) , false , true ) ;
if ( NewExpression )
{
UMaterialGraphNode * NewGraphNode = CastChecked < UMaterialGraphNode > ( NewExpression - > GraphNode ) ;
NewGraphNode - > ReplaceNode ( GraphNode ) ;
bool bNeedsRefresh = false ;
// Copy over expression-specific values
if ( TextureSampleExpression )
{
bNeedsRefresh = true ;
UMaterialExpressionTextureObject * NewTextureExpr = CastChecked < UMaterialExpressionTextureObject > ( NewExpression ) ;
NewTextureExpr - > Texture = TextureSampleExpression - > Texture ;
NewTextureExpr - > AutoSetSampleType ( ) ;
NewTextureExpr - > IsDefaultMeshpaintTexture = TextureSampleExpression - > IsDefaultMeshpaintTexture ;
}
else if ( TextureObjectExpression )
{
bNeedsRefresh = true ;
UMaterialExpressionTextureSample * NewTextureExpr = CastChecked < UMaterialExpressionTextureSample > ( NewExpression ) ;
NewTextureExpr - > Texture = TextureObjectExpression - > Texture ;
NewTextureExpr - > AutoSetSampleType ( ) ;
NewTextureExpr - > IsDefaultMeshpaintTexture = TextureObjectExpression - > IsDefaultMeshpaintTexture ;
NewTextureExpr - > MipValueMode = TMVM_None ;
}
if ( bNeedsRefresh )
{
// Refresh the expression preview if we changed its properties after it was created
NewExpression - > bNeedToUpdatePreview = true ;
RefreshExpressionPreview ( NewExpression , true ) ;
}
NodesToDelete . AddUnique ( GraphNode ) ;
NodesToSelect . Add ( NewGraphNode ) ;
}
}
}
}
// Delete the replaced nodes
DeleteNodes ( NodesToDelete ) ;
// Select each of the newly converted expressions
for ( TArray < UEdGraphNode * > : : TConstIterator NodeIter ( NodesToSelect ) ; NodeIter ; + + NodeIter )
{
GraphEditor - > SetNodeSelection ( * NodeIter , true ) ;
}
}
}
void FMaterialEditor : : OnPreviewNode ( )
{
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
if ( SelectedNodes . Num ( ) = = 1 )
{
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) ;
if ( GraphNode )
{
2016-02-01 14:57:29 -05:00
GraphEditor - > NotifyGraphChanged ( ) ;
2014-03-14 14:13:41 -04:00
SetPreviewExpression ( GraphNode - > MaterialExpression ) ;
}
}
}
}
void FMaterialEditor : : OnToggleRealtimePreview ( )
{
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
if ( SelectedNodes . Num ( ) = = 1 )
{
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) ;
if ( GraphNode )
{
UMaterialExpression * SelectedExpression = GraphNode - > MaterialExpression ;
SelectedExpression - > bRealtimePreview = ! SelectedExpression - > bRealtimePreview ;
if ( SelectedExpression - > bRealtimePreview )
{
SelectedExpression - > bCollapsed = false ;
}
RefreshExpressionPreviews ( ) ;
SetMaterialDirty ( ) ;
}
}
}
}
void FMaterialEditor : : OnSelectDownsteamNodes ( )
{
TArray < UMaterialGraphNode * > NodesToCheck ;
TArray < UMaterialGraphNode * > CheckedNodes ;
TArray < UMaterialGraphNode * > NodesToSelect ;
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) ;
if ( GraphNode )
{
NodesToCheck . Add ( GraphNode ) ;
}
}
while ( NodesToCheck . Num ( ) > 0 )
{
UMaterialGraphNode * CurrentNode = NodesToCheck . Last ( ) ;
TArray < UEdGraphPin * > OutputPins ;
CurrentNode - > GetOutputPins ( OutputPins ) ;
for ( int32 Index = 0 ; Index < OutputPins . Num ( ) ; + + Index )
{
for ( int32 LinkIndex = 0 ; LinkIndex < OutputPins [ Index ] - > LinkedTo . Num ( ) ; + + LinkIndex )
{
UMaterialGraphNode * LinkedNode = Cast < UMaterialGraphNode > ( OutputPins [ Index ] - > LinkedTo [ LinkIndex ] - > GetOwningNode ( ) ) ;
if ( LinkedNode )
{
int32 FoundIndex = - 1 ;
CheckedNodes . Find ( LinkedNode , FoundIndex ) ;
if ( FoundIndex < 0 )
{
NodesToSelect . Add ( LinkedNode ) ;
NodesToCheck . Add ( LinkedNode ) ;
}
}
}
}
// This graph node has now been examined
CheckedNodes . Add ( CurrentNode ) ;
NodesToCheck . Remove ( CurrentNode ) ;
}
for ( int32 Index = 0 ; Index < NodesToSelect . Num ( ) ; + + Index )
{
GraphEditor - > SetNodeSelection ( NodesToSelect [ Index ] , true ) ;
}
}
void FMaterialEditor : : OnSelectUpsteamNodes ( )
{
TArray < UMaterialGraphNode * > NodesToCheck ;
TArray < UMaterialGraphNode * > CheckedNodes ;
TArray < UMaterialGraphNode * > NodesToSelect ;
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) ;
if ( GraphNode )
{
NodesToCheck . Add ( GraphNode ) ;
}
}
while ( NodesToCheck . Num ( ) > 0 )
{
UMaterialGraphNode * CurrentNode = NodesToCheck . Last ( ) ;
TArray < UEdGraphPin * > InputPins ;
CurrentNode - > GetInputPins ( InputPins ) ;
for ( int32 Index = 0 ; Index < InputPins . Num ( ) ; + + Index )
{
for ( int32 LinkIndex = 0 ; LinkIndex < InputPins [ Index ] - > LinkedTo . Num ( ) ; + + LinkIndex )
{
UMaterialGraphNode * LinkedNode = Cast < UMaterialGraphNode > ( InputPins [ Index ] - > LinkedTo [ LinkIndex ] - > GetOwningNode ( ) ) ;
if ( LinkedNode )
{
int32 FoundIndex = - 1 ;
CheckedNodes . Find ( LinkedNode , FoundIndex ) ;
if ( FoundIndex < 0 )
{
NodesToSelect . Add ( LinkedNode ) ;
NodesToCheck . Add ( LinkedNode ) ;
}
}
}
}
// This graph node has now been examined
CheckedNodes . Add ( CurrentNode ) ;
NodesToCheck . Remove ( CurrentNode ) ;
}
for ( int32 Index = 0 ; Index < NodesToSelect . Num ( ) ; + + Index )
{
GraphEditor - > SetNodeSelection ( NodesToSelect [ Index ] , true ) ;
}
}
void FMaterialEditor : : OnForceRefreshPreviews ( )
{
ForceRefreshExpressionPreviews ( ) ;
RefreshPreviewViewport ( ) ;
}
void FMaterialEditor : : OnCreateComment ( )
{
CreateNewMaterialExpressionComment ( GraphEditor - > GetPasteLocation ( ) ) ;
}
2014-05-08 05:29:54 -04:00
void FMaterialEditor : : OnCreateComponentMaskNode ( )
{
CreateNewMaterialExpression ( UMaterialExpressionComponentMask : : StaticClass ( ) , GraphEditor - > GetPasteLocation ( ) , true , false ) ;
}
2014-04-23 18:21:07 -04:00
void FMaterialEditor : : OnFindInMaterial ( )
{
TabManager - > InvokeTab ( FindTabId ) ;
FindResults - > FocusForUse ( ) ;
}
2014-09-05 08:25:23 -04:00
FString FMaterialEditor : : GetDocLinkForSelectedNode ( )
{
FString DocumentationLink ;
TArray < UObject * > SelectedNodes = GraphEditor - > GetSelectedNodes ( ) . Array ( ) ;
if ( SelectedNodes . Num ( ) = = 1 )
{
UMaterialGraphNode * SelectedGraphNode = Cast < UMaterialGraphNode > ( SelectedNodes [ 0 ] ) ;
if ( SelectedGraphNode ! = NULL )
{
FString DocLink = SelectedGraphNode - > GetDocumentationLink ( ) ;
FString DocExcerpt = SelectedGraphNode - > GetDocumentationExcerptName ( ) ;
DocumentationLink = FEditorClassUtils : : GetDocumentationLinkFromExcerpt ( DocLink , DocExcerpt ) ;
}
}
return DocumentationLink ;
}
void FMaterialEditor : : OnGoToDocumentation ( )
{
FString DocumentationLink = GetDocLinkForSelectedNode ( ) ;
if ( ! DocumentationLink . IsEmpty ( ) )
{
2015-01-14 13:15:22 -05:00
IDocumentation : : Get ( ) - > Open ( DocumentationLink , FDocumentationSourceInfo ( TEXT ( " rightclick_matnode " ) ) ) ;
2014-09-05 08:25:23 -04:00
}
}
bool FMaterialEditor : : CanGoToDocumentation ( )
{
FString DocumentationLink = GetDocLinkForSelectedNode ( ) ;
return ! DocumentationLink . IsEmpty ( ) ;
}
2014-03-14 14:13:41 -04:00
void FMaterialEditor : : RenameAssetFromRegistry ( const FAssetData & InAddedAssetData , const FString & InNewName )
{
// Grab the asset class, it will be checked for being a material function.
UClass * Asset = FindObject < UClass > ( ANY_PACKAGE , * InAddedAssetData . AssetClass . ToString ( ) ) ;
if ( Asset - > IsChildOf ( UMaterialFunction : : StaticClass ( ) ) )
{
2014-04-23 18:21:07 -04:00
ForceRefreshExpressionPreviews ( ) ;
2014-03-14 14:13:41 -04:00
}
2014-04-23 18:21:07 -04:00
}
2014-03-14 14:13:41 -04:00
void FMaterialEditor : : OnMaterialUsageFlagsChanged ( UMaterial * MaterialThatChanged , int32 FlagThatChanged )
{
EMaterialUsage Flag = static_cast < EMaterialUsage > ( FlagThatChanged ) ;
if ( MaterialThatChanged = = OriginalMaterial )
{
bool bNeedsRecompile = false ;
Material - > SetMaterialUsage ( bNeedsRecompile , Flag , MaterialThatChanged - > GetUsageByFlag ( Flag ) ) ;
2014-04-23 20:20:58 -04:00
UpdateStatsMaterials ( ) ;
2014-03-14 14:13:41 -04:00
}
}
2014-10-23 21:38:06 -04:00
void FMaterialEditor : : SetVectorParameterDefaultOnDependentMaterials ( FName ParameterName , const FLinearColor & Value , bool bOverride )
{
TArray < UMaterial * > MaterialsToOverride ;
if ( MaterialFunction )
{
// Find all materials that reference this function
for ( TObjectIterator < UMaterial > It ; It ; + + It )
{
UMaterial * CurrentMaterial = * It ;
if ( CurrentMaterial ! = Material )
{
bool bUpdate = false ;
for ( int32 FunctionIndex = 0 ; FunctionIndex < CurrentMaterial - > MaterialFunctionInfos . Num ( ) ; FunctionIndex + + )
{
if ( CurrentMaterial - > MaterialFunctionInfos [ FunctionIndex ] . Function = = MaterialFunction - > ParentFunction )
{
bUpdate = true ;
break ;
}
}
if ( bUpdate )
{
MaterialsToOverride . Add ( CurrentMaterial ) ;
}
}
}
}
else
{
MaterialsToOverride . Add ( OriginalMaterial ) ;
}
const ERHIFeatureLevel : : Type FeatureLevel = GEditor - > GetEditorWorldContext ( ) . World ( ) - > FeatureLevel ;
for ( int32 MaterialIndex = 0 ; MaterialIndex < MaterialsToOverride . Num ( ) ; MaterialIndex + + )
{
UMaterial * CurrentMaterial = MaterialsToOverride [ MaterialIndex ] ;
CurrentMaterial - > OverrideVectorParameterDefault ( ParameterName , Value , bOverride , FeatureLevel ) ;
}
// Update MI's that reference any of the materials affected
for ( TObjectIterator < UMaterialInstance > It ; It ; + + It )
{
UMaterialInstance * CurrentMaterialInstance = * It ;
// Only care about MI's with static parameters, because we are overriding parameter defaults,
// And only MI's with static parameters contain uniform expressions, which contain parameter defaults
if ( CurrentMaterialInstance - > bHasStaticPermutationResource )
{
UMaterial * BaseMaterial = CurrentMaterialInstance - > GetMaterial ( ) ;
if ( MaterialsToOverride . Contains ( BaseMaterial ) )
{
CurrentMaterialInstance - > OverrideVectorParameterDefault ( ParameterName , Value , bOverride , FeatureLevel ) ;
}
}
}
}
void FMaterialEditor : : OnVectorParameterDefaultChanged ( class UMaterialExpression * Expression , FName ParameterName , const FLinearColor & Value )
{
check ( Expression ) ;
if ( Expression - > Material = = Material & & OriginalMaterial )
{
SetVectorParameterDefaultOnDependentMaterials ( ParameterName , Value , true ) ;
OverriddenVectorParametersToRevert . AddUnique ( ParameterName ) ;
}
}
void FMaterialEditor : : SetScalarParameterDefaultOnDependentMaterials ( FName ParameterName , float Value , bool bOverride )
{
TArray < UMaterial * > MaterialsToOverride ;
if ( MaterialFunction )
{
// Find all materials that reference this function
for ( TObjectIterator < UMaterial > It ; It ; + + It )
{
UMaterial * CurrentMaterial = * It ;
if ( CurrentMaterial ! = Material )
{
bool bUpdate = false ;
for ( int32 FunctionIndex = 0 ; FunctionIndex < CurrentMaterial - > MaterialFunctionInfos . Num ( ) ; FunctionIndex + + )
{
if ( CurrentMaterial - > MaterialFunctionInfos [ FunctionIndex ] . Function = = MaterialFunction - > ParentFunction )
{
bUpdate = true ;
break ;
}
}
if ( bUpdate )
{
MaterialsToOverride . Add ( CurrentMaterial ) ;
}
}
}
}
else
{
MaterialsToOverride . Add ( OriginalMaterial ) ;
}
const ERHIFeatureLevel : : Type FeatureLevel = GEditor - > GetEditorWorldContext ( ) . World ( ) - > FeatureLevel ;
for ( int32 MaterialIndex = 0 ; MaterialIndex < MaterialsToOverride . Num ( ) ; MaterialIndex + + )
{
UMaterial * CurrentMaterial = MaterialsToOverride [ MaterialIndex ] ;
CurrentMaterial - > OverrideScalarParameterDefault ( ParameterName , Value , bOverride , FeatureLevel ) ;
}
// Update MI's that reference any of the materials affected
for ( TObjectIterator < UMaterialInstance > It ; It ; + + It )
{
UMaterialInstance * CurrentMaterialInstance = * It ;
// Only care about MI's with static parameters, because we are overriding parameter defaults,
// And only MI's with static parameters contain uniform expressions, which contain parameter defaults
if ( CurrentMaterialInstance - > bHasStaticPermutationResource )
{
UMaterial * BaseMaterial = CurrentMaterialInstance - > GetMaterial ( ) ;
if ( MaterialsToOverride . Contains ( BaseMaterial ) )
{
CurrentMaterialInstance - > OverrideScalarParameterDefault ( ParameterName , Value , bOverride , FeatureLevel ) ;
}
}
}
}
void FMaterialEditor : : OnScalarParameterDefaultChanged ( class UMaterialExpression * Expression , FName ParameterName , float Value )
{
check ( Expression ) ;
if ( Expression - > Material = = Material & & OriginalMaterial )
{
SetScalarParameterDefaultOnDependentMaterials ( ParameterName , Value , true ) ;
OverriddenScalarParametersToRevert . AddUnique ( ParameterName ) ;
}
}
2014-03-14 14:13:41 -04:00
TSharedRef < SDockTab > FMaterialEditor : : SpawnTab_Preview ( const FSpawnTabArgs & Args )
{
TSharedRef < SDockTab > SpawnedTab =
SNew ( SDockTab )
. Label ( LOCTEXT ( " ViewportTabTitle " , " Viewport " ) )
[
2015-06-22 15:55:50 -04:00
SNew ( SOverlay )
+ SOverlay : : Slot ( )
[
PreviewViewport . ToSharedRef ( )
]
+ SOverlay : : Slot ( )
[
PreviewUIViewport . ToSharedRef ( )
]
2014-03-14 14:13:41 -04:00
] ;
2015-06-22 15:55:50 -04:00
PreviewViewport - > OnAddedToTab ( SpawnedTab ) ;
2014-03-14 14:13:41 -04:00
return SpawnedTab ;
}
TSharedRef < SDockTab > FMaterialEditor : : SpawnTab_GraphCanvas ( const FSpawnTabArgs & Args )
{
TSharedRef < SDockTab > SpawnedTab = SNew ( SDockTab )
. Label ( LOCTEXT ( " GraphCanvasTitle " , " Graph " ) ) ;
2014-04-02 18:09:23 -04:00
if ( GraphEditor . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
SpawnedTab - > SetContent ( GraphEditor . ToSharedRef ( ) ) ;
}
return SpawnedTab ;
}
TSharedRef < SDockTab > FMaterialEditor : : SpawnTab_MaterialProperties ( const FSpawnTabArgs & Args )
{
TSharedRef < SDockTab > SpawnedTab = SNew ( SDockTab )
. Icon ( FEditorStyle : : GetBrush ( " LevelEditor.Tabs.Details " ) )
. Label ( LOCTEXT ( " MaterialDetailsTitle " , " Details " ) )
[
MaterialDetailsView . ToSharedRef ( )
] ;
2014-04-02 18:09:23 -04:00
if ( GraphEditor . IsValid ( ) )
2014-03-14 14:13:41 -04:00
{
// Since we're initialising, make sure nothing is selected
GraphEditor - > ClearSelectionSet ( ) ;
}
return SpawnedTab ;
}
TSharedRef < SDockTab > FMaterialEditor : : SpawnTab_HLSLCode ( const FSpawnTabArgs & Args )
{
TSharedRef < SDockTab > SpawnedTab = SNew ( SDockTab )
. Label ( LOCTEXT ( " HLSLCodeTitle " , " HLSL Code " ) )
[
SNew ( SVerticalBox )
+ SVerticalBox : : Slot ( )
. AutoHeight ( )
[
CodeViewUtility . ToSharedRef ( )
]
+ SVerticalBox : : Slot ( )
. FillHeight ( 1 )
[
CodeView . ToSharedRef ( )
]
] ;
2014-10-23 21:38:06 -04:00
CodeTab = SpawnedTab ;
2014-03-14 14:13:41 -04:00
RegenerateCodeView ( ) ;
return SpawnedTab ;
}
TSharedRef < SDockTab > FMaterialEditor : : SpawnTab_Palette ( const FSpawnTabArgs & Args )
{
check ( Args . GetTabId ( ) = = PaletteTabId ) ;
TSharedRef < SDockTab > SpawnedTab = SNew ( SDockTab )
. Icon ( FEditorStyle : : GetBrush ( " Kismet.Tabs.Palette " ) )
. Label ( LOCTEXT ( " MaterialPaletteTitle " , " Palette " ) )
[
2014-08-05 09:04:35 -04:00
SNew ( SBox )
2014-09-05 07:39:52 -04:00
. AddMetaData < FTagMetaData > ( FTagMetaData ( TEXT ( " MaterialPalette " ) ) )
2014-03-14 14:13:41 -04:00
[
Palette . ToSharedRef ( )
]
] ;
return SpawnedTab ;
}
TSharedRef < SDockTab > FMaterialEditor : : SpawnTab_Stats ( const FSpawnTabArgs & Args )
{
check ( Args . GetTabId ( ) = = StatsTabId ) ;
TSharedRef < SDockTab > SpawnedTab = SNew ( SDockTab )
. Icon ( FEditorStyle : : GetBrush ( " Kismet.Tabs.CompilerResults " ) )
. Label ( LOCTEXT ( " MaterialStatsTitle " , " Stats " ) )
[
2014-08-05 09:04:35 -04:00
SNew ( SBox )
2014-09-05 07:39:52 -04:00
. AddMetaData < FTagMetaData > ( FTagMetaData ( TEXT ( " MaterialStats " ) ) )
2014-03-14 14:13:41 -04:00
[
Stats . ToSharedRef ( )
]
] ;
return SpawnedTab ;
}
2014-04-23 18:21:07 -04:00
TSharedRef < SDockTab > FMaterialEditor : : SpawnTab_Find ( const FSpawnTabArgs & Args )
2014-03-14 14:13:41 -04:00
{
2014-04-23 18:21:07 -04:00
check ( Args . GetTabId ( ) = = FindTabId ) ;
TSharedRef < SDockTab > SpawnedTab = SNew ( SDockTab )
. Icon ( FEditorStyle : : GetBrush ( " Kismet.Tabs.FindResults " ) )
. Label ( LOCTEXT ( " MaterialFindTitle " , " Find Results " ) )
[
2014-08-05 09:04:35 -04:00
SNew ( SBox )
2014-09-05 07:39:52 -04:00
. AddMetaData < FTagMetaData > ( FTagMetaData ( TEXT ( " MaterialFind " ) ) )
2014-04-23 18:21:07 -04:00
[
FindResults . ToSharedRef ( )
]
] ;
return SpawnedTab ;
2014-03-14 14:13:41 -04:00
}
void FMaterialEditor : : SetPreviewExpression ( UMaterialExpression * NewPreviewExpression )
{
UMaterialExpressionFunctionOutput * FunctionOutput = Cast < UMaterialExpressionFunctionOutput > ( NewPreviewExpression ) ;
2014-06-30 10:45:18 -04:00
if ( ! NewPreviewExpression | | PreviewExpression = = NewPreviewExpression )
2014-03-14 14:13:41 -04:00
{
if ( FunctionOutput )
{
FunctionOutput - > bLastPreviewed = false ;
}
// If we are already previewing the selected expression toggle previewing off
PreviewExpression = NULL ;
ExpressionPreviewMaterial - > Expressions . Empty ( ) ;
SetPreviewMaterial ( Material ) ;
// Recompile the preview material to get changes that might have been made during previewing
UpdatePreviewMaterial ( ) ;
}
else if ( NewPreviewExpression )
{
if ( ExpressionPreviewMaterial = = NULL )
{
// Create the expression preview material if it hasnt already been created
2016-02-01 14:57:29 -05:00
ExpressionPreviewMaterial = NewObject < UPreviewMaterial > ( GetTransientPackage ( ) , NAME_None , RF_Public ) ;
2014-03-14 14:13:41 -04:00
ExpressionPreviewMaterial - > bIsPreviewMaterial = true ;
2016-02-01 14:57:29 -05:00
if ( Material - > IsUIMaterial ( ) )
{
ExpressionPreviewMaterial - > MaterialDomain = MD_UI ;
}
2014-03-14 14:13:41 -04:00
}
if ( FunctionOutput )
{
FunctionOutput - > bLastPreviewed = true ;
}
else
{
//Hooking up the output of the break expression doesn't make much sense, preview the expression feeding it instead.
UMaterialExpressionBreakMaterialAttributes * BreakExpr = Cast < UMaterialExpressionBreakMaterialAttributes > ( NewPreviewExpression ) ;
if ( BreakExpr & & BreakExpr - > GetInput ( 0 ) & & BreakExpr - > GetInput ( 0 ) - > Expression )
{
NewPreviewExpression = BreakExpr - > GetInput ( 0 ) - > Expression ;
}
}
// The expression preview material's expressions array must stay up to date before recompiling
// So that RebuildMaterialFunctionInfo will see all the nested material functions that may need to be updated
ExpressionPreviewMaterial - > Expressions = Material - > Expressions ;
// The preview window should now show the expression preview material
SetPreviewMaterial ( ExpressionPreviewMaterial ) ;
// Set the preview expression
PreviewExpression = NewPreviewExpression ;
// Recompile the preview material
UpdatePreviewMaterial ( ) ;
}
}
2014-04-23 18:21:07 -04:00
void FMaterialEditor : : JumpToNode ( const UEdGraphNode * Node )
{
GraphEditor - > JumpToNode ( Node , false ) ;
}
2014-03-14 14:13:41 -04:00
UMaterialExpression * FMaterialEditor : : CreateNewMaterialExpression ( UClass * NewExpressionClass , const FVector2D & NodePos , bool bAutoSelect , bool bAutoAssignResource )
{
check ( NewExpressionClass - > IsChildOf ( UMaterialExpression : : StaticClass ( ) ) ) ;
if ( ! IsAllowedExpressionType ( NewExpressionClass , MaterialFunction ! = NULL ) )
{
// Disallowed types should not be visible to the ui to be placed, so we don't need a warning here
return NULL ;
}
// Clear the selection
if ( bAutoSelect )
{
GraphEditor - > ClearSelectionSet ( ) ;
}
// Create the new expression.
UMaterialExpression * NewExpression = NULL ;
{
const FScopedTransaction Transaction ( NSLOCTEXT ( " UnrealEd " , " MaterialEditorNewExpression " , " Material Editor: New Expression " ) ) ;
Material - > Modify ( ) ;
UObject * ExpressionOuter = Material ;
if ( MaterialFunction )
{
ExpressionOuter = MaterialFunction ;
}
2015-02-03 05:40:57 -05:00
NewExpression = NewObject < UMaterialExpression > ( ExpressionOuter , NewExpressionClass , NAME_None , RF_Transactional ) ;
2014-03-14 14:13:41 -04:00
Material - > Expressions . Add ( NewExpression ) ;
NewExpression - > Material = Material ;
// Set the expression location.
2014-06-05 12:14:10 -04:00
NewExpression - > MaterialExpressionEditorX = NodePos . X ;
NewExpression - > MaterialExpressionEditorY = NodePos . Y ;
2014-03-14 14:13:41 -04:00
2014-09-11 08:13:08 -04:00
// Create a GUID for the node
NewExpression - > UpdateMaterialExpressionGuid ( true , true ) ;
2014-03-14 14:13:41 -04:00
if ( bAutoAssignResource )
{
// If the user is adding a texture, automatically assign the currently selected texture to it.
UMaterialExpressionTextureBase * METextureBase = Cast < UMaterialExpressionTextureBase > ( NewExpression ) ;
if ( METextureBase )
{
FEditorDelegates : : LoadSelectedAssetsIfNeeded . Broadcast ( ) ;
2014-07-02 07:30:47 -04:00
if ( UTexture * SelectedTexture = GEditor - > GetSelectedObjects ( ) - > GetTop < UTexture > ( ) )
{
METextureBase - > Texture = SelectedTexture ;
}
2014-03-14 14:13:41 -04:00
METextureBase - > AutoSetSampleType ( ) ;
}
UMaterialExpressionMaterialFunctionCall * MEMaterialFunction = Cast < UMaterialExpressionMaterialFunctionCall > ( NewExpression ) ;
if ( MEMaterialFunction )
{
FEditorDelegates : : LoadSelectedAssetsIfNeeded . Broadcast ( ) ;
MEMaterialFunction - > SetMaterialFunction ( MaterialFunction , NULL , GEditor - > GetSelectedObjects ( ) - > GetTop < UMaterialFunction > ( ) ) ;
}
UMaterialExpressionCollectionParameter * MECollectionParameter = Cast < UMaterialExpressionCollectionParameter > ( NewExpression ) ;
if ( MECollectionParameter )
{
FEditorDelegates : : LoadSelectedAssetsIfNeeded . Broadcast ( ) ;
MECollectionParameter - > Collection = GEditor - > GetSelectedObjects ( ) - > GetTop < UMaterialParameterCollection > ( ) ;
}
}
UMaterialExpressionFunctionInput * FunctionInput = Cast < UMaterialExpressionFunctionInput > ( NewExpression ) ;
if ( FunctionInput )
{
FunctionInput - > ConditionallyGenerateId ( true ) ;
FunctionInput - > ValidateName ( ) ;
}
UMaterialExpressionFunctionOutput * FunctionOutput = Cast < UMaterialExpressionFunctionOutput > ( NewExpression ) ;
if ( FunctionOutput )
{
FunctionOutput - > ConditionallyGenerateId ( true ) ;
FunctionOutput - > ValidateName ( ) ;
}
NewExpression - > UpdateParameterGuid ( true , true ) ;
UMaterialExpressionTextureSampleParameter * TextureParameterExpression = Cast < UMaterialExpressionTextureSampleParameter > ( NewExpression ) ;
2014-07-02 07:30:47 -04:00
if ( ( TextureParameterExpression ! = nullptr ) & & TextureParameterExpression - > CanRenameNode ( ) )
2014-03-14 14:13:41 -04:00
{
// Change the parameter's name on creation to mirror the object's name; this avoids issues of having colliding parameter
// names and having the name left as "None"
TextureParameterExpression - > ParameterName = TextureParameterExpression - > GetFName ( ) ;
}
UMaterialExpressionComponentMask * ComponentMaskExpression = Cast < UMaterialExpressionComponentMask > ( NewExpression ) ;
// Setup defaults for the most likely use case
// Can't change default properties as that will affect existing content
if ( ComponentMaskExpression )
{
ComponentMaskExpression - > R = true ;
ComponentMaskExpression - > G = true ;
}
UMaterialExpressionStaticComponentMaskParameter * StaticComponentMaskExpression = Cast < UMaterialExpressionStaticComponentMaskParameter > ( NewExpression ) ;
// Setup defaults for the most likely use case
// Can't change default properties as that will affect existing content
if ( StaticComponentMaskExpression )
{
StaticComponentMaskExpression - > DefaultR = true ;
}
// Setup defaults for the most likely use case
// Can't change default properties as that will affect existing content
UMaterialExpressionTransformPosition * PositionTransform = Cast < UMaterialExpressionTransformPosition > ( NewExpression ) ;
if ( PositionTransform )
{
PositionTransform - > TransformSourceType = TRANSFORMPOSSOURCE_Local ;
PositionTransform - > TransformType = TRANSFORMPOSSOURCE_World ;
}
2014-07-21 04:33:11 -04:00
// Make sure the dynamic parameters are named based on existing ones
UMaterialExpressionDynamicParameter * DynamicExpression = Cast < UMaterialExpressionDynamicParameter > ( NewExpression ) ;
if ( DynamicExpression )
{
2015-06-30 05:54:23 -04:00
DynamicExpression - > UpdateDynamicParameterProperties ( ) ;
2014-07-21 04:33:11 -04:00
}
2014-10-23 21:38:06 -04:00
Material - > AddExpressionParameter ( NewExpression , Material - > EditorParameters ) ;
2014-03-14 14:13:41 -04:00
if ( NewExpression )
{
Material - > MaterialGraph - > AddExpression ( NewExpression ) ;
// Select the new node.
if ( bAutoSelect )
{
GraphEditor - > SetNodeSelection ( NewExpression - > GraphNode , true ) ;
}
}
}
RegenerateCodeView ( ) ;
// Update the current preview material.
UpdatePreviewMaterial ( ) ;
Material - > MarkPackageDirty ( ) ;
RefreshExpressionPreviews ( ) ;
GraphEditor - > NotifyGraphChanged ( ) ;
SetMaterialDirty ( ) ;
return NewExpression ;
}
UMaterialExpressionComment * FMaterialEditor : : CreateNewMaterialExpressionComment ( const FVector2D & NodePos )
{
UMaterialExpressionComment * NewComment = NULL ;
{
Material - > Modify ( ) ;
UObject * ExpressionOuter = Material ;
if ( MaterialFunction )
{
ExpressionOuter = MaterialFunction ;
}
2015-02-03 05:40:57 -05:00
NewComment = NewObject < UMaterialExpressionComment > ( ExpressionOuter , NAME_None , RF_Transactional ) ;
2014-03-14 14:13:41 -04:00
// Add to the list of comments associated with this material.
Material - > EditorComments . Add ( NewComment ) ;
FSlateRect Bounds ;
if ( GraphEditor - > GetBoundsForSelectedNodes ( Bounds , 50.0f ) )
{
NewComment - > MaterialExpressionEditorX = Bounds . Left ;
NewComment - > MaterialExpressionEditorY = Bounds . Top ;
FVector2D Size = Bounds . GetSize ( ) ;
NewComment - > SizeX = Size . X ;
NewComment - > SizeY = Size . Y ;
}
else
{
NewComment - > MaterialExpressionEditorX = NodePos . X ;
NewComment - > MaterialExpressionEditorY = NodePos . Y ;
NewComment - > SizeX = 400 ;
NewComment - > SizeY = 100 ;
}
NewComment - > Text = NSLOCTEXT ( " K2Node " , " CommentBlock_NewEmptyComment " , " Comment " ) . ToString ( ) ;
}
if ( NewComment )
{
2015-09-17 05:28:56 -04:00
Material - > MaterialGraph - > AddComment ( NewComment , true ) ;
2014-03-14 14:13:41 -04:00
// Select the new comment.
GraphEditor - > ClearSelectionSet ( ) ;
GraphEditor - > SetNodeSelection ( NewComment - > GraphNode , true ) ;
}
Material - > MarkPackageDirty ( ) ;
GraphEditor - > NotifyGraphChanged ( ) ;
SetMaterialDirty ( ) ;
return NewComment ;
}
void FMaterialEditor : : ForceRefreshExpressionPreviews ( )
{
// Initialize expression previews.
const bool bOldAlwaysRefreshAllPreviews = bAlwaysRefreshAllPreviews ;
bAlwaysRefreshAllPreviews = true ;
RefreshExpressionPreviews ( ) ;
bAlwaysRefreshAllPreviews = bOldAlwaysRefreshAllPreviews ;
}
void FMaterialEditor : : AddToSelection ( UMaterialExpression * Expression )
{
GraphEditor - > SetNodeSelection ( Expression - > GraphNode , true ) ;
}
void FMaterialEditor : : SelectAllNodes ( )
{
GraphEditor - > SelectAllNodes ( ) ;
}
bool FMaterialEditor : : CanSelectAllNodes ( ) const
{
return GraphEditor . IsValid ( ) ;
}
void FMaterialEditor : : DeleteSelectedNodes ( )
{
TArray < UEdGraphNode * > NodesToDelete ;
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
NodesToDelete . Add ( CastChecked < UEdGraphNode > ( * NodeIt ) ) ;
}
DeleteNodes ( NodesToDelete ) ;
}
void FMaterialEditor : : DeleteNodes ( const TArray < UEdGraphNode * > & NodesToDelete )
{
if ( NodesToDelete . Num ( ) > 0 )
{
if ( ! CheckExpressionRemovalWarnings ( NodesToDelete ) )
{
return ;
}
// If we are previewing an expression and the expression being previewed was deleted
bool bHaveExpressionsToDelete = false ;
bool bPreviewExpressionDeleted = false ;
{
const FScopedTransaction Transaction ( NSLOCTEXT ( " UnrealEd " , " MaterialEditorDelete " , " Material Editor: Delete " ) ) ;
Material - > Modify ( ) ;
for ( int32 Index = 0 ; Index < NodesToDelete . Num ( ) ; + + Index )
{
if ( NodesToDelete [ Index ] - > CanUserDeleteNode ( ) )
{
// Break all node links first so that we don't update the material before deleting
NodesToDelete [ Index ] - > BreakAllNodeLinks ( ) ;
FBlueprintEditorUtils : : RemoveNode ( NULL , NodesToDelete [ Index ] , true ) ;
if ( UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( NodesToDelete [ Index ] ) )
{
UMaterialExpression * MaterialExpression = GraphNode - > MaterialExpression ;
bHaveExpressionsToDelete = true ;
DestroyColorPicker ( ) ;
if ( PreviewExpression = = MaterialExpression )
{
// The expression being previewed is also being deleted
bPreviewExpressionDeleted = true ;
}
MaterialExpression - > Modify ( ) ;
Material - > Expressions . Remove ( MaterialExpression ) ;
Material - > RemoveExpressionParameter ( MaterialExpression ) ;
// Make sure the deleted expression is caught by gc
MaterialExpression - > MarkPendingKill ( ) ;
}
else if ( UMaterialGraphNode_Comment * CommentNode = Cast < UMaterialGraphNode_Comment > ( NodesToDelete [ Index ] ) )
{
CommentNode - > MaterialExpressionComment - > Modify ( ) ;
Material - > EditorComments . Remove ( CommentNode - > MaterialExpressionComment ) ;
}
}
}
Material - > MaterialGraph - > LinkMaterialExpressionsFromGraph ( ) ;
} // ScopedTransaction
// Deselect all expressions and comments.
GraphEditor - > ClearSelectionSet ( ) ;
GraphEditor - > NotifyGraphChanged ( ) ;
if ( bHaveExpressionsToDelete )
{
if ( bPreviewExpressionDeleted )
{
// The preview expression was deleted. Null out our reference to it and reset to the normal preview material
PreviewExpression = NULL ;
SetPreviewMaterial ( Material ) ;
}
RegenerateCodeView ( ) ;
}
UpdatePreviewMaterial ( ) ;
Material - > MarkPackageDirty ( ) ;
SetMaterialDirty ( ) ;
if ( bHaveExpressionsToDelete )
{
RefreshExpressionPreviews ( ) ;
}
}
}
bool FMaterialEditor : : CanDeleteNodes ( ) const
{
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
if ( SelectedNodes . Num ( ) = = 1 )
{
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
if ( Cast < UMaterialGraphNode_Root > ( * NodeIt ) )
{
// Return false if only root node is selected, as it can't be deleted
return false ;
}
}
}
return SelectedNodes . Num ( ) > 0 ;
}
void FMaterialEditor : : DeleteSelectedDuplicatableNodes ( )
{
// Cache off the old selection
const FGraphPanelSelectionSet OldSelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
// Clear the selection and only select the nodes that can be duplicated
FGraphPanelSelectionSet RemainingNodes ;
GraphEditor - > ClearSelectionSet ( ) ;
for ( FGraphPanelSelectionSet : : TConstIterator SelectedIter ( OldSelectedNodes ) ; SelectedIter ; + + SelectedIter )
{
UEdGraphNode * Node = Cast < UEdGraphNode > ( * SelectedIter ) ;
if ( ( Node ! = NULL ) & & Node - > CanDuplicateNode ( ) )
{
GraphEditor - > SetNodeSelection ( Node , true ) ;
}
else
{
RemainingNodes . Add ( Node ) ;
}
}
// Delete the duplicatable nodes
DeleteSelectedNodes ( ) ;
// Reselect whatever's left from the original selection after the deletion
GraphEditor - > ClearSelectionSet ( ) ;
for ( FGraphPanelSelectionSet : : TConstIterator SelectedIter ( RemainingNodes ) ; SelectedIter ; + + SelectedIter )
{
if ( UEdGraphNode * Node = Cast < UEdGraphNode > ( * SelectedIter ) )
{
GraphEditor - > SetNodeSelection ( Node , true ) ;
}
}
}
void FMaterialEditor : : CopySelectedNodes ( )
{
// Export the selected nodes and place the text on the clipboard
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
FString ExportedText ;
for ( FGraphPanelSelectionSet : : TConstIterator SelectedIter ( SelectedNodes ) ; SelectedIter ; + + SelectedIter )
{
if ( UEdGraphNode * Node = Cast < UEdGraphNode > ( * SelectedIter ) )
{
Node - > PrepareForCopying ( ) ;
}
}
FEdGraphUtilities : : ExportNodesToText ( SelectedNodes , /*out*/ ExportedText ) ;
FPlatformMisc : : ClipboardCopy ( * ExportedText ) ;
// Make sure Material remains the owner of the copied nodes
for ( FGraphPanelSelectionSet : : TConstIterator SelectedIter ( SelectedNodes ) ; SelectedIter ; + + SelectedIter )
{
if ( UMaterialGraphNode * Node = Cast < UMaterialGraphNode > ( * SelectedIter ) )
{
Node - > PostCopyNode ( ) ;
}
else if ( UMaterialGraphNode_Comment * Comment = Cast < UMaterialGraphNode_Comment > ( * SelectedIter ) )
{
Comment - > PostCopyNode ( ) ;
}
}
}
bool FMaterialEditor : : CanCopyNodes ( ) const
{
// If any of the nodes can be duplicated then we should allow copying
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
for ( FGraphPanelSelectionSet : : TConstIterator SelectedIter ( SelectedNodes ) ; SelectedIter ; + + SelectedIter )
{
UEdGraphNode * Node = Cast < UEdGraphNode > ( * SelectedIter ) ;
if ( ( Node ! = NULL ) & & Node - > CanDuplicateNode ( ) )
{
return true ;
}
}
return false ;
}
void FMaterialEditor : : PasteNodes ( )
{
PasteNodesHere ( GraphEditor - > GetPasteLocation ( ) ) ;
}
void FMaterialEditor : : PasteNodesHere ( const FVector2D & Location )
{
// Undo/Redo support
const FScopedTransaction Transaction ( NSLOCTEXT ( " UnrealEd " , " MaterialEditorPaste " , " Material Editor: Paste " ) ) ;
Material - > MaterialGraph - > Modify ( ) ;
Material - > Modify ( ) ;
// Clear the selection set (newly pasted stuff will be selected)
GraphEditor - > ClearSelectionSet ( ) ;
// Grab the text to paste from the clipboard.
FString TextToImport ;
FPlatformMisc : : ClipboardPaste ( TextToImport ) ;
// Import the nodes
TSet < UEdGraphNode * > PastedNodes ;
FEdGraphUtilities : : ImportNodesFromText ( Material - > MaterialGraph , TextToImport , /*out*/ PastedNodes ) ;
//Average position of nodes so we can move them while still maintaining relative distances to each other
FVector2D AvgNodePosition ( 0.0f , 0.0f ) ;
for ( TSet < UEdGraphNode * > : : TIterator It ( PastedNodes ) ; It ; + + It )
{
UEdGraphNode * Node = * It ;
AvgNodePosition . X + = Node - > NodePosX ;
AvgNodePosition . Y + = Node - > NodePosY ;
}
if ( PastedNodes . Num ( ) > 0 )
{
float InvNumNodes = 1.0f / float ( PastedNodes . Num ( ) ) ;
AvgNodePosition . X * = InvNumNodes ;
AvgNodePosition . Y * = InvNumNodes ;
}
for ( TSet < UEdGraphNode * > : : TIterator It ( PastedNodes ) ; It ; + + It )
{
UEdGraphNode * Node = * It ;
if ( UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( Node ) )
{
// These are not copied and we must account for expressions pasted between different materials anyway
GraphNode - > RealtimeDelegate = Material - > MaterialGraph - > RealtimeDelegate ;
GraphNode - > MaterialDirtyDelegate = Material - > MaterialGraph - > MaterialDirtyDelegate ;
GraphNode - > bPreviewNeedsUpdate = false ;
UMaterialExpression * NewExpression = GraphNode - > MaterialExpression ;
NewExpression - > Material = Material ;
NewExpression - > Function = NULL ;
Material - > Expressions . Add ( NewExpression ) ;
// There can be only one default mesh paint texture.
UMaterialExpressionTextureBase * TextureSample = Cast < UMaterialExpressionTextureBase > ( NewExpression ) ;
if ( TextureSample )
{
TextureSample - > IsDefaultMeshpaintTexture = false ;
}
NewExpression - > UpdateParameterGuid ( true , true ) ;
2016-02-01 14:57:29 -05:00
Material - > AddExpressionParameter ( NewExpression , Material - > EditorParameters ) ;
2014-03-14 14:13:41 -04:00
UMaterialExpressionFunctionInput * FunctionInput = Cast < UMaterialExpressionFunctionInput > ( NewExpression ) ;
if ( FunctionInput )
{
FunctionInput - > ConditionallyGenerateId ( true ) ;
FunctionInput - > ValidateName ( ) ;
}
UMaterialExpressionFunctionOutput * FunctionOutput = Cast < UMaterialExpressionFunctionOutput > ( NewExpression ) ;
if ( FunctionOutput )
{
FunctionOutput - > ConditionallyGenerateId ( true ) ;
FunctionOutput - > ValidateName ( ) ;
}
2015-07-01 12:55:20 -04:00
UMaterialExpressionMaterialFunctionCall * FunctionCall = Cast < UMaterialExpressionMaterialFunctionCall > ( NewExpression ) ;
if ( FunctionCall )
{
2015-08-13 10:36:03 -04:00
// When pasting new nodes, we don't want to break all node links as this information is used by UpdateMaterialAfterGraphChange() below,
// to recreate all the connections in the pasted group.
// Just update the function input/outputs here.
const bool bRecreateAndLinkNode = false ;
FunctionCall - > UpdateFromFunctionResource ( bRecreateAndLinkNode ) ;
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 2973866)
#lockdown Nick.Penwarden
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2937390 on 2016/04/07 by Cody.Albert
#jira UE-29211
Fixed slider to properly bubble unhandled OnKeyDown events
Change 2939672 on 2016/04/11 by Richard.TalbotWatkin
Made a change to how file check out notifications work. Now the dirty package state is processed at the end of every tick, meaning that packages which are dirtied and then cleaned again are not processed. This fixes an issue where a number of child blueprints were flagged as needing checkout when a parent blueprint was compiled. This also allows multiple packages which are dirtied at the same time to be treated as one transaction.
#jira UE-29193 - "Files need check-out" prompt spams Blueprint users
Change 2939686 on 2016/04/11 by Richard.TalbotWatkin
A number of further improvements to mesh vertex color painting:
* Lower LODs are now automatically fixed up for instances which were created in a previous bugged version of the engine.
* Since lower LODs cannot currently have their vertex colors edited, their vertex colors are always derived from LOD0.
* Fixed a bug when building lower LODs so that vertices in neighboring octree nodes are considered when looking for the nearest vertex from LOD0 which corresponds.
* Fixed issue where static meshes with imported LODs would not have the lower LODs' override colors set when "Copy instance vertex colors to source mesh" was used (static meshes with generated LODs were always getting correct override colors).
#jira UE-28563 - Incorrectly displayed LOD VertexColor until paint mode is selected
Change 2939906 on 2016/04/11 by Nick.Darnell
Automation - Adding several enhancements to the automation framework and improving the UI.
* Tests in the UI now have a link to the source and line where they orginate.
* There's now a general purpose latent lambda command you can use to run arbitrary code latently.
* Added Inlined AddCommand for regular and networked commands to the base automation class, to avoid the use of the macro, which prevents breakpoints from working in lambda code.
* Front end now has better column displays offering more room to the test name
* Changed several events to the automation controller to multicast delegates so that many could hook them.
* The UI now refreshes the selection after tests finish so that the output log updates.
Change 2939908 on 2016/04/11 by Nick.Darnell
Automation - The editor import/export tests are now a complex test and actually sperate out all the tests that can be run, some trickiness was required on the filenames so that they didn't expand into more child tests in the UI. (replacing .'s with _'s)
Change 2940028 on 2016/04/11 by Nick.Darnell
Automation - Removing the search box from the toolbar. It's now inlined above the test tree. Tweaking the padding to make it look more other windows and make everything not look so squished. Recursive expansion now works on tests.
Change 2940066 on 2016/04/11 by Nick.Darnell
Automation - Moving the filter group dropdown out of the toolbar and onto the line with the search box above the treeview - additional tweaks to it.
Change 2940092 on 2016/04/11 by Jamie.Dale
PR #2248: Datatable select next row (Contributed by FineRedMist)
Change 2940093 on 2016/04/11 by Jamie.Dale
PR #2248: Datatable select next row (Contributed by FineRedMist)
Change 2940157 on 2016/04/11 by Jamie.Dale
Fixing FTextTest due to some changes made to how currency is formatted
Change 2940694 on 2016/04/12 by Richard.TalbotWatkin
Fixed issue where vertex override colors were not being propagated correctly for generated lower LODs.
#jira UE-29360 - Override Colors not propagated correctly to generated lower LODs
Change 2942379 on 2016/04/13 by Richard.TalbotWatkin
Fixed issue where entering PIE while selecting an actor in Mesh Paint mode could lead to a MeshPaintStaticMeshAdapter holding onto an invalid pointer to an old mesh component, and causing a crash upon leaving the mode. This can happen because, when loading a new streaming level, the proxy actor can be selected when starting PIE, which will subsequently be added to the tool's internal lists. This needs to be added as a GC reference so that it can be NULLed when forcibly destroyed.
#jira UE-29345 - Crash occurs exiting the editor after enabling mesh paint mode and PIEing
Change 2942947 on 2016/04/13 by Richard.TalbotWatkin
Fixed crash when pasting a material function call node from one project to another in which it is not defined.
#jira UE-27087 - Crash when pasting MaterialFunctionCall expressions into the material editor between projects
Change 2943452 on 2016/04/14 by Richard.TalbotWatkin
Updated F4 debug key binding to match what's in ShowFlags.cpp
PR #2197 (contributed by mfortin-bhvr)
Change 2943824 on 2016/04/14 by Alexis.Matte
#jira UE-29090
Make sure we cannot open the color picker when a property is edit const
Change 2943841 on 2016/04/14 by Alexis.Matte
#jira UE-28924
tooltip was add for every hierarchy import option
Change 2943927 on 2016/04/14 by Alexis.Matte
#jira UE-29423
Add Obj support for scene importer
Github PR #2272
Change 2943967 on 2016/04/14 by Richard.TalbotWatkin
Added relevant fields from FBodyInstance to the FoliageType customizations.
#jira UE-20138 - FoliageType has a FBodyInstance but only shows Collision Presets and not other FBodyInstance properties
Change 2948397 on 2016/04/19 by Andrew.Rodham
Moved FSlateIcon definition to SlateCore
It was previously declared as SLATE_API, despite its header residing inside SlateCore. Reviewed by Jamie Dale.
Change 2948805 on 2016/04/19 by Andrew.Rodham
Editor: Deprecated FName UEdGraphNode::GetPaletteIcon(FLinearColor&); in favor of FSlateIcon UEdGraphNode::GetIconAndTint(FLinearColor&); to allow for icons in external style sets to be used.
- Previously, all icons were assumed to reside within FEditorStyle, which is not the case and would create broken icons in the graph editor. All relevant code has been updated to use FSlateIcon structures instead of a simple name.
- This change required a significant overhaul to FClassIconFinder to support FSlateIcons. To keep the API clean, FSlateIconFinder now deals with FSlateIcon class icon finding operations, and FClassIconFinder for the most part just adds actor specific logic.
#jira UE-26502
Change 2950658 on 2016/04/20 by Alexis.Matte
#jira UE-24333
Skinxx workflow, we now output an error if there is mix of material with skinxx and some with no skinxx suffix
Change 2950663 on 2016/04/20 by Alexis.Matte
#jira UE-29582
When exporting to fbx we have to export each material instance as one fbx material
Change 2951240 on 2016/04/21 by Alexis.Matte
#jira UE-28473
Make sure light are render properly after importing a fbx scene
Change 2951421 on 2016/04/21 by Alexis.Matte
#jira UE-29773
fbx skeletalmesh import now support mesh hierarchy
Change 2955873 on 2016/04/26 by Richard.TalbotWatkin
PR #2225: Fix working package directory from the launch profiles (Contributed by projectgheist)
Change 2955965 on 2016/04/26 by Nick.Darnell
Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor)
Change 2956717 on 2016/04/26 by Andrew.Rodham
Editor: World Outliner now correctly calls ProcessEditDelete on editor modes that have asked to process delete operations
#jira UE-26968
Change 2956822 on 2016/04/26 by Andrew.Rodham
Editor: Fixed actors not being removed from the scene outliner when they are added and removed on the same frame
#jira UE-7777
Change 2956931 on 2016/04/26 by Nick.Darnell
New Module - UATHelper - Moving the UAT launching code from the MainFrame module into a reusable module other modules can trigger.
Change 2956932 on 2016/04/26 by Nick.Darnell
Plugins - Now allowing you to package a plugin from the plugin browsing view. Still work in progress.
Change 2957164 on 2016/04/26 by Nick.Darnell
Hot Reload - Fixing hot reload, it no longer creates a temporary copy of the module manager. Making the copy constructor private on the module manager to prevent this in the future.
Change 2957165 on 2016/04/26 by Nick.Darnell
Fixing the Editor Mode plugin sample, it no longer provides a bad starting example for where to create your widgets.
#jira UE-28456
Change 2957510 on 2016/04/27 by Nick.Darnell
PR #2198: Git Plugin implement the Sync operation to update local files using the git pull --rebase command (Contributed by SRombauts)
#jira UE-28763
Change 2957511 on 2016/04/27 by Andrew.Rodham
Editor: Make favorites button on details panel non-focusable
- This was preventing users being able to tab between value fields on the details panel
Change 2957610 on 2016/04/27 by Nick.Darnell
PR #1836: Git plugin: make initial commit when initializing new project (Contributed by SRombauts)
#jira UE-24190
Change 2957667 on 2016/04/27 by Jamie.Dale
Fixed crash that could happen in FTextLayout::GetLineViewIndexForTextLocation if passed a bad location
#jira OR-18634
Change 2958035 on 2016/04/27 by Nick.Darnell
Fixing the DesignerRebuild flag detection so that we can just refresh the slate widget without recreating the preview UObject, which causes the destruction of the details panel, and the slate widget recreation was the only part that was required.
Change 2958272 on 2016/04/27 by Jamie.Dale
Added FAssetData::GetTagValue to handle getting asset tag values in a type-correct way
This allows type-conversion using LexicalConversion, and also has specializations for FString, FText, and FName.
#jira UE-12096
Change 2958348 on 2016/04/27 by Jamie.Dale
PR #2282: Slate font shutdown order fix (Contributed by FineRedMist)
Change 2958352 on 2016/04/27 by Jamie.Dale
Fixed the subtitle manager updating the wrong list of subtitles
#jira UE-29511
Change 2958390 on 2016/04/27 by Jamie.Dale
Removed some old placement-new style array insertions
Change 2959360 on 2016/04/28 by Richard.TalbotWatkin
Fixed potential crash when mesh painting actors whose geometry adapters are no longer registered.
#jira UE-29615 - [CrashReport] UE4Editor_MeshPaint!FEdModeMeshPaint::DoPaint() [meshpaintedmode.cpp:1127]
Change 2959724 on 2016/04/28 by Cody.Albert
Merging hardware survey gating logic from 4.10
#jira UE-28666
Change 2959807 on 2016/04/28 by Cody.Albert
Removed deprecated function call
#jira UE-28666
Change 2959894 on 2016/04/28 by Cody.Albert
Fix for scroll offset being clamped by content size, not scroll max
#jira UE-20676
Change 2960048 on 2016/04/28 by Jamie.Dale
Added FAssetData::GetTagValueRef to go along with FAssetData::GetTagValue
#jira UE-12096
Change 2960782 on 2016/04/29 by Jamie.Dale
Updating code to use the new FText aware asset registry tag functions
#jira UE-12096
Change 2960885 on 2016/04/29 by Jamie.Dale
Updating code to use the new FText aware asset registry tag functions
#jira UE-12096
Change 2961170 on 2016/04/29 by Jamie.Dale
Updating code to use the new FText aware asset registry tag functions
#jira UE-12096
Change 2961171 on 2016/04/29 by Jamie.Dale
Updating code to use the new FText aware asset registry tag functions
#jira UE-12096
Change 2961173 on 2016/04/29 by Jamie.Dale
Removed some inline duplication on the specialized template functions
#jira UE-12096
Change 2963124 on 2016/05/02 by Jamie.Dale
FExternalDragOperation can now contain both text and file data at the same time
This better mirrors what the OS level drag-and-drop operations are capable of, and some applications will actually give you both bits of data at the same time.
#jira UE-26585
Change 2963175 on 2016/05/02 by Jamie.Dale
Updated some font editor tooltips to be more descriptive
#jira UE-17429
Change 2963290 on 2016/05/02 by Jamie.Dale
The Localise UAT command can now be run with a null localisation provider
Change 2963305 on 2016/05/02 by Jamie.Dale
Fixed minor typo
Change 2963402 on 2016/05/02 by Jamie.Dale
Cleaned up all the current localization key conflicts and warnings from gathering Engine code
#jira UE-25833
Change 2963415 on 2016/05/02 by Jamie.Dale
Rephrased a message that could generate a CIS warning
#jira UE-25833
Change 2964184 on 2016/05/03 by Jamie.Dale
Fixed duplicate "Font" entry in asset picker menu
This was caused by PropertyCustomizationHelpers::GetNewAssetFactoriesForClasses using CanCreateNew rather than ShouldShowInNewMenu, as UFont has two factories, but one is supposed to be hidden from the UI.
We also now make sure the factories are sorted by display name before being shown in the UI.
#jira UE-24903
Change 2966108 on 2016/05/04 by Nick.Darnell
Engine - Rearranging the order of ELoadingPhase's enums so that they match the loading order of modules.
Change 2966113 on 2016/05/04 by Nick.Darnell
[Engine Loop Change] UEngine now defines a Start() function, that subclasses can use to start game related things after initialization of the engine. This is done so that after the Init() call on UEngine, we can then perform a module load for the ELoadingPhase::PostEngineInit phase of loading, then inform the UEngine that it's time to start the game. Therefore, UGameEngine now tells the GameInstance to Start during this phase now.
Change 2966121 on 2016/05/04 by Jamie.Dale
Config writing improvements when dealing with property values
This updates FConfigFile::ShouldExportQuotedString to make sure that a property value containing any characters that FParse::LineExtended will consume when parsing back in the config file (such as { and }, or a trailing \) cause the string to be quoted.
This also adds FConfigFile::GenerateExportedPropertyLine to generate the INI key->value lines in a consistent and correctly escaped way, and makes sure that everything that writes out lines to a config file uses it.
FConfigCacheIni::SetString and FConfigCacheIni::SetText have been updated to update the value even if it only differs by case.
UObject::SaveConfig and UObject::LoadConfig have had some code whitespace fix-up (from a bad merge).
Change 2966122 on 2016/05/04 by Jamie.Dale
Added a setting to control dialogue wave audio filenames
Change 2966481 on 2016/05/04 by Jamie.Dale
PR #2336: BUGFIX: Selection of objects in the Content browser from WorldSettings (Contributed by projectgheist)
Change 2966887 on 2016/05/04 by Jamie.Dale
PR #2336: BUGFIX: Selection of objects in the Content browser from WorldSettings (Contributed by projectgheist)
Change 2967488 on 2016/05/05 by Ben.Marsh
Changes to support packaging plugins from the editor.
* UBT now has an option to explicitly disable hot-reloading in any circumstances.
* When running with -module arguments for a monolithic target, UBT will no longer try to relink the executable in source builds (so it's possible to compile plugin libs outside of an installed engine build without having already built UE4Game).
* When packaging, a temporary host project is always generated in the output directory to avoid invalidating intermediates in the source directory.
* An empty Config\FilterPlugin.ini file is written out with instructions on how to list additional files to package if it is not already present.
Change 2967947 on 2016/05/05 by Nick.Darnell
PR #2358: Properly display Mip Level Count and Format for UTexture2DDynamic Textures (Contributed by Allegorithmic)
#jira UE-30371
Change 2968333 on 2016/05/05 by Jamie.Dale
Fixed MultiLine not working with arrays of string or text properties
- The detail customizations for FString and FText properties now read the meta-data off the correct property.
- The UDS editor now lets you set the "MultiLine" meta-data on arrays of FString and FText properties.
- Fixed changing the "MultiLine" flag on a UDS property not rebuilding the default value editor.
- Fixed the default values panel in the UDS editor having a title area.
#jira UE-30392
Change 2968999 on 2016/05/06 by Jamie.Dale
Fixed infinite loop in the editor if a directory that is being watched is deleted
#jira UE-30172
Change 2969105 on 2016/05/06 by Richard.TalbotWatkin
Fixed issue where opening a submenu while the parent menu had a text box focused would lead to a crash. The graph node comment text widget now only dismisses all menus if the text commit info implies that it was committed by some user action.
#jira UE-29086 - Crash When Typing a Node Comment and Hovering Over the Alignment Option
Change 2969440 on 2016/05/06 by Jamie.Dale
Significant performance improvements when pasting a large amount of text
#jira UE-19712
Change 2969619 on 2016/05/06 by Andrew.Rodham
Auto-reimport is now disabled inside an editor running in unattended mode
Change 2969621 on 2016/05/06 by Jamie.Dale
Added the ability to override the subtitle used on a dialogue wave
This is useful for effort sounds, plus some other cases, such as characters speaking in a foreign language not known to the player.
#jira UETOOL-795
Change 2970588 on 2016/05/09 by Chris.Wood
Fix typo in operator expression in UEndUserSettings::SetSendAnonymousUsageDataToEpic()
[UE-26958] - GitHub 2056 : Fixing typo in the operator
#2056
Change 2971151 on 2016/05/09 by Chris.Wood
Logging ensure fails as errors. Automated tests with ensure fails will be unsuccessful.
[UE-19579] - If an ensure() fails within an automated test, the test can still show a positive result.
[UE-26575] - GitHub 2030 : Add error-severity message to log on ensure.
PR #2030
Change 2971267 on 2016/05/09 by Alexis.Matte
Wrong parameter when calling GetImportOptions
#jira UE-30299
Change 2972073 on 2016/05/10 by Richard.TalbotWatkin
Fixed UModel methods which make surfaces as modified.
#jira UE-28831 - Unable to undo material placement on BSP
Change 2972329 on 2016/05/10 by Nick.Darnell
Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor)
Change 2972887 on 2016/05/10 by Alexis.Matte
#jira UE-30167
We now import the geometric transform also when we uncheck the absolute transform in the vertex.
Change 2973664 on 2016/05/11 by Nick.Darnell
Merging //UE4/Dev-Main to Dev-Editor (//UE4/Dev-Editor)
Change 2973717 on 2016/05/11 by Nick.Darnell
Fixing compiler issues from main merge.
#jira UE-30590
Change 2973846 on 2016/05/11 by Jamie.Dale
Exposed FConfigValue::ExpandValue and added FConfigValue::CollapseValue
These are both static and can be used to expand or collapse the macros used in our config files (mostly when dealing with paths), in code that has to deal with the config system, but isn't internal to the config system (mostly things that deal with default configs outside of UObjects).
The old non-static version of FConfigValue::ExpandValue is now FConfigValue::ExpandValueInternal, which just calls FConfigValue::ExpandValue on SavedValue and ExpandedValue.
This also changes some code that was using FString.Replace to use FString.ReplaceInline. This reduces allocations, and also allows us to avoid another string comparison to see whether the strings are identical (as ReplaceInline returns the number of replacements that were made).
Change 2973847 on 2016/05/11 by Jamie.Dale
Changing the loading phase in the localization dashboard now writes to the default config
#jira UE-30482
Change 2973866 on 2016/05/11 by Jamie.Dale
Deprecated some functions that were taking an unused position.
These unused parameters caused confusion and lead to UE-30276. The old versions have been deprecated, and new versions without those parameters have been added. Existing code has been updated to call the non-deprecated version.
- FViewportFrame::ResizeFrame
- FSceneViewport::ResizeFrame
- FSceneViewport::ResizeViewport
[CL 2973886 by Nick Darnell in Main branch]
2016-05-11 11:05:13 -04:00
// If an unknown material function has been pasted, remove the graph node pins (as the expression will also have had its inputs/outputs removed).
// This will be displayed as an orphaned "Unspecified Function" node.
if ( FunctionCall - > MaterialFunction = = nullptr & &
FunctionCall - > FunctionInputs . Num ( ) = = 0 & &
FunctionCall - > FunctionOutputs . Num ( ) = = 0 )
{
GraphNode - > Pins . Empty ( ) ;
}
2015-07-01 12:55:20 -04:00
}
2014-03-14 14:13:41 -04:00
}
else if ( UMaterialGraphNode_Comment * CommentNode = Cast < UMaterialGraphNode_Comment > ( Node ) )
{
CommentNode - > MaterialDirtyDelegate = Material - > MaterialGraph - > MaterialDirtyDelegate ;
CommentNode - > MaterialExpressionComment - > Material = Material ;
Material - > EditorComments . Add ( CommentNode - > MaterialExpressionComment ) ;
}
// Select the newly pasted stuff
GraphEditor - > SetNodeSelection ( Node , true ) ;
Node - > NodePosX = ( Node - > NodePosX - AvgNodePosition . X ) + Location . X ;
Node - > NodePosY = ( Node - > NodePosY - AvgNodePosition . Y ) + Location . Y ;
Node - > SnapToGrid ( SNodePanel : : GetSnapGridSize ( ) ) ;
// Give new node a different Guid from the old one
Node - > CreateNewGuid ( ) ;
}
2015-01-15 11:51:31 -05:00
UpdateMaterialAfterGraphChange ( ) ;
2014-03-14 14:13:41 -04:00
// Update UI
GraphEditor - > NotifyGraphChanged ( ) ;
}
bool FMaterialEditor : : CanPasteNodes ( ) const
{
FString ClipboardContent ;
FPlatformMisc : : ClipboardPaste ( ClipboardContent ) ;
return FEdGraphUtilities : : CanImportNodesFromText ( Material - > MaterialGraph , ClipboardContent ) ;
}
void FMaterialEditor : : CutSelectedNodes ( )
{
CopySelectedNodes ( ) ;
// Cut should only delete nodes that can be duplicated
DeleteSelectedDuplicatableNodes ( ) ;
}
bool FMaterialEditor : : CanCutNodes ( ) const
{
return CanCopyNodes ( ) & & CanDeleteNodes ( ) ;
}
void FMaterialEditor : : DuplicateNodes ( )
{
// Copy and paste current selection
CopySelectedNodes ( ) ;
PasteNodes ( ) ;
}
bool FMaterialEditor : : CanDuplicateNodes ( ) const
{
return CanCopyNodes ( ) ;
}
2014-11-25 17:51:09 -05:00
FText FMaterialEditor : : GetOriginalObjectName ( ) const
2014-03-14 14:13:41 -04:00
{
2014-11-25 17:51:09 -05:00
return FText : : FromString ( GetEditingObjects ( ) [ 0 ] - > GetName ( ) ) ;
2014-03-14 14:13:41 -04:00
}
void FMaterialEditor : : UpdateMaterialAfterGraphChange ( )
{
Material - > MaterialGraph - > LinkMaterialExpressionsFromGraph ( ) ;
// Update the current preview material.
UpdatePreviewMaterial ( ) ;
Material - > MarkPackageDirty ( ) ;
RegenerateCodeView ( ) ;
RefreshExpressionPreviews ( ) ;
SetMaterialDirty ( ) ;
}
int32 FMaterialEditor : : GetNumberOfSelectedNodes ( ) const
{
return GraphEditor - > GetSelectedNodes ( ) . Num ( ) ;
}
FMaterialRenderProxy * FMaterialEditor : : GetExpressionPreview ( UMaterialExpression * InExpression )
{
bool bNewlyCreated ;
return GetExpressionPreview ( InExpression , bNewlyCreated ) ;
}
void FMaterialEditor : : UndoGraphAction ( )
{
2014-04-23 18:21:07 -04:00
int32 NumExpressions = Material - > Expressions . Num ( ) ;
GEditor - > UndoTransaction ( ) ;
2014-04-02 18:09:23 -04:00
2014-04-23 18:21:07 -04:00
if ( NumExpressions ! = Material - > Expressions . Num ( ) )
{
Material - > BuildEditorParameterList ( ) ;
2014-04-02 18:09:23 -04:00
}
2014-04-23 18:21:07 -04:00
}
2014-04-23 18:06:41 -04:00
void FMaterialEditor : : RedoGraphAction ( )
{
2014-04-23 18:21:07 -04:00
// Clear selection, to avoid holding refs to nodes that go away
GraphEditor - > ClearSelectionSet ( ) ;
2014-04-02 18:09:23 -04:00
2014-04-23 18:21:07 -04:00
int32 NumExpressions = Material - > Expressions . Num ( ) ;
GEditor - > RedoTransaction ( ) ;
2014-04-23 18:06:41 -04:00
2014-04-23 18:21:07 -04:00
if ( NumExpressions ! = Material - > Expressions . Num ( ) )
{
Material - > BuildEditorParameterList ( ) ;
2014-04-23 18:06:41 -04:00
}
2014-04-23 18:21:07 -04:00
}
2014-04-23 18:06:41 -04:00
void FMaterialEditor : : PostUndo ( bool bSuccess )
{
2014-06-26 09:16:15 -04:00
if ( bSuccess )
{
GraphEditor - > ClearSelectionSet ( ) ;
Material - > BuildEditorParameterList ( ) ;
2014-04-23 18:06:41 -04:00
2014-06-26 09:16:15 -04:00
// Update the current preview material.
UpdatePreviewMaterial ( ) ;
2014-04-23 18:06:41 -04:00
2015-06-22 16:10:43 -04:00
UpdatePreviewViewportsVisibility ( ) ;
2014-06-26 09:16:15 -04:00
RefreshExpressionPreviews ( ) ;
GraphEditor - > NotifyGraphChanged ( ) ;
SetMaterialDirty ( ) ;
}
2014-04-23 18:21:07 -04:00
}
2014-04-23 18:06:41 -04:00
void FMaterialEditor : : NotifyPreChange ( UProperty * PropertyAboutToChange )
{
2014-04-23 18:21:07 -04:00
check ( ! ScopedTransaction ) ;
ScopedTransaction = new FScopedTransaction ( NSLOCTEXT ( " UnrealEd " , " MaterialEditorEditProperties " , " Material Editor: Edit Properties " ) ) ;
FlushRenderingCommands ( ) ;
}
2014-04-23 18:06:41 -04:00
void FMaterialEditor : : NotifyPostChange ( const FPropertyChangedEvent & PropertyChangedEvent , UProperty * PropertyThatChanged )
{
2014-04-23 18:21:07 -04:00
check ( ScopedTransaction ) ;
2014-04-23 18:06:41 -04:00
2014-04-23 18:21:07 -04:00
if ( PropertyThatChanged )
{
const FName NameOfPropertyThatChanged ( * PropertyThatChanged - > GetName ( ) ) ;
2015-02-19 00:33:19 -05:00
if ( ( NameOfPropertyThatChanged = = GET_MEMBER_NAME_CHECKED ( UMaterialInterface , PreviewMesh ) ) | |
( NameOfPropertyThatChanged = = GET_MEMBER_NAME_CHECKED ( UMaterial , bUsedWithSkeletalMesh ) ) )
2014-04-23 18:06:41 -04:00
{
2014-04-23 18:21:07 -04:00
// SetPreviewMesh will return false if the material has bUsedWithSkeletalMesh and
// a skeleton was requested, in which case revert to a sphere static mesh.
2015-02-19 00:33:19 -05:00
if ( ! SetPreviewAssetByName ( * Material - > PreviewMesh . ToString ( ) ) )
2014-04-23 18:06:41 -04:00
{
2015-02-19 00:33:19 -05:00
SetPreviewAsset ( GUnrealEd - > GetThumbnailManager ( ) - > EditorSphere ) ;
2014-04-23 18:06:41 -04:00
}
}
2015-09-11 15:01:19 -04:00
else if ( NameOfPropertyThatChanged = = GET_MEMBER_NAME_CHECKED ( UMaterial , MaterialDomain ) | |
NameOfPropertyThatChanged = = GET_MEMBER_NAME_CHECKED ( UMaterial , ShadingModel ) )
2015-06-22 15:55:50 -04:00
{
Material - > MaterialGraph - > RebuildGraph ( ) ;
TArray < TWeakObjectPtr < UObject > > SelectedObjects = MaterialDetailsView - > GetSelectedObjects ( ) ;
MaterialDetailsView - > SetObjects ( SelectedObjects , true ) ;
2016-02-01 14:57:29 -05:00
if ( ExpressionPreviewMaterial )
{
if ( Material - > IsUIMaterial ( ) )
{
ExpressionPreviewMaterial - > MaterialDomain = MD_UI ;
}
else
{
ExpressionPreviewMaterial - > MaterialDomain = MD_Surface ;
}
SetPreviewMaterial ( ExpressionPreviewMaterial ) ;
}
2015-06-22 15:55:50 -04:00
UpdatePreviewViewportsVisibility ( ) ;
}
2014-04-23 18:06:41 -04:00
2014-04-23 18:21:07 -04:00
FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
2014-04-23 18:06:41 -04:00
{
2014-04-23 18:21:07 -04:00
UMaterialGraphNode * SelectedNode = Cast < UMaterialGraphNode > ( * NodeIt ) ;
if ( SelectedNode & & SelectedNode - > MaterialExpression )
2014-04-23 18:06:41 -04:00
{
2014-04-23 18:21:07 -04:00
if ( NameOfPropertyThatChanged = = FName ( TEXT ( " ParameterName " ) ) )
{
Material - > UpdateExpressionParameterName ( SelectedNode - > MaterialExpression ) ;
}
2015-06-30 05:54:23 -04:00
else if ( SelectedNode - > MaterialExpression - > IsA ( UMaterialExpressionDynamicParameter : : StaticClass ( ) ) )
2014-04-23 18:21:07 -04:00
{
2015-06-30 05:54:23 -04:00
Material - > UpdateExpressionDynamicParameters ( SelectedNode - > MaterialExpression ) ;
2014-04-23 18:21:07 -04:00
}
else
{
Material - > PropagateExpressionParameterChanges ( SelectedNode - > MaterialExpression ) ;
}
2014-04-23 18:06:41 -04:00
}
}
}
2014-03-14 14:13:41 -04:00
2014-04-23 18:21:07 -04:00
// Prevent constant recompilation of materials while properties are being interacted with
if ( PropertyChangedEvent . ChangeType ! = EPropertyChangeType : : Interactive )
{
// Also prevent recompilation when properties have no effect on material output
const FName PropertyName = PropertyChangedEvent . MemberProperty ? PropertyChangedEvent . MemberProperty - > GetFName ( ) : NAME_None ;
if ( PropertyName ! = GET_MEMBER_NAME_CHECKED ( UMaterialExpressionComment , Text )
& & PropertyName ! = GET_MEMBER_NAME_CHECKED ( UMaterialExpressionComment , CommentColor )
& & PropertyName ! = GET_MEMBER_NAME_CHECKED ( UMaterialExpression , Desc ) )
{
// Update the current preview material.
UpdatePreviewMaterial ( ) ;
RefreshExpressionPreviews ( ) ;
RegenerateCodeView ( ) ;
}
Copying //UE4/Dev-Editor to //UE4/Main
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2756103 on 2015/11/05 by Jamie.Dale
Implemented UFont::GetResourceSize to work correctly with the Size Map tool
Change 2756104 on 2015/11/05 by Jamie.Dale
Changed the font used when a font is missing or invalid to be the last resort font, rather than the localized fallback font
The localized fallback font could cause different results based on your culture, and the last resort font makes it clearer that something is set-up incorrectly as it just draws invalid glyph markers for all of the text.
Change 2756105 on 2015/11/05 by Jamie.Dale
Fixed a crash when using an empty FKey property with a Data Table
FKeyStructCustomization was asserting because there were no objects being edited, due to a newly added Data Table containing zero rows.
I've removed this assert, and also updated SKeySelector to no longer require a separate argument to say whether multiple keys with different values are selected (this is now calculated from the call to get the current key, which will return an empty TOptional for multiple values).
#jira UE-22897
Change 2757015 on 2015/11/06 by Joe.Tidmarsh
SSProgressBar marquee tint. Accounts for widget color and opacity.
PR #1698
Change 2757156 on 2015/11/06 by Joe.Tidmarsh
Implemented "Go to Variable" functionality for widgets in Widget Blueprint Editor.
When we switch modes in UMG from Designer to Graph. We select the variable (In "My Blueprint"), if one exists, for the currently selected widget. Additionally we update the details panel.
* Added SelectGraphActionItemByName to FBlueprintEditor. This selects an item in My Blueprint and also displays it in the details panel of graph mode. SMyBlueprint is not available to FWidgetBlueprintEditor in UMGEditor module as it's privately implemented within Kismet.
#rb Ben.Cosh
#jira UE-20170
Change 2757181 on 2015/11/06 by Jamie.Dale
Cleaned up some duplication in UMG text widgets, and exposed the text shaping options
The common properties used by all text widgets that are text layout based have been moved into a UTextLayoutWidget base class, and all text layout based widgets now derive from this.
The options needed to control the text shaping method used by a text based widget have been exposed via the FShapedTextOptions struct. This contains a way to manage these optional (and advanced) overrides. You typically wouldn't change these from the default unless you knew exactly what you were doing (eg, you have a text block containing only numbers).
This change also updates SRichTextBlock to work with an invalidation panel in the same way that STextBlock does
Change 2757734 on 2015/11/06 by David.Nikdel
#UE4 #Editor
- Added support for meta=(TitleProperty="StructPropertyNameHere") on properties of type TArray<FSomeStruct>.
- This changes the editor rolled-up display of these values from "{0} members" to a stringified version of the specified property (if found).
#CodeReview: Matt.Kuhlenschmidt
Change 2758786 on 2015/11/09 by Joe.Tidmarsh
Border widget now correctly synchronizes padding property
#jira UE-23070
Change 2758791 on 2015/11/09 by Joe.Tidmarsh
Shadow of FCanvasTextItem should be drawn before the outline color. Consulted with Bruce.N who believes this is not the intended behavior and was an oversight when refactoring FCanvas (CL 1695138)
#jira UE-21623
#1608
#rb Simon.Tovey, Bruce.Nesbit
Change 2758813 on 2015/11/09 by Joe.Tidmarsh
UMG: Attempting to parent multiple widgets (in Hierarchy tree) to a widget that can't have multiple children will notify the user and ignore the operation.
[UE-22921] [CrashReport] Parenting multiple actors under border crashes editor
#jira UE-22921
Change 2759234 on 2015/11/09 by Nick.Darnell
Slate - Improving the way we track references to materials in slate to better keep things alive until they're no longer needed for rendering. Additionally, making it so the we use the material and texture free list when possible when cleaning up things as to not allocate new memory if not required. Concidentually this can help with problems with corrupted memory on destruct as well, because it means the memory isn't really going to become garbage any more.
#codereview Matt.Kuhlenschmidt, Bob.Tellez
Change 2760954 on 2015/11/10 by Nick.Darnell
Slate - A bug in the introduction of custom rendered elements accidentally broke filling out the texture coordinates for standard material usage. Materials should once again tile correctly just like images do.
#jira UE-23118
Change 2761129 on 2015/11/10 by Nick.Darnell
Slate - Removing the Pre-Multiply alpha path the way it was added, introducing it in a way that doesn't require changes inside the shader. Continuing to improve the SRetainerWidget to no longer have a frame delay between resizes and painting, also working on getting it handle clipping correctly but still not there yet.
Change 2761391 on 2015/11/10 by Alexis.Matte
jira UE-20281 and UE-22259
Fbx scene Re-import workflow
- First draft of the reimport workflow using a reimport asset in the content browser
#codereview nick.darnell
Change 2762323 on 2015/11/11 by Alexis.Matte
fix build compilation
Change 2762407 on 2015/11/11 by Jamie.Dale
UDataTable::SaveStructData now writes out dummy data when RowStruct is null
This didn't used to happen, which would cause a miss-match between what UDataTable::LoadStructData was expecting, and would result in a Data Table that could never be loaded again.
This change also improves the error message when editing a Data Table with a null row struct, and adds the editor-only RowStructName property to cache the name of the last used struct (for error reporting).
#jira UE-22789
Change 2762508 on 2015/11/11 by Nick.Darnell
UMG - Making it more obvious what keys do special stuff with anchors in UMG. Fixing the way snapping to anchors works with Control, it now only zeros out the side you're dragging instead of the entire widget, which was silly. Enhancing the designer message system to no longer be based on an enum and instead let arbitrary systems push and pop FText messages. Fixing animations in the anchor drop down to properly animate, broke when we introduced active timers.
Change 2763241 on 2015/11/11 by Nick.Darnell
Slate - We no longer allow popup windows to be larger than the primary display window for windows where max width/height is unspecified. This is to prevent accidential creation of tooltip windows that are larger than the driver allows causing crashes.
#jira UE-20336
2015-12-12 08:54:23 -05:00
GetDefault < UMaterialGraphSchema > ( ) - > ForceVisualizationCacheClear ( ) ;
2014-04-23 18:21:07 -04:00
}
delete ScopedTransaction ;
ScopedTransaction = NULL ;
Material - > MarkPackageDirty ( ) ;
SetMaterialDirty ( ) ;
}
2014-03-14 14:13:41 -04:00
void FMaterialEditor : : ToggleCollapsed ( UMaterialExpression * MaterialExpression )
{
check ( MaterialExpression ) ;
{
const FScopedTransaction Transaction ( NSLOCTEXT ( " UnrealEd " , " MaterialEditorToggleCollapsed " , " Material Editor: Toggle Collapsed " ) ) ;
MaterialExpression - > Modify ( ) ;
MaterialExpression - > bCollapsed = ! MaterialExpression - > bCollapsed ;
}
MaterialExpression - > PreEditChange ( NULL ) ;
MaterialExpression - > PostEditChange ( ) ;
MaterialExpression - > MarkPackageDirty ( ) ;
SetMaterialDirty ( ) ;
// Update the preview.
RefreshExpressionPreview ( MaterialExpression , true ) ;
RefreshPreviewViewport ( ) ;
}
void FMaterialEditor : : RefreshExpressionPreviews ( )
{
const FScopedBusyCursor BusyCursor ;
if ( bAlwaysRefreshAllPreviews )
{
// we need to make sure the rendering thread isn't drawing these tiles
SCOPED_SUSPEND_RENDERING_THREAD ( true ) ;
// Refresh all expression previews.
ExpressionPreviews . Empty ( ) ;
}
else
{
// Only refresh expressions that are marked for realtime update.
for ( int32 ExpressionIndex = 0 ; ExpressionIndex < Material - > Expressions . Num ( ) ; + + ExpressionIndex )
{
UMaterialExpression * MaterialExpression = Material - > Expressions [ ExpressionIndex ] ;
RefreshExpressionPreview ( MaterialExpression , false ) ;
}
}
TArray < FMatExpressionPreview * > ExpressionPreviewsBeingCompiled ;
ExpressionPreviewsBeingCompiled . Empty ( 50 ) ;
// Go through all expression previews and create new ones as needed, and maintain a list of previews that are being compiled
for ( int32 ExpressionIndex = 0 ; ExpressionIndex < Material - > Expressions . Num ( ) ; + + ExpressionIndex )
{
UMaterialExpression * MaterialExpression = Material - > Expressions [ ExpressionIndex ] ;
if ( MaterialExpression & & ! MaterialExpression - > IsA ( UMaterialExpressionComment : : StaticClass ( ) ) )
{
bool bNewlyCreated ;
FMatExpressionPreview * Preview = GetExpressionPreview ( MaterialExpression , bNewlyCreated ) ;
if ( bNewlyCreated & & Preview )
{
ExpressionPreviewsBeingCompiled . Add ( Preview ) ;
}
}
}
}
void FMaterialEditor : : RefreshExpressionPreview ( UMaterialExpression * MaterialExpression , bool bRecompile )
{
if ( ( MaterialExpression - > bRealtimePreview | | MaterialExpression - > bNeedToUpdatePreview ) & & ! MaterialExpression - > bCollapsed )
{
for ( int32 PreviewIndex = 0 ; PreviewIndex < ExpressionPreviews . Num ( ) ; + + PreviewIndex )
{
FMatExpressionPreview & ExpressionPreview = ExpressionPreviews [ PreviewIndex ] ;
if ( ExpressionPreview . GetExpression ( ) = = MaterialExpression )
{
// we need to make sure the rendering thread isn't drawing this tile
SCOPED_SUSPEND_RENDERING_THREAD ( true ) ;
ExpressionPreviews . RemoveAt ( PreviewIndex ) ;
MaterialExpression - > bNeedToUpdatePreview = false ;
if ( bRecompile )
{
bool bNewlyCreated ;
GetExpressionPreview ( MaterialExpression , bNewlyCreated ) ;
}
break ;
}
}
}
}
FMatExpressionPreview * FMaterialEditor : : GetExpressionPreview ( UMaterialExpression * MaterialExpression , bool & bNewlyCreated )
{
bNewlyCreated = false ;
if ( ! MaterialExpression - > bHidePreviewWindow & & ! MaterialExpression - > bCollapsed )
{
FMatExpressionPreview * Preview = NULL ;
for ( int32 PreviewIndex = 0 ; PreviewIndex < ExpressionPreviews . Num ( ) ; + + PreviewIndex )
{
FMatExpressionPreview & ExpressionPreview = ExpressionPreviews [ PreviewIndex ] ;
if ( ExpressionPreview . GetExpression ( ) = = MaterialExpression )
{
Preview = & ExpressionPreviews [ PreviewIndex ] ;
break ;
}
}
if ( ! Preview )
{
bNewlyCreated = true ;
Preview = new ( ExpressionPreviews ) FMatExpressionPreview ( MaterialExpression ) ;
2014-10-01 09:08:51 -04:00
Preview - > CacheShaders ( GMaxRHIShaderPlatform , true ) ;
2014-03-14 14:13:41 -04:00
}
return Preview ;
}
return NULL ;
}
void FMaterialEditor : : PreColorPickerCommit ( FLinearColor LinearColor )
{
// Begin a property edit transaction.
if ( GEditor )
{
GEditor - > BeginTransaction ( LOCTEXT ( " ModifyColorPicker " , " Modify Color Picker Value " ) ) ;
}
NotifyPreChange ( NULL ) ;
UObject * Object = ColorPickerObject . Get ( false ) ;
if ( Object )
{
Object - > PreEditChange ( NULL ) ;
}
}
void FMaterialEditor : : OnColorPickerCommitted ( FLinearColor LinearColor )
{
UObject * Object = ColorPickerObject . Get ( false ) ;
if ( Object )
{
Object - > MarkPackageDirty ( ) ;
2014-10-23 21:38:06 -04:00
FPropertyChangedEvent Event ( ColorPickerProperty . Get ( false ) ) ;
Object - > PostEditChangeProperty ( Event ) ;
2014-03-14 14:13:41 -04:00
}
NotifyPostChange ( NULL , NULL ) ;
if ( GEditor )
{
GEditor - > EndTransaction ( ) ;
}
RefreshExpressionPreviews ( ) ;
}
TSharedRef < SGraphEditor > FMaterialEditor : : CreateGraphEditorWidget ( )
{
GraphEditorCommands = MakeShareable ( new FUICommandList ) ;
{
// Editing commands
GraphEditorCommands - > MapAction ( FGenericCommands : : Get ( ) . SelectAll ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : SelectAllNodes ) ,
FCanExecuteAction : : CreateSP ( this , & FMaterialEditor : : CanSelectAllNodes )
) ;
GraphEditorCommands - > MapAction ( FGenericCommands : : Get ( ) . Delete ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : DeleteSelectedNodes ) ,
FCanExecuteAction : : CreateSP ( this , & FMaterialEditor : : CanDeleteNodes )
) ;
GraphEditorCommands - > MapAction ( FGenericCommands : : Get ( ) . Copy ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : CopySelectedNodes ) ,
FCanExecuteAction : : CreateSP ( this , & FMaterialEditor : : CanCopyNodes )
) ;
GraphEditorCommands - > MapAction ( FGenericCommands : : Get ( ) . Paste ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : PasteNodes ) ,
FCanExecuteAction : : CreateSP ( this , & FMaterialEditor : : CanPasteNodes )
) ;
GraphEditorCommands - > MapAction ( FGenericCommands : : Get ( ) . Cut ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : CutSelectedNodes ) ,
FCanExecuteAction : : CreateSP ( this , & FMaterialEditor : : CanCutNodes )
) ;
GraphEditorCommands - > MapAction ( FGenericCommands : : Get ( ) . Duplicate ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : DuplicateNodes ) ,
FCanExecuteAction : : CreateSP ( this , & FMaterialEditor : : CanDuplicateNodes )
) ;
// Graph Editor Commands
GraphEditorCommands - > MapAction ( FGraphEditorCommands : : Get ( ) . CreateComment ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnCreateComment )
) ;
// Material specific commands
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . UseCurrentTexture ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnUseCurrentTexture )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . ConvertObjects ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnConvertObjects )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . ConvertToTextureObjects ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnConvertTextures )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . ConvertToTextureSamples ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnConvertTextures )
) ;
2014-10-23 21:38:06 -04:00
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . ConvertToConstant ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnConvertObjects )
) ;
2014-03-14 14:13:41 -04:00
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . StopPreviewNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnPreviewNode )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . StartPreviewNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnPreviewNode )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . EnableRealtimePreviewNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnToggleRealtimePreview )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . DisableRealtimePreviewNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnToggleRealtimePreview )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . SelectDownstreamNodes ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnSelectDownsteamNodes )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . SelectUpstreamNodes ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnSelectUpsteamNodes )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . RemoveFromFavorites ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : RemoveSelectedExpressionFromFavorites )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . AddToFavorites ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : AddSelectedExpressionToFavorites )
) ;
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . ForceRefreshPreviews ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnForceRefreshPreviews )
) ;
2014-05-08 05:29:54 -04:00
GraphEditorCommands - > MapAction ( FMaterialEditorCommands : : Get ( ) . CreateComponentMaskNode ,
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnCreateComponentMaskNode )
) ;
2014-09-05 08:25:23 -04:00
2015-04-09 11:34:39 -04:00
GraphEditorCommands - > MapAction ( FGraphEditorCommands : : Get ( ) . GoToDocumentation ,
2014-09-05 08:25:23 -04:00
FExecuteAction : : CreateSP ( this , & FMaterialEditor : : OnGoToDocumentation ) ,
FCanExecuteAction : : CreateSP ( this , & FMaterialEditor : : CanGoToDocumentation )
) ;
2014-03-14 14:13:41 -04:00
}
FGraphAppearanceInfo AppearanceInfo ;
if ( MaterialFunction )
{
2015-01-07 09:52:40 -05:00
AppearanceInfo . CornerText = LOCTEXT ( " AppearanceCornerText_MaterialFunction " , " MATERIAL FUNCTION " ) ;
2014-03-14 14:13:41 -04:00
}
else
{
2015-01-07 09:52:40 -05:00
AppearanceInfo . CornerText = LOCTEXT ( " AppearanceCornerText_Material " , " MATERIAL " ) ;
2014-03-14 14:13:41 -04:00
}
SGraphEditor : : FGraphEditorEvents InEvents ;
InEvents . OnSelectionChanged = SGraphEditor : : FOnSelectionChanged : : CreateSP ( this , & FMaterialEditor : : OnSelectedNodesChanged ) ;
InEvents . OnNodeDoubleClicked = FSingleNodeEvent : : CreateSP ( this , & FMaterialEditor : : OnNodeDoubleClicked ) ;
InEvents . OnTextCommitted = FOnNodeTextCommitted : : CreateSP ( this , & FMaterialEditor : : OnNodeTitleCommitted ) ;
2015-06-10 13:53:25 -04:00
InEvents . OnVerifyTextCommit = FOnNodeVerifyTextCommit : : CreateSP ( this , & FMaterialEditor : : OnVerifyNodeTextCommit ) ;
2014-03-14 14:13:41 -04:00
InEvents . OnSpawnNodeByShortcut = SGraphEditor : : FOnSpawnNodeByShortcut : : CreateSP ( this , & FMaterialEditor : : OnSpawnGraphNodeByShortcut , CastChecked < UEdGraph > ( Material - > MaterialGraph ) ) ;
// Create the title bar widget
TSharedPtr < SWidget > TitleBarWidget = SNew ( SMaterialEditorTitleBar )
. TitleText ( this , & FMaterialEditor : : GetOriginalObjectName ) ;
//.MaterialInfoList(&MaterialInfoList);
return SNew ( SGraphEditor )
. AdditionalCommands ( GraphEditorCommands )
. IsEditable ( true )
. TitleBar ( TitleBarWidget )
. Appearance ( AppearanceInfo )
. GraphToEdit ( Material - > MaterialGraph )
. GraphEvents ( InEvents )
2014-06-09 11:12:17 -04:00
. ShowGraphStateOverlay ( false ) ;
2014-03-14 14:13:41 -04:00
}
void FMaterialEditor : : CleanUnusedExpressions ( )
{
TArray < UEdGraphNode * > UnusedNodes ;
Material - > MaterialGraph - > GetUnusedExpressions ( UnusedNodes ) ;
if ( UnusedNodes . Num ( ) > 0 & & CheckExpressionRemovalWarnings ( UnusedNodes ) )
{
{
// Kill off expressions referenced by the material that aren't reachable.
const FScopedTransaction Transaction ( NSLOCTEXT ( " UnrealEd " , " MaterialEditorCleanUnusedExpressions " , " Material Editor: Clean Unused Expressions " ) ) ;
Material - > Modify ( ) ;
Material - > MaterialGraph - > Modify ( ) ;
for ( int32 Index = 0 ; Index < UnusedNodes . Num ( ) ; + + Index )
{
UMaterialGraphNode * GraphNode = CastChecked < UMaterialGraphNode > ( UnusedNodes [ Index ] ) ;
UMaterialExpression * MaterialExpression = GraphNode - > MaterialExpression ;
FBlueprintEditorUtils : : RemoveNode ( NULL , GraphNode , true ) ;
2014-06-27 07:35:59 -04:00
if ( PreviewExpression = = MaterialExpression )
{
SetPreviewExpression ( NULL ) ;
}
2014-03-14 14:13:41 -04:00
MaterialExpression - > Modify ( ) ;
Material - > Expressions . Remove ( MaterialExpression ) ;
Material - > RemoveExpressionParameter ( MaterialExpression ) ;
// Make sure the deleted expression is caught by gc
MaterialExpression - > MarkPendingKill ( ) ;
}
Material - > MaterialGraph - > LinkMaterialExpressionsFromGraph ( ) ;
} // ScopedTransaction
GraphEditor - > ClearSelectionSet ( ) ;
GraphEditor - > NotifyGraphChanged ( ) ;
SetMaterialDirty ( ) ;
}
}
bool FMaterialEditor : : CheckExpressionRemovalWarnings ( const TArray < UEdGraphNode * > & NodesToRemove )
{
FString FunctionWarningString ;
bool bFirstExpression = true ;
for ( int32 Index = 0 ; Index < NodesToRemove . Num ( ) ; + + Index )
{
if ( UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( NodesToRemove [ Index ] ) )
{
UMaterialExpressionFunctionInput * FunctionInput = Cast < UMaterialExpressionFunctionInput > ( GraphNode - > MaterialExpression ) ;
UMaterialExpressionFunctionOutput * FunctionOutput = Cast < UMaterialExpressionFunctionOutput > ( GraphNode - > MaterialExpression ) ;
if ( FunctionInput )
{
if ( ! bFirstExpression )
{
FunctionWarningString + = TEXT ( " , " ) ;
}
bFirstExpression = false ;
FunctionWarningString + = FunctionInput - > InputName ;
}
if ( FunctionOutput )
{
if ( ! bFirstExpression )
{
FunctionWarningString + = TEXT ( " , " ) ;
}
bFirstExpression = false ;
FunctionWarningString + = FunctionOutput - > OutputName ;
}
}
}
if ( FunctionWarningString . Len ( ) > 0 )
{
if ( EAppReturnType : : Yes ! = FMessageDialog : : Open ( EAppMsgType : : YesNo ,
FText : : Format (
NSLOCTEXT ( " UnrealEd " , " Prompt_MaterialEditorDeleteFunctionInputs " , " Delete function inputs or outputs \" {0} \" ? \n Any materials which use this function will lose their connections to these function inputs or outputs once deleted. " ) ,
FText : : FromString ( FunctionWarningString ) ) ) )
{
// User said don't delete
return false ;
}
}
return true ;
}
void FMaterialEditor : : RemoveSelectedExpressionFromFavorites ( )
{
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
if ( SelectedNodes . Num ( ) = = 1 )
{
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
if ( UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) )
{
MaterialExpressionClasses : : Get ( ) - > RemoveMaterialExpressionFromFavorites ( GraphNode - > MaterialExpression - > GetClass ( ) ) ;
EditorOptions - > FavoriteExpressions . Remove ( GraphNode - > MaterialExpression - > GetClass ( ) - > GetName ( ) ) ;
EditorOptions - > SaveConfig ( ) ;
}
}
}
}
void FMaterialEditor : : AddSelectedExpressionToFavorites ( )
{
const FGraphPanelSelectionSet SelectedNodes = GraphEditor - > GetSelectedNodes ( ) ;
if ( SelectedNodes . Num ( ) = = 1 )
{
for ( FGraphPanelSelectionSet : : TConstIterator NodeIt ( SelectedNodes ) ; NodeIt ; + + NodeIt )
{
if ( UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * NodeIt ) )
{
MaterialExpressionClasses : : Get ( ) - > AddMaterialExpressionToFavorites ( GraphNode - > MaterialExpression - > GetClass ( ) ) ;
EditorOptions - > FavoriteExpressions . AddUnique ( GraphNode - > MaterialExpression - > GetClass ( ) - > GetName ( ) ) ;
EditorOptions - > SaveConfig ( ) ;
}
}
}
}
void FMaterialEditor : : OnSelectedNodesChanged ( const TSet < class UObject * > & NewSelection )
{
TArray < UObject * > SelectedObjects ;
UObject * EditObject = Material ;
if ( MaterialFunction )
{
EditObject = MaterialFunction ;
}
if ( NewSelection . Num ( ) = = 0 )
{
SelectedObjects . Add ( EditObject ) ;
}
else
{
for ( TSet < class UObject * > : : TConstIterator SetIt ( NewSelection ) ; SetIt ; + + SetIt )
{
if ( UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( * SetIt ) )
{
SelectedObjects . Add ( GraphNode - > MaterialExpression ) ;
}
else if ( UMaterialGraphNode_Comment * CommentNode = Cast < UMaterialGraphNode_Comment > ( * SetIt ) )
{
SelectedObjects . Add ( CommentNode - > MaterialExpressionComment ) ;
}
else
{
SelectedObjects . Add ( EditObject ) ;
}
}
}
GetDetailView ( ) - > SetObjects ( SelectedObjects , true ) ;
}
void FMaterialEditor : : OnNodeDoubleClicked ( class UEdGraphNode * Node )
{
UMaterialGraphNode * GraphNode = Cast < UMaterialGraphNode > ( Node ) ;
if ( GraphNode )
{
UMaterialExpressionConstant3Vector * Constant3Expression = Cast < UMaterialExpressionConstant3Vector > ( GraphNode - > MaterialExpression ) ;
UMaterialExpressionConstant4Vector * Constant4Expression = Cast < UMaterialExpressionConstant4Vector > ( GraphNode - > MaterialExpression ) ;
UMaterialExpressionFunctionInput * InputExpression = Cast < UMaterialExpressionFunctionInput > ( GraphNode - > MaterialExpression ) ;
UMaterialExpressionVectorParameter * VectorExpression = Cast < UMaterialExpressionVectorParameter > ( GraphNode - > MaterialExpression ) ;
FColorChannels ChannelEditStruct ;
2014-10-23 21:38:06 -04:00
// Reset to default
ColorPickerProperty = NULL ;
2014-03-14 14:13:41 -04:00
if ( Constant3Expression )
{
ChannelEditStruct . Red = & Constant3Expression - > Constant . R ;
ChannelEditStruct . Green = & Constant3Expression - > Constant . G ;
ChannelEditStruct . Blue = & Constant3Expression - > Constant . B ;
}
else if ( Constant4Expression )
{
ChannelEditStruct . Red = & Constant4Expression - > Constant . R ;
ChannelEditStruct . Green = & Constant4Expression - > Constant . G ;
ChannelEditStruct . Blue = & Constant4Expression - > Constant . B ;
ChannelEditStruct . Alpha = & Constant4Expression - > Constant . A ;
}
else if ( InputExpression )
{
ChannelEditStruct . Red = & InputExpression - > PreviewValue . X ;
ChannelEditStruct . Green = & InputExpression - > PreviewValue . Y ;
ChannelEditStruct . Blue = & InputExpression - > PreviewValue . Z ;
ChannelEditStruct . Alpha = & InputExpression - > PreviewValue . W ;
}
else if ( VectorExpression )
{
ChannelEditStruct . Red = & VectorExpression - > DefaultValue . R ;
ChannelEditStruct . Green = & VectorExpression - > DefaultValue . G ;
ChannelEditStruct . Blue = & VectorExpression - > DefaultValue . B ;
ChannelEditStruct . Alpha = & VectorExpression - > DefaultValue . A ;
2014-10-23 21:38:06 -04:00
static FName DefaultValueName = FName ( TEXT ( " DefaultValue " ) ) ;
// Store off the property the color picker will be manipulating, so we can construct a useful PostEditChangeProperty later
ColorPickerProperty = VectorExpression - > GetClass ( ) - > FindPropertyByName ( DefaultValueName ) ;
2014-03-14 14:13:41 -04:00
}
if ( ChannelEditStruct . Red | | ChannelEditStruct . Green | | ChannelEditStruct . Blue | | ChannelEditStruct . Alpha )
{
TArray < FColorChannels > Channels ;
Channels . Add ( ChannelEditStruct ) ;
ColorPickerObject = GraphNode - > MaterialExpression ;
// Open a color picker that only sends updates when Ok is clicked,
// Since it is too slow to recompile preview expressions as the user is picking different colors
FColorPickerArgs PickerArgs ;
PickerArgs . ParentWidget = GraphEditor ; //AsShared();
PickerArgs . bUseAlpha = Constant4Expression ! = NULL | | VectorExpression ! = NULL ;
2015-07-30 11:01:42 -04:00
PickerArgs . bOnlyRefreshOnOk = false ;
Copying //UE4/Dev-Editor to //UE4/Dev-Main (Source: //UE4/Dev-Editor @ 3050373)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 2973846 on 2016/05/11 by Jamie.Dale
Exposed FConfigValue::ExpandValue and added FConfigValue::CollapseValue
These are both static and can be used to expand or collapse the macros used in our config files (mostly when dealing with paths), in code that has to deal with the config system, but isn't internal to the config system (mostly things that deal with default configs outside of UObjects).
The old non-static version of FConfigValue::ExpandValue is now FConfigValue::ExpandValueInternal, which just calls FConfigValue::ExpandValue on SavedValue and ExpandedValue.
This also changes some code that was using FString.Replace to use FString.ReplaceInline. This reduces allocations, and also allows us to avoid another string comparison to see whether the strings are identical (as ReplaceInline returns the number of replacements that were made).
Change 2973847 on 2016/05/11 by Jamie.Dale
Changing the loading phase in the localization dashboard now writes to the default config
#jira UE-30482
Change 2973866 on 2016/05/11 by Jamie.Dale
Deprecated some functions that were taking an unused position.
These unused parameters caused confusion and lead to UE-30276. The old versions have been deprecated, and new versions without those parameters have been added. Existing code has been updated to call the non-deprecated version.
- FViewportFrame::ResizeFrame
- FSceneViewport::ResizeFrame
- FSceneViewport::ResizeViewport
Change 2974505 on 2016/05/11 by Nick.Darnell
PR #2309: Added Combobox styling (Contributed by Chris528)
Change 2975241 on 2016/05/12 by Richard.TalbotWatkin
Made sRGB Preview the default in the Color Picker.
Change 2975390 on 2016/05/12 by Jamie.Dale
Made sure that en-US-POSIX is in our list of available cultures
Some people use machine tags as their native text, so they need an invariant machine like culture to use as their native culture. en-US-POSIX is perfect for this.
Change 2975411 on 2016/05/12 by Jamie.Dale
PR #2237: Fixed formatting of Error_TooManyMaterials message (Contributed by pfranz)
Change 2975559 on 2016/05/12 by Jamie.Dale
Dialogue Wave VO direction can now be localized
This is gathered as editor-only data.
#jira UE-28715
Change 2975710 on 2016/05/12 by Jamie.Dale
Implemented UObject::IsLocalizedResource to test whether the object belongs to a localized package
Change 2975728 on 2016/05/12 by Jamie.Dale
Exported dialogue scripts now include a column that says whether they have a localized recording of that line of dialogue
#jira UETOOL-794
Change 2975763 on 2016/05/12 by Jamie.Dale
We no longer warn if asked to check out a UNC path when running the GatherText commandlets
#jira UE-25833
Change 2975766 on 2016/05/12 by Jamie.Dale
Resolved some loc key conflicts
#jira UE-25833
Change 2975774 on 2016/05/12 by Jamie.Dale
PO files now only contain a single entry in the case of a native translation being exported
They used to contain the original entry, as well as an entry for the native translation, however the original entry would never be used.
This change also cleans up some directory walking code that was looking for archive files, and replaces it with code to load the specific archive file.
Change 2975776 on 2016/05/12 by Jamie.Dale
Downgraded a PO file import warning that isn't really an issue
#jira UE-25833
Change 2976675 on 2016/05/13 by Jamie.Dale
Fixed some more fallout from changes to use the window position when changing the game viewport mode
- FSceneViewport::ResizeFrame:
- Fixed the HMD monitor info setting the wrong variables.
- Fixed SetWindowMode and ResizeViewport potentially being passed two different modes.
- We now only move the window if we need to (this avoids issues with WindowedFullscreen window positioning).
- FWindowsWindow::MoveWindowTo:
- Now treats the screen space position it's given as relative to the top-left of the window, rather than the top-left of the windows' client area.
- FWindowsApplication:
- WM_MOVE was passing a screen space position relative to the top-left of the windows' client area, rather than its window area like Slate expected.
#jira UE-30276
#jira UE-30677
Change 2976804 on 2016/05/13 by Jamie.Dale
Slight optimization to FICUInternationalization::FindOrMakeCulture to avoid hitting the filesystem until we know we need to
Change 2976967 on 2016/05/13 by Alexis.Matte
#jira UE-30687 Cannot import a skeletal mesh scale to zero
Change 2977042 on 2016/05/13 by Alexis.Matte
#jira UE-29952 log a warning if fbx exceed the maximum number of LOD.
#2326 Github PR
#code review matt.kuhlenschmidt
Change 2977074 on 2016/05/13 by Jamie.Dale
Follow up to CL# 2976804 to avoid a potential change in behavior
Change 2977076 on 2016/05/13 by Jamie.Dale
Some tidy up and optimization to SCulturePicker
Change 2977327 on 2016/05/13 by Alex.Delesky
Now deleting the Redirector package on Redirector Fix Up rather than simply removing it from the Content Browser.
#jira UE-30423
Change 2977499 on 2016/05/13 by Alexis.Matte
#jira UE-29475
Enable UStruct child property to be favorite
Change 2978415 on 2016/05/16 by Jamie.Dale
We now pre-load all the culture data when starting the editor to avoid a UI hitch later
Change 2978517 on 2016/05/16 by Alex.Delesky
#jira UE-29406
Creating a static mesh from a geometry brush and then attempting to reimport the mesh will no longer crash the editor.
Change 2978518 on 2016/05/16 by Alex.Delesky
#jira UE-28210
The FBX Importer no longer runs cleanup upon failing to import an FBX file and won't crash the engine the next time an FBX is imported within the same editor session.
Change 2978556 on 2016/05/16 by Alexis.Matte
Fbx tests automation
#jira UE-29635
Change 2978797 on 2016/05/16 by Alexis.Matte
#jira UE-30774
- prevent baking the pivot if we transform the vertex with the absolute transform.
- Also make sure we set the identity for the Max puivot in case we dont bake the pivot and we dont transform the vertex with the absolute transform.
#code review matt.kuhlenschmidt
Change 2978965 on 2016/05/16 by Alexis.Matte
FBX importer, fix the socket rotation.
#jira UE-30094
Change 2980613 on 2016/05/17 by Jamie.Dale
Moved the XLOC UAT localization provider to be publicly accessible
Change 2980614 on 2016/05/17 by Jamie.Dale
Reference update for project move
Change 2980633 on 2016/05/17 by Jamie.Dale
Made the culture mapping used between XLOC and UE4 configurable on a per-project basis
You can now override GetEpicCultureToXLocLanguageId in your custom localization provider in order to change the default mappings.
Change 2980836 on 2016/05/17 by Jamie.Dale
Added -LocalizationSteps flag to allow you to only run a subset of the UAT "Localise" command
You can pass any of the following steps: Download, Gather, Import, Export, Compile, GenerateReports, Upload
Change 2982700 on 2016/05/18 by Jamie.Dale
Fixed the loc package gather potentially adding the same source location multiple times
Change 2983906 on 2016/05/19 by Jamie.Dale
Slight cleanup of the way we register localization gatherer callbacks
Change 2984356 on 2016/05/19 by Chris.Wood
Removed temporary analytics API change needed for earlier hot fix
[UE-31005] - Undo temp Hardware Survey API change from 4.10 - CL 2782817
Change 2986679 on 2016/05/23 by Alex.Delesky
#jira UE-24747 - Importing FBX files that contain meshes that do not have non-degenerate triangles will no longer crash the editor on import, and will warn the user that the meshes are bad.
Change 2986798 on 2016/05/23 by Alex.Delesky
#jira UE-31136 - Chord Input fields will no longer display the blinking edit cursor if they do not have focus.
Change 2987106 on 2016/05/23 by Alexis.Matte
Fbx importer, fail import must not create a package in the content browser
#jira UE-31154
Change 2987563 on 2016/05/23 by Alex.Delesky
#jira UE-30988 - Changed the default window mode when launching a game from the .uproject file to Windowed
Change 2987564 on 2016/05/23 by Alex.Delesky
#jira UE-28856 - Fixed a crash that could potentially occur when starting up PIE while dragging objects like widgets in the editor.
Change 2988321 on 2016/05/24 by Jamie.Dale
Added a way to backup and restore the selection state of a level (its actors and components) in a way that can be reapplied even if the level is reloaded
Change 2988708 on 2016/05/24 by Jamie.Dale
Fix for crash when missing the fallback/last resort font
Change 2988782 on 2016/05/24 by Jamie.Dale
Added the ability to version each localized string individually when loaded into the localization manager
The single 32-bit global history has now been replaced with two 16-bit histories. One is global, and is updated whenever the culture is changed (or a LocRes file is loaded), and the other is local to each string, and is updated if the display string is changed outside of a culture update (to handle cases where the display string is changed, but the key is preserved). Changing the global history will reset all local histories.
Because of the change from an int32 to a uint16, 0, rather than INDEX_NONE, is now considered the "unset" value for a history.
Change 2988856 on 2016/05/24 by Jamie.Dale
Added a way to get the package(s) of the object(s) being edited by a property panel
Typically the package is just the outermost of the object being edited, however there are some cases where this may not be the case:
- UMG widgets edit a transient copy of the real data, so we use the SetObjectPackageOverrides to override the package these objects should use to be the real asset package.
- Structs (UDS, Data Table, etc) don't have a way to get to their package, so you have to specify it on their FStructOnScope instance (see FStructOnScope::GetPackage and FStructOnScope::SetPackage). This has been hooked up for the UDS and Data Table editors.
Change 2988955 on 2016/05/24 by Alex.Delesky
#jira UE-30645 - Adding in support for splash images to support .png and .jpg files. In general, this adds multi-extension support for external image references and external image picker modules.
Git Request #2376
Change 2989418 on 2016/05/25 by Jamie.Dale
Added a way to count text references within a package that match the given search criteria
This can be used to detect whether a localization ID is unique within its package.
The following search modes are available:
- MatchId: Detect a reference if it matches the given ID (ignoring the source text)
- MatchSource: Detect a reference if it matches the given ID and source string
- MismatchSource: Detect a reference if it matches the given ID but has a different source string
Change 2989436 on 2016/05/25 by Jamie.Dale
Added "root-level" meta-data (meta-data associated with the package rather than an object within it)
Change 2989471 on 2016/05/25 by Alexis.Matte
Fbx scene importer, fix naming clash when creating package we now also look in memory to find existing package not just on disk
Change 2989639 on 2016/05/25 by Jamie.Dale
Added static version of FName::IsValidXName
This allows you to verify name-like strings without having to convert them to an FName (and thus add them to the name table)
Change 2989716 on 2016/05/25 by Alex.Delesky
#jira UE-30828 - The Standalone Session Frontend will now render the names of automation tests correctly instead of as solid white blocks.
Change 2990100 on 2016/05/25 by Alexis.Matte
Fix crash when reimporting a mesh that originaly exceed the maximum number of LOD
#jira UE-30907
Change 2991442 on 2016/05/26 by Bob.Tellez
#UE4 Fix components in world not rendering when saved without a physics scene.
Change 2991736 on 2016/05/26 by Bob.Tellez
#UE4 Fix duplicated worlds not being initialized when inactive. Re-enabled duplication of worlds in the content browser.
Change 2991942 on 2016/05/26 by Alex.Delesky
#jira UE-31012 - Setting a Decimal Grid Interval value to 0 and using it will no longer crash the editor or cause an editor crash on startup.
Change 2991994 on 2016/05/26 by Alex.Delesky
#jira UE-31177 - Attempting to export an entire level as an object file and choosing to export all materials as images will no longer crash the editor.
Change 2994037 on 2016/05/30 by Alexis.Matte
Add Fbx Automation Tests
- static mesh import reimport (sections and materials)
- skeletal mesh import and reimport (sections and materials also bone position)
- static/skeletal mesh LODs (import, add, reimport)
- rigid mesh (import, reimport)
Change 2994253 on 2016/05/31 by Alexis.Matte
Mikkt crash when computing the normals if there is more vertex then the number of wedge
#jira UE-29143
Change 2994260 on 2016/05/31 by Alexis.Matte
Make sure we cannot modify fbx test plan when json file is read only
Change 2994431 on 2016/05/31 by Alex.Delesky
#jira UE-21900 - The scale widget should now render all axes when using an orthographic camera.
Change 2994432 on 2016/05/31 by Alex.Delesky
#jira UE-31328 - New objects dragged into the scene will now comply with the Surface Snapping option in the viewport, and will not use the Surface Offset if snapping is disabled.
Change 2994537 on 2016/05/31 by Richard.TalbotWatkin
Fixed potential crash in the Mesh Paint tool when non-transactable actors are in the SelectedActors list following a Redo.
#jira UE-31172 - Crash related to Vertex Painting - MeshPaint!CastChecked<AActor,UObject>()
Change 2994983 on 2016/05/31 by Richard.TalbotWatkin
Added some guard code to protect against a crash when editing geometry. Repro currently unknown, ensure was added in order to try to get more information.
#jira UE-30820 - UT EDITOR: CRASH: Crash in Public Release CL#2973693
Change 2995022 on 2016/05/31 by Jamie.Dale
PR #2428: Added missing END_OPTIMIZATION macro to SOutputLog (Contributed by MatzeOGH)
Change 2995027 on 2016/05/31 by Jamie.Dale
PR #2409: fixed a small typo in GraphEditor.h (Contributed by MatzeOGH)
Change 2995963 on 2016/06/01 by Alex.Delesky
#jira UE-31317 - The transform gizmo will no longer block the placement of a material onto a mesh.
Change 2997002 on 2016/06/01 by Cody.Albert
Fix to ensure ActiveTopLevelWindow is properly set after a window is destroyed
#jira UE-31448
Change 2998013 on 2016/06/02 by Alexis.Matte
Prevent static mesh materials array to grow when using the reset button in the staticmesh editor.
#jira UE-12931
Change 2998370 on 2016/06/02 by Alexis.Matte
Fbx Automation, add some import LOD test in case the options are not ok
Change 2999709 on 2016/06/03 by Jamie.Dale
Fixed some issues with gathering text from BP bytecode
Bytecode in Blueprints is very volatile, and can only be safely gathered after it's been compiled (which is not guaranteed to have happened by the time we save the package). This change avoids caching any assets that contain scripts (non-data-only Blueprints), and instead will always load them to perform a gather (which will ensure the Blueprint bytecode is up-to-date due to compile-on-load).
Change 2999755 on 2016/06/03 by Richard.TalbotWatkin
Fixes to Spline Mesh collision generation.
- Fixed a serious issue with DDC ID generation, in that the static mesh wasn't forming a part of the key, hence any two spline meshes with identical properties but different meshes would yield the same cache entry.
- Fixed how different collision boxes are transformed when rebuilding physics meshes. Convex collision transforms are now correctly taken into account, and spherical and capsule collision now gets correctly translated when a scale is applied to the start or end of the spline mesh.
- Optimized physics rebuilding. A new BodySetup object is now only created when needed, otherwise it is reused.
#jira UE-31361 - Splines handle box collision and collision from other shapes differently
Change 2999973 on 2016/06/03 by Jamie.Dale
We now skip bulk data when detecting text references
#jira UE-31596
Change 3000159 on 2016/06/03 by Alex.Delesky
#jira UE-30244 - Added a safeguard against a potential crash when editing BSP brushes before placing another BSP brush into the level.
Change 3001814 on 2016/06/06 by Alexis.Matte
Make sure the staticmesh Materials list dont grow when we reimport or override a LOD other then the base mesh.
Add a fbx test to make sure the problem is flag by automation test
#jira UE-1394
Change 3001820 on 2016/06/06 by Alex.Delesky
#jira UE-19079 - Widget Blueprints should no longer crash when dragging widgets from one blueprint to a second and then compiling the second blueprint.
Change 3001915 on 2016/06/06 by Alexis.Matte
Make sure we check attribute type before checking attribute unique ID in case of unique id clash.
#jira UE-31214
Change 3002026 on 2016/06/06 by Alexis.Matte
Importing morph target should not import textures like materials since the base mesh already import thoses.
UDN Question:
https://udn.unrealengine.com/questions/293973/does-importing-an-fbx-with-morph-targets-cause-a-m.html
Change 3002623 on 2016/06/06 by Jamie.Dale
Fixing more loc conflicts
Change 3002883 on 2016/06/06 by Jamie.Dale
Adding retry when dealing with OneSky
This is attempting to compensate for some timeouts with OneSky, which were also noticed when testing UE-31413
Change 3003004 on 2016/06/06 by Trung.Le
#jira UE-13101 - Make "Description" field for a BluePrint Function multiline
Change 3003859 on 2016/06/07 by Alexis.Matte
#jira UE-30436 Refresh the property editor when a array element is added, remove, insert, delete and the property is favorite
Change 3004132 on 2016/06/07 by Jamie.Dale
Fixed a hash conflict that could occur when both the case-sensitive and case-insensitive FName hashes were identical
This resulted in the case-preserving FName being added to the head of the linked list for the bucket, which caused any subsequent name lookups to return that name index for the comparison index (since it matched an insensitive string comparison), rather than the name index of the first case-variant of that name that was added to the bucket.
This change has new entries be inserted at the tail of the list, which ensures that enumeration for a case-insensitive name will always find the same entry in the bucket (the first one that was ever added) and will continue to compare correctly.
Change 3004286 on 2016/06/07 by Jamie.Dale
Ensured that assignments that publish new names to the bucket are atomic
Change 3004310 on 2016/06/07 by Jamie.Dale
Ensured FName internal hashes are returned as uint16
Change 3004381 on 2016/06/07 by Jamie.Dale
FAsyncPackage now creates the meta-data before processing the remaining exports
This matches the behavior of FLinkerLoad::LoadAllObjects, as other objects may depend on the meta-data being loaded before them.
Change 3004765 on 2016/06/07 by Alex.Delesky
#jira UE-31498 - Material thumbnails will now render the full sphere rather than an extreme close-up of the material.
Change 3005754 on 2016/06/08 by Trung.Le
Allow whitespace for meta class names
#jira UE-31668
Change 3005755 on 2016/06/08 by Stephan.Jiang
UMGSequencePlayer implements GetPlaybackContext() and return UserWidget->GetWorld() if it's valid
#jira UE-31299
Change 3006512 on 2016/06/08 by Alex.Delesky
#jira UE-31572 - The "All Classes" tab in the Modes panel will now refresh when a placeable asset is created, renamed, or deleted without needed to navigate away from the tab first.
Change 3006760 on 2016/06/08 by Jamie.Dale
Added support for stable localization keys
This feature adds support for preserving the existing key of an FText property when editing the source string, providing that it is the only reference to that string within the package. A side effect of this is that you're now able to specify custom keys for FText properties since we can now verify that the custom key won't cause an identity conflict.
In order to limit the search domain for uniqueness to a single package, we've added the concept of a "localization namespace" to packages (stored in the meta-data). Each package is given a unique namespace, which is appended to the user-defined namespace of the text when it is modified, saved, or duplicated. This package namespace ensures that the same user-defined namespace and key may be used in different packages without causing an identity conflict.
In order to access the package namespace within the Core code that hosts FText (which doesn't know about UPackage), FArchive now provides a GetLocalizationNamespace function to access the package namespace within the Core code, and a SetLocalizationNamespace function for CoreUObject and Engine code to pass down the package namespace from their packages.
If you have an archive that handles duplicating objects into a different package, or duplicating packages themselves, then you'll want to make sure it's setting the package namespace correctly. FObjectReader and FObjectWriter have been updated to do this, and serve as a good example. FDuplicateDataReader (used by StaticDuplicateObject), and FCopyPropertiesArchiveObjectWriter (used when compiling Blueprints) have also been updated to set the package namespace, as they both handle copying objects between packages. TextNamespaceUtil provides a suite of functions for getting at (or setting) the namespace for a package.
Keys will start to stabilize naturally over time once this feature is enabled, however the StabilizeLocalizationKeys commandlet may also be used to stabilize all the keys for a game at once. Running it for a game under source control would look something like this:
MyGame -run=StabilizeLocalizationKeys -IncludeGame -NativeCulture=en -EnableSCC
This commandlet also updates your localization archives to use the new text identities, however you'll still need to run a localization gather and localization compile before the updated translations will be available for your game.
Note: This feature is currently disabled via the USE_STABLE_LOCALIZATION_KEYS define. It will be enabled at a later date.
#jira UETOOL-796
Change 3007501 on 2016/06/09 by Trung.Le
#jira UE-31722
Fix MaterialFunctions crash when editing text in Libraries Category Text field. Solution: Removed PredEdit and PostEdit from IEditableTextProperty, its derived types and other code that was calling them. The new SetText method already calls NotifyPreChange and NotifyPostChange to properly create/destroy ScopedTransaction.
Change 3007524 on 2016/06/09 by Jamie.Dale
Added some additional checks to avoid re-keying text when duplicating for PIE
Change 3007564 on 2016/06/09 by Jamie.Dale
PR #2401: DataTable import/export improvements (Contributed by bozaro)
Change 3007653 on 2016/06/09 by Jamie.Dale
PR #2459: Generate JSON for nested structs in DataTable rows (Contributed by jorgenpt)
Change 3008019 on 2016/06/09 by Jamie.Dale
Updated structs to export as JSON when displaying them in the Data Table editor
This produces much cleaner results than using the text export method (which will use the internal names for user defined structs).
This also cleans up the FDataTableExporterCSV and FDataTableExporterJSON APIs so that you don't need to pass in a UDataTable if you're not going to use it.
#jira UE-29958
Change 3008052 on 2016/06/09 by Jamie.Dale
Fixed bug importing an array inside a JSON Data Table
This was noticed when testing a GitHub PR, but the JSON importer for a Data Table was appending the new data to the array rather than replacing it. It now clears the array prior to importing.
Change 3008875 on 2016/06/10 by Jamie.Dale
PR #2406: Git plugin: Fix for Git diff not working in UE 4.12 (and master) (Contributed by SRombauts)
Change 3008879 on 2016/06/10 by Jamie.Dale
PR #2484: Git Plugin: fix the Submit To Source Control menu broken by new "migrate" support in 4.12 (and master) (Contributed by SRombauts)
Change 3008990 on 2016/06/10 by Alex.Delesky
#jira UE-15699 - Submitting to source control via the editor should now check for current asset status before prompting the user to submit their changes. This should prevent files that had been previously deleted from being readded to source.
Change 3008991 on 2016/06/10 by Alex.Delesky
#jira UE-31688 - The Output Log will now automatically anchor to the bottom of the scroll bar when the user scrolls all the way down using the mouse wheel or clicking and dragging the content window.
Change 3010856 on 2016/06/13 by Alexis.Matte
#jira UE-31713 Fix a serialize issue for skeletal mesh with apex cloth.
Change 3011736 on 2016/06/13 by Jamie.Dale
Adding missing plurals.res file
This is needed to get plural form information from ICU.
#jira UETOOL-875
Change 3012387 on 2016/06/14 by Richard.TalbotWatkin
Disabled the Paste context menu action if the property is marked as EditConst.
#jira UE-27469 - User is able to paste values into a read-only setting
Change 3012971 on 2016/06/14 by Stephan.Jiang
Editor Preferences->Widget Designer now have two options to toggle the visibilities of widgets created from Engine content folder and Developers folder.
By default, visibility for engine content is off and developers is on
#jira UE-31657
Change 3013111 on 2016/06/14 by Jamie.Dale
Unified the number, percentage, and currency formatting between the ICU and Legacy text implementations
Removed all the old legacy number formatting code, and removed the calls to the ICU specific number formatting. Everything is now using FastDecimalFormat as this will allow some optimizations later when formatting numbers in FText::Format.
Change 3015438 on 2016/06/15 by Cody.Albert
Fixing ScrollBy function to calculate new scroll offset based on the current scroll offset and not the current desired scroll offset (which may not be the same during an animation)
#jira UE-32082
Change 3016782 on 2016/06/16 by Richard.TalbotWatkin
Corrected ConvexHull2D so that it returns an empty set of indices when passed an empty points array.
Change 3016949 on 2016/06/16 by Jamie.Dale
Added FastDecimalFormat overloads to write into an existing string
This helps avoid an extra allocation if you already have a pre-sized string that you're writing the number to (as is the case in FText::Format).
Change 3016952 on 2016/06/16 by Jamie.Dale
Changed an Add for an Emplace to avoid moving a temporary
Change 3016954 on 2016/06/16 by Jamie.Dale
Updated some FText code to avoid creating temporary objects just to move data through a hierarchy
There was some code in FText and its internal types that were using pass-by-value as a marshaller to move data through a hierarchy. This resulted in temporary objects being created and destroyed to facilitate the movement of data.
This change has all the internal FText code (private FText constructors, internal text data, and internal text history) take its movable types as an r-value reference. This avoids the temporary objects, but also makes it impossible to accidentally copy a construction argument when you meant to move it (you can still copy, but the copy must be explicit).
In addition to this, FText::FromString and FText::AsCultureInvariant now have two overloads, const FString& and FString&&, to avoid them creating a temporary when you're invoking a move. FText::ChangeKey now takes its parameters by const& as their data wasn't being moved further down the chain, so the by-value copy was wasteful.
Change 3019021 on 2016/06/19 by Richard.TalbotWatkin
When deleting a brush, ensure geometry is rebuilt before updating the details panel according to the selection change, so that the old Surface Properties don't continue to appear.
#jira UE-8966 - Surface Properties of a BSP remain in the details panel after the BSP is deleted
Change 3019022 on 2016/06/19 by Richard.TalbotWatkin
Fixed issue where the Surface Properties category in the Details panel doesn't appear after selecting a surface on a Brush which has just been placed.
#jira UE-31916 - Selecting an edge of BSP geometry then a face does not show Surface Properties while in Place mode
#jira UE-31915 - Selecting BSP face does not show Surface Properties in Details
Change 3019025 on 2016/06/19 by Richard.TalbotWatkin
Fixed issue which was stopping 'Cancel' from correctly returning a 'Cancelled' result during P4 asynchronous ops.
#jira UE-28595 - Submit to Source Control: "Checking for assets to check in..." cancel button does not cancel operation, editor becomes unresponsive
Change 3020050 on 2016/06/20 by Cody.Albert
Changed window centering logic to correctly work when monitor 1 isn't set to primary monitor.
#jira UE-32173
Change 3021145 on 2016/06/21 by Jamie.Dale
Added support for text format argument modifiers
These can be used to mutate a format argument before appending it to the resultant formatted string, and are applied to the preceding argument via a pipe, eg) "{Arg}|plural(one=is,other=are)".
We provide a few of these by default:
- |plural(key=val,...)
- |ordinal(key=val,...)
Provides support for cardinal and ordinal plural forms, where key may be any of "one", "two", "few", "many", or "other", and val may be any optionally quoted string.
- |gender(masculine,feminine,[neuter])
Provides support for gender forms, where the 0th item is the masculine version, the 1st item is the feminine version, and the 2nd item is an optional neuter version. The values may be any optionally quoted string.
- |hpp(consonant,vowel)
Provides support for Hangul post-positions, where the 0th item is the consonant suffix, and the 1st item is the verb suffix. The values may be any optionally quoted string.
Major changes:
- Exposed the ICU plural form handling via FCulture::GetPluralForm.
- Updated the FText formatting code to use an expression evaluator (to support the more complex expressions needed for the argument modifiers).
- Added FTextFormat to store a pre-compiled format expression. Re-using one of these if you're performing a lot of formats with the same FText will increase your performance (as around half of the FText::Format cost can be compilation, via an implicit construction of FTextFormat).
- Updated the FText::Format(...) family of functions to take their format string as FTextFormat, and take their arguments as FFormatArgumentValue. This allows us access to the real numeric types within the format code, but doesn't break the existing API as these types are implicitly constructible from the old parameters (FText).
- Converted text history to store their format string as an FTextFormat in-case they need to perform a re-format (this is still saved as an FText).
Breaking changes:
- The rules for the escape token have been simplified, and there is an incredibly unlikely chance that this may affect some text:
- The ` character will now only escape a valid character (producing only the escaped character in the final string), or it will be ignored and inserted as a literal character, eg) "`{F" -> "{F", and "`F" -> "`F".
- Previously it would also remove the escape character when it followed { or }, eg) "{`" -> "{" and "}`" -> "}", rather than "{`" and "}`" like you might expect. It would also have previously removed a ` at the end of a string due to a parser bug.
Change 3021156 on 2016/06/21 by Jamie.Dale
Updated LinuxToolChain to use the same output delegate for all of its actions when cross-compiling
This avoids the compile and link actions being split into different batches.
Change 3021280 on 2016/06/21 by Richard.TalbotWatkin
Fixed bug in parsing LOD in UStaticMeshComponent::ImportCustomProperties (thanks to Aurelien Cordonnier).
#jira UE-31937 - UDN code submission for UStaticMeshComponent::ImportCustomProperties parsing bug
Change 3022949 on 2016/06/22 by Alex.Delesky
#jira UE-31944 - Upgrading Subversion binaries to version 1.9.4.
Change 3023092 on 2016/06/22 by Jamie.Dale
Downgraded some checks to ensures and added an early out
#jira UE-32009
Change 3023154 on 2016/06/22 by Jamie.Dale
Ported over CL# 3018771 to the UE automation
This fixes an issue where a downloaded PO file smaller than the one already on disk leaving a mix of both files on disk (rather than the existing file on disk being truncated).
Change 3023579 on 2016/06/22 by Jamie.Dale
Expanded the Blueprint FormatText node to support numeric and gender types
These are needed to correctly support the new plural and gender forms that can be used in format strings, as these require actual numeric/enum data to be passed into the format arguments, rather than pre-formatted text.
Major changes:
- The FormatText node for Blueprints now uses PC_Wildcard as its pin type for format arguments instead of PC_Text.
- Any existing literal text argument data in the pin is hoisted out into a "Make Literal Text" node which is then connected to the pin.
- FFormatArgumentData has been updated to be variant on the data needed by Blueprints. It's now a less comprehensive and non-unioned version of FFormatArgumentValue.
- The version of FText::Format taking FFormatArgumentData has been deprecated as its usage was internal to Blueprints and we have much better ways to format text in C++. Any existing C++ using that (of which we have none internally) should be updated to use FFormatArgumentValue instead.
Change 3023915 on 2016/06/22 by Jamie.Dale
Cleaned up some of the UK2Node_FormatText expansion code to avoid unchecked literals
Change 3024813 on 2016/06/23 by Jamie.Dale
Renamed FContext to FManifestContext to better reflect its purpose and avoid naming conflicts with other code
Change 3024852 on 2016/06/23 by Nick.Darnell
FBX - Updating automation tests with the changes to chunk and chunk index removal and them being merged with sections.
Change 3024994 on 2016/06/23 by Nick.Darnell
UMG - Removing the DesignerWidgetTree, instead going to directly inject the widget tree into the partially constructed UUserWidget during design time, when refreshing the preview. This avoids doing something a little dangerous and sketchy like updating the living class instance with a new designer tree that all new instances will begin biasing using. Also making the preview widget explictly non-transactional as there's no reason to track changes to the preview, all the changes that need to be tracked should be on the template widget. This should fix the crash in the widget designer when you Undo just after compiling the widget blueprint.
#jira UE-31155
Change 3025194 on 2016/06/23 by Alex.Delesky
#jira UE-31155 - Compilation error fix.
Change 3025255 on 2016/06/23 by Alex.Delesky
#jira UE-21900 - Redoing changes done in CL 2994431 since it got stomped. Reinstates the grabber handles and ensures consistent scaling on the scale widget in orthographic viewports.
Change 3025460 on 2016/06/23 by Cody.Albert
Fixed issue where widget components would misalign when aspect ratio was being constrained
#jira UE-29637
Change 3025508 on 2016/06/23 by Cody.Albert
Adding support for adjusting animation playback speed
#jira UE-32222
Change 3026444 on 2016/06/24 by Jamie.Dale
Fixed crash caused by bad access of shared this when closing an active IME context
This was only needed to get the owner window, which we now cache when the IME context is created.
#jira UE-32240
Change 3028358 on 2016/06/27 by Jamie.Dale
Fixed IMEs not working due to no window being cached
#jira UE-32240
Change 3028464 on 2016/06/27 by Alex.Delesky
#jira UE-31873 - A single "Files need check-out" notification will now be shown instead of multiple notifications if multiple files need to be checked out, and updated as more files need to be checked out.
Change 3028524 on 2016/06/27 by Chris.Wood
Switched off uploads to legacy Crash Report Receiver.
[UE-31252] - Switch off deprecated CRR upload in Crash Report Client
Also added CRC version string, added to crash context from CRC config
Change 3028840 on 2016/06/27 by Alexis.Matte
#jira UE-32306 replace material bad name character by an underscore when doing a scen import.
Change 3028924 on 2016/06/27 by Alexis.Matte
#jira UE-32125 Make sure we can add a plan when a fbx file is drop in the fbx automation test folder
Change 3029044 on 2016/06/27 by Alex.Delesky
#jira UE-31944 - Updating SVN binaries for Mac to 1.9.4
Change 3029276 on 2016/06/27 by Alex.Delesky
#jira UE-31531 - A user can now select the base class when creating a new physical material.
PR #2462: added dialog, which enables picking base class for asset (Contributed by iniside)
Change 3029459 on 2016/06/27 by Alexis.Matte
#jira UE-32354 Make sure we set all blueprint component to the correct mobility set in the scene import options.
Change 3030577 on 2016/06/28 by Nick.Darnell
PR #2531: Git plugin: fix wrong status icons (Contributed by SRombauts)
Change 3030587 on 2016/06/28 by Alexis.Matte
#jira UE-32251 add missing body setup variables when restoring the body setup value after a re-import of a staticmesh
Change 3030946 on 2016/06/28 by Alexis.Matte
#jira UE-32515 prevent crash when re-import staticmesh userdata
Change 3031115 on 2016/06/28 by Jamie.Dale
The DDC builder now gives the shader compile worker a chance to catch up when it pauses to run a GC pass
This prevents an issue where the shader backlog could cause massive amounts of memory to be consumed.
Change 3031146 on 2016/06/28 by Jamie.Dale
Fixed errors when building with USE_STABLE_LOCALIZATION_KEYS enabled caused by UEdGraphPin no longer being a UObject
Change 3031357 on 2016/06/28 by Nick.Darnell
PR #2431: Add plugin support to the editor class wizard. (Contributed by Koderz)
Change 3031515 on 2016/06/28 by Jamie.Dale
Fixed game targets not being able to depend on other game targets
Change 3031520 on 2016/06/28 by Jamie.Dale
Localization compilation now specifies an ArchiveName to use
Change 3031671 on 2016/06/28 by Nick.Darnell
Editor - Checking to see if a weak variable is valid before using it in the editor build window.
Change 3032013 on 2016/06/28 by Matt.Kuhlenschmidt
Added ability to invert the Y axis in editor viewports for mouse look and orbit
Change 3032495 on 2016/06/29 by Jamie.Dale
Fixed some measuring issues with bi-directional text within a right-flowed document
There were three main issues:
1) Measuring blocks was measuring visual glyphs rather than logical glyphs (this caused bad measures/wrapping and overlapped rendering).
2) The text layout would consider blocks visually contiguous without making sure the block flow direction matched the line flow direction (this caused bad highlights).
3) The text layout would fail to compensate for a non-contiguous block that had a flow direction different to the line flow direction (it was hard-coded for RTL in LTR, so broke for LTR in RTL - this caused bad highlights).
#jira UE-32526
Change 3032533 on 2016/06/29 by Nick.Darnell
UMG - The widget component now extends from UMeshComponent, it can have a custom material applied to it, in order to achieve cooler effects - like ignoring the depth buffer. Users who use this option are encouraged to start with the widget components default material and work from there. The widget component now offers the ability to automatically size the render target to be the desired size of the widget - note that this can go real bad if your widget wants to be really big.
Change 3032855 on 2016/06/29 by Alexis.Matte
#jira UE-32508 Remove the cachewindow from the FTextInputMethodContext constructor since it will be cache only when the IME is activated
#test please re-test also UE-32240
Change 3033145 on 2016/06/29 by Alex.Delesky
#jira UE-32239 - The PropertyEditorModule will no longer cause a crash on editor shutdown if a SDetailsView widget tries to force refresh itself when the Slate application is no longer initialized.
Change 3033147 on 2016/06/29 by Alex.Delesky
#jira UE-32326 - Clicking on the "Install {compiler}" button when trying to create a new code class or code project will now not crash the engine if it fails to open the installation file for write, nor will it create multiple notifications if the button is pressed repeatedly.
This also addresses a potential issue with static initialization order when it comes to adding TickableEditorObjects to its corresponding array, since it was wholly possible for a statically initialized TickableEditorObject to initialize itself and add itself to the tickable objects arra before the tickable objects array was initialized, causing that object to not get ticked at runtime and causing a crash when the editor was closed.
Change 3033162 on 2016/06/29 by Alex.Delesky
#jira UE-31827 - Undo/redo now works in the Material function editor.
Change 3033391 on 2016/06/29 by Matt.Kuhlenschmidt
Fix post process settings blendable picker not being readable in the details panel
Change 3033498 on 2016/06/29 by Matt.Kuhlenschmidt
Fixed huge number of redundant calls to CanEditChange and
DiffersFromDefault that were causing massive performance loss when
thousands of objects are selected. CanEditChange and DiffersFromDefault
are now cached each time a property value changes.
Fixed redundant calls for getting visualizers for each selected
object. This is now cached on selection
Change 3033504 on 2016/06/29 by Matt.Kuhlenschmidt
Fix Mass customization on the body instance not working with undo/redo or reset to default
Change 3034357 on 2016/06/30 by Alex.Delesky
#jira UE-31184 - Renamed the multiple collision components in the cascade particle system to more accurately reflect what they represent.
Change 3035915 on 2016/07/01 by Richard.TalbotWatkin
Fix to SListPanel so that those with horizontal arrangement (i.e. from STileView) use the number of desired items instead of the number of actual items in order to calculate the desired size of the geometry. This fixes the case where an STileView is contained within an SScrollBox.
#jira UE-32195 - STileView no longer works correctly when placed inside of a SScrollBox
Change 3035951 on 2016/07/01 by Richard.TalbotWatkin
Fixed issue when importing a brush, so that the brush is always validated (relinked), whether it be a static or dynamic brush. This is because the process of rebuilding a dynamic brush sets the link indices to signify FBspSurf indices from the UModel instead of FPoly indices (the FPoly::iLink member is overloaded in its meaning). Always forcing a relink correctly sets the linked list of coplanars.
#jira UE-32087 - Crash occurs when creating Static Mesh from Trigger Volume
Change 3036991 on 2016/07/04 by Alexis.Matte
#jira UETOOL-901 Scene importer now support the rigid mesh animation
Change 3037037 on 2016/07/04 by Jamie.Dale
Fixed regression in editable text box alignment
Text was no longer vertically aligned center since SEditableText was converted to use a text layout. This vertical alignment is now handled by the outer SEditableTextBox instead.
Change 3037057 on 2016/07/04 by Richard.TalbotWatkin
Fixed screenshots when running automation tests so that they are saved locally when a FAutomationWorkerScreenMessage is received.
#jira UE-29815 - In-game screenshot isn't working under certain circumstances
Change 3037082 on 2016/07/04 by Chris.Wood
Added detection of asserts and passing assert flag and crash type string to crash reports.
[UE-30592] - Crash Reporter should determine crash type on client and pass string to server
Reviewe by Steve with reservations about the static variable for setting asserted state. While not thread-aware, this is probably accurate enough for the purpose of crash reporting, certainly for now. I'm submitting it like this because the work required to add fully thread-aware fix is not necessary at this point.
Change 3037095 on 2016/07/04 by Alexis.Matte
Fix the bone name when duplicating a socket.
Change 3037453 on 2016/07/05 by Stephan.Jiang
Adding ability to animate the root wigdet #2
FHierarchyRoot adds the preview widget instead of CDO to selectedobjects in widgetblueprint
the properties are then migrated back to the CDO
#UE 31810
Change 3037487 on 2016/07/05 by Jamie.Dale
Fixed crash caused by stale BP pointer
#jira UE-32325
Change 3037488 on 2016/07/05 by Jamie.Dale
Fixed a crash that could occur when a class and a folder had the same name
Change 3037526 on 2016/07/05 by Jamie.Dale
Speculative fix for a potential race condition when shutting down the editor while a "launch" was in progress
The launch-thread could potentially queue up a request after the game-thread had requested it cancel, and cleared out any queued tasks. This change has the game-thread wait for the launch-thread to acknowledge its cancellation before continuing with editor shutdown.
#jira UE-17688
Change 3037557 on 2016/07/05 by Alex.Delesky
#jira UE-32424 - Added a safeguard to ensure that renaming a world that was duplicated from another world would not crash the editor if both worlds' lightmaps and shadowmaps were still active in memory, due to the editor attempting to rename identical textures from different packages to the same location.
The actual fix to this issue was performed in an earlier CL, but this should prevent the editor from crashing if the issue returns.
Change 3037558 on 2016/07/05 by Alex.Delesky
#jira UE-32285 - Importing assets to the Content Browser via drag and drop operations are no longer permitted while the UI file picker dialog is opened.
Change 3037559 on 2016/07/05 by Alex.Delesky
#jira UE-32075 - The user can no longer attempt to import non-FBX and non-OBJ files when importing into a level.
Change 3037593 on 2016/07/05 by Stephan.Jiang
GitHub #2549: Add function for setting the playback rate of UMG animations
original code shelved in CL 3033449
#UE-32653
Change 3037605 on 2016/07/05 by Jamie.Dale
Fixed infinite recursion that could happen when gather loc from an object with a custom callback
#jira UE-32670
Change 3037649 on 2016/07/05 by Nick.Darnell
PR #2538: [WidgetBlueprintLibrary] GetAllWidgetsOfClass, Added META ~ DeterminesOutputType, DynamicOutputParam, removes the need for extra cast, Rama (Contributed by EverNewJoy)
Change 3037652 on 2016/07/05 by Nick.Darnell
Clean - Removing commented out code.
Change 3037658 on 2016/07/05 by Matt.Kuhlenschmidt
Fix initial hitch when dragging around in a color picker opened from a material expression node.
Change 3037679 on 2016/07/05 by Nick.Darnell
Engine - Texture2D no longer forces the MIP level to 0 for TextureGroup_UI textures.
Change 3037757 on 2016/07/05 by Nick.Darnell
PR #2447: WebBrowser widget: Added GetUrl method and OnUrlChanged property (Contributed by nelbok)
Change 3037840 on 2016/07/05 by Nick.Darnell
UMG - Now allowing for spirtes to be used just like textures and materials on UMG widgets anywhere that takes a brush, can now also take a Sprite. There is now a ISlateTextureAtlasInterface interface that any UObject may now implement if it wishes to integrate with UMG to provide its atlas data in a form Slate can understand.
Change 3037924 on 2016/07/05 by Jamie.Dale
Re-ordered variable initialization to appease a warning on Mac
Change 3037981 on 2016/07/05 by Jamie.Dale
Fixed crash where FColorStructCustomization could call SetPerObjectValues with an empty array
#jira UE-32639
Change 3038075 on 2016/07/05 by Cody.Albert
Removed misleading error message in HandleCECommand
#jira 28007
Change 3038231 on 2016/07/05 by Alexis.Matte
#jira UE-30694 We set the section collision only if there is an imported collision or a generated one. If there is no collision we do not set the collision flag.
Change 3038275 on 2016/07/05 by Alex.Delesky
#jira UE-32689 - "Game Gets Mouse Control" will now override the Capture Mouse on Launch setting when launching the game from within a Level Viewport (i.e., within the editor window itself).
Change 3039310 on 2016/07/06 by Trung.Le
#jira UE-25005 Change PIE Key Bindings
- Removed Shift+F1 and Esc from BaseInput.ini
- Created new customizable key binding for
+ Shift+F1: same functionality.
+ Esc: now will pause the play session and bring back the mouse cursor. Clicking the mouse on the viewport should resume play session.
+ Shift+Esc: now will stop the play session
Change 3039458 on 2016/07/06 by Trung.Le
Removed unused code in StaticMeshLight.cpp
Change 3039827 on 2016/07/06 by Frank.Fella
FString - Fix divide overload path concatenation for empty paths since there are several places in the engine that expect using that doing { path / "" } will append a / onto path.
#jira UE-31959
Change 3041094 on 2016/07/07 by Nick.Darnell
WebBrowser - Fixing an issue where the web browser widget plugin wasn't loading soon enough to be properly loaded in time if it was referenced by game nessesary content thatloads in the Default stage of the pipeline, so moving it to PreDefault.
#jira UE-32694
Change 3041110 on 2016/07/07 by Matt.Kuhlenschmidt
Fix visualizers on blueprint actors not working when the internal components are trashed and replaced
Change 3041302 on 2016/07/07 by Chris.Wood
Increased buffer size for crash uploads.
[UE-32151] - High number of crashes read from S3 by Crash Report Process are failing to unpack
Trivial change in dev branch - no code review
Change 3041969 on 2016/07/07 by Nick.Darnell
UMG - Input Key Selector now no longer adds a bogus Selected Key property to the details panel.
Change 3041971 on 2016/07/07 by Nick.Darnell
UMG - Not using separate settings for the Engine/Developer folders visible in the UMG palette, now just using the same setting that powers the content browser.
Change 3042612 on 2016/07/08 by Trung.Le
#jira UE-25005, set Shift+Esc defaults to toggle play/pause and Esc remains defaults to quit
Change 3042732 on 2016/07/08 by mitchell.wilson
Adding test content for UMG Paper 2d Atlas test
Change 3042780 on 2016/07/08 by mitchell.wilson
Updating UMG_Paper2d test content for UMG Paper 2d Atlas testing
Change 3042870 on 2016/07/08 by mitchell.wilson
Renaming UMG_Paper2d to UMG_Sprite
Change 3044104 on 2016/07/10 by Nick.Darnell
PR #2104: Improved widget input support (Contributed by projectgheist)
Change 3044107 on 2016/07/10 by Nick.Darnell
Slate - Fixing the slider handle rendering to no longer run off the edge and get cut off.
#jira UE-25750
Change 3044377 on 2016/07/11 by Chris.Wood
Add Slack messaging module - Epic Friday
Change 3044536 on 2016/07/11 by Alex.Delesky
#jira UE-7293 - Mouse locking to viewport is now determined off an enum instead of a boolean, to allow for more flexibility when upgrading with new features.
Change 3044922 on 2016/07/11 by Nick.Darnell
Slate/UMG - Working on better support for VR interactions with Slate widgets. This change fixes a lot of issues with the way interaction works with slate widgets rendered in the virtual world. Breakages, direct mouse interaction with widgets in the virtual world is no longer supported. Those kinds of interactions must all use the WidgetInteractionComponent now, which by default works similar to the lasers in VREditor for interaction. However - you can disable automatic hittesting, and instead provide a custom hitresult instead if you want to use screen tracing and act like you're just a mouse cursor that is supported. Menu anchors now properly function inside of widgets in the virtual world. Performance improvements - the viewport no longer arranges all 3d widgets every frame. Additionally, Widget Components now support a whole bunch of methods for reducing how often they redraw to help control performance, they also support manual refresh. This automatically works in tandem with the widget interaction component to request refresh whenever the widget interaction component is interacting with the widget, thus giving you a simple way to only redraw widgets that the user is hovering on top of. Unrelated - this change also fixes Stop navigation commands not working with Next/Prev navigation - Wrap is still unsupported.
Change 3045157 on 2016/07/11 by Nick.Darnell
Slate - Always consume the bottom face button of the analog cursor, even if it's a repeat.
Change 3045355 on 2016/07/11 by Matt.Kuhlenschmidt
Added logging for unreproducible top 10 crash in matinee when a track ends up not being able to add a keyframe
Change 3045358 on 2016/07/11 by Alex.Delesky
#jira UE-31179 - The editor should now log additional information and hit an assertion if the editor tries to construct FObjectOrAssetData using invalid data. This doesn't stop the crash, but should help get some extra info when it does break.
Change 3045371 on 2016/07/11 by Matt.Kuhlenschmidt
Enable the widget reflector from the editor console by typing "widgetreflector"
Change 3045387 on 2016/07/11 by Stephan.Jiang
Stripping off 'b' in the propertyname so that "Is Enabled" is animated properly.
#UE-31874
Change 3046093 on 2016/07/12 by Nick.Darnell
UMG - The Slider now exposes the IsFocusable option from Slate.
#jira UE-32960
Change 3046094 on 2016/07/12 by Alexis.Matte
#jira UE-32807 scene re-import blueprint hierarchy kept some part of old blueprint component value.
Change 3046104 on 2016/07/12 by Stephan.Jiang
typo "Syc" causing the "Sync" button doesn't show Slateicon
#UE-31409
Change 3046142 on 2016/07/12 by Nick.Darnell
Orion - Upgrading more code to use the new input mode functions and not the deprecated ones.
Change 3046165 on 2016/07/12 by Nick.Darnell
UMG - Fixing a crash on the widget component if the render target is null when reapplied through widget component data.
#jira UE-32844
Change 3046255 on 2016/07/12 by Nick.Darnell
UT - More build warning fixes for the new Input Mode methods.
Change 3046604 on 2016/07/12 by Richard.Hinckley
Adding a template file and code to support creating a UInterface directly from the New C++ Class wizard.
Change 3047071 on 2016/07/12 by Matt.Kuhlenschmidt
Better way of summoning the widget reflector from the console
Change 3047842 on 2016/07/13 by Matt.Kuhlenschmidt
Mark Subdivision surface setting as advanced since it is experimental and definitely for advanced users only
Change 3048754 on 2016/07/13 by Trung.Le
#jira UE-32159 Automatically regain focus after user gets mouse control during PIE session so we can continue process PIE keybinding commands
Change 3048756 on 2016/07/13 by Trung.Le
Removed default toggle pause/play keybinding from BaseInput.ini, instead we should use the action defined in DebuggerCommands that is customizable
Change 3048865 on 2016/07/13 by Trung.Le
#jira UE-32159 SGlobalPlayWorldActions widget shouldn't clear out active widget pointer when it's being handled properly
Change 3048892 on 2016/07/13 by Nick.Darnell
UMG - Fixing a problem with the interaction component, it now does some basic intelligent ignoring of anything it's attached to - excluding widget components. So it's easier to attach it to things that might be inside of a say a player collision capsule. Also removing the 'Max Interaction Distance' from the widget component as that is no longer the arbitor of interaction distance.
#jira UE-33250
Change 3049096 on 2016/07/13 by Trung.Le
Wrap SGlobalPlayActions around ViewportWidget instead of making it a child of ViewportWidget. This was causing PIE to stop working when there are other UMG in game.
#jira UE-33259
Change 3049177 on 2016/07/13 by Stephan.Jiang
Fixing the "No Animation Selected" tag shows up after switching back from Graph to Designer.
#UE-33016
Change 3049726 on 2016/07/14 by Stephan.Jiang
Adding icons for terrain mirror tool
#UE-20588
Change 3049957 on 2016/07/14 by Nick.Darnell
Slate - Fixing a small bug in the virtual user function - was preventing getting the same virtual user multiple times if it had already been created. Adding an option to the widget component to control the focusabilty of the underlying slate window that's created to host the widget content. Adding an option to the widget interaction component to control if it should be simulating mouse input at all - use this to effectively disable hit testing, and changing hover states and the like.
Change 3049994 on 2016/07/14 by Stephan.Jiang
Set viewed animtion to current animtion after switching from Graph to Designer
(This is for "No Animation Selected" showing up when switching)
#UE-33016
Change 3050194 on 2016/07/14 by Stephan.Jiang
Added ability to replace the widget the track is currently bound to
Also includes changes in WidgetBlueprintEditor to send delegate to AnimationtabSummoner when switching from Graph to Designer
#UE-31809
[CL 3050870 by Matt Kuhlenschmidt in Main branch]
2016-07-14 19:07:16 -04:00
PickerArgs . bOnlyRefreshOnMouseUp = true ;
2014-09-25 17:33:36 -04:00
PickerArgs . bExpandAdvancedSection = true ;
2014-03-14 14:13:41 -04:00
PickerArgs . DisplayGamma = TAttribute < float > : : Create ( TAttribute < float > : : FGetter : : CreateUObject ( GEngine , & UEngine : : GetDisplayGamma ) ) ;
PickerArgs . ColorChannelsArray = & Channels ;
PickerArgs . OnColorCommitted = FOnLinearColorValueChanged : : CreateSP ( this , & FMaterialEditor : : OnColorPickerCommitted ) ;
PickerArgs . PreColorCommitted = FOnLinearColorValueChanged : : CreateSP ( this , & FMaterialEditor : : PreColorPickerCommit ) ;
OpenColorPicker ( PickerArgs ) ;
}
UMaterialExpressionTextureSample * TextureExpression = Cast < UMaterialExpressionTextureSample > ( GraphNode - > MaterialExpression ) ;
UMaterialExpressionTextureSampleParameter * TextureParameterExpression = Cast < UMaterialExpressionTextureSampleParameter > ( GraphNode - > MaterialExpression ) ;
UMaterialExpressionMaterialFunctionCall * FunctionExpression = Cast < UMaterialExpressionMaterialFunctionCall > ( GraphNode - > MaterialExpression ) ;
UMaterialExpressionCollectionParameter * CollectionParameter = Cast < UMaterialExpressionCollectionParameter > ( GraphNode - > MaterialExpression ) ;
TArray < UObject * > ObjectsToView ;
UObject * ObjectToEdit = NULL ;
if ( TextureExpression & & TextureExpression - > Texture )
{
ObjectsToView . Add ( TextureExpression - > Texture ) ;
}
else if ( TextureParameterExpression & & TextureParameterExpression - > Texture )
{
ObjectsToView . Add ( TextureParameterExpression - > Texture ) ;
}
else if ( FunctionExpression & & FunctionExpression - > MaterialFunction )
{
ObjectToEdit = FunctionExpression - > MaterialFunction ;
}
else if ( CollectionParameter & & CollectionParameter - > Collection )
{
ObjectToEdit = CollectionParameter - > Collection ;
}
if ( ObjectsToView . Num ( ) > 0 )
{
GEditor - > SyncBrowserToObjects ( ObjectsToView ) ;
}
if ( ObjectToEdit )
{
FAssetEditorManager : : Get ( ) . OpenEditorForAsset ( ObjectToEdit ) ;
}
}
}
void FMaterialEditor : : OnNodeTitleCommitted ( const FText & NewText , ETextCommit : : Type CommitInfo , UEdGraphNode * NodeBeingChanged )
{
if ( NodeBeingChanged )
{
const FScopedTransaction Transaction ( LOCTEXT ( " RenameNode " , " Rename Node " ) ) ;
NodeBeingChanged - > Modify ( ) ;
NodeBeingChanged - > OnRenameNode ( NewText . ToString ( ) ) ;
}
}
2015-06-10 13:53:25 -04:00
bool FMaterialEditor : : OnVerifyNodeTextCommit ( const FText & NewText , UEdGraphNode * NodeBeingChanged , FText & OutErrorMessage )
{
bool bValid = true ;
UMaterialGraphNode * MaterialNode = Cast < UMaterialGraphNode > ( NodeBeingChanged ) ;
if ( MaterialNode & & MaterialNode - > MaterialExpression & & MaterialNode - > MaterialExpression - > IsA < UMaterialExpressionParameter > ( ) )
{
if ( NewText . ToString ( ) . Len ( ) > NAME_SIZE )
{
OutErrorMessage = FText : : Format ( LOCTEXT ( " MaterialEditorExpressionError_NameTooLong " , " Parameter names must be less than {0} characters " ) , FText : : AsNumber ( NAME_SIZE ) ) ;
bValid = false ;
}
}
return bValid ;
}
2015-03-17 11:36:28 -04:00
FReply FMaterialEditor : : OnSpawnGraphNodeByShortcut ( FInputChord InChord , const FVector2D & InPosition , UEdGraph * InGraph )
2014-03-14 14:13:41 -04:00
{
UEdGraph * Graph = InGraph ;
2015-03-17 11:36:28 -04:00
TSharedPtr < FEdGraphSchemaAction > Action = FMaterialEditorSpawnNodeCommands : : Get ( ) . GetGraphActionByChord ( InChord , InGraph ) ;
2014-03-14 14:13:41 -04:00
if ( Action . IsValid ( ) )
{
TArray < UEdGraphPin * > DummyPins ;
Action - > PerformAction ( Graph , DummyPins , InPosition ) ;
return FReply : : Handled ( ) ;
}
return FReply : : Unhandled ( ) ;
}
2014-04-23 20:20:58 -04:00
void FMaterialEditor : : UpdateStatsMaterials ( )
2014-03-14 14:13:41 -04:00
{
2014-04-23 20:20:58 -04:00
if ( bShowBuiltinStats & & bStatsFromPreviewMaterial )
{
UMaterial * StatsMaterial = Material ;
FString EmptyMaterialName = FString ( TEXT ( " MEStatsMaterial_Empty_ " ) ) + Material - > GetName ( ) ;
EmptyMaterial = ( UMaterial * ) StaticDuplicateObject ( Material , GetTransientPackage ( ) , * EmptyMaterialName , ~ RF_Standalone , UPreviewMaterial : : StaticClass ( ) ) ;
2014-03-14 14:13:41 -04:00
2014-04-23 20:20:58 -04:00
EmptyMaterial - > SetFeatureLevelToCompile ( ERHIFeatureLevel : : ES2 , bShowMobileStats ) ;
EmptyMaterial - > Expressions . Empty ( ) ;
//Disconnect all properties from the expressions
for ( int32 PropIdx = 0 ; PropIdx < MP_MAX ; + + PropIdx )
{
FExpressionInput * ExpInput = EmptyMaterial - > GetExpressionInputForProperty ( ( EMaterialProperty ) PropIdx ) ;
2014-10-08 15:27:19 -04:00
if ( ExpInput )
{
ExpInput - > Expression = NULL ;
}
2014-04-23 20:20:58 -04:00
}
EmptyMaterial - > bAllowDevelopmentShaderCompile = Material - > bAllowDevelopmentShaderCompile ;
EmptyMaterial - > PreEditChange ( NULL ) ;
EmptyMaterial - > PostEditChange ( ) ;
2014-04-23 17:43:00 -04:00
}
2014-03-14 14:13:41 -04:00
}
# undef LOCTEXT_NAMESPACE