Files
UnrealEngineUWP/Engine/Source/Editor/AnimGraph/Private/AnimGraphNode_ModifyCurve.cpp
Marc Audy ccd8bf19ac Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3182037)
#rb None
#lockdown Nick.Penwarden

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

Change 2825716 on 2016/01/12 by Marc.Audy

	Fix GrabDebugSnapshot virtual function definitions in Ocean

Change 2828462 on 2016/01/14 by Marc.Audy

	Back out changelist 2825716

Change 3153526 on 2016/10/06 by Zak.Middleton

	#ue4 - Fix CharacterMovement hanging on to a bad/penetrating floor check result and not continuing to check for a valid floor. Only occured if bAlwaysCheckFloor was false. This could in rare situations cause the character to continue to attempt to depenetrate an object far away from it until another floor check occured. To prevent this we now force a floor check after the depenetration.

	Related to OR-14528.

Change 3153580 on 2016/10/06 by Benn.Gallagher

	Skeletal LOD workflow refactor. Now we track source files for LODs to save time when reimporting LODs often. It's still possible to pick new files and overwrite the current settings.
	#jira UE-36588

Change 3154264 on 2016/10/06 by Aaron.McLeran

	UE-37004 UE-37005 Fixing stat soundwaves

Change 3154560 on 2016/10/07 by James.Golding

	UE-20739 Fix auto box in Morph Target Preview panel

Change 3154776 on 2016/10/07 by Ben.Zeigler

	#Fortnite Change the ability UI to use the Tag UI data instead of the Tag Categories, as Tag Categories were redundant and are being removed in the tag refactor. I'm not sure this code is actually in use any more.

Change 3154954 on 2016/10/07 by Ben.Zeigler

	Move GameplayTagsEditor to a plugin, and change GameplayTagsManager to be accessed directly without the module load overhead, as it is part of the engine module set.
	Performance improvements to GameplayTags to maintain a ParentTag list when tag containers get modified. It does a quick update on add, and a slow recompute on other changes. This leads to a 10x improvement in IncludeParent queries
	Replace RemoveAllTags and RemoveAllTagsKeepSlack with Reset, which already existed but didnt work correctly.
	Removed the Category map from gameplay tags, games are using other systems to do translateable text.
	Significant internal changes to GameplayTagsManager, moved from 3 redundant maps to 1 map and removed unused functionality

Change 3154955 on 2016/10/07 by Ben.Zeigler

	Game compile fixes for changes to GameplayTags module and API. Removed redundant calls to remove tags, TagContainer uses Reset() like other container types

Change 3154995 on 2016/10/07 by Aaron.McLeran

	UE-37012 fix compile issue

Change 3155009 on 2016/10/07 by Aaron.McLeran

	UE-37009 Ensure failed for FXAudio2SoundBuffer::Seek() in XAudio2Buffer.cpp

	- Removing ensure and using if statement instead. It looks possible for decompression state to fail to be created, that state is logged elsewhere.

Change 3155128 on 2016/10/07 by Ben.Zeigler

	Add old location of GameplayTagsEditor to junk manifest

Change 3155268 on 2016/10/07 by Aaron.McLeran

	UE-37024 Set Sound Mix Class Override still Playing Sounds in Certain Conditions

Change 3155561 on 2016/10/07 by Ben.Zeigler

	GameplayTag fixes made based on code review feedback:
	Deprecate custom node for making a literal gameplay tag container and add proper make and break functions to the blueprint library
	Remove direct access to the tag container internals as it has always been unsafe
	Add many missing utility functions to the library and change things to pass FGameplayTag by value. TagContainers must still be passed by reference though as they are large
	Fix case where comparing two containers with the tags in different orders would fail
	Remove deprecated serialization entirely, print error when trying to load very old tags
	Add RemoveAllTags and RemoveAllTagsKeepSlack back to container, but deprecate them

Change 3155842 on 2016/10/07 by dan.reynolds

	AEOverview Update - Attenuation Shapes Test Map + Counting Test Assets

Change 3156779 on 2016/10/10 by Richard.Hinckley

	Fixing/reordering comments for basic types.

Change 3156926 on 2016/10/10 by Ben.Zeigler

	Remove deprecated gameplay ability system code involving non-BP gameplay effects and ActiveGameplayEffectQueries

Change 3156998 on 2016/10/10 by Jon.Nabozny

	Include K2Node_BaseAsyncAction.h in K2Node_AsyncAction.h to fix compile issue.

