Files
UnrealEngineUWP/Engine/Source/Editor/GraphEditor/Private/SGraphNodeComment.cpp
Shaun Kime 0ca45afbd4 Copying //UE4/Dev-Niagara to //UE4/Dev-Main (Source: //UE4/Dev-Niagara @ 4074996)
#lockdown Nick.Penwarden
#rb none
============================
  MAJOR FEATURES & CHANGES
============================

Change 3853627 by Shaun.Kime

	Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse VectorVM

	#tests non-gpu auto tests pass

Change 3853628 by Shaun.Kime

	Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Runtime

	#tests all non-gpu auto tests pass

Change 3853629 by Shaun.Kime

	Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Engine\Shaders

	#tests all non-gpu auto tests pass

Change 3853630 by Shaun.Kime

	Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse Engine\Plugins\FX

	#tests all non-gpu auto tests pass

Change 3853631 by Shaun.Kime

	Jonathan's material function from Orion\DevNiagara

	#tests all non-gpu auto tests pass

Change 3853633 by Shaun.Kime

	Merging using OrionDevNiagaraToUE4DevNiagara_DoNotUse EngineTest

	#tests all non-gpu auto tests pass

Change 3853911 by Shaun.Kime

	GPU rendering now works

	#tests GPU tests now pass

Change 3854179 by Shaun.Kime

	Removing dead system

	#tests now just with a warning

Change 3854731 by Shaun.Kime

	Checkpointing current work

	#tests n/a

Change 3855080 by Shaun.Kime

	Fixing not all control paths return a value error

	#tests n/a

Change 3856185 by Bradut.Palas

	MultiStack with pinning support.
	#jira UE-53459

	#tests none

Change 3856615 by Shaun.Kime

	Preventing a null pointer dereference when copying unallocated data

	#tests auto tests pass

Change 3856622 by Shaun.Kime

	Getting rid of the bogus get alias method

	#tests auto tests pass

Change 3856644 by Shaun.Kime

	Adding the ability to query the number of filtered triangles, index those triangles directly, and compute the position, velocity, UV, and NBT of a triangle.

	#tests all auto tests now pass

Change 3856645 by Shaun.Kime

	Added several new auto tests and tweaked existing ones.
	+ PerParticleRandom still had some randomness in it
	+ UserColorCurve has a user color curve defined in 3 different components referencing the same system
	+ BasicSkinnedEmitter has 4 skinning sub-tests, attached as a subcomponent, referencing a world skeletal mesh, using a material filter, and using a bone filter

	+ added a skinning module that spawns based off exec index and a data interface that queries the number of triangles on a skeletal mesh.

	#tests auto tests pass

Change 3856675 by Shaun.Kime

	Fixing crash on delete of an emitter

	#tests removed one and multiple emitters from active multi-emitter. No crash

	#jira UE-54378

Change 3860613 by jonathan.lindquist

	New dynamic input

Change 3862549 by Shaun.Kime

	Missing last known good images

Change 3864525 by Simon.Tovey

	Fix for vm compiler crash when using structs as constants.

	#tests No longer crashes.

Change 3864729 by Frank.Fella

	Sequencer - Fixed a few places which were modifying sequencer data, but not calling the NotifySequencerDataChanged.

Change 3864737 by Frank.Fella

	Niagara - Fix the timeline in the niagara editor plus other fixes.
	+ Turned on looping in the timeline by default.
	+ Added simulation options to control playback in the editor, including turning off auto-play, disabling reset on change, and disabling resimulation when changing while paused.
	+ Added a buttons to the timeline for each renderer an emitter has which shows a renderer specific icon and will allow navigation directly to the renderer with future stack changes.
	+ Fixed issues in the emitter life cycle and spawn rate modules which were preventing delay and looping from working consistently. (includes auto-test)
	+ Added top level metadata for modules.
	+ Added the ability to add metadata to a module and it's inputs to allow it to be edited directly using timed sections in the timeline.  Currently configured for the emitter life cycle module.
	+ Changed the way the "MaxSimTime" on niagara component works so that it now represents the maximum frame time which should be used when seeking the component to the desired age.  This previously was the maximum amount of simulation time to run which would prevent simple effects from simulating quickly, and would also allow more complicated effects to hang the UI while seeking.
	+ Changed the behavior of niagara component when seeking to desired age so that it always uses the exact specified seek delta instead of trying to seek to the exact desired age.
	+ Fixed the component so that systems which are seeking to the desired age in the editor no longer draw in fast forward mode.
	+ Changed the default playback range for effects in the timeline from 1000 seconds to 10 seconds, and fixed the timeline so that the playback range is serialized into the asset which will persist the setting across loads.
	+ Fixed scrubbing in the timeline so that it doesn't immediately reset when scrubbing backwards.
	+ Added a button to the timeline track for enabling and disabling isolation mode for emitters.
	+ Added a checkbox to the timeline to enabled and disable emitters from the timeline.
	+ Fixed PinToNiagaraVariable so that it asserts if bNeedsValue is specified and it can't actually provide a value.
	+ Create a class called FNiagaraStackFunctionInputBinder which allows binding to an input of a function on a stack so that you can easily set and get the value of the input without having to worry about modifying the graph or rapid iteration parameter sets directly.

	#tests Existing auto-tests and 1 new test for life cycle changes.

Change 3867179 by Frank.Fella

	Niagara - Turn off GPU simulation for test assets for Shaun.

Change 3869201 by Simon.Tovey

	Bypassing JonLs issue

	#tests no longer crashes.

Change 3869897 by Frank.Fella

	Niagara - Fix crashes when using the skeletal mesh data interface.  NOTE: The change to the actual skeletal mesh data interface code doesn't seem needed, but without it, it crashes with the stomp allocator on.  We'll have to investigate further.

Change 3870487 by Frank.Fella

	Niagara - Always generate cached skin data immediately, and make sure we're not indexing triangles that don't exist.  This is a temporary fix to avoid a crash when changing the skeletal mesh source on an effect in the level from the details panel.

Change 3877378 by Frank.Fella

	Niagara - Update the burst and lifecycle modules with new metadata for incoming timeline changes.

Change 3877564 by Frank.Fella

	Sequencer - Fix a few more places which were modifying sequencer data without calling NotifyMovieSceneDataChanged.

Change 3877565 by Frank.Fella

	Niagara - Remove old unused burst code from some runtime classes.

Change 3877567 by Frank.Fella

	Niagara - Add support for keying bursts on the timeline which is configured using script metadata.

Change 3877699 by Frank.Fella

	Niagara - Fix a crash in the new timeline code for when you have bursts, but you have inputs on the emitter lifecycle bound, also set lower bound of view range of the timeline to be -.1 so that you can more easily interact with keys at 0.

Change 3877715 by Frank.Fella

	Sequencer - Update the change type when pasting keys from the clipboard from Unknown to TrackValueChanged to avoid unnecessary work.  From code review on last change.

Change 3879285 by Simon.Tovey

	A couple of fixes for using struct constants

	#tests Jon's case now compiles and works correctly.

Change 3879378 by Frank.Fella

	Niagara - Fix a few spots where recursive graph traversal was visiting nodes multiple times because of diamonds in the pin connections.  This reduces a terrible hang in UNiagaraScriptSource::InitializeNewRapidIterationParameters from 5 minutes to 5 seconds but there are futher issues to investigate becasue even 5 seconds it too long.

Change 3879858 by Shaun.Kime

	Moved the VM script compilation to the DDC in order to facilitate better team compilation behavior. Significant changes to the translator and overall compile workflow to make the data behave better for a future multi-threaded compilation path.
	In order to know when to compile, a key is generated that uses the compile id's of the graphs that influence the compilation of our node. In this way, if an end user goes and edits a function or module and checks in, the overall compile id will not match b/c that function is in the dependency list of a system downstream. The system will then know to recompile. However, everyone else on the team will generate the same key because the asset in question was checked in with its local compile id already changed.

	Additionally, we now employ change tracking on traversals from a node graph. These traversals walk through all the nodes leading to a given output node and see if they've been altered. If they have, a new compile id is generated. If not, the old compile id is used. This also means that if you edit a particle update section in the stack, the emitter section won't force the system to recompile.

	GPU scripts now have their own script slot rather than riding alongside particle spawn scripts. This allows us to address them independently in the translator and put them in the DDC as well. Once the text is generated, we then go back out to the DDC to generate the shader associated.

	Known issues:
	+ Emitters are sometimes marked dirty on open
	+ Nodes connected to event writes aren't part of the hashing
	+ DataInterface signature changes don't dirty the compiles
	+ Struct changes don't dirty the compiles
	+ On system loading, we go out to the DDC instead of using existing scripts, which is slower..

	#tests all auto-tests pass, additional tests run to validate proper behavior

Change 3879859 by Shaun.Kime

	Content update post DDC change

Change 3879862 by Shaun.Kime

	Niagara plugin content to ddc

Change 3879958 by Frank.Fella

	Niagara - Actually fix the bad recursion in this function by using the existing traversal method.

Change 3881727 by Damien.Pernuit

	Niagara - Houdini - Created a separate plug-in for the Houdini CSV Data Interface.

Change 3881877 by Simon.Tovey

	Fix for mac compile issue

Change 3882773 by Simon.Tovey

	Actual fix for Mike

Change 3882822 by Shaun.Kime

	Rather than throw a check, I instead emit an error when we can't match up a data interface and instantiate a CDO version. Not perfect, but this will let you recompile.

	#tests allows me to open jonathan's file

Change 3883538 by Shaun.Kime

	Moving particle-level scripts to compile with the emitter named Emitter in their internal scripts. This simplifies the dependencies quite a bit, but causes some complexity on the wiring side (most of which we were already doing anyway).
	Getting rid of some allocations in translation (still more to go).
	Fixed some of the logic for emitters that had modules of the same name to now properly concatenate.

	Compile version bumped, so all scripts will be forced to recompile. Not saving this into the test files for now, as I expect this to happen a bit for the near term.

	#tests all auto-tests pass, creating a new emitter and system on PC works

Change 3883552 by Shaun.Kime

	Fixing renaming to work properly now. It just invalidates the system script compile id's, forcing it to auto-compile.

	#tests auto-tests pass

Change 3884722 by Bradut.Palas

	Added searchbar with basic name search for Niagara stack

	#tests none
	#jira UE-53469

Change 3884793 by Shaun.Kime

	Adding pragma once

	#tests no longer complains about duplicate definition

Change 3885629 by Wyeth.Johnson

	Setting up a transient meshrotation framework pre-integration

Change 3887440 by Wyeth.Johnson

	Custom HLSL failure for Shaun

Change 3888911 by Bradut.Palas

	stack search box now has a minimum width of 300 pixels

	#tests none

Change 3890843 by Shaun.Kime

	Creating a Niagara quaternion type.

	#tests created in editor, saw default was correct, carried through to VM runtime through attribute viewer

Change 3890849 by Shaun.Kime

	Porting over 4.19 fix to Dev-Niagara

	#tests allows creation of valid scripts even when ini is cleared.

Change 3891088 by Frank.Fella

	Sequencer - When getting selected tracks for the external selection api, include tracks if any of their child nodes are selected.  This matches the behavior object guid external selection.

Change 3891114 by Bradut.Palas

	Fixing crash that sometimes happens if a stack tree changes while a stack search is active

	#tests none

Change 3891131 by Frank.Fella

	Sequencer - Move section headers for bool, int, vector, and color to the public directory so they can be used by the niagara level sequence integration.

Change 3891165 by Wyeth.Johnson

	error for shaun

Change 3891354 by Shaun.Kime

	Adding Quat struct to more locations. Now treated like hlsl float4.

	#tests EulerToQuaternion now compiles

Change 3891463 by Bradut.Palas

	Fix crash that sometimes happens when deleting module and hitting Ctrl-Z to undo (the condition for removing the listeners from the rootentry should not be tied to the validity of weak pointers for system and emitter, because sometimes they are out of sync when changing the graph)

	#tests none

