Commit Graph

72 Commits

Author SHA1 Message Date
Max Preussner
e1b633f4ca Sequencer: Code and documentation cleanup pass
- introduced ISequencerTrack
- reduced dependency on FMovieSceneTrack
- forward declarations
- added missing virtual destructors, include files, comments
- NULL to nullptr

[CL 2700079 by Max Preussner in Main branch]
2015-09-21 19:36:14 -04:00
Richard Hinckley
6ceaa5aba7 Cleaning out programmer-only comments that were harvested by Doxygen.
#platformnotify Josh.Adams

[CL 2690143 by Richard Hinckley in Main branch]
2015-09-14 09:25:39 -04:00
Olaf Piesche
2a0712091c Bug fix for constant editing in custom UI not distinguishing properly between spawn and update constants; re-setup some of the effects having trouble due to this.
[CL 2663499 by Olaf Piesche in Main branch]
2015-08-20 17:27:53 -04:00
Simon Tovey
f7ffe5c68e ** PRIMARY FEATURE **
- Events
Events work by writing to a preallocated buffer exposed to the VM as "SharedData". The underlying data storage for these is the same as particle attriubtes. Each "Shared Data" view in the VM has a counter which is incremented or decremented to aqcuire and consume a slot in this buffer for any particle that wished to write or read from it.
In the graph, this is done via ReadEvent and WriteEvent nodes. Each lets the user define the data they wish to read or write, just like for particle attributes.
Each also has a mandatory "Valid" pin which indicates whether the data being read or written is valid.
e.g.
A write would be marked deliberately valid or invalid by the user to control which particles write out event data. Valid <= 0.0f means dont' write. Valid > 0.0f means do write. Matches current working of less than etc. Should probably change to use ints when they're supported.
A read would be valid or not depending on whether there is data available in the event buffer.

Events TODO:
Once ints are supported, alot more power can be had using direct indexing of the buffers.
This leads me onto supporting generic, non-event buffers. Should be very easy to do.
Much of the VM support is hacked in and will want to be replaced after scalarization.
I may also move away form a "Shared Data" area and write a more general array feature. Couldn't really do this initially with no int support. Should have really done scalarization+int support first.
Needs BP interface.

** SECONDARY FEATURES **
- VM Debugger working - Still basic and rough. Allows a single particle to be traced through the VM for it's lifetime.
- Function Merging changes - Merged as needed during compiler traversal rather than all at start.
- Constatnt changes - Splat scalars when building table, not runtime. Faster and reduced code complexity.
- Fixed reallocation of niagara node pins so that existing connections are preserved.
- Added a reregister context class to reregister all niagara components that use a particualr script when that script is recompiled. TODO: Should also do this for property changes in the editor I think.
- Implemented GreaterThan Op. The reverse of LessThan
- Implemented VectorSelect Op.  > 0.0f Selects input A, otherwise B.
- Added a new Graph Editor Tab to the Niagara Graph Editor. "Flattened Graph" shows you the scripts graph but with all the function calls merged into the main graph. Useful for debugging. Still a bit rough around the edges. Might not make it to V1.0 of niagara but useful for the moment.

** MINOR FIXES **
Fixed crash in Dev UI in the effect editor.
Tweakd the details customization for the dev ui.
Fixed leakage of all effect instances that were created. This stuff still needs some work. Need to do a pass over the high level stuff in Niagara and more carefully define lifetimes and ownerships.

[CL 2662489 by Simon Tovey in Main branch]
2015-08-20 08:49:28 -04:00
Olaf Piesche
143d0ef9a7 Niagara: adding mesh effect renderer; few additional bug fixes
[CL 2636020 by Olaf Piesche in Main branch]
2015-07-28 16:50:47 -04:00
Matt Kuhlenschmidt
611aa622f3 - Rename UMovieSceneAnimation to UMovieSceneSequence (and all related classes to use the term Sequence)
- Fixed shots and sub-movie scene sequences being broken by the removal of UMovieScene as an asset class

[CL 2634030 by Matt Kuhlenschmidt in Main branch]
2015-07-27 12:12:59 -04:00
Max Chen
d624b61fed Sequencer: Time range slider
- An optional slider at the bottom of the timeline that show a start/end and in/out range. When enabled, adjusting the timeline (panning/zooming) will be locked to the start/end range. This is another option which is on  by default.
- Added project settings for the time range. For the level editor sequencer, it defaults to frames 101-200.
- When the slider is not visible (the default for UMG), there should be no change in behavior.

[CL 2633917 by Max Chen in Main branch]
2015-07-27 11:14:09 -04:00
Max Preussner
eb6a4af8dd MovieScene: Refactored MovieScene and Sequencer to unify the implementation and handling of movie scenes and object bindings
- IMovieSceneAnimation derivatives are now the primary types consumed by Sequencer; they hold a root MovieScene inside
- Object binding managers have been removed; bindings are persisted in UActorAnimation, UNiagaraAnimation, UWidgetAnimation
- MovieSceneAssetEditor is now ActorAnimationEditor and became a plug-in
- MovieSceneRuntimePlayer is now ActorAnimationPlayer; K2Node_PlayMovieScene has been removed