Change 3158732 on 2016/10/11 by Zak.Middleton

	#ue4 - Don't allow the first move in SafeMoveUpdatedComponent() to ignore penetration when slowly moving out of an object. We really want to pop out completely using the MTD as fast as possible or we can fall through the object in a longer direction.

	#jira UE-28610

Change 3159208 on 2016/10/11 by dan.reynolds

	Added ancillary SoundClass Passive Mix Modifier Duration Test map

Change 3159211 on 2016/10/11 by Aaron.McLeran

	UE-37193 Fixing passive sound mix modifier

Change 3159278 on 2016/10/11 by dan.reynolds

	AEOverviewMain integration with the SCO Passive Mix Modifier Duration Test map for additional testing purposes.

	Also tweaks and clean-up of SCOverviewPassMixModDuration map and associated Platform_Blueprint

Change 3159596 on 2016/10/12 by danny.bouimad

	Updates to TM-Meshbake

Change 3159629 on 2016/10/12 by James.Golding

	Add ModifyCurve anim node
	Make GetPinAssociatedProperty const correct

Change 3159705 on 2016/10/12 by James.Golding

	Add 'ApplyMode' and  'Alpha' options to ModifyCurve node

Change 3159959 on 2016/10/12 by John.Abercrombie

	Integrate CL 3159892 from //Fortnite/Main/...

	Fixed the Blackboard component pausing but never being unpaused if we ended up restarting the Behavior Tree instead of continuing

	#ue4

Change 3160014 on 2016/10/12 by Lukasz.Furman

	pass on gameplay debugger in Simulate in Editor mode
	#jira UE-36123

Change 3160027 on 2016/10/12 by Lukasz.Furman

	fixed behavior tree task restart conditions
	copy of CL 3159145
	#ue4

Change 3160129 on 2016/10/12 by Lukasz.Furman

	gameplay debugger refactor: removed deprecated code
	#ue4

Change 3160389 on 2016/10/12 by Lukasz.Furman

	added missing include path to gameplay debugger module
	#ue4

Change 3160408 on 2016/10/12 by Lukasz.Furman

	refactored sanity checks in gameplay debugger EdMode to keep static analysis happy
	#ue4

Change 3161143 on 2016/10/13 by James.Golding

	UE-37208 UE-37207 Fix AnimNode_ModifyCruve CIS error

Change 3161227 on 2016/10/13 by danny.bouimad

	More changes to meshmergemap

Change 3161777 on 2016/10/13 by Ben.Zeigler

	API changes for GameplayTag and Container, and fix Redirect loading
	Remove Match type and empty count as match bool from common API
	In C++ use MatchTag/MatchAny/HasTag/HasAny/HasAll with *Exact variants for exact matching. Old C++ API is still there but I will deprecate and remove soon
	In Blueprint use MatchTag/MatchAny/HasTag/HasAny/HasAll with bool parameter for as the bool is more clear. I was able to convert old functions to new ones as no one was overriding the options I removed
	Undeprecate the old make literal node and temporarily set GameplayTags in container to be editable. We're not allowed to deprecate things until our internal games fix their usage.

Change 3162095 on 2016/10/13 by Jon.Nabozny

	Fix bad default screen resolution in Platformer Game.

	#jira UE-34901

Change 3163351 on 2016/10/14 by Marc.Audy

	Avoid duplicate accessor calls

Change 3163364 on 2016/10/14 by Marc.Audy

	Eliminate auto
	Use ForEachObjectWithOuter

Change 3163367 on 2016/10/14 by Marc.Audy

	Use ForEachObjectWithOuter instead of GetObjectsWithOuter

Change 3163500 on 2016/10/14 by Marc.Audy

	When using SetCullDistance property for static meshes correctly update the cached value
	#jira UE-36891

Change 3163674 on 2016/10/14 by Jon.Nabozny

	#rn Fix popping in OnRep_ReplicatedAnimMontage.

	#jira UE-37056

Change 3164818 on 2016/10/17 by Ori.Cohen

	Added a pose snapshot feature that allows users to convert an existing skeletal mesh pose into a node inside the anim blueprint. This is useful for things like getup from ragdoll.

Change 3164903 on 2016/10/17 by Lukasz.Furman

	fixed bug in merging behavior tree searches
	#ue4

Change 3165236 on 2016/10/17 by dan.reynolds

	Fixes and tweaks based on feedback:

	- Made most objects Stationary to assist in dynamic lighting changes as sub-levels have unknown orientation until load

	- Fixed Blueprint Control map to stop test when the player leaves the zone

	- Fixed Blueprint Contorl map typos