Change 3891641 by Wyeth.Johnson

	resave node

Change 3893143 by Shaun.Kime

	Fixing issue where you try to bind a vertex color sampler to a mesh without it. We failthe binding rather than crash due to a check later. Also fixed up error logging to only mention the one that failed.

	#tests can open NiagaraSystem'/Game/FX/SkeletalMeshDissolve/EmittersAndSystems/FightSceneDissolve.FightSceneDissolve' with an error..

Change 3893528 by Bradut.Palas

	fix another crash when search results are invalidated during search

	#tests none

Change 3893830 by Shaun.Kime

	Fix for copy & paste of comment boxes

	#tests can now copy and paste comment boxes

Change 3894012 by Bradut.Palas

	no longer executing search tick if the rootentry is null

	#tests none

Change 3894828 by Frank.Fella

	Niagara - Runtime changes to support sequencer animation
	+ Reset the simulation when force solo is changed on the component.
	+ Invalidate the render data and clear the buffers when resetting to avoid previously rendered particles from drawing.
	+ Automatically sync the override parameters in the component when the source assets exposed parameters change and removed forced syncing from various places.
	+ Remove lots of refresh code from the niagara component details which should not be neccessary anymore.

	#TESTS Ran autotests, tested through the UI while building the sequencer tests asests.

Change 3894832 by Frank.Fella

	Niagara - Level sequence support for spawning and animating system life cycle and select user parameter types.

	#Tests Ran existing tests and added a new test to verify added functionality.

Change 3896944 by Bradut.Palas

	safeguard entries with no search items (it actually can be null)

	#tests none

Change 3896948 by Bradut.Palas

	Fix assert when dereferencing source array (no need for a raw pointer to the array since it's initialized with the content anyway)

	#tests none

Change 3896950 by Bradut.Palas

	fix compile error with previous commit

	#tests none

Change 3897698 by Frank.Fella

	Niagara - Fix some safety issues with parameter initialization on the niagara component.
	+ Kill the current system if we synchronize parameters to avoid issues with data interface lifetime.
	+ Always sync parameters when the asset is set to prevent missing data interfaces in the override list.
	+ Add an enum to control how data interface parameters are handled when calling CopyParametersTo.
	+ When the system instance is copying the asset parameters, have it copy data interfaces by reference so that it's not creating data interfaces copies which will be deleted at the next garbage collection.

	#Tests Auto-tests, also doesn't crash anymore when opeining Jonathan's disolve effect and then opening a level.

Change 3897953 by Frank.Fella

	Niagara - Remove some namespace restrictions from the code that generates the available parameters to read from in the stack UI since it was preventing the use of custom namespaces in modules and it was not clear what issue it was solving since we already prevent scripts from addressing parameters from lower level scripts.  Also move user parameters to their own menu section.

	#Tests Custom namespaces are usable again in the stack.

Change 3898926 by Bradut.Palas

	Fix for crash caused by garbage collection and async search
	#jira UE-55284 (Stack search doesn't work on collapsed entries) now searching through unfiltered children, will need extra fixes on the stack to eliminate "ghost" results"
	Both are still under code review, submitting because they are simple to rollback and harmless to other features.

	#tests none

Change 3899069 by Shaun.Kime

	Parallel compilation

	Major changes:
	Rather than a custom streaming version that we know influences a rebuild, I'm moving away to a guid that you need to regenerate if you change the compiler in any meaningful way
	needed for multiple reasons,
	1) if two people are making changes to the compiler, having something other than a guid as the value makes the content of the ddc ambiguous
	2) when iterating I often need to make multiple changes to get to a working final result, bumping the version number each time that happens gets old fast

	We fully clone the input graph to do the compile in the background. While the translation step is not a huge amount of time, it keeps the main thread responsive.

	We currently have a big critsec around the crosscompiler to bytecode as it isn't threadsafe. Future changes will push this to the ShaderCompilerWorker.

	#tests all tests pass as well as stress tests around saving while compilng, long compile times, etc.

Change 3899071 by Shaun.Kime

	Fixing the availability flags for system and emitter scripts.

	#tests all auto tests pass

Change 3899077 by Shaun.Kime

	Fixing assets to have their wait on compile finished checkbox checked in the editor for testing

	#tests n/a

Change 3899114 by Wyeth.Johnson

	Random bool custom hlsl node

Change 3899184 by Bradut.Palas

	implemented categories for module inputs (now inputs can be assigned a category in the module editor and they will be grouped by those categories in the Niagara stack)

	#tests none

Change 3899329 by Bradut.Palas

	fix broken commit by adding missing new files NiagaraStackInputCategory.cpp and .h

	#tests none

Change 3899439 by Yannick.Lange

	Niagara reroute node.

Change 3899516 by Shaun.Kime

	Official angle conversion modules.

	#tests made a local test emitter that converted back and forth between angles. Results were correct.

Change 3900193 by Shaun.Kime

	Fixing build

	#tests now compiles

Change 3900474 by Shaun.Kime

	Fixes to help Mac compile

	#tests n/a

Change 3901131 by Simon.Tovey

	Warmup feature.

	CPU Sim only.

	Also has ability to advance simulation by tick count or seconds via BP/C++.

	Includes some engine tests.

	#tests editor + autotests

Change 3901455 by Frank.Fella

	Niagara - Add WITH_EDITORONLY_DATA to prevent non-editor compile failures.

Change 3902477 by Frank.Fella

	Niagara - Fix FNiagaraEditorTypeUtilities to be a thread safe TSharedFromThis since it's always created with a thread safe shared pointer, also fix up issues related to this change.  Fixes a crash which occurrs when it's the target object of a delegate binding.

	#Tests adding a curve data interface to a parameter collection no longer crashes.
	#jira UE-55403

Change 3903478 by Shaun.Kime

	No longer doing the check if compiling on load is enabled as this always forces different change ids'

	#tests n/a

Change 3903783 by Shaun.Kime

	Trimming down excess log spew

	#tests auto-tests pass

Change 3905753 by Shaun.Kime

	Made Sine(Degrees), Sine(Radians), and Sine, and the variants thereof for trig functions.

	#tests n/a

Change 3905759 by Shaun.Kime

	Auto tests for mesh orientation

	#tests these now pass

Change 3905762 by Shaun.Kime

	These files needed to be resaved for some reason to keep passing.

Change 3906727 by Bradut.Palas

	Curve UX improvements
	#jira UE-55134

	#tests none

Change 3908177 by Shaun.Kime

	Fixing build due to typo

	#tests now compiles

Change 3908199 by Shaun.Kime

	Trying to fix compilation when destroying objects. We cannot safely attach anything beneath us at this point ,we just need to clear out the queues.

	#tests normal work day-to-day

Change 3908201 by Shaun.Kime

	Working to fix crashes where the component was destroyed out from underneath us due to PIE shutting down and we have a Niagara item editable in Blueprint or world editor.

	#tests n/a

Change 3908985 by Bradut.Palas

	Renaming ColorCurveAsset to CurveAsset to better reflect the actual usage of the variable (fixing copy-paste issue)

	#tests none

Change 3909222 by Yannick.Lange

	Niagara graph connection colors

Change 3909436 by Bradut.Palas

	fix crash in curve ux when importing a linear curve (curve of floats)

	#tests none

Change 3909561 by Bradut.Palas

	Updating LUT before sending NotifyPostChange when editing curves inline (so that LUT will not go out of sync)

	#tests none

Change 3910010 by Yannick.Lange

	Use new Niagara Actor icon

Change 3910191 by Yannick.Lange

	Fix viewport widget showing up in the viewport when pressing W, E or R.
	#jira UE-55142

Change 3910213 by Frank.Fella

	PropertyEditor - PropertyRowGenerator - Added features and fixes to support integration into niagara's stack view.
	+ Added a method to get filter/search strings for an IDetailTreeNode to support external searching and filtering.
	+ Added a delegate to the layout builder for when one of it's owned nodes has it's visibility forcibly changed by a customization.
	+ Changed the filtering so nodes are generated for properties marked as advanced.
	+ Pass the notify hook down to the detail utilities so that change notifications work as expected.
	+ Add layout data for the widgets returned from the IDetailTreeNode to prevent alignment and sizing issues in custom implementations.

Change 3910307 by Frank.Fella

	PropertyEditor - Missed in last checkin.

Change 3910509 by Frank.Fella

	Niagara - Removed nested details panels from the stack and integrate them properly plus other fixes.
	+ Generate rows for nested objects using the details panel property row generator.
	+ Fix the horizontal sizing for niagara parameter editors.
	+ Add an IsValid() method to the base niagara stack entry so that derived classes can know if the associated view models are still valid when processing events.  This is a temporary measure to fix a crash in the user parameter UI.
	+ Set stack entries to be expandable by default and delete usages which were setting it to true.
	+ Highlight the active search result with a border since property rows can't highlight text.

Change 3911653 by Frank.Fella

	Niagara - Fix stack spacer sizing.

Change 3911667 by Frank.Fella

	PropertyEditor - Actually fix the notify hook handling in the property row generator.

Change 3911896 by Yannick.Lange

	Niagara function input context menu.

Change 3911900 by Yannick.Lange

	Project setting for not showing comment bubbles.

Change 3911996 by Yannick.Lange

	Niagara fix if node persistent guids for older nodes. The OutputVarGuids are always synced on PostLoad.

Change 3912221 by Wyeth.Johnson

	Renderer Icons for timeline

Change 3912608 by Bradut.Palas

	stack style refactor
	#jira UE-55399

	#tests none

Change 3913063 by Wyeth.Johnson

	Icons for stack added, including new system param png

Change 3913618 by Shaun.Kime

	Fixing two of the most common Illegal call to StaticFindObject() errors while compiling.

	#tests ran through compilation after changes.

Change 3914369 by Bradut.Palas

	Using new SystemParams.png icon provided by Wyett (instead of the old "Parameters.png")

	#tests none

Change 3914782 by Wyeth.Johnson

	Adjusting icon for update to not indicate "flow"

Change 3915738 by Shaun.Kime

	Moving away from the generic and super-slow EdGraphSchema ShouldAlwaysPurgeOnModification being true to using the same mechanism we use to invalidate the compile to synchronize nodes. This should be substantially faster.

	#jira UE-55463

	#tests ran through a variety of tests creating and wiring nodes

Change 3915739 by Shaun.Kime

	Assignment nodes need to invalidate the graph for compile.

Change 3915741 by Shaun.Kime

	Making default values more accessible and making it possible to route renderers to use different values than the defaults.

	#tests n/a

Change 3915798 by Frank.Fella

	SearchBox - Add options to show the number of search results and an option to show a throbber when a search is active.

Change 3915966 by Shaun.Kime

	Changing the default for velocity to 0,0,0 as requested  by Wyeth

	#tests n/a

Change 3915982 by Shaun.Kime

	Making the default text more readable

	#tests n/a

Change 3916237 by Frank.Fella

	PropertyEditor - Change the DetailCategoryBuilderImpl so that it sets the horizontal alignment to fill for value widgets when generating stand alone widgets so that the behavior in the property row generator matches the behavior of the property grid.

Change 3916240 by Frank.Fella

	Niagara - Should prevent some recent crashes due to stack entry delegates and lifetime.

Change 3916261 by Frank.Fella

	Niagara - Lots of minor stack ui fixes and adjustments
	+ Tweaked padding in a bunch of different places.
	+ Added a dark background behind the stack and stack header to prevent the colors from bleeding together.
	+ Fixed the group text not being white anymore.
	+ Hooked up new features of the search box for showing the search result data and an is searching throbber.
	+ Fixed an issue where the current search result couldn't be interacted with.
	+ Fix some other inconsistencies with searching where you might jump more than one result.
	+ Replace the checkbox for showing curve in the curves tab with an icon based button. (icon is placeholder)

Change 3916833 by Shaun.Kime

	Fixing issue where the system wasn't set to wait for compilation on load, sometimes leading to failures for auto-tests

	#tests this test now passes when forced to recompile