#CodeReview: matt.kuhlenschmidt, frank.fella, nick.darnell, olaf.piesche, max.chen, andrew.rodham

[CL 2628945 by Max Preussner in Main branch]
2015-07-22 10:59:40 -04:00
Frank Fella
a5e58c8297 Sequencer - Fix add track drop-down menus and add sub object support to the outliner and drop-downs.
[CL 2622414 by Frank Fella in Main branch]
2015-07-15 16:52:58 -04:00
Matt Kuhlenschmidt
83bb8e975c Fix Niagara track sections not displaying section borders
[CL 2618438 by Matt Kuhlenschmidt in Main branch]
2015-07-13 13:24:08 -04:00
Olaf Piesche
71972f5a85 Making the effect editor work again.
[CL 2613976 by Olaf Piesche in Main branch]
2015-07-08 15:28:40 -04:00
Steve Robb
7661666dcb Error when a module is both a dependency and dynamically loaded.
Fixes for lots of existing modules by removing all dynamically loaded duplicates (this is probably not the correct solution, but is the safest).

#codereview robert.manuszewski

[CL 2610845 by Steve Robb in Main branch]
2015-07-06 05:46:20 -04:00
Andrew Rodham
58107d1db2 Sequencer settings are now stored per sequencer-type
[CL 2607255 by Andrew Rodham in Main branch]
2015-07-01 06:06:21 -04:00
Matt Kuhlenschmidt
55de9b6526 Sub-movie scene work
-Sub-movie scenes and shots can now be properly deleted
-Sub-movie scenes now properly update their spawnables when they are created/deleted
-Movie scene instances now have a chance to clean up their inner movie scene data when they are removed
-Movie scene shot tracks now properly evaluate any inner tracks they have
-Movie scene sections are now evaluated at t=0 instead of being skipped due to TRange not working if both start and end time are zero

[CL 2605023 by Matt Kuhlenschmidt in Main branch]
2015-06-29 20:59:21 -04:00
Matt Kuhlenschmidt
ea6db7edaf Backend improvements to the Shot workflow in Sequencer. UI still needs improvement
- Creating a new shot will now create a new sub-movie scene with a shot name and number
- Refactored shot playback in the editor so that it properly sends the correct data to the level viewport being previewed
- Shot tracks are no longer considered a master track.  Each movie scene has a dedicated shot track that is created if needed.  Only the root movie scene shot track is updated at runtime however

[CL 2604023 by Matt Kuhlenschmidt in Main branch]
2015-06-29 11:07:33 -04:00
Max Chen
374b59134e Sequencer: Get actor name for outliner display.
[CL 2599359 by Max Chen in Main branch]
2015-06-24 14:58:37 -04:00
Max Preussner
9927a96cbb MovieScene: Renamed module; reorganized files.
[CL 2597352 by Max Preussner in Main branch]
2015-06-23 12:47:53 -04:00
Simon Tovey
149ff75b67 Added a new, alternate UI to the Niagara effect editor. Accesible as a new tab under the windows menu.
This arranges all emitters in an SDetailView with some customization.
Primary benefit of this is that hooking things into the UI will require almost no work and elements can still be customized for a good UX.
Previous UI is still available and should work exactly as before.

Quite a bit of refactoring was needed to acheive this but much of it was needed for other things anyway and/or has some nice additonal benefits.
E.g.
- All constant types are supported easily.
- You can now create a default data object in the graph which will propagate through to the effect editor.
- Adding new data object types will be very easy.

Also added a delete and duplicate button for emitters in both UIs.

#codereview olaf.piesche

[CL 2590057 by Simon Tovey in Main branch]
2015-06-17 10:12:41 -04:00
Olaf Piesche
0bd22cbcfd Niagara: proper serialization of data objects; couple of bug fixes
[CL 2587782 by Olaf Piesche in Main branch]
2015-06-15 15:51:40 -04:00
Olaf Piesche
f33169806f Niagara: embedded sequencer timeline in the effect editor, with lifetime editing for emitters; basic lifetime management for emitters in the backend;
#codereview simon.tovey

[CL 2581685 by Olaf Piesche in Main branch]
2015-06-09 15:43:55 -04:00
Stephan Delmer
e168efa439 Remove pragma once from NiagaraSequencer.cpp to fix non unity on mac CIS error.
#UE4

[CL 2577986 by Stephan Delmer in Main branch]
2015-06-04 22:05:52 -04:00
Olaf Piesche
5d9207a492 Fix for compile error.
[CL 2576267 by Olaf Piesche in Main branch]
2015-06-03 17:46:01 -04:00
Olaf Piesche
0937a4513f Niagara: first pass embedded sequencer timeline
[CL 2575821 by Olaf Piesche in Main branch]
2015-06-03 13:34:28 -04:00
Simon Tovey
9a40e91fa0 Compile fix
[CL 2558734 by Simon Tovey in Main branch]
2015-05-20 10:19:39 -04:00
Simon Tovey
da751ac605 Support for Cut/Copy/Paste, Duplicate and Select All in Niagara graphs.
Plus better support for Undo/Redo.

#codereview Olaf.Piesche

[CL 2556699 by Simon Tovey in Main branch]
2015-05-19 06:36:01 -04:00