Change 3165323 on 2016/10/17 by Aaron.McLeran

	PS4 Audio Streaming

	- Refactored Opus audio streaming code to have the code which interfaces with audio streaming manager in format-agnostic code (so I can use for AT9 streaming)
	- Wrote an AT9 real-time decoder module (will be used in audio mixer)
	- Enabled streaming on PS4 platform
	- Refactored much of Ngs2 to be more in parity with our other platforms for real-time decoding (Significant changes to Ngs2Buffer)
	- Added support for Ngs2 buffer callbacks for when audio needs to be fed to sources rather than pushing data from game thread
	- Fixed A3D implementation: creating both a normal sampler rack and an A3D-specific sampler rack
	- Fixed up error handling code in Ngs2 so it actually reports real errors

Change 3165997 on 2016/10/18 by Richard.Hinckley

	Improving consistency of "New C++ Class" templates and fixing some shadow-variable issues.

Change 3166220 on 2016/10/18 by Aaron.McLeran

	 UE-37442 Build Tools Win64 completes with 28 errors

	- Changing include of appropriate file to not be in #if WITH_ENGINE block

Change 3166262 on 2016/10/18 by Aaron.McLeran

	UE-37441 Compile Ocean IOS, Compile FortniteClient Mac, Compile UE4Editor Mac complete with 11 errors

	Fixing up the original wave format parsing code in Audio.cpp to avoid redefinitions. This code needs to be removed eventually in favor of the new wave format parser class.

Change 3166562 on 2016/10/18 by Aaron.McLeran

	UE-37441 Fixing compile on Mac

	- Renamed FFormatChunk to FRiffFormatChunk

Change 3166653 on 2016/10/18 by Aaron.McLeran

	 UE-37442 Build Tools Win64 completes with 28 errors

Change 3166917 on 2016/10/18 by Aaron.McLeran

	UE-37502 Initializing missed data members in FNgs2SoundSource constructor

Change 3167329 on 2016/10/19 by Benn.Gallagher

	Made wind properties editable on wind components, had to make the properties unsettable by blueprints and add setter functions so we can trigger render data updates from property updates.
	#jira UE-37500

Change 3167575 on 2016/10/19 by Jon.Nabozny

	#rn Fix UCharacterMovementComponent::OnTeleported improperly changing movement mode.

	#jira UE-37082

Change 3168079 on 2016/10/19 by Ori.Cohen

	Fix timing issue that causes snapshotpose to t-pose.

	#JIRA UE-37476

Change 3168392 on 2016/10/19 by dan.reynolds

	Updated AEOverviewMain with custom Attenuation FBXs to alleviate visual noise when observing complex attenuation shape falloff distances.

Change 3169121 on 2016/10/20 by danny.bouimad

	Updates to Merge actor assets

Change 3169128 on 2016/10/20 by Danny.Bouimad

	files

Change 3169230 on 2016/10/20 by Lina.Halper

	#improved log message

Change 3169243 on 2016/10/20 by Ben.Zeigler

	#jira UE-37515 Add UK2Node::ConvertDeprecatedNode which handles node-specific deprecation fixup.
	Add code to automatically convert from make/break struct nodes to native call function if there is a native override.
	This was hard coded for vector, etc but now works for any type that declares HasNativeMake/HasNativeBreak.
	Add serialize override to K2Node that serializes struct defaults when gathering references while saving. References declared in literal struct pins were being skipped
	Add specific fixups for GameplayTag make/break functions

Change 3169422 on 2016/10/20 by Aaron.McLeran

	UE-37596 Making detail customizations and experimental setting for sound base showing audiomixer-only features

Change 3169620 on 2016/10/20 by Ben.Zeigler

	Switch GameplayTagTests to use the new Custom test macro and better failure reporting.
	Add TestTrueExpr macro that runs TestTrue with the expression as the display string, like how ensure works.

Change 3169622 on 2016/10/20 by Ben.Zeigler

	Fix swapped HasAny logic and bad comments

Change 3169645 on 2016/10/20 by Aaron.McLeran

	Re-adding call to Stop source

Change 3169664 on 2016/10/20 by dan.reynolds

	AEOverviewMain Update - Fixed Menu bug where clicking the menu item after map reset resulted in requiring two attempts to actually reset the menu item properly.  Menu Hit interaction is now much more responsive.

Change 3169997 on 2016/10/20 by Ben.Zeigler

	Change from alloca to normal malloc, as static analysis doesn't like alloca in loops due to stack overflow danger