Change 3916846 by Shaun.Kime

	Missed one system in the scene.

	#tests n/a

Change 3917458 by Shaun.Kime

	Fixing another potential race condition on the DDC.

	#tests n/a

Change 3918349 by Frank.Fella

	Niagara - Invalidate the node visuals when reallocating pins.

	#Jira UE-55698

Change 3918783 by Olaf.Piesche

	Correct 'temp' to 'Temp' in map set

Change 3919262 by Shaun.Kime

	We weren't properly updating the default values for user data interface components when tweaked in the editor.

	#tests open skinned mesh auto test system change the preview for the user skinned mesh to be SK_Mannequin_Niagara. It now updates, it didn't before.

Change 3919602 by Shaun.Kime

	Fixing the skeletal mesh to now clamp to the end of the index buffer for safety as well as adding IsValidTriCood. This lets us keep going even when swapping out the skeletal mesh underneath.
	Tested out isvalidtricoord in the test skinning module.

	#tests auto tests pass
	#codereivew simon.tovey

Change 3921701 by Yannick.Lange

	Make Vector2 and Vector4 default blue color to be consistent with blueprints.

Change 3922331 by Damien.Pernuit

	Niagara - Houdini - Added support of CSV File as UAsset (HoudiniCSV)
	Modified the Data Interface to use the CSV asset instead of the imported buffers from the CSV File Path.
	Added some new functions to the DI:
	GetLastParticleIndexAtTime()
	GetCSVPositionAndTime()
	GetCSVVectorValue()
	GetCSVFloatValueByString()

Change 3923118 by Simon.Tovey

	PS4 compile fix.

Change 3924934 by Bradut.Palas

	fix Mac compile issues
	#jira UE-55426

	#tests none

Change 3925168 by Bradut.Palas

	Curve logspamming
	#jira UE-55593

	#tests none
	The UpdateCompiledDataInterfaces would end up comparing LUTs when copying curves and the source LUT was out of date.

Change 3925366 by Frank.Fella

	Slate - SMenuAnchor - Fix the implementation of "BelowRightAnchor" to align the right edge of the menu with the right edge of the anchor.  There aren't any other usages of this in the engine as far as I can tell, hopefully people weren't relying on the broken behavior in a game somwhere.

Change 3925423 by Frank.Fella

	Niagara - Remove the large add buttons from the stack and add smaller add buttons in the group headers.

Change 3925877 by Olaf.Piesche

	New collision modules, separating query, linear and angular impulse; Solve forces and velocity takes care of integrating f->v->p and fA->vA->O; linear impulse module would probably be cleaner by zeroing velocity on collision and calculating a force instead of setting new velocity directly

Change 3926582 by Simon.Tovey

	PS4 compile fix

Change 3927401 by Shaun.Kime

	Fixing events due to added member

	#tests all tests pass as of 3925423 with this change

Change 3927496 by Shaun.Kime

	Getting auto-tests to run
	Questions: Why did I have to recompile the GPU tests... something is missing in their key generation?
	Resaved several files.

	#tests almost all pass now

Change 3927582 by Shaun.Kime

	Fixing last failing auto test

	#tests all tests now pass

Change 3927924 by Simon.Tovey

	Chunk level vm parallelism.
	Any execution processing > batch_size chunks will go wide.

	The batch size is 4 currently but adjsutable via vm.ParallelChunksPerBatch.
	VM parallelism can be disabled by vm.Parallel 0

Change 3927990 by Shaun.Kime

	Submitting redirector

Change 3928426 by Frank.Fella

	Niagara - Always propagate rapid iterations parameters when merging an emitter.

Change 3929823 by Frank.Fella

	Niagara - Fix hlsl generation for system/emitter spawn script so that we read the engine and user parameters from the data set instead of initializing them to 0.

	#Tests Full recompile + auto-tests

Change 3929983 by Simon.Tovey

	Curve LUT Interpolation

	+ updated test altered by it.

Change 3930551 by Frank.Fella

	Niagara - Fix what looks like a copy/paste error in the SNiagaraSelectedEmitterGraph destructor which was preventing clean removal of delegates and causing a crash.

	#Tests closing the "Selected Emitter Graph" tab and then changing the selected emitter no longer crashes.

Change 3932695 by Damien.Pernuit

	Niagara - Houdini:

	Houdini CSV Asset:
	- Packed vector values in the CSV file are now properly supported (not just for Position/Normal) and can be of any size.
	- Added support for reimporting Houdini CSV files.
	- Added an "open in text editor" entry in the context menu.
	- Improved error/warning logging during the parsing of the file

	Houdini Niagara Data Interface:
	- Added GetParticleIndexesToSpawnAtTime():
	New helper functions returning the min index, max index and number of particles to be spawned for a given time value.
	Uses an internal LastSpawnIndex to avoid spawning the same particles twice.
	- Modified GetLastParticleIndexAtTime():
	If the CSV file doesn't have time informations, returns false and set the LastIndex to the last particle
	If desiredTime is smaller than the first particle, LastIndex will be set to -1
	If desiredTime is higher than the last particle in the csv file, LastIndex will be set to the last particle's index

Change 3933425 by Shaun.Kime

	Made the spreadsheet debugger capable of capturing in-world systems as long as they are solo'ed.

	#tests have been running with it for several days, debugging real-world assets stably

Change 3933986 by Frank.Fella

	Niagara - Fixed a bug with merging where added dynamic inputs which changed names could end up with the wrong rapid iteration parameters.  Also fixed an issue where added dynamnic inputs would be renamed when they didn't need to be.

	#Tests Engine tests and fixes custom repro.

Change 3934052 by Frank.Fella

	Niagara - Added a console command to dump rapid iteration parameters for a system or emitter asset.

Change 3934436 by Simon.Tovey

	Fixes for sprite VF depth test failure issue

Change 3934658 by Frank.Fella

	Niagara - Make disabled modules visually distinct.

	#Tests General stack use.

Change 3935383 by Shaun.Kime

	Fixing mac compile errors

	#tests n/a
	#jira UE-55911

Change 3935420 by Yannick.Lange

	Niagara parameter UI first version.

Change 3935482 by Yannick.Lange

	Add missing files for parameters

Change 3935591 by Shaun.Kime

	more macos compile

	#tests na

Change 3935637 by Shaun.Kime

	Reverting to prior behavior

	#tests na

Change 3936541 by Yannick.Lange

	Remove the merge up menu entry for set variables module items.

Change 3936841 by Wyeth.Johnson

	Bool comparison dynamic input

Change 3936895 by Simon.Tovey

	A few perf improvements and fixes to the SetSolo transfering between solo and batched so all lightning sims can run batched after they're warmded up.

Change 3936899 by Simon.Tovey

	Missed a file

Change 3937178 by Krzysztof.Narkowicz

	Fixed bHasSkipOutputVelocityParameter for shaders without PreviousLocalToWorldMatrix (e.g. particles)

	#jira UE-50914

Change 3937222 by Yannick.Lange

	Random event spawn

Change 3937292 by Yannick.Lange

	Fix Adding a new parameter then renaming it the default name deletes the new parameter
	#jira UE-55994

Change 3938472 by Yannick.Lange

	Fix new parameters in emitters saving by using the editable emitter.

Change 3938474 by Yannick.Lange

	- Store graphs as weak object pointers in the parameter UI.
	- Allow right mouse menu on parameters in the system toolkit.
	- Refresh only the parameter actions when deleting an entry instead of refreshing the graphs aswell.

Change 3938525 by Yannick.Lange

	Fix creating an unique FName every tick for parameterstores by using a FString instead.

Change 3938596 by Shaun.Kime

	Macos compile

	#tests n/a

Change 3939362 by jonathan.lindquist

	Adding a new Component Spacing input to the debug value functions. This will allow users to make better use of space when debugging values.

Change 3939365 by Shaun.Kime

	Back out changelist 3936895 and 3936899
	Leaving in some changes around stats as they should be harmless.
	These changes were removed b/c they added poor perf to Jonathan's dissolve effect and also caused multiple tests to fail in engine tests.

	#tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me)

Change 3939367 by jonathan.lindquist

	Adding greyscale output

Change 3939368 by jonathan.lindquist

	Changing the pin order

Change 3939377 by Shaun.Kime

	Allows the unnormalized lut table flag to be copied over

	#tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me)

Change 3939379 by Yannick.Lange

	Rename FParameterStore Name to DebugName to prevent loading a FName into a FString with existing assets.

Change 3939382 by Shaun.Kime

	Adding the ability to have a default curve index with a custom switch node.

	#tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me)

Change 3939383 by Shaun.Kime

	Converting existing curves over to using the new default pin

	#tests all tests pass besides Yannick's FName/FString warning, with the exception of BPTimeControl, Hypnotizer, and MeshOrientation, which seem to be off by one frame, but have been consistently off for several days (CL 3929823 had same issues for me)

Change 3939501 by Shaun.Kime

	Submitting missing files

	#tests n/a

Change 3939580 by Wyeth.Johnson

	Default curve indexing to three more DIs

Change 3940122 by Yannick.Lange

	Parameters view: - Jump to new parameter added and request rename for new parameter.
	- Remove adding parameters to the parameterstore when a pin is requested.
	- Only show make new parameters in the dropdown to add a new parameter.
	- Use Sections of UI as types instead of int32.

Change 3940214 by Bradut.Palas

	fix crash when rename skeletal mesh user variable
	#jira UE-55236

	#tests none

Change 3940215 by Bradut.Palas

	undo not working in graph editor
	#jira UE-55466

	#tests none
	Overriding the BreakPinLinks methods to include a transaction

Change 3940250 by Bradut.Palas

	Creating stats tab in module toolkit to show LastOpCount

	#tests none

Change 3940251 by Bradut.Palas

	#jira UE-55684 create inline menus for stack

	#tests none

Change 3940262 by Simon.Tovey

	Back out changelist 3939365 with fixes
	Tests all now pass

Change 3940333 by Shaun.Kime

	Nullptr check

	#tests n/a

Change 3940338 by Krzysztof.Narkowicz

	Niagara sprite particles - implemented get previous position in order to fix sprite particle motion vectors

	#jira UE-52865

Change 3940407 by Yannick.Lange

	Create pin on map get and set node when dragging without recompiling the graph.

Change 3940534 by Shaun.Kime

	Making sure that collision returns defaults of 0 if nothing was found.

	#tests auto-tests that have been passing still pass

Change 3940709 by Simon.Tovey

	Temp hacks for the skeletal mesh painting issues.

Change 3940960 by Yannick.Lange

	Only build parameter menu once when graphchanged is called multiple times in a frame.
	Also use the existing metadata from graph to build the parameter menu, because the metadata already looped through all nodes and pins.

Change 3941019 by Yannick.Lange

	Meta data UI refresh next tick to avoid refreshing multiple times a tick.

Change 3941853 by Simon.Tovey

	Adding more dynamic parameters

Change 3941957 by Frank.Fella

	Property Editor - Fix issues with property row generator to support the niagara stack.
	+ Make the detail tree node name accessible through the interface, and fix the implementations for category group and property item.
	+ Add a temporary fix for passing instance customizations from the property row generator to the detail property row through the detail layout builder.  This should be unified in a nicer way, but this will work for the time being.

Change 3942174 by Frank.Fella

	Niagara - Stack UI Pass
	+ Advanced rows are not handled properly per item.
	+ Expanded and scroll state is now saved in editor data per asset.
	+ Added a "View Options" drop down for showing all advanced rows, and for showing/hiding outputs.
	+ Added an option to collapse all stack items from the emitter header context menu.
	+ Added support for "Edit Conditions" on module and dymaic inputs which will enable and disabled an input based on the value of another input.  This includes showing a checlbox inline for the edit condition toggle input.
	+ Added support for "Visible Conditions" on module and dynamic inputs which will hide and show inputs based on the value of another input.
	+ Removed the pencil icon for locally editable values in the stack.
	+ Fixed issues with invisible search results.  It's still possible for a search result to not highlight the text correctly, but the outline never disappears.
	+ Removed pinning for module inputs.
	+ Fixed the event handler properties so that they use the property row generator instead of an embedded details panel.
	+ Unified indent handling across all stack classes.
	+ Unified stack editor data across all stack classes.

