User provided model was exporting correctly with an .assetinfo while it was not when just placing the .fbx file in the project folder.
Turned out that the best matching root bone was set by opening the Scene Settings for the first time, so after saving it again it worked correctly.
We're now chosing the best matching root bone when initializing the actor group, which fixes the issue.
Signed-off-by: Benjamin Jillich <jillich@amazon.com>
* Fixing user asset issue having a transform node as root rather than a bone making the whole character not animate.
* Enabled the ability to export animations for transform nodes.
Signed-off-by: Benjamin Jillich <jillich@amazon.com>
* User provided animation resulted in a data integrity error.
* The first track had 0.66 as max time while another had a keyframe more resulting in 0.69.
* When updating the duration before fixing up the last keyframe for each of the tracks, the duration was returned early with 0.66 while there were other tracks having a keyframe more.
* We're now crawling through all tracks to determine the maximum duration.
* This results in a correct fixup of the last frame.
Signed-off-by: Benjamin Jillich <jillich@amazon.com>
* Fix compile error from -Wwritable-strings
Signed-off-by: Chris Burel <burelc@amazon.com>
* Fix flags used to build MaskedOcclusionCulling with clang
Signed-off-by: Chris Burel <burelc@amazon.com>
* Fix class that has a final destructor, but the class itself was not final
Signed-off-by: Chris Burel <burelc@amazon.com>
* Final update copyright headers to reference license files at the repo root
Signed-off-by: spham <spham@amazon.com>
* Fix copyright validator unit tests to support the stale O3DE header scenario
Signed-off-by: spham <spham@amazon.com>
-Re-purposed an unused boolean in RPI::Cullable for previous frame's visiblity to instead represent objects that are hidden in the simulation.
-Updated MeshFeatureProcessor::SetVisible to set this value on the cullable.
-Updated the MeshComponent to handle visiblity changes by not rendering the mesh instead of deactivating and/or reactivating the component.
-Updated the AtomActorInstance to handle changes to the visibility from the ActorComponent.
Tested by creating two entities with static mesh components, on entity hidden and the other visible. Plus three entities with actor components, one where the actor is visible, one where the entity is visible but the 'render character' setting on the actor component is disabled, and one where the 'render character' setting is enabled, but the entity is not visible.
For each of these 5 entities, I added them as 5 loose entities, 5 entities that were children to a parent entity, and a slice with all 5 as children to a parent entity, and tested toggling visibility of the parent entities.
For each of these 3 sets of 5 entities, I added them directly to the level, added them all to a layer where the layer was visible, and added them all to a layer where the layer was not visible, and tested toggling the visibility of the layers.
* Fixes saving motions from within the Animation Editor
* Fixes saving actors from within the Animation Editor
* The motion event chunk of the .motion file format now also stores the event data as json (rather than XML) reducing motion file sizes (Example: 60KB motion went down to 49KB, containing only 4 motion events from 2 tracks).
* Fully backward compatible
* New motion meta data rule stores the event data directly rather than command strings or objects. This is the way that aligns with the Json paradigm and as side-effect bypasses the optionals that we use for the commands which fixes the issue.
* [LYN-4574] Adding new motion event meta data rule that stores the event data directly rather than via commands to align with the Json paradigm
* [LYN-4574] Preparing motion, event table and event track for Json serialization
* [LYN-4574] New chunk to store motion event data in Json format (fully backward compatible to XML)
* [LYN-4669] Json: Empty AZStd::vector<AZStd::shared_ptr<T>> serializes into 1x element with nullptr as data
* [LYN-4603] EMotion FX: Cannot save actors with physics or simulated object setup in Json format
`size_t` is a typedef that is sized differently on different platforms.
Instead, use `AZ::u64`, which is large enough to hold all platforms'
`size_t` types but is a fixed size, to avoid size mismatches per
platform.
* Before we were skipping actors in case there was animation data present in the source asset to avoid having many duplicated actors.
* There was an issue though for simple test fbx files containing a full character with a test motion.
* The new rule is that we will be exporting actors on default whenever there is a skeleton including either skinning data or morph targets, as these usually are not included for animation assets to not increase disk space heavily.
* Tested with several of our assets and always showed the expected behavior with the new way.
* Expose Actor bounding box configurations to component serialize and edit contexts.
Allows one, for example, to have an animation which moves the character far away from the static bounds, and not have that character dissapear when the static bounds are outside of the camera frustum
* Apply suggestions from code review
* Bug fix: name the parameter, place comments in the intended place.
* [LYN-3481] Added new actor instance request and notification buses
* [LYN-3481] Actor instance notifies bus about it being created or destroyed
* [LYN-3481] Selection lists are now automatically removing destroyed actor instances
* [LYN-3481] Morph targets window plugin reinitializing when used actor instance got destroyed
* [LYN-3481] Removing the OnDeleteActorInstance() from the emfx event handler/manager and porting the recorder to the new actor instance bus
* [LYN-3481] Removed the create actor instance calls from the event handler/manager
* [LYN-3481] Fixing automated tests