Change 3170796 on 2016/10/21 by Marc.Audy

	PR #2878: Prevent 'XXX has natively added scene component' warning in commandlets (Contributed by slonopotamus)
	#jira UE-37632

Change 3170802 on 2016/10/21 by Lina.Halper

	#ANIM: curve can link to joints
	 - this allows to filter certain curves per LOD - when the joint is discarded
	   -> refactored editor object tracker to allow multiple per class
	   -> refactored so that bone reference supports both skeleton or mesh but make sure you don't access invalid function when using skeleton indices
	 -  layer bone support

	#jira: UEFW-207

Change 3170857 on 2016/10/21 by Aaron.McLeran

	Disabling checking for device change

Change 3171101 on 2016/10/21 by Ben.Zeigler

	Deprecate old gameplay tag functions in favor of new API that doesn't use the enums or module header
	Add IsEmpty, Filter, FilterExact, and AddLeafTag to FGameplayTagContainer
	Add RequestGameplayTag, MatchesTagDepth and GetGameplayTagParents to FGameplayTag
	Remove MatchesEmpty parameter from tag asset interface. This defaulted to true but should now be explicitly checked with IsEmpty()
	Engine fixups for those changes

Change 3171102 on 2016/10/21 by Ben.Zeigler

	Internal game fixups for tag deprecation
	Moved some fortnite tags into the global tag list and fixed fortnite cases. Confident in these changes
	Fixed several weird tag uses in Orion. Dave and I should code review these changes as I was unsure on some of them
	Some minor changes for Ocean

Change 3171186 on 2016/10/21 by Ben.Zeigler

	File got missed in checkin

Change 3171239 on 2016/10/21 by Wes.Hunt

	TPSAudit updates.
	* Added /Verbose option that will print out the name of each file examined. Useful for debugging if a file was even checked.
	* Don't skip Content folders
	* Don't skip Engine\Documentation\HTML
	* Skip any Content\Localization folders instead of only Engine\Content\Localization
	* Skip any Content\Internationalization folders
	* Skip .raw, .exr, .r16, .abc, .webm, .collection, .aac files.
	* if a file has no extension (like configure files) then treat the filename as the extension
	* configure files are treated like shell files

Change 3171245 on 2016/10/21 by Ben.Zeigler

	Fix crash when saving nodes that reference properties from struct defaults. Switch FindImportedObject to be safe while saving, it will find existing objects but not load new ones.
	I am not sure why StaticFindObject is unsafe during save.

Change 3171248 on 2016/10/21 by Wes.Hunt

	TPSAudit: added /veryverbose which lists every file and directory excluded and the reason (file or dir exclusion). This makes the startup MUCH MUCH slower, so only use for debugging.

Change 3171256 on 2016/10/21 by Wes.Hunt

	ModuleManager shutdown fixes.
	* ShutdownModule is now called in reverse order to when StartupModule is FINISHED.
	* This allows modules to reference dependencies in their StartupModule to ensure they are loaded, and be sure they will still be around in ShutdownModule.
	* HTTPModule now shuts down in ShutdownModule and not PreUnloadCallback.
	* Added comments to Module headers to indicate this new change in behavior.
	* Removed manual startup of HTTP module in LaunchEngineLoop as it's no longer needed. Should save the module from being around if not really used by engine.

Change 3171258 on 2016/10/21 by Wes.Hunt

	ModuleManager shutdown fixes.
	* ShutdownModule is now called in reverse order to when StartupModule is FINISHED.
	* This allows modules to reference dependencies in their StartupModule to ensure they are loaded, and be sure they will still be around in ShutdownModule.
	* HTTPModule now shuts down in ShutdownModule and not PreUnloadCallback.
	* Added comments to Module headers to indicate this new change in behavior.
	* Removed manual startup of HTTP module in LaunchEngineLoop as it's no longer needed. Should save the module from being around if not really used by engine.

Change 3171946 on 2016/10/24 by Lina.Halper

	Fix so that it checks all the joints before removing

Change 3172126 on 2016/10/24 by Lukasz.Furman

	added navlink component
	#ue4

Change 3172152 on 2016/10/24 by Jon.Nabozny

	Remove UWorld::ComponentOverlapMulti indirection in UPrimitiveComponent::UpdateOverlaps.

	UWorldComponentOverlapMulti is just a wrapper that verifies the component is valid, then calls UPrimitiveComponent::ComponentOverlapMulti.

	#jira UE-36472

Change 3172364 on 2016/10/24 by Ben.Zeigler

	Codereview fixes for tag changes.
	Make Tag->Container constructor explicit to avoid bugs
	Fix some cases that were using exact to allow parents instead