Change 3942427 by Simon.Tovey

	Another hack for vertex painting tool

Change 3942453 by Simon.Tovey

	Some more hacks for skel mesh vertex painting until Jurre's rework is ready.

Change 3942799 by Yannick.Lange

	Rebuild metadata, input and output parameters UI next frame instead of on every graph changed call.

Change 3942833 by Frank.Fella

	Niagara - Fix the visibility of the advanced expander item.

Change 3942923 by Yannick.Lange

	Revert using metadata for parameters to looping through pins to find parameters in maps not connected to anything.
	Temporary fix to remove used parameters if they are found in the graph.

Change 3943094 by Wyeth.Johnson

	Rollback //UE4/Dev-Niagara/Engine/Plugins/FX/Niagara/Content/Modules/Spawn/Location/SphereLocation.uasset to revision 5

Change 3943154 by Wyeth.Johnson

	Metadata to sphere location module

Change 3943256 by Wyeth.Johnson

	Testing out sweet new metadata control

Change 3943374 by Olaf.Piesche

	Fixing mesh motion blur

Change 3943382 by Olaf.Piesche

	Turning on base pass velocities until I can fix separate vel pass for particles

Change 3943471 by Yannick.Lange

	Emitter view stats only show particles count. Use Niagara.EmitterStatsFormat 0 and 1 to switch between all data and only particle count. Default is 1 to only show particle count.

Change 3943497 by Yannick.Lange

	Paramater map remove FTickableEditorObject and use SWidget::Tick

Change 3943589 by Olaf.Piesche

	-Fix for linear impulse (offset by 1/2*velocity*dt instead to avoid distracting bounciness)
	-Collision Rest; add after impulse modules to make particles rest if in collision under threshold velocity magnitude

Change 3943644 by Olaf.Piesche

	Turn shader development mode back off

Change 3943718 by Olaf.Piesche

	Fix vertex factories

Change 3943776 by Olaf.Piesche

	Properly calculate old particle position using dt for velocity rendering

Change 3943780 by Frank.Fella

	Niagara - Fix ensure when removing dynamic inputs due to incorrect logic which would have left unused nodes in the graph.

Change 3943870 by Yannick.Lange

	Parameter drag drop window

Change 3943994 by Frank.Fella

	Niagara - Fix some editor settings not saving across sessions.

Change 3944056 by Shaun.Kime

	Updating to replace values reset when Wyeth resaved files.

	#tests DrawOrderGPU, DrawOrder, and TestDifferentInactiveEmitters now pass

Change 3944068 by Simon.Tovey

	Back out of my changes to vertex painting and replaced with Jurre's fixes.

Change 3944174 by Frank.Fella

	Niagara - Fix stack categories so that they don't freak out when the stack is refreshed, and also remove the uncategorized heading and move uncategorized inputs to the top.

Change 3944313 by Shaun.Kime

	Updated screenshots after motion blur

Change 3944321 by Shaun.Kime

	Fixing error message to be clearer about a disconnected Get node.

	#tests n/a

Change 3944351 by Shaun.Kime

	Making safe against weak pointers going away.
	Track error encountered by Jonathan.

	#tests n/a

Change 3944368 by Yannick.Lange

	Remove automatic adding prefix "particles."  when renaming functioninput.

Change 3944383 by Shaun.Kime

	Just adding some more nullptr check

	#tests n/a

Change 3944384 by Shaun.Kime

	Providing more context for a check that existed previosuly  and was encountered by Wyeth today

	#tests n/a

Change 3944872 by Yannick.Lange

	Remove old material parameter node.

Change 3945209 by Shaun.Kime

	Fixing possible infinite recurson on child array size of zero

	#tests n/a

Change 3945865 by Yannick.Lange

	Spreadsheet filter for output attributes

Change 3946091 by Simon.Tovey

	Per particle sorting for translucent sprites and meshes

Change 3946095 by Simon.Tovey

	Updated screens for dynamic param tests

Change 3946378 by Olaf.Piesche

	Another sprite motion blur fix

Change 3946864 by Shaun.Kime

	SkinnedMesh per-instance data requires 16 byte alignment due to usage of FMatrix. We were not guaranteeing that in our per-instance data system. We are now enforcing that to be true by aligning all memory size requests.

	#tests autotests pass

Change 3946928 by Wyeth.Johnson

	Skeletal mesh location metadata. THIS VERSION ALSO CRASHES ON SAVE FYI

Change 3946934 by Frank.Fella

	Niagara - Clean up rapid iteration parameters on compile.

	#Tests - Fixes the jira below, all auto tests which were currently passing still pass, and GDC effects load and look correct.

	#jira UE-55932

Change 3946936 by Frank.Fella

	Niagara - Fix crash when undoing adding a dynami input.

Change 3947213 by Simon.Tovey

	Fix for thread safety in collision data interface.
	Previously I'd made them thread safe between VM chunks but they already weren't safe between system instances.

Change 3947279 by Simon.Tovey

	Fixed thread safety issue with niagara global dynamic buffer

Change 3947788 by Simon.Tovey

	Fix enum property warnings

Change 3947849 by Olaf.Piesche

	Normalize orientation quats. Safety first.

Change 3947877 by Frank.Fella

	Niagara - Fix a crash when editing meta-data for a module currently open in a system or emitter editor stack.  This updates the FNiagaraStackFunctionInputBinder to track the lifetime of the default pin correctly.

Change 3948445 by jonathan.lindquist

	Inverting alpha output

Change 3948615 by Olaf.Piesche

	Don't access data layouts that are invalid because their bindings don't exist

Change 3949361 by Yannick.Lange

	Command to expand all groups and collapse all items of those groups in the stack.

Change 3949365 by Yannick.Lange

	Missing file for change 3949361

Change 3951123 by Simon.Tovey

	Fix bug with dynamic parameters in Niagara mesh particle VFs

Change 3951199 by Simon.Tovey

	Fix for issues caused by unsafe reads of GT data from RT

Change 3951293 by Olaf.Piesche

	Workaround for jittering particles with collision at rest state; will need to revisit after GDC

Change 3951533 by Yannick.Lange

	Collapse parameter menu by default

Change 3952106 by Frank.Fella

	Niagara - Fix data interface input initialization when inserting modules and dynamic inputs.  We now put all inputs into categories in the stack and this code didn't handle that.

Change 3954809 by Frank.Fella

	HoudiniNiagara - Add include to fix CIS incremental build.

Change 3954857 by Frank.Fella

	Niagara - Accept newer versions of 3 automated tests images as they are stable and still look correct for what they are testing.

Change 3954935 by Frank.Fella

	Niagara - Fix a crash in the skeletal mesh sampling info details customization when a mesh has no skeleton.

Change 3954969 by Simon.Tovey

	Compile fix for gpu emitters

Change 3955012 by Frank.Fella

	Niagara - Fix clang and deprecation warnings.

Change 3955988 by Olaf.Piesche

	Fixing collision queries (separating line query trace direction and velocity, so we can look a frame ahead properly); various fixes to the impulse modules; rest module now allows for color change when particles are set to rest. This checkin should stabilize collision dynamics substantially.

Change 3956730 by Yannick.Lange

	Cleanup parameter

Change 3957065 by Bradut.Palas

	enable/disable mechanism for renderers

	#tests none

Change 3957802 by Olaf.Piesche

	-Removing Velocity parameter from collision query DI, since velocity at query time is known and can just be passed along in temporary parameter; this stops the compiler from falling over in unity builds and also makes the Perform Query function more sane as an actual line check
	-Put some safeguarding against non-collisions (v.n>0) reported as intersections into the collision query module to avoid instances of particles being pushed through geometry
	-Updated modules to use the new function signature

	#tests modular explosion test map, EngineTests

Change 3957804 by Olaf.Piesche

	Updated tests for 3957802

Change 3957859 by Frank.Fella

	Niagara - Add missing #if to fix some of the nightly build errors.

Change 3958065 by Olaf.Piesche

	Fix GPU sim hlsl for the collision data interface; should make GPU collision bounce test run again

Change 3958302 by Olaf.Piesche

	modified test for sane depth bounds; accepting new results; some changes to hlsl for collision data interface

Change 3959007 by Simon.Tovey

	Further defining the barrier between GT and RT data.

	Not finished yet, especially for GPU sims but we're heading in the right direction.

Change 3960004 by Bradut.Palas

	QOL change, now committing search text in the stack (pressing enter) will jump to the next occurrence.

	#tests none

Change 3960019 by Frank.Fella

	Niagara - Preemptively fix up stack related header includes to avoid manual merges.

Change 3964217 by Bradut.Palas

	Fixing compile issue after renderer enable feature(the Isolate features require the WITH_EDITORONLY_DATA preprocessor directive to be enabled)

	#tests none

Change 3964581 by Frank.Fella

	Niagara - Get things compiling again after merge.  Mostly include fixes and commeting out lots of sequencer related stuff that needs to be fixed.

Change 3965057 by Frank.Fella

	Niagara - Fix compile issues in the houdini plugin.  Also add the houdini pluging to EngineTest so that it compiles by default when running tests.

Change 3965075 by Frank.Fella

	Niagara - Fix another include issue that was caught on the build machine.

Change 3965308 by Frank.Fella

	Niagara - One more header fix.  Should fix the win64 build in CIS.

Change 3965313 by Frank.Fella

	Niagara - Fix in editor playback.  The timeline data is still broken.

Change 3965482 by Yannick.Lange

	Stack source taken apart into different files.

Change 3965863 by Shaun.Kime

	Fixes scope level variable definition causing my local build to fail

	#tests n/a

Change 3965866 by Shaun.Kime

	Crash fix when the module is missing. Now show an error message as well as checking for script validity before calling method on it

	#tests n/a

Change 3968174 by Frank.Fella

	Niagara - Fix more merge fallout.  The emitter/system editor timeline now matches the stack data again.

Change 3968183 by Frank.Fella

	Niagara - Delete commented out include from merge.

Change 3972162 by Frank.Fella

	Niagara - Updated level sequence testing assets.

Change 3972880 by Shaun.Kime

	Merging using DevNiagaraToGDC2018
	Allowing disabled modules to still influence parameter maps.

	#tests n/a

Change 3973269 by Shaun.Kime

	Disabling warning about divide by zero as it is often incorrect

	#tests n/a

Change 3973273 by Shaun.Kime

	Forcing all three planes to be GPU

	#tests n/a

Change 3973307 by Shaun.Kime

	Fixing CIS win32 errors

	#tests n/a

Change 3973374 by Shaun.Kime

	Fixing minor static analysis warnings

	#tests n/a

Change 3976107 by Shaun.Kime

	Updating multiple files as they have the unversioned file warning

	#tests auto tests now show green

Change 3976114 by Shaun.Kime

	Taking snapshots after the integration for time control to clear automated tests. Frank was uncertain about the current behavior being correct, but didn't want to hold up integration for that.

	#jira UE-57117

Change 3976119 by Shaun.Kime

	Makiing GPU shaders contain the dependencies and the compile id's and other items so that they update properly.

	#tests auto-tests now pass

Change 3976449 by Shaun.Kime

	Adding additional debugging to logs

	#tests n/a

Change 3977172 by Frank.Fella

	Niagara - Fix issues with the level sequence integration for niagara caused by the integration from main, and accept the new test image.  This code should be updated at some point to use the new channel blending in sequencer.

	NOTE: There is still a timing issue that is evident in the automated test screen shot due to float timing and rounding issues in niagara, but the sequencer code is functioning correctly.

Change 3977362 by Bradut.Palas

	UE-55601 curve snapping not working in Niagara curve editor

	#tests none

Change 3977363 by Bradut.Palas

	exposed added external asset for function input so it would appear in context menu in the Niagara stack.

	#tests none