Change 3173442 on 2016/10/25 by Jon.Nabozny

	Fixed crash when opening Anim asset after retargetting.

Change 3174123 on 2016/10/25 by Ben.Zeigler

	Add some ini tag data to QAGame, it's now setup to import some from DataTable, and some from ini. This enables the full management UI.

Change 3174394 on 2016/10/25 by dan.reynolds

	AEOverview update - added a Streaming Audio test which tests two streaming audio loops (one short, one long).

Change 3175197 on 2016/10/26 by Wes.Hunt

	Fix OSS module startup to directly reference HTTP and XMPP as a dependency in StartupModule. This should make MCP startup/shutdown more robust.
	#codereivew: sam.zamani,dmitry.rekman,josh.markiewicz

Change 3175236 on 2016/10/26 by Jon.Nabozny

	Change FMath::SegmentDistToSegmentSafe to handle the case where either (or both) of the input segments create points.
	Either segment may be considered a point if it's two points have a distance that's nearly 0.

	#jira UE-19251

Change 3175256 on 2016/10/26 by Jon.Nabozny

	Fix CIS for SegmentDistToSegmentSafe change.

Change 3175379 on 2016/10/26 by Jon.Nabozny

	Change UCharacterMovementComponent::ApplyImpactPhysicsForces to use IsSimulatingPhysics(BoneName) instead of IsAnySimulatingPhysics on the hit component.

	#jira UE-37582

Change 3175408 on 2016/10/26 by Marc.Audy

	AudioThreading improvements:
	Fix PS4 core 6 issue
	Add timeout spam
	Radical simplification
	Fix suspension CVar
	#authors Gil.Gribb/Marc.Audy
	#jira OR-30447

Change 3175535 on 2016/10/26 by Marc.Audy

	Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 3175266

Change 3175539 on 2016/10/26 by Marc.Audy

	Restore affinity for AudioThread and allow it on to 7th (rather than pinning it)

Change 3175631 on 2016/10/26 by Marc.Audy

	Fix silly compile error

Change 3175639 on 2016/10/26 by Aaron.McLeran

	Fixing audio device removal code

	- Flipping active sources to virtual mode
	- Handling initializing sources that have become virtual
	- Not stopping sounds when device is unplugged

Change 3175665 on 2016/10/26 by dan.reynolds

	AEOverview update - Added a Streaming Overview sub test (Streaming Spam)

Change 3175934 on 2016/10/26 by dan.reynolds

	AEOverview Streaming Map Fix - fixed AEOverviewStreaming to avoid orphaning sounds when crossing the platforms

Change 3175941 on 2016/10/26 by Marc.Audy

	Fix compiler error after merge from Main

Change 3176378 on 2016/10/27 by Jon.Nabozny

	Add RotatorToAxisAndAngle function to KismetMath. We already expose RotatorFromAxisAndAngle, this is just the inverse operation.

Change 3176441 on 2016/10/27 by Jon.Nabozny

	Fix another CIS issue with SegmentDistToSegmentSafe change.

Change 3176487 on 2016/10/27 by Jon.Nabozny

	Hide DemoRecorder from the scoreboard in ShooterGame.

	#jira UE-37492

Change 3176616 on 2016/10/27 by Lukasz.Furman

	optimized behavior tree debugger update in subtrees
	#jira UE-29029

Change 3176717 on 2016/10/27 by james.cobbett

	Test asset for UE-37270

Change 3176731 on 2016/10/27 by dan.reynolds

	AEOverview Streaming Spam map tweak--fixed STRMOverviewStreamSpam map so it now ensures reproduction on a specific edge case

Change 3176887 on 2016/10/27 by Aaron.McLeran

	UE-37899 Failed Assertion when spamming PS4 Streaming Start/Stop

	- Fix is to add critical sections to avoid stopping a Ngs2 source voice while it's in an OnBufferEnd callback

	#tests Use Dan.Reynold's AEOverviewMain, load STRMOverviewStreamSpam map. will crash in half a second pre-fix, never crashes post-fix.

Change 3177053 on 2016/10/27 by Marc.Audy

	Actually reattach previously attached actors when creating a child actor
	#jira UE-37675

Change 3177113 on 2016/10/27 by Aaron.McLeran

	UE-37906 Fixing stat sounds when the audio thread is enabled.

Change 3177536 on 2016/10/27 by Aaron.McLeran

	Updating QASoundWaveProcedural to support stereo procedural sound wave generation.