Change 3977368 by Bradut.Palas

	#jira UE-51052 If you undo an emitter rename we get invalid values
	The CachedUsageInfo got emptied but it didn't get restored by the undo, sending the system in an endless Compile() loop
	Added a Modify() call in the UNiagaraScriptSource::InvalidateCachedCompileIds()

	#tests none

Change 3978716 by Shaun.Kime

	Fixing half of CIS static analysis warnings and localization symbol dupe warnings from Jamie Dale

	#tests auto tests pass other than known level sequence test

Change 3978857 by Shaun.Kime

	The map SpawnTest niagara actor didn't have its wait for compilation flag set, potentially leading to artifacts. Disabling for now as that didn't resolve the issue.

Change 3979594 by Shaun.Kime

	Potential fix for cook on Orion

	#tests n/a

Change 3979713 by Shaun.Kime

	Fixing several more CIS static analysis warnings as well as duplicate localization string warnings from Jamie Dale

	#tests n/a

Change 3980017 by Shaun.Kime

	Fixing CIS static analysis warnings as well as duplicate localization string warnings from Jamie Dale

	#tests n/a

Change 3981859 by Shaun.Kime

	Fixing crash in Paragon when the normals buffer was not present during startup with just UI screens.

	#jira UE-57188

	#tests got through to paragon main screen, related auto-tests pass

Change 3982685 by Shaun.Kime

	For some reason, when Lightmass is spinning off workers, the render thread is null, causing us to trigger checks that we shouldn't trigger when killing of system instances.
	#jira UE-57214

	#tests all auto-tests pass

Change 3983902 by Simon.Tovey

	Speculative fixes for mac errors regarding niagara vertex decls.

Change 3984023 by Andrew.Rodham

	Sequencer: No longer upgrade bIsInfinite for section types that do not support open ranges

Change 3986727 by Wyeth.Johnson

	Fixed add velocity from point to work in more situations, not cause errors regardless of stack location, made it more programmable with inputs, and added metadata

Change 3988114 by Wyeth.Johnson

	fixed color and inherit parent vel

Change 3989175 by Simon.Tovey

	Improved VM error reporting.

	#tests engine tests

Change 3995007 by Yannick.Lange

	Parameter menu in system layout

Change 3995192 by Yannick.Lange

	Fix niagara script details panel search

Change 3995291 by Yannick.Lange

	Parameter menu tooltip fix

Change 3997804 by shaun.kime

	Lookup table is off for this. Keys are 0,0 and 1,1, so you'd expect normalized age as a sampler to just return the same value from lookup. If LUT is disabled, this is true. If LUT is enabled, it isn't, especially the farther one gets from 0.

Change 3998124 by Simon.Tovey

	Fixed Curve LUT generation

	#tests editor
	#jira UE-57604

Change 3998286 by Wyeth.Johnson

	Fixed normalized execution index to, you know, work.

Change 4000324 by Shaun.Kime

	Replacing a thread-safety issue where we get an enum on an as-needed basis. This was causing crashes in cooking as you cannot find from the global table while serializing.

	#tests have not gotten the crash since

Change 4000428 by Bradut.Palas

	UE-55750 focus curve editor when "show" button is pressed
	UE-55791 user variable curves cannot be shown in the Curve tab
	These issues were related and touched the same area of code, so I fixed them together. UE-55791 is basically just getting curve data from the system exposed variables too.

	#tests none

Change 4001094 by Frank.Fella

	Niagara - Fix slowdown in the metadata editor due to delegate rebinding.

Change 4001098 by Frank.Fella

	Niagara - Remove the tool tip from the additional options drop-down for modules since it covers the drop down menu.

Change 4001133 by Bradut.Palas

	Fix curve editor getting focused each time a curve was changed.
	#jira UE-57708

	#tests none

Change 4001253 by Frank.Fella

	PropertyEditor - Fix issues with external root handling.
	+ Fix external nodes not being cleaned up correctly when custom node builders rebuild children.
	+ Fix expanded state being trampled when processing external nodes due to the expanded nodes list being emptied every time RestoreExpandedItems was called.
	+ Fix performance issues with refreshing during tick by moving all calls to RestoreExpandedItems to UpdateFilteredDetails, and then only calling UpdateFilteredDetails once per tick as needed instead of per root property node and per root external node.

Change 4003365 by Shaun.Kime

	If the physical material has gone away, make sure to set value values. Note that if this data interface is going to go on in parallel to the game thread, we'll need something more sophisticated.

	#tests Win64 tests pass

Change 4003367 by Shaun.Kime

	Making sure that the system has finished compiling before we begin cooking.

	#tests n/a

Change 4003374 by Frank.Fella

	Niagara - Fix a crash when adding and removing modules and dynamic inputs with data interfaces.

	#jira UE-57749

Change 4003696 by Shaun.Kime

	Getting rid of whitelist, now open on all platforms.

	#tests n/a

Change 4005368 by Shaun.Kime

	Fixing compile error on Linux

	#tests n/a

Change 4013779 by Shaun.Kime

	Interpolated spawn on GPU does not yet work but checkpointing work.
	+ Added AdditionalDefines to the VMCompileId, switched interpoalted spawn to use that
	+ Added rough interpolated spawn support to translator by refactoring away from specific calls and hard-coded update/spawn somewhat... could improve for events
	+ Revised shader variables away from Phase0/Phase1 terminology to the true Update/Spawn meaning. Leaving the phase numbers as an implementation detail within the usf.
	+ Added ToString to ParameterStores for debugging
	+ Changed GPU ExecIndex() logic to actually work similar to the VM

	#tests collision gpu fails

Change 4015355 by Simon.Tovey

	Persistent IDs final.

	Still need to change the compile ID parts over to use the new additional defines but the core functionality is in.

	#tests editor + engine tests

Change 4018445 by Simon.Tovey

	Some missing assets

Change 4021647 by shaun.kime

	Moving jonathan's DebugParticleData to Niagara Extras

Change 4024809 by Yannick.Lange

	Parameter map hover text using metadata description.

Change 4025042 by Wyeth.Johnson

	Dogfooding the skeletal Mesh location module w/ comments, reroute pins, map gets and sets, metadata, tooltips, etc.

Change 4025236 by Shaun.Kime

	Working on getting interpolated spawning working. Submitting to get assistance from Simon.

	... PLEASE DON'T SYNC UNLESS YOU'VE SPOKEN TO ME...

	#tests collision test on GPU is better, but not yet right.. ribbon id emitter is ensuring on LUT table generation

Change 4025372 by Shaun.Kime

	Making the debug particle data stay the same size as the base particle for easier debugging.

	#tests n/a

Change 4025701 by Shaun.Kime

	Debug asset for Simon

	#tests n/a

Change 4027865 by Shaun.Kime

	Fixing parameter map stores to properly handle reset. Previously was leaving around padding info from previous version of the script which could be totally wrong.

	#tests now don't crash

Change 4029638 by Wyeth.Johnson

	Refactor Skeletal mesh location module to test some ideas on coding standards and shake out workflow issues

Change 4030135 by Shaun.Kime

	Interpolated spawning now works on the GPU.

	#tests collision gpu has stray collisions and the GenerateLocationEvent was recently updated that broke . will fix in a later update

Change 4030197 by Wyeth.Johnson

	Refactor static mesh location module

Change 4033437 by Simon.Tovey

	Adding a few simple new functions for direct access to vertex positions for cannabis.cod3r.

Change 4033937 by Shaun.Kime

	Setting the wait for compilation flag

	#tests now pass consistently

Change 4034391 by Shaun.Kime

	Created a parameter map default node to start default call chains.Updated standard modules and dynamic inputs.

	#tests all previoulsy passing tests pass

Change 4035002 by Shaun.Kime

	Updated to work with latest main integration

	#tests n/a

Change 4035523 by Wyeth.Johnson

	Refactor Cone stuff to coding standards, replace some things with functions

Change 4035672 by Shaun.Kime

	Fixing build warnings

	#tests n/a

Change 4036887 by Wyeth.Johnson

	Some metadata, some optimization, some additional refactoring and swapping in functions. Straight Dogfoodin'

Change 4037132 by Shaun.Kime

	Adding GPU test versions of several assets

Change 4037241 by Wyeth.Johnson

	Optimizing, metadata, and making some coding standards changes

Change 4037436 by Wyeth.Johnson

	Fixing a pointless module to make it... pointful?

Change 4037629 by Frank.Fella

	Niagara - Fix issues with data interfaces as parameters
	+ Collect data interface reads and writes from parameter maps during compilation so they can be hooked up a runtime.
	+ Add new runtime parameter stores for systems and emitters at runtime which bind the exposed data interfaces into the execution contexts.
	+ Fix the editor code which updates the compiled data interfaces so that it updates the correct ones regardless of where they are defined.
	+ Fix an issue where failed compiles weren't being propgated to the UI correctly.

Change 4037832 by Shaun.Kime

	Properly handling nullptr references

	#tests deleting a module from the stack after it was recently refreshed now doesn't crash

Change 4037917 by Wyeth.Johnson

	Fix add velocity from point (needed begin defaults), reorg, comment and metadata

Change 4038250 by Wyeth.Johnson

	Big refactor of spawn per unit

Change 4038665 by Shaun.Kime

	Events now take parameter map in/out pins

	#tests now the events auto-tests should pass

Change 4038723 by Shaun.Kime

	Now renderers can say if they are compatible with the SimTarget mode.

	#tests now changing to GPU doesn't crash a light renderer

Change 4038731 by Shaun.Kime

	Missing file from prior checkin

	#tests n/a

Change 4038742 by Shaun.Kime

	Attempting to fix editor build, which is unfortunately fine on my machine

	#tests n/a

Change 4040069 by Wyeth.Johnson

	Refactor of Event Generator and Event Receiver, new coding standards for events

Change 4040377 by Wyeth.Johnson

	Refactor the solver to adhere to coding standards (and remove some reroute pins, sorry Shaun)

Change 4040639 by Wyeth.Johnson

	Vector Noise Force refactor and optimization

Change 4041031 by Shaun.Kime

	Making the modulo functions on the gpu return a value.

	#tests passes cook on PS4 and gets past this in compile on Mac

Change 4041254 by Wyeth.Johnson

	Refactor Point Attraction, change some behavior also

Change 4041999 by Yannick.Lange

	Parameters refactor:
	- Find parameters and references in graph
	- Renaming parameters, includes renaming all pins in the graph
	- Removing parameters
	- Find metadata when finding parameters, so we are not looping through all nodes/pins twice
	- Parameters list supports multiple emitters in systems

Change 4042058 by Simon.Tovey

	Refactored GPU parameters.

	- Shader now uses the DI default object to create the correct parameters struct.
	All parameter and buffer management now being handled inside this parameter struct.
	This allows far more encapsulated code for each DI.
	Allows us to reamove the GPU buffers from and the Scene texture refs that were in the base DataInterface class.
	Simplifies the API and process of implementing DI's on the GPU considerably.

	- Removed all existing GPU buffer support code and usage. All DIs now use a parameters struct.

	- Have moved tons of curve code into the base class, simplifying the child implementation classes.

	- Implemented GPU curve interpolation.

	- Removed bAllowUnnormalizedLUT. Confusing and now unnessessary. All curves do this by default.

	- Modified FNiagaraShaderMapId to use the latest FNiagaraCustomVersion::LatestScriptCompileVersion and bumped it.

	- Created NiagaraCore module and moved a few classes into it. Anything needed by both the shaders and runtime should be here.
	- Refactored DI hierarchy to base from a new UNiagaraDataInterfaceBase which is inside NiagaraCore.

	- Removed constness from many UStruct/UEnum/UClass pointers. Technically we don't ever need these to be non const so initialy coded as const. Some existing engine code however requires these be non const so had to propagate that back through our code.

Change 4043427 by jonathan.lindquist

	Submitting a material function that will allow users to reproduce mesh surfaces.

Change 4043448 by Olaf.Piesche

	Async GPU buffer readbacks and updates