Change 3177551 on 2016/10/27 by dan.reynolds

	AEOverview update

	- Tweaked AEOverviewSWP to support testing mono and stereo SoundWave Procedurals

	- Added STRMOverviewStreamPriority to test Streaming Voice Priority

Change 3177819 on 2016/10/28 by Thomas.Sarkanen

	Consolidated LOD screen size calculations

	Static, skeletal and HLOD now use the same method of specifying LOD level at runtime.Namely "Screen Size". When the bounds of the objects sphere occupy half the max screen dimension, the screen size is 0.5 & all of the screen, 1.0.
	HLOD still uses a distance based metric at runtime to choose when to switch clusters, so will still not switch LODs on FOV changes.
	Conversion functions have been implemented to convert each of the legacy LOD specifications into the new unified version.
	Conversion uses an assumption that the average case uses 1080p @ 90 degree FOV. This is necessary as previous screen sizes/areas were based around that resolution and we want the least perf regressions when at that resolution.
	Auto LOD now uses the same functionality to determine what LOD thresholds to use.

	#tests Verified that LODs switch at equivalent distances/sizes before and after this change for various assets.
	#tests Verified that HLOD distance->screen size and inverse functions map correctly
	#tests Ran Michael N's triangle count test before and after the changes with Paragon to verify rendered triangle counts do not vary with the new method

Change 3177996 on 2016/10/28 by Marc.Audy

	Support play button on SoundCues as well as SoundWaves

Change 3178013 on 2016/10/28 by Marc.Audy

	Allow previewing of force feedback effects from content browser
	#jira UE-36388

Change 3178020 on 2016/10/28 by Lukasz.Furman

	fixed navmesh wall segment calculations for crowds
	#jira UE-37893

Change 3178096 on 2016/10/28 by Marc.Audy

	Make ALevelSequenceActor::Tick call Super
	#jira UE-37932

Change 3178247 on 2016/10/28 by Zak.Middleton

	#ue4 - Crash fix when player is destroyed and server checks to see if it needs to force a network update. No repro steps in the bug but guarding against the crash is pretty straightforward.

	UE-37902

Change 3178256 on 2016/10/28 by Zak.Middleton

	#ue4 - Avoid crash when calling ACharacter::SetReplicateMovement when not on the server.

Change 3178263 on 2016/10/28 by Ben.Zeigler

	Add support for a SearchableNameMap to the Linker and the Asset Registry. Call MarkSearchableName(TypeObject,Name) from a serialize function to register that an FName should be considered Searchable.
	This change bumps the object version. Also fix it so the StringAssetReferencesMap does not get written out in editor builds
	Clean up FLinker::Serialize, as it is no longer called except to get memory size
	Add code to mark searchable names for GameplayTags, DataTableHandles, and CurveTableHandles.
	Add FAssetIdentifier to the AssetRegistry that allows searching for Package.Object::Name. If Object/Name aren't specified PackageName will be used as it was before
	UI Improvements to the reference viewer to support name references. Collapse the reference/dependency checkboxes, and add new checkboxes for SearchableNames and NativePackages, disabled by default
	Remove bResolveIniStringReferences option from GetDepdendencies and handle that when parsing in the string asset reference table

Change 3178265 on 2016/10/28 by Ben.Zeigler

	Move all ini settings for GameplayTags over to GameplayTagsSettings.h/GameplayTags.ini, instead of being in 3 different places.
	Add metadata for the source of a gameplay tag and it's comment to the node, but only in editor builds
	Change it so the default list and developer tags list are saved the same way as a list of structs. This will allow UI for selecting what tag list to save it into
	The first time someone in the project modifies the GameplayTags project settings it will migrate these settings from the old locations. This will cause defaultEngine.ini to resave, which may wipe out comments
	Migrate QAGame's tag config as a test

Change 3178266 on 2016/10/28 by Lina.Halper

	Fix issue with anim editor sound play notify doesn't work with follow option

	#jira: UE-37946

Change 3178441 on 2016/10/28 by Ben.Zeigler

	Fix use of IsValid on names inside asset identifier to properly be a None check and add accessor to make use more clear

Change 3178443 on 2016/10/28 by Ben.Zeigler

	Half migrated gameplay tag settings for internal games, will need full migration via the editor on their branches

Change 3178533 on 2016/10/28 by Ben.Zeigler

	Build fix

Change 3178655 on 2016/10/28 by Ben.Zeigler

	Build fix