Change 4043679 by Shaun.Kime

	Fixing Mac compile issue. Not sure if correct, but unused code so good for now.

	#tests n/a

Change 4044000 by Simon.Tovey

	static analysis fix

Change 4044001 by Simon.Tovey

	Fix for gpu scripts with multiple curves.

Change 4044124 by Yannick.Lange

	Fix persistent guid for parameter map set pins.

Change 4044230 by Simon.Tovey

	I didn't forget to check these in. Nothing to see here.... *whistling*....

Change 4044584 by Bradut.Palas

	Module dependency properties are now available (to be used by technical artists before the functionality is done and submitted)
	#jira UE-58200

	#tests none

Change 4044663 by Wyeth.Johnson

	Jitter position needed begin defaults, got a refactor which I was in there

Change 4044894 by Yannick.Lange

	Rename parameter and all referenced pin when renaming a pin on a map set or get.
	Also fixes renaming a pin not deleting the old metadata.

Change 4045383 by Wyeth.Johnson

	Fix up and comment/tooltip on mesh rotation, look at, and rot rate

Change 4045488 by Wyeth.Johnson

	Update Age reorg just for readability

Change 4045799 by Shaun.Kime

	Reworking test art to get rid of known issues and put known issues into their own assets.

Change 4046328 by Wyeth.Johnson

	Some optimizations, options to polar/cartesian, starting in on Dynamic Inputs

Change 4046728 by Shaun.Kime

	Fixed error where we were writing to Loca.Module.EventVelocity instead of Local.Module.EventVelocity.

Change 4047423 by Frank.Fella

	Niagara - Fix post load code for the assignment node which was not conditionally post loading another object it was using which now has a custom post load.  This resulted in strange pin renaming which was breaking merging and automated tests.

Change 4047425 by Frank.Fella

	Niagara - Make the merge manager a little more resistant to malformed stacks.

Change 4047788 by Bradut.Palas

	#jira UE-57902 Module input sort priority

	#tests none

Change 4048063 by Yannick.Lange

	Fix don't show context menu on parameter view categories.
	#jira UE-57196

Change 4048068 by Yannick.Lange

	Fix create system from emitter
	#jira UE-57186

Change 4048132 by Yannick.Lange

	Add missing includes.

Change 4048269 by Shaun.Kime

	Removing ensure that we log later

	#tests n/a

Change 4048273 by Shaun.Kime

	Really doing it this time

	#tests n/a

Change 4048595 by Yannick.Lange

	Fix niagara if node input disconnect on output pin rename.
	#jira UE-58095

Change 4049640 by Simon.Tovey

	Daft mistake in curve hlsl gen.

Change 4050270 by jonathan.lindquist

	Submitting a module that lerps each of a particle system's intrinsic particle values. Each variable set utilizes an opt-in bool.

Change 4050282 by jonathan.lindquist

	Submitting newly formated Mesh Reproduction modules. They now contain documentation, be fully generalized and meet our updated coding standards.

Change 4050566 by Olaf.Piesche

	-More fixes and changes for async gpu buffer readback
	-removed more CPU intervention; spawning and death now happen largely without CPU direction, other than determining the number of particles to spawn
	-Added piping number of vert indices per instance from the renderer down to the GPU context and CS; as a result, GPU simulated mesh emitters are working again; this will need a bit of additional work to handle multiple renderers (will need multiple DrawIndirect parameter buffers reflecting the different renderers)
	-General cleanup and prettification

Change 4050907 by Frank.Fella

	Niagara - Add support for default dynamic inputs on modules and dynamic inputs.

Change 4051436 by Simon.Tovey

	Forcing a refresh of curve LUTs on assets with old versions.

Change 4051463 by Simon.Tovey

	Compile fix

Change 4051900 by Frank.Fella

	Niagara - Fix linux warning.

Change 4052253 by Olaf.Piesche

	GPU sim interpolated spawn fixes - Look Ma, no gaps!

Change 4052321 by Frank.Fella

	Niagara - Enable the level sequence test.

Change 4052353 by Shaun.Kime

	Renamed variable after Wyeth's change

	#tests MeshOrientationTests now pass

Change 4052627 by jonathan.lindquist

	Submitting a new spline function.

Change 4052648 by Shaun.Kime

	PS4 development builds don't seem to be able to remove generated data for structs like this even though it is in a non-editor build.

	#tests n/a

Change 4052661 by Olaf.Piesche

	-Avoid branching on every OutputData operation by allocating a scratch instance at the buffer end and setting the default index from AcquireIndex to that.
	-bit of shader code cleanup

Change 4052706 by jonathan.lindquist

	Adding a module that supports a single segment spline

Change 4052712 by jonathan.lindquist

	Adding a below threshold output to the direction and length safe function

Change 4052786 by jonathan.lindquist

	Submitting a new height lerp function

Change 4053126 by jonathan.lindquist

	Submiting a function that calculates a triangle's surface area.

Change 4053132 by jonathan.lindquist

	Changing the category to geometry

Change 4053141 by jonathan.lindquist

	Moving the asset back to a generic math category

Change 4053166 by jonathan.lindquist

	Submitting a new threshold function that removes threshold downtime.

Change 4053564 by Shaun.Kime

	Added staging to ini as requested by cook

	#tests n/a

Change 4053619 by Shaun.Kime

	Fixing defaults

	#tests used by Orion art

Change 4054171 by Yannick.Lange

	Remove bold font for parameters.

Change 4054183 by Yannick.Lange

	Syncing system exposed parameters and parameters list. Includes adding, removing and renaming parameters.

Change 4054313 by Wyeth.Johnson

	Refactor spawnrate to (mostly, other than a bug) conform to coding standards, and set begin defaults on a few things.

Change 4054840 by Shaun.Kime

	Fixing redundant branch for CI

	#tests n/a

Change 4055492 by Shaun.Kime

	Updating compile version since I changed the usf

	#tests n/a

Change 4055550 by Shaun.Kime

	Disabling rendering of middle module as it differs between machines.

	#tests LevelSequenceTestsNiagara now passes

Change 4056256 by Shaun.Kime

	Disabling the ensure and turning into log statements for curve copying

	#tests n/a

Change 4056287 by Shaun.Kime

	Now using GLobalCompileShader. There are still issues with cooking as there is sometimes a runtime streaming error that we didn't read in the correct amount of data. I think the logic for when/if we stream out the compiled shader might still need TLC.

	#tests n/a

Change 4056381 by jonathan.lindquist

	A new quat to angle axis and angle axis to quat conversion mat function

Change 4056513 by Frank.Fella

	Niagara - Fix crashes for default data interfaces where the pin default was empty or the data interface wasn't initialized.

	#jira UE-58789

Change 4056734 by Frank.Fella

	Niagara - Drag and drop for modules.

Change 4056880 by Simon.Tovey

	Replacing engine tests shots for RibbonID test.
	Some slight changes introduced, likely curve or recent module changes.

Change 4056894 by Bradut.Palas

	UNiagaraStackEntry Error refactoring + Module dependency warning feature.
	#jira UE-58199, UE-58200

	#tests none

Change 4056916 by Bradut.Palas

	Add missing files from shelved changelist.

	#tests none

Change 4056937 by Bradut.Palas

	#jira UE-54678 The skeletal mesh customisation did not update when the mesh was changed through the data interface or mesh editor

	#tests none

Change 4057014 by Frank.Fella

	Niagara - Fix cis initializer order warning.

Change 4057542 by Bradut.Palas

	#jira UE-58554 Remove Refresh UI button from Niagara script editor
	#jira UE-58555 Remove Numeric Output Type Selection Mode from Niagara script UI

	#tests none

Change 4057702 by Bradut.Palas

	The stack editor priority in the variable metadata now properly has zero as default value.
	#jira UE-58740

Change 4057758 by Frank.Fella

	Niagara - Fix text wrapping for error items.

Change 4057990 by Bradut.Palas

	Stack error tweaks (added error count to the stack errors button and also updating icon according to highest severity issue in the subtree)

	#tests none

Change 4057996 by Shaun.Kime

	Trying to fix the static analysis header tool error in CIS

	#tests n/a

Change 4058027 by Shaun.Kime

	Fixing compilation on other platforms

	#tests compiles on playstation

Change 4058356 by Frank.Fella

	Niagara - Fix an assert that happens when adding a module or dynamic input with a boolean or enum input.

Change 4058428 by Frank.Fella

	Niagara - Fix a crash when removing an input from a set variables node in the stack which was caused by the function losing an input without the stack being refreshed.  This also fixes an issue where add and remove actions on a set variables module wouldn't take affect until the graph was compiled.

Change 4059924 by Wyeth.Johnson

	Rollback //UE4/Dev-Niagara/Engine/Plugins/FX/Niagara/Content/Modules/Spawn/Velocity/AddVelocity.uasset to revision 5

Change 4060256 by Wyeth.Johnson

	Forces are now dependent on a solver

Change 4060430 by Wyeth.Johnson

	Velocity modules depend on a solver

Change 4060949 by Shaun.Kime

	Fixing pragma once definition as well as a possible null deref

	#tests n/a

Change 4060955 by Shaun.Kime

	Fixing due to changes in defaults

	#tests all now pass PC

Change 4061000 by jonathan.lindquist

	Debug particle material improvements which includes comments in the shader, rearranged layout with a vector 2 input for particle id, new texture, a new instance that includes "focus masking"

Change 4061804 by Wyeth.Johnson

	Optimized out a couple unnecessary bits of math from some axis alignment stuff, solver dependencies

Change 4061974 by Simon.Tovey

	Fixed GPU cooking.

	- Removing check for emitter SimTarget in CanBeRunOnGpu() and relying only on the script usage having been loaded already.
	We can't rely on properties in the emitter being loaded before the call to UNiagaraScript::PostLoad() so this is unsafe.

	- Adding some dummy gpu buffers to bypass validation ensures in rhi when we need to set params for SRVs that have not been allocated yet.

	- Fixed bug in RHI that was returning FGPUFenceRHIParamRef and so the created fence was immediately freed and boom.

Change 4062269 by Shaun.Kime

	Re-enabling most of the tests.

	#test n/a

Change 4062414 by tim.gautier

	QAGame: Updated QA-Effects for mobile compatibility
	- Removed Atmospheric Fog (not supported on Mobile)
	- Added SkySphere (resolved lighting issues)

Change 4062651 by Shaun.Kime

	Saving with versions

Change 4062673 by Shaun.Kime

	Making emitter names without spaces so that they can be blacklisted if need be

Change 4062686 by Shaun.Kime

	Getting ready for CI for 4.20

Change 4062687 by Shaun.Kime

	Updating mac images

Change 4063298 by Shaun.Kime

	Disabling collision test gpu for now. Need to investigate what broke it tomorrow.

	#tests  CollisionBounceGPU

Change 4063373 by Shaun.Kime

	Blacklisting mac tests that still need work

Change 4063434 by Shaun.Kime

	Cleaning out previous debug code

	#tests n/a

Change 4063618 by Yannick.Lange

	Fix dragging an input pin to the add pin of an if node

	#jira UE-58600

Change 4063847 by Frank.Fella

	Niagara - Rename RibbonSortKey to RibbonLinkOrder, change it from an int32 to a float, and disable uv age offset when using link order instead of normalized age to order particles in the ribbon.  This should fix the issues preventing beams from being implemented nicely.

	#tests Auto-tests

Change 4064150 by tim.gautier

	QAGame: Removing floating NewWidgetBP from /Content

Change 4064237 by Shaun.Kime

	Disabling the level sequence test for now

Change 4064902 by Shaun.Kime

	Fixing compile errors on linux editor build
	#jira UE-58620

	#tests n/a

Change 4065167 by tim.gautier

	QAGame: Submitting temporary update to TM-ShaderModels, adding Niagara station

Change 4065400 by tim.gautier

	QAGame: Submitting updated (temp) TM-ShaderModels. Set NewNiagaraEmitter to Local Space by default

Change 4065540 by Frank.Fella

	Niagara - Temporarily disable the module dependencies until they can be fixed.

Change 4065570 by Shaun.Kime

	Fixing linux build

	#tests n/a
	#jira UE-58979

Change 4066753 by Shaun.Kime

	Updating custom version after previous change to shader includes

	#tests autotests pass

Change 4067981 by Frank.Fella

	Niagara - Fix potential null dereference found by CIS

	#jira UE-59013

Change 4067998 by Shaun.Kime

	Nullpointer checks on shutdown

	#jira UE-59000

Change 4068104 by Frank.Fella

	Niagara - Change the prefix for the previous parameter values from PREV__ to PREV_ since the cross compiler reserves all symbols with double underscores for opengl.

Change 4068118 by Frank.Fella

	Niagara - Fix an open GL crash where we weren't passing the correct buffer index when setting parameters for compute shaders.

Change 4069299 by Olaf.Piesche

	Async GPU readback/update mobile platform fixes

	CPU particles should work on Android

	#jira UE-58986

Change 4069603 by Shaun.Kime

	Making it possible to see the debug output if the console variables are set for shaders.

	#tests auto-tests pass

Change 4069628 by Shaun.Kime

	OpenGL is very picky about shutting down its texture buffers. We were improperly holding onto static resources and leaking OpenGLShaderResourceViews until module shutdown. Unfortunately, this is *after* the renderer has been shut down and the corresponding OpenGL managers have been deleted, causing us to call into deleted memory. By making several classes FRendererResources, we now register at the appropriate times. In several cases, since the buffers are special purpose fallbacks I moved them into helper locations that are build on demand.

	Removed FNiagaraVertexFactoryBase::DummyBuffer
	Created FNiagaraDummyRWBufferInt and FNiagaraDummyRWBufferFloat so that I could wrap several dummy RW buffers in RendererResources and TGlobalResource.
	Removed NiagaraEmitterInstanceBatcher::DummyWriteIndexBuffer

	#tests all auto-tests pass on PC and OpenGL and we can open and close OpenGL after using Niagara assets

	#jira UE-59000

Change 4069646 by Shaun.Kime

	Disabling Niagara component activation on Switch. This is an attempt to bypass a crash after the assets have been loaded on Switch.

	#tests auto-tests on PC still pass

	#jira UE-59048

Change 4069660 by Shaun.Kime

	Updated Niagara version

	#tests Auto tests pass

Change 4069714 by Shaun.Kime

	Fixing Olaf's checkin prior adding offset to the base readback call

	#tests autotests pc pass

Change 4070785 by Olaf.Piesche

	Make RWBuffer available on Metal, Vulkan, and ES3.1 with SRVs

Change 4070888 by Olaf.Piesche

	#jira UE-57657

	Reenable ribbon custom facing mode

Change 4071570 by Shaun.Kime

	Removing thread pool size log item as it comes up thousands of times in a cook and is purely for debugging.

	#tests n/a

Change 4071926 by Shaun.Kime

	Disabling Olaf's change from earlier in the day as it doesn't work on PS4.

	#tests Ribbon test now works again


Change 4073700 by Shaun.Kime

	Fixing compiler warning about float4 being used as a float.

	#tests pc auto tests pass

	#jira UE-59157

[CL 4075457 by Shaun Kime in Main branch]
2018-05-16 12:53:39 -04:00