Change 3178672 on 2016/10/28 by Lina.Halper

	Unshelved from changelist '3164228':

	PR #2867: Fixed for UE-15388 : Bones of uniformly scaled SkeletalMesh rotate incorrectly in Persona (Contributed by rarihoma)

	#jira: UE-37372

Change 3178675 on 2016/10/28 by Ben.Zeigler

	Crash fix if you have no defaultengine.ini redirects section

Change 3178698 on 2016/10/28 by Ben.Zeigler

	#jira UE-37774 Fix issue with loading save games referencing UObjects not in memory, this broke in 4.13

Change 3178743 on 2016/10/28 by Lina.Halper

	Fixed so that if no key, it clamps to 0.

	#jira: UE-36790

Change 3179121 on 2016/10/28 by dan.reynolds

	AEOverview tweaks

	- updated Concurrency map to tighten up the audio playback (as in James C's feedback)

	- tweaked some timers to be closer to real-time

Change 3179912 on 2016/10/31 by Mieszko.Zielinski

	Removed unused piece of functionality from UEdGraphSchema_BehaviorTreeDecorator #UE4

Change 3179933 on 2016/10/31 by Lukasz.Furman

	fixed missing update timers in avoidance manager
	#ue4

Change 3180028 on 2016/10/31 by Ben.Zeigler

	#jira UE-373993 Fix crash with bad default value for objects

Change 3180503 on 2016/10/31 by mason.seay

	Test map for character spawning bug

Change 3180744 on 2016/10/31 by Ben.Zeigler

	#jira UE-38025 Fix APlayerController:DisplayDebug to not make a bad copy of the debug display manager

Change 3180914 on 2016/10/31 by Ben.Zeigler

	#jira UE-37773 Add hooks for deleting and renaming tags,  untested pending UI support
	Add handler for editing a gameplaytag asset from asset browser

Change 3181879 on 2016/11/01 by Marc.Audy

	Rollback CL# 3169645 to resolve fortnite audio hitching when stopping sounds
	#jira UE-38055

[CL 3182044 by Marc Audy in Main branch]
2016-11-01 15:50:29 -04:00

173 lines
5.2 KiB
C++

// Copyright 1998-2016 Epic Games, Inc. All Rights Reserved.
#include "AnimGraphPrivatePCH.h"
#include "GraphEditorActions.h"
#include "ScopedTransaction.h"
#include "CompilerResultsLog.h"
#include "AnimGraphNode_ModifyCurve.h"
#include "AnimationGraphSchema.h"
#include "BlueprintActionDatabaseRegistrar.h"
#define LOCTEXT_NAMESPACE "ModifyCurve"
UAnimGraphNode_ModifyCurve::UAnimGraphNode_ModifyCurve()
{
}
FString UAnimGraphNode_ModifyCurve::GetNodeCategory() const
{
return TEXT("Skeletal Controls");
}
FText UAnimGraphNode_ModifyCurve::GetTooltipText() const
{
return GetNodeTitle(ENodeTitleType::ListView);
}
FText UAnimGraphNode_ModifyCurve::GetNodeTitle(ENodeTitleType::Type TitleType) const
{
return LOCTEXT("AnimGraphNode_ModifyCurve_Title", "Modify Curve");
}
TArray<FName> UAnimGraphNode_ModifyCurve::GetCurvesToAdd() const
{
TArray<FName> CurvesToAdd;
const FSmartNameMapping* Mapping = GetAnimBlueprint()->TargetSkeleton->GetSmartNameContainer(USkeleton::AnimCurveMappingName);
if (Mapping)
{
TArray<SmartName::UID_Type> UidList;
Mapping->FillUidArray(UidList);
// Iterate through all curves..
for (SmartName::UID_Type Uid : UidList)
{
FSmartName SmartName;
Mapping->FindSmartNameByUID(Uid, SmartName);
// Don't offer curves we already have
if (!Node.CurveNames.Contains(SmartName.DisplayName))
{
CurvesToAdd.Add(SmartName.DisplayName);
}
}
}
return CurvesToAdd;
}
void UAnimGraphNode_ModifyCurve::GetAddCurveMenuActions(FMenuBuilder& MenuBuilder) const
{
TArray<FName> CurvesToAdd = GetCurvesToAdd();
for (FName CurveName : CurvesToAdd)
{
FUIAction Action = FUIAction(FExecuteAction::CreateUObject(this, &UAnimGraphNode_ModifyCurve::AddCurvePin, CurveName));
MenuBuilder.AddMenuEntry(FText::FromName(CurveName), FText::GetEmpty(), FSlateIcon(), Action);
}
}
void UAnimGraphNode_ModifyCurve::GetRemoveCurveMenuActions(FMenuBuilder& MenuBuilder) const
{
for (FName CurveName : Node.CurveNames)
{
FUIAction Action = FUIAction(FExecuteAction::CreateUObject(this, &UAnimGraphNode_ModifyCurve::RemoveCurvePin, CurveName));
MenuBuilder.AddMenuEntry(FText::FromName(CurveName), FText::GetEmpty(), FSlateIcon(), Action);
}
}
void UAnimGraphNode_ModifyCurve::GetContextMenuActions(const FGraphNodeContextMenuBuilder& Context) const
{
if (!Context.bIsDebugging)
{
Context.MenuBuilder->BeginSection("AnimGraphNodeModifyCurve", LOCTEXT("ModifyCurve", "Modify Curve"));
// Clicked pin
if (Context.Pin != NULL)
{
// Get proeprty from pin
UProperty* AssociatedProperty;
int32 ArrayIndex;
GetPinAssociatedProperty(GetFNodeType(), Context.Pin, /*out*/ AssociatedProperty, /*out*/ ArrayIndex);
FName PinPropertyName = AssociatedProperty->GetFName();
if (PinPropertyName == GET_MEMBER_NAME_CHECKED(FAnimNode_ModifyCurve, CurveValues) && Context.Pin->Direction == EGPD_Input)
{
FString PinName = Context.Pin->PinFriendlyName.ToString();
FUIAction Action = FUIAction( FExecuteAction::CreateUObject(this, &UAnimGraphNode_ModifyCurve::RemoveCurvePin, FName(*PinName)) );
FText RemovePinLabelText = FText::Format(LOCTEXT("RemoveThisPin", "Remove This Curve Pin: {0}"), FText::FromString(PinName));
Context.MenuBuilder->AddMenuEntry(RemovePinLabelText, LOCTEXT("RemoveThisPinTooltip", "Remove this curve pin from this node"), FSlateIcon(), Action);
}
}
// If we have more curves to add, create submenu to offer them
if (GetCurvesToAdd().Num() > 0)
{
Context.MenuBuilder->AddSubMenu(
LOCTEXT("AddCurvePin", "Add Curve Pin"),
LOCTEXT("AddCurvePinTooltip", "Add a new pin to drive a curve"),
FNewMenuDelegate::CreateUObject(this, &UAnimGraphNode_ModifyCurve::GetAddCurveMenuActions));
}
// If we have curves to remove, create submenu to offer them
if (Node.CurveNames.Num() > 0)
{
Context.MenuBuilder->AddSubMenu(
LOCTEXT("RemoveCurvePin", "Remove Curve Pin"),
LOCTEXT("RemoveCurvePinTooltip", "Remove a pin driving a curve"),
FNewMenuDelegate::CreateUObject(this, &UAnimGraphNode_ModifyCurve::GetRemoveCurveMenuActions));
}
}
Context.MenuBuilder->EndSection();
}
void UAnimGraphNode_ModifyCurve::RemoveCurvePin(FName CurveName)
{
// Make sure we have a curve pin with that name
int32 CurveIndex = Node.CurveNames.Find(CurveName);
if (CurveIndex != INDEX_NONE)
{
FScopedTransaction Transaction( LOCTEXT("RemoveCurvePinTrans", "Remove Curve Pin") );
Modify();
Node.RemoveCurve(CurveIndex);
ReconstructNode();
FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified(GetBlueprint());
}
}
void UAnimGraphNode_ModifyCurve::AddCurvePin(FName CurveName)
{
// Make sure it doesn't already exist
int32 CurveIndex = Node.CurveNames.Find(CurveName);
if (CurveIndex == INDEX_NONE)
{
FScopedTransaction Transaction(LOCTEXT("AddCurvePinTrans", "Add Curve Pin"));
Modify();
Node.AddCurve(CurveName, 0.f);
ReconstructNode();
FBlueprintEditorUtils::MarkBlueprintAsStructurallyModified(GetBlueprint());
}
}
void UAnimGraphNode_ModifyCurve::CustomizePinData(UEdGraphPin* Pin, FName SourcePropertyName, int32 ArrayIndex) const
{
if (SourcePropertyName == GET_MEMBER_NAME_CHECKED(FAnimNode_ModifyCurve, CurveValues))
{
if (Node.CurveNames.IsValidIndex(ArrayIndex))
{
Pin->PinFriendlyName = FText::FromName(Node.CurveNames[ArrayIndex]);
}
}
}
#undef LOCTEXT_NAMESPACE