548 lines
17 KiB
C++

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#include "SGraphNodeComment.h"
#include "Widgets/SBoxPanel.h"
#include "Framework/Application/SlateApplication.h"
#include "EdGraphNode_Comment.h"
#include "GraphEditorSettings.h"
#include "SGraphPanel.h"
#include "SCommentBubble.h"
//#include "TextWrapperHelpers.h"
#include "TutorialMetaData.h"
#include "Widgets/Text/SInlineEditableTextBlock.h"
namespace SCommentNodeDefs
{
/** Size of the hit result border for the window borders */
/* L, T, R, B */
static const FSlateRect HitResultBorderSize(10,10,10,10);
/** Minimum resize width for comment */
static const float MinWidth = 30.0;
/** Minimum resize height for comment */
static const float MinHeight = 30.0;
/** TitleBarColor = CommentColor * TitleBarColorMultiplier */
static const float TitleBarColorMultiplier = 0.6f;
/** Titlebar Offset - taken from the widget borders in UpdateGraphNode */
static const FSlateRect TitleBarOffset(13,8,-3,0);
}
void SGraphNodeComment::Construct(const FArguments& InArgs, UEdGraphNode_Comment* InNode)
{
this->GraphNode = InNode;
this->bIsSelected = false;
// Set up animation
{
ZoomCurve = SpawnAnim.AddCurve(0, 0.1f);
FadeCurve = SpawnAnim.AddCurve(0.15f, 0.15f);
}
// Cache these values so they do not force a re-build of the node next tick.
CachedCommentTitle = GetNodeComment();
CachedWidth = InNode->NodeWidth;
this->UpdateGraphNode();
// Pull out sizes
UserSize.X = InNode->NodeWidth;
UserSize.Y = InNode->NodeHeight;
MouseZone = CRWZ_NotInWindow;
bUserIsDragging = false;
}
void SGraphNodeComment::Tick( const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime )
{
SGraphNode::Tick(AllottedGeometry, InCurrentTime, InDeltaTime);
const FString CurrentCommentTitle = GetNodeComment();
if (CurrentCommentTitle != CachedCommentTitle)
{
CachedCommentTitle = CurrentCommentTitle;
}
const int32 CurrentWidth = static_cast<int32>(UserSize.X);
if (CurrentWidth != CachedWidth)
{
CachedWidth = CurrentWidth;
}
const bool bShowCommentBubbles = GetDefault<UGraphEditorSettings>()->bShowCommentBubbles;
if (bShowCommentBubbles)
{
UEdGraphNode_Comment* CommentNode = CastChecked<UEdGraphNode_Comment>(GraphNode);
if (bCachedBubbleVisibility != CommentNode->bCommentBubbleVisible_InDetailsPanel)
{
GetCommentBubble()->UpdateBubble();
bCachedBubbleVisibility = CommentNode->bCommentBubbleVisible_InDetailsPanel;
}
if (CachedFontSize != CommentNode->FontSize)
{
UpdateGraphNode();
}
}
else
{
if (bCachedBubbleVisibility && CommentBubble.IsValid())
{
CommentBubble->SetVisibility(EVisibility::Collapsed);
}
CommentBubble.Reset();
bCachedBubbleVisibility = false;
}
}
FReply SGraphNodeComment::OnDrop( const FGeometry& MyGeometry, const FDragDropEvent& DragDropEvent )
{
return FReply::Unhandled();
}
void SGraphNodeComment::OnDragEnter( const FGeometry& MyGeometry, const FDragDropEvent& DragDropEvent )
{
}
float SGraphNodeComment::GetWrapAt() const
{
return (float)(CachedWidth - 32.0f);
}
TSharedPtr<SCommentBubble> SGraphNodeComment::GetCommentBubble()
{
if (!CommentBubble.IsValid())
{
// Create comment bubble
CommentBubble = SNew(SCommentBubble)
.GraphNode(GraphNode)
.Text(this, &SGraphNodeComment::GetNodeComment)
.OnTextCommitted(this, &SGraphNodeComment::OnNameTextCommited)
.ColorAndOpacity(this, &SGraphNodeComment::GetCommentBubbleColor)
.AllowPinning(true)
.EnableTitleBarBubble(false)
.EnableBubbleCtrls(false)
.GraphLOD(this, &SGraphNode::GetCurrentLOD)
.InvertLODCulling(true)
.IsGraphNodeHovered(this, &SGraphNode::IsHovered);
GetOrAddSlot(ENodeZone::TopCenter)
.SlotOffset(TAttribute<FVector2D>(CommentBubble.Get(), &SCommentBubble::GetOffset))
.SlotSize(TAttribute<FVector2D>(CommentBubble.Get(), &SCommentBubble::GetSize))
.AllowScaling(TAttribute<bool>(CommentBubble.Get(), &SCommentBubble::IsScalingAllowed))
.VAlign(VAlign_Top)
[
CommentBubble.ToSharedRef()
];
}
return CommentBubble;
}
bool SGraphNodeComment::IsNameReadOnly() const
{
return !IsEditable.Get() || SGraphNode::IsNameReadOnly();
}
void SGraphNodeComment::UpdateGraphNode()
{
const bool bShowCommentBubbles = GetDefault<UGraphEditorSettings>()->bShowCommentBubbles;
// No pins in a comment box
InputPins.Empty();
OutputPins.Empty();
// Avoid standard box model too
RightNodeBox.Reset();
LeftNodeBox.Reset();
// Remember if we should be showing the bubble
UEdGraphNode_Comment* CommentNode = CastChecked<UEdGraphNode_Comment>(GraphNode);
bCachedBubbleVisibility = bShowCommentBubbles ? CommentNode->bCommentBubbleVisible_InDetailsPanel : false;
// Setup a tag for this node
FString TagName;
// We want the name of the blueprint as our name - we can find the node from the GUID
UObject* Package = GraphNode->GetOutermost();
UObject* LastOuter = GraphNode->GetOuter();
while (LastOuter->GetOuter() != Package)
{
LastOuter = LastOuter->GetOuter();
}
TagName = FString::Printf(TEXT("GraphNode,%s,%s"), *LastOuter->GetFullName(), *GraphNode->NodeGuid.ToString());
SetupErrorReporting();
// Setup a meta tag for this node
FGraphNodeMetaData TagMeta(TEXT("Graphnode"));
PopulateMetaTag(&TagMeta);
CommentStyle = FEditorStyle::Get().GetWidgetStyle<FInlineEditableTextBlockStyle>("Graph.CommentBlock.TitleInlineEditableText");
CommentStyle.EditableTextBoxStyle.Font.Size = CommentNode->FontSize;
CommentStyle.TextStyle.Font.Size = CommentNode->FontSize;
CachedFontSize = CommentNode->FontSize;
bool bIsSet = GraphNode->IsA(UEdGraphNode_Comment::StaticClass());
this->ContentScale.Bind( this, &SGraphNode::GetContentScale );
this->GetOrAddSlot( ENodeZone::Center )
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
[
SNew(SBorder)
.BorderImage( FEditorStyle::GetBrush("Kismet.Comment.Background") )
.ColorAndOpacity( FLinearColor::White )
.BorderBackgroundColor( this, &SGraphNodeComment::GetCommentBodyColor )
.Padding( FMargin(3.0f) )
.AddMetaData<FGraphNodeMetaData>(TagMeta)
[
SNew(SVerticalBox)
.ToolTipText( this, &SGraphNode::GetNodeTooltip )
+SVerticalBox::Slot()
.AutoHeight()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Top)
[
SAssignNew(TitleBar, SBorder)
.BorderImage( FEditorStyle::GetBrush("Graph.Node.TitleBackground") )
.BorderBackgroundColor( this, &SGraphNodeComment::GetCommentTitleBarColor )
.Padding( FMargin(10,5,5,3) )
.HAlign(HAlign_Fill)
.VAlign(VAlign_Center)
[
SAssignNew(InlineEditableText, SInlineEditableTextBlock)
.Style( &CommentStyle )
.Text( this, &SGraphNodeComment::GetEditableNodeTitleAsText )
.OnVerifyTextChanged(this, &SGraphNodeComment::OnVerifyNameTextChanged)
.OnTextCommitted(this, &SGraphNodeComment::OnNameTextCommited)
.IsReadOnly( this, &SGraphNodeComment::IsNameReadOnly )
.IsSelected( this, &SGraphNodeComment::IsSelectedExclusively )
.WrapTextAt( this, &SGraphNodeComment::GetWrapAt )
.MultiLine(true)
.ModiferKeyForNewLine(EModifierKey::Shift)
]
]
+SVerticalBox::Slot()
.AutoHeight()
.Padding(1.0f)
[
ErrorReporting->AsWidget()
]
+SVerticalBox::Slot()
.AutoHeight()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
[
// NODE CONTENT AREA
SNew(SBorder)
.BorderImage( FEditorStyle::GetBrush("NoBorder") )
]
]
];
if (bShowCommentBubbles)
{
// Create comment bubble
GetCommentBubble();
}
}
FVector2D SGraphNodeComment::ComputeDesiredSize( float ) const
{
return UserSize;
}
FString SGraphNodeComment::GetNodeComment() const
{
const FString Title = GetEditableNodeTitle();;
return Title;
}
FReply SGraphNodeComment::OnMouseButtonDoubleClick( const FGeometry& InMyGeometry, const FPointerEvent& InMouseEvent )
{
// If user double-clicked in the title bar area
if(FindMouseZone(InMyGeometry.AbsoluteToLocal(InMouseEvent.GetScreenSpacePosition())) == CRWZ_TitleBar && IsEditable.Get())
{
// Request a rename
RequestRename();
// Set the keyboard focus
if(!HasKeyboardFocus())
{
FSlateApplication::Get().SetKeyboardFocus(SharedThis(this), EFocusCause::SetDirectly);
}
return FReply::Handled();
}
else
{
// Otherwise let the graph handle it, to allow spline interactions to work when they overlap with a comment node
return FReply::Unhandled();
}
}
FReply SGraphNodeComment::OnMouseButtonUp( const FGeometry& MyGeometry, const FPointerEvent& MouseEvent )
{
if ( (MouseEvent.GetEffectingButton() == EKeys::LeftMouseButton) && bUserIsDragging )
{
bUserIsDragging = false;
// Resize the node
UserSize.X = FMath::RoundToFloat(UserSize.X);
UserSize.Y = FMath::RoundToFloat(UserSize.Y);
GetNodeObj()->ResizeNode(UserSize);
// End resize transaction
ResizeTransactionPtr.Reset();
// Update contained child Nodes
HandleSelection( bIsSelected, true );
return FReply::Handled().ReleaseMouseCapture();
}
return FReply::Unhandled();
}
int32 SGraphNodeComment::GetSortDepth() const
{
UEdGraphNode_Comment* CommentNode = Cast<UEdGraphNode_Comment>( GraphNode );
return CommentNode ? CommentNode->CommentDepth : -1;
}
void SGraphNodeComment::HandleSelection(bool bSelected, bool bUpdateNodesUnderComment) const
{
const FVector2D NodeSize = GetDesiredSize();
// we only want to do this after the comment has a valid desired size
if( !NodeSize.IsZero() )
{
if ((!this->bIsSelected && bSelected) || bUpdateNodesUnderComment)
{
SGraphNodeComment* Comment = const_cast<SGraphNodeComment*> (this);
UEdGraphNode_Comment* CommentNode = Cast<UEdGraphNode_Comment>(GraphNode);
if (CommentNode)
{
// Get our geo
const FVector2D NodePosition = GetPosition();
const FSlateRect CommentRect( NodePosition.X, NodePosition.Y, NodePosition.X + NodeSize.X, NodePosition.Y + NodeSize.Y );
TSharedPtr<SGraphPanel> Panel = Comment->GetOwnerPanel();
FChildren* PanelChildren = Panel->GetAllChildren();
int32 NumChildren = PanelChildren->Num();
CommentNode->ClearNodesUnderComment();
for ( int32 NodeIndex=0; NodeIndex < NumChildren; ++NodeIndex )
{
const TSharedRef<SGraphNode> SomeNodeWidget = StaticCastSharedRef<SGraphNode>(PanelChildren->GetChildAt(NodeIndex));
UObject* GraphObject = SomeNodeWidget->GetObjectBeingDisplayed();
if( GraphObject != CommentNode )
{
const FVector2D SomeNodePosition = SomeNodeWidget->GetPosition();
const FVector2D SomeNodeSize = SomeNodeWidget->GetDesiredSize();
const FSlateRect NodeGeometryGraphSpace( SomeNodePosition.X, SomeNodePosition.Y, SomeNodePosition.X + SomeNodeSize.X, SomeNodePosition.Y + SomeNodeSize.Y );
if( FSlateRect::IsRectangleContained( CommentRect, NodeGeometryGraphSpace ) )
{
CommentNode->AddNodeUnderComment(GraphObject);
}
}
}
}
}
bIsSelected = bSelected;
}
}
const FSlateBrush* SGraphNodeComment::GetShadowBrush(bool bSelected) const
{
HandleSelection(bSelected);
return SGraphNode::GetShadowBrush(bSelected);
}
void SGraphNodeComment::GetOverlayBrushes(bool bSelected, const FVector2D WidgetSize, TArray<FOverlayBrushInfo>& Brushes) const
{
const float Fudge = 3.0f;
HandleSelection(bSelected);
FOverlayBrushInfo HandleBrush = FEditorStyle::GetBrush( TEXT("Kismet.Comment.Handle") );
HandleBrush.OverlayOffset.X = WidgetSize.X - HandleBrush.Brush->ImageSize.X - Fudge;
HandleBrush.OverlayOffset.Y = WidgetSize.Y - HandleBrush.Brush->ImageSize.Y - Fudge;
Brushes.Add(HandleBrush);
return SGraphNode::GetOverlayBrushes(bSelected, WidgetSize, Brushes);
}
void SGraphNodeComment::MoveTo( const FVector2D& NewPosition, FNodeSet& NodeFilter )
{
FVector2D PositionDelta = NewPosition - GetPosition();
SGraphNode::MoveTo(NewPosition, NodeFilter);
// Don't drag note content if either of the shift keys are down.
FModifierKeysState KeysState = FSlateApplication::Get().GetModifierKeys();
if(!KeysState.IsShiftDown())
{
UEdGraphNode_Comment* CommentNode = Cast<UEdGraphNode_Comment>(GraphNode);
if (CommentNode && CommentNode->MoveMode == ECommentBoxMode::GroupMovement)
{
// Now update any nodes which are touching the comment but *not* selected
// Selected nodes will be moved as part of the normal selection code
TSharedPtr< SGraphPanel > Panel = GetOwnerPanel();
for (FCommentNodeSet::TConstIterator NodeIt( CommentNode->GetNodesUnderComment() ); NodeIt; ++NodeIt)
{
if (UEdGraphNode* Node = Cast<UEdGraphNode>(*NodeIt))
{
if (!Panel->SelectionManager.IsNodeSelected(Node) && !NodeFilter.Find(Node->DEPRECATED_NodeWidget.Pin()))
{
NodeFilter.Add(Node->DEPRECATED_NodeWidget.Pin());
Node->Modify();
Node->NodePosX += PositionDelta.X;
Node->NodePosY += PositionDelta.Y;
}
}
}
}
}
}
void SGraphNodeComment::EndUserInteraction() const
{
// Find any parent comments and their list of child nodes
const FVector2D NodeSize = GetDesiredSize();
if( !NodeSize.IsZero() )
{
const FVector2D NodePosition = GetPosition();
const FSlateRect CommentRect( NodePosition.X, NodePosition.Y, NodePosition.X + NodeSize.X, NodePosition.Y + NodeSize.Y );
TSharedPtr<SGraphPanel> Panel = GetOwnerPanel();
FChildren* PanelChildren = Panel->GetAllChildren();
int32 NumChildren = PanelChildren->Num();
for ( int32 NodeIndex=0; NodeIndex < NumChildren; ++NodeIndex )
{
TSharedPtr<SGraphNodeComment> CommentWidget = StaticCastSharedRef<SGraphNodeComment>(PanelChildren->GetChildAt(NodeIndex));
if( CommentWidget.IsValid() )
{
const FVector2D SomeNodePosition = CommentWidget->GetPosition();
const FVector2D SomeNodeSize = CommentWidget->GetDesiredSize();
const FSlateRect NodeGeometryGraphSpace( SomeNodePosition.X, SomeNodePosition.Y, SomeNodePosition.X + SomeNodeSize.X, SomeNodePosition.Y + SomeNodeSize.Y );
if( FSlateRect::DoRectanglesIntersect( CommentRect, NodeGeometryGraphSpace ) )
{
CommentWidget->HandleSelection( CommentWidget->bIsSelected, true );
}
}
}
}
}
float SGraphNodeComment::GetTitleBarHeight() const
{
return TitleBar.IsValid() ? TitleBar->GetDesiredSize().Y : 0.0f;
}
FSlateRect SGraphNodeComment::GetHitTestingBorder() const
{
return SCommentNodeDefs::HitResultBorderSize;
}
FVector2D SGraphNodeComment::GetNodeMaximumSize() const
{
return FVector2D( UserSize.X + 100, UserSize.Y + 100 );
}
FSlateColor SGraphNodeComment::GetCommentBodyColor() const
{
UEdGraphNode_Comment* CommentNode = Cast<UEdGraphNode_Comment>(GraphNode);
if (CommentNode)
{
return CommentNode->CommentColor;
}
else
{
return FLinearColor::White;
}
}
FSlateColor SGraphNodeComment::GetCommentTitleBarColor() const
{
UEdGraphNode_Comment* CommentNode = Cast<UEdGraphNode_Comment>(GraphNode);
if (CommentNode)
{
const FLinearColor Color = CommentNode->CommentColor * SCommentNodeDefs::TitleBarColorMultiplier;
return FLinearColor(Color.R, Color.G, Color.B);
}
else
{
const FLinearColor Color = FLinearColor::White * SCommentNodeDefs::TitleBarColorMultiplier;
return FLinearColor(Color.R, Color.G, Color.B);
}
}
FSlateColor SGraphNodeComment::GetCommentBubbleColor() const
{
UEdGraphNode_Comment* CommentNode = Cast<UEdGraphNode_Comment>(GraphNode);
if (CommentNode)
{
const FLinearColor Color = CommentNode->bColorCommentBubble ? (CommentNode->CommentColor * SCommentNodeDefs::TitleBarColorMultiplier) :
GetDefault<UGraphEditorSettings>()->DefaultCommentNodeTitleColor;
return FLinearColor(Color.R, Color.G, Color.B);
}
else
{
const FLinearColor Color = FLinearColor::White * SCommentNodeDefs::TitleBarColorMultiplier;
return FLinearColor(Color.R, Color.G, Color.B);
}
}
bool SGraphNodeComment::CanBeSelected(const FVector2D& MousePositionInNode) const
{
const EResizableWindowZone InMouseZone = FindMouseZone(MousePositionInNode);
return CRWZ_TitleBar == InMouseZone;
}
FVector2D SGraphNodeComment::GetDesiredSizeForMarquee() const
{
const float TitleBarHeight = TitleBar.IsValid() ? TitleBar->GetDesiredSize().Y : 0.0f;
return FVector2D(UserSize.X, TitleBarHeight);
}
FSlateRect SGraphNodeComment::GetTitleRect() const
{
const FVector2D NodePosition = GetPosition();
FVector2D NodeSize = TitleBar.IsValid() ? TitleBar->GetDesiredSize() : GetDesiredSize();
return FSlateRect( NodePosition.X, NodePosition.Y, NodePosition.X + NodeSize.X, NodePosition.Y + NodeSize.Y ) + SCommentNodeDefs::TitleBarOffset;
}
void SGraphNodeComment::PopulateMetaTag(FGraphNodeMetaData* TagMeta) const
{
if (GraphNode != nullptr)
{
// We want the name of the blueprint as our name - we can find the node from the GUID
UObject* Package = GraphNode->GetOutermost();
UObject* LastOuter = GraphNode->GetOuter();
while (LastOuter->GetOuter() != Package)
{
LastOuter = LastOuter->GetOuter();
}
TagMeta->Tag = FName(*FString::Printf(TEXT("GraphNode_%s_%s"), *LastOuter->GetFullName(), *GraphNode->NodeGuid.ToString()));
TagMeta->OuterName = LastOuter->GetFullName();
TagMeta->GUID = GraphNode->NodeGuid;
TagMeta->FriendlyName = FString::Printf(TEXT("%s in %s"), *GraphNode->GetNodeTitle(ENodeTitleType::FullTitle).ToString(), *TagMeta->OuterName);
}
}