Commit Graph

299 Commits

Author SHA1 Message Date
Terry Michaels 55f2b24302 Legacy Mesh component removal
* Removed legacy components

* More legacy render component removal

* Starting removal of legacy mesh component dependencies

* Removed old light components that were allowing Atom test to succeed

* Testing increasing the timeout to see if it lets it pass in Jenkins

* put original timeout back

* reordered components to test if it is component specific or not

* Testing disabiling the test to see if we get a green

* Fixed the removal of the test to sandbox

* Removed Legacy Mesh Component and associated tendrils

* Removed some missed references

* Fixed some issues with unity builds and ambiguous naming

* Addressed review feedback
2021-05-03 17:17:18 -05:00
Chris Burel 13c7b06308 Handle EMotionFX hotkeys with QActions instead of in keyPressEvent (#514)
EMotionFX has user-customizable hotkeys. These hotkeys are registered by
individual plugins, and then the user can set what they want the hotkey to
be. The way this was implemented was by reimplementing `keyPressEvent` and
`keyReleaseEvent` for each widget that used customizable hotkeys, and in
there call `KeyboardShortcutManager::Check` to see if key press matched any
existing hotkey mapping.

However, the main Editor has behavior that prevents events from reaching
EMotionFX's `keyPressEvent` method, if a keypress matches a hotkey that is
also used by the main Editor. This is due to the global event filter
defined in `ShortcutDispatcher::eventFilter`. This event filter takes a Qt
`Shortcut` event, and will re-dispatch that event to all parent widgets of
a given receiver. So if a parent widget, like the main Editor, *does* have
a QAction that matches a given key sequence, that widget will receive the
event, the event is marked as processed, and no `KeyPress` event is ever
sent to the original widget where the event occurred.

All this means that processing hotkeys in a `keyPressEvent` won't work
reliably. The main editor defines a hotkey for the `delete` key, so that
can never be received in a `keyPressEvent` by any child widget of the
Editor.

This change removes all the hotkey logic from the `keyPressEvent` methods,
and replaces them with `QAction` instances. Hotkeys are defined with
`QAction::setShortcut`, and added to each widget that they apply to.

In addition, the `KeyboardShortcutManager` class had to be adjusted to suit
this new way of defining the hotkeys. It now has a pointer to each
`QAction*` that can have a customizable hotkey. It has also been greatly
simplified, since it can use a `QKeySequence` instead of separate variables
for `int key; bool hasCtrlModifier; bool hasAltModifier`.

Applying user-defined hotkeys now has to be done after the hotkeys are
registered from a plugin. It is the plugin's responsibility to reload the
user-defined hotkeys after registering all of its actions.
2021-05-03 15:00:40 -07:00
Gene Walters 284c34a1af Merge branch 'main' into LY123349_Emfx_MotionInstancePoolReduceFragmentation 2021-05-03 14:06:26 -07:00
Aristo7 64d980bc03 Deleted AzFramework::AtomActiveInterface 2021-05-03 15:40:32 -05:00
Benjamin Jillich 893d4208c0 [LYN-3312] EMotionFX: Multi-threading dual quaternion software skinning / Moving the mouse while having many characters on screen makes the editor unusably slow (#506)
Multi-threaded software skinning by splitting the mesh up into batches of 10,000 vertices, which results in 27 jobs being spawned and executed using a character asset from a customer having 262,676 vertices and a speed improvement of 12x on a 32-core machine.

Single-threaded: 11,61 ms
Multi-threaded (27 jobs): 0,96 ms

* Created a SkinRange() function that can skin a part of the vertices.
* The actual skinning is now using the job system to split up the skinning into several pieces and executes them in parallel.
* Ported the bone info array to AzCore.
* Fixed some issues with the mesh based bounds update in the actor instance.
2021-05-03 18:48:30 +02:00
Benjamin Jillich 3c7ca72693 [LYN-3269] EMotionFX Editor save changed files prompts users to save files to the cache (#469)
* The asset source filename is now displayed instead of the product filename.
* Fixed a stylesheet issue with screen scaling on 4K monitors for the saved changed files window.
* Cleaned up surrounding code.
2021-05-03 18:45:35 +02:00
bosnichd 1d4c483e73 Red code legacy renderer (#383)
- Remove some references to gEnv->pRenderer/GetIEditor()->GetRenderer() that is now always null.
- Restore the debug console to existence.
- Stop building the following in preparation for their removal:

Code/CryEngine/Cry3DEngine/*
Code/CryEngine/RenderDll/*
Code/Tools/CryFXC/*
Code/Tools/HLSLCrossCompiler/*
Code/Tools/HLSLCrossCompilerMETAL/*
Code/Tools/RC/*
Code/Tools/ShaderCacheGen/*
Tools/CrySCompileServer/*
2021-04-30 07:31:42 -06:00
Benjamin Jillich aa5ddbf532 [LYN-3344] EMotionFX: Data integrity error, missing keyframe at the end of the animation (#418)
Animation tracks in the DCC tool formats are often stored individually, each having its own duration. For EMotion FX motion data, it is required to have tracks with the same duration and e.g. a position track has to match the duration of a morph track. This will be automatically fixed by adding missing keyframes at the end of the tracks to match the animation's global duration. The value of these are the same as the last one of the given track so that they freeze at that value.

* Added function that adds missing keyframes to match the individual tracks' duration for the non-uniform motion data in emfx.
* Added data integrity checks for various stages of the motion data builder / motion exporter.
* Checking for data integrity issues with an assert in the emfx importer. This is just a safety check and we don't need that for release builds as they should be captured at asset processing time already.
2021-04-30 07:21:52 +02:00
Gene Walters 53d710df94 Merge branch 'main' into LY123349_Emfx_MotionInstancePoolReduceFragmentation 2021-04-29 19:34:36 -07:00
Gene Walters 2b8981d72f Merge branch 'main' into LY123349_Emfx_MotionInstancePoolReduceFragmentation 2021-04-29 10:48:57 -07:00
Benjamin Jillich 0603fee04e [LYN-3072] TQO Animation: "Retarget Motion" on Simple Motion sends Asserts (#358)
* Added a check to only apply retargeting to animated joints. Joints that the motion does not animate won't have a valid motion data link and thus retargeting can't be applied.
* The check cannot be applied at a level above as we still need to adjust the translation for root nodes, even for the ones that the motion does not animate.
2021-04-29 12:20:20 +02:00
lumberyard-employee-dm 3dec5d3b71 LYN-2537 engine assets (#254)
* LYN-2537 Moved the Engine and Editor folder to be within the EngineAssets folder

* Fixed Documentation in bootstrap.cfg to correct the path to the user project specific registry file

* Adding a newline to the output of AssetCatalog 'Registering asset..., but type is not set' message

* Updating the AssetProcessorPlatformConfig.setreg Scan Folder to detect
the @ENGINEROOT@/EngineAssets/Engine path for engine runtime assets and
@ENGINEROOT@/EngineAssets/Editor path for engine tool assets

* Updating references to Icons and other assets to account for moving the
Engine and Editor folder under a single EngineAssets folder

* Moving the Engine Settings Registry folder from Engine/Registry -> Registry

* Removed the LY_PROJECT_CMAKE_PATH define as it is not portable to other locations. It is hard coded to the project location that was used for the CMake configuration. Furthermore it paths with backslashes within it are treated as escape characters and not a path separator

* Updated the LyTestTools asset_processor.py script to copy the exclude.filetag from the EngineAssets/Engine directory now

* Fixed Atom Shader Preprocessing when running using an External Project

* Updated the TSGenerateAction.cpp to fix the build error with using a renamed variable

* Updated the Install_Common.cmake ly_setup_others function to install the
EngineAssets directory and the each of the Gem's Assets directory while
maintaining the relative directory structure to the Engine Root
Also updated the install step to install the Registry folder at the
engine root

* Fixed the copying of the Registry folder to be in the install root, instead of under a second 'Registry' folder

* Moving the AssetProcessorPlatformConfig.setreg file over to the Registry folder

* Updated the LyTestTools and C++ code to point that the new location of
the AssetProcessorPlatformConfig.setreg file inside of the Registry
folder

* Renamed Test AssetProcessor*Config.ini files to have the .setreg extension

* Converted the AssetProcessor test setreg files from ini format to json
format using the SerializeContextTools convert-ini command

* Updated the AssetProcessor CMakeLists.txt to copy over the test setreg files to the build folder

* Updated the assetprocessor test file list to point at the renamed AsssetProcessor*Config setreg filenames

* Removed the Output Prefix code from the AssetProcessor. The complexity that it brought to the AP code is not needed, as users can replicate the behavior by just moving there assets underneath a another folder, underneath the scan folder

* Adding back support to read the AssetProcessorPlatformConfig.setreg file from the asset root. This is only needed for C++ UnitTests as they run in an environment where the accessing the Engine Settings Registry is not available

* Updating the Install_common.cmake logic to copy any "Assets" folder to
the install layout.
The Script has also been updated to copy over the "Assets" folder in the
Engine Root to the install layout instead of an "EngineAssets" folder

* Updating References to EngineAssets source asset folder in code to be the Assets source folder

* Moved the Engine Source Asset folder of 'EngineAssets' to a new folder name of 'Assets'. This is inline with the naming scheme we use for Gem asset folders

* Adding the EngineFinder.cmake to the AutomatedTesting project to allow it to work in a project centric manner

* Updating the LyTestTools copy_assets_to_project function to be able to copy assets with folders to the temporary project root
Fixed an issue in LyTestTools where the temporary log directory could have shutil.rmtree being called twice on it leading to an exception which fails an automated test

Updated the asset_procesor_gui_tests_2 AddScanFolder test to not use the
output prefix, but instead place the source asset root into a
subdirectory

* Correct the AssetProcessorPlatformConfig Scan Folders for the EngineAssets directory to point at the Assets directory

* Updated the asset procesor batch dependency test scan folder to point at the 'Assets' folder instead of 'EngineAssets'
2021-04-28 21:38:43 -05:00
greerdv b113f09a71 first pass of changing transform to use float for scale internally rather than Vector3 2021-04-27 18:12:46 +01:00
rhongAMZ fc3a48bb26 EMFX: Fix a crash when deleting blend tree node (#331) 2021-04-27 09:07:34 -07:00
Gene Walters ab60db65cb Merge pull request #147 from aws-lumberyard-dev/genewalt_emfx_ReleaseUnusedRawAssetDataAfterInit
Release unused raw asset data in EMotionFX asset
2021-04-26 19:27:28 -07:00
Benjamin Jillich 818c2526c9 [LYN-3306] EMotionFX: Client sample asset does not animate with simple motion component (#313)
* Removed discrepancy between editor and game simple motion components which led to an animation being played in the game one while the editor component looked broken for animations with root joints animated only.
* Sharing a new in-place attribute between the game and editor components that lets users control whether positional and rotational changes shall be applied onto root joints or not.
2021-04-26 19:53:39 +02:00
Chris Burel 61fe298319 Merge pull request #197 from aws-lumberyard-dev/filesEndInNewlines
Add newlines to the end of all files
2021-04-23 12:11:40 -07:00
Aaron Ruiz Mora 5fd8c35878 Fixing cloth working with Actors by reading directly from ModelAsset instead from EMFX Mesh. (#235)
- Fixing cloth working with Actors by reading directly from ModelAsset instead from EMFX Mesh.
- Actor caches map from joint indices in skin metadata to skeleton indices so they can be query later.
- Actor cloth skinning reads indices and weights from Model Asset instead from EMFX Mesh.
- Actor cloth skinning with unlimited skinning bones.
- Sort out cloth unit tests by disabling them until there is a way to create an Atom mesh
- Addressing feedback.
2021-04-23 19:46:57 +01:00
Benjamin Jillich 9bbcc7ec68 [LYN-3252] EMotion FX: Morph target buffer only found on first Atom mesh (#280)
We were using the first Atom mesh to check for morph target buffers by getting access to the buffer asset from the buffer asset view. This won't work for models with multiple meshes while the first mesh is not morphed.
2021-04-23 19:11:43 +02:00
rhongAMZ 6583178a4c EMotionFX: Removing the Motions after corresponding Motionset is removed from the active Animgraph crashes the Editor (#276)
LYN-3200 EMotionFX: Removing the Motions after corresponding Motionset is removed from the active Animgraph crashes the Editor
2021-04-23 09:54:09 -07:00
Chris Burel 28170ffe41 Add newlines to the end of all files 2021-04-23 09:43:40 -07:00
Gene Walters 53b29cbca5 updating based on feedback 2021-04-22 16:36:47 -07:00
Benjamin Jillich ba324b8806 [LYN-3013] Github TQO Animation: MorphTarget has data integrity issue (#237)
* Added error reporting for data integrity issues for non-uniform motion data.
* The actual issue was a mismatch between the end times of the morph and the skeletal animations. They need to match in EMotionFX.
* The morph target animation exported a keyframe too much.
2021-04-22 18:53:27 +02:00
rhongAMZ cbc7b60eb8 Merge pull request #203 from aws-lumberyard-dev/animation/rhhong/dev
Animation Editor: Removing all layouts causes the Animation Editor to be unusable
https://jira.agscollab.com/browse/LYN-3139
2021-04-21 16:31:36 -07:00
Gene Walters 49bd9dacae Merge branch 'main' into genewalt_emfx_ReleaseUnusedRawAssetDataAfterInit 2021-04-21 16:19:53 -07:00
rhhong d2eafe7995 Merge branch 'main' into animation/rhhong/dev 2021-04-21 12:51:16 -07:00
Chris Galvan 5f8ffdfdc1 [LYN-3137] Fixed EMFX floating dock widgets not responding to docking events. 2021-04-21 14:48:00 -05:00
rhhong e05b7d5bb5 Animation Editor: Removing all layouts causes the Animation Editor to be unusable
Making the anim graph layout the default layout, cannot be removed from the menu.
2021-04-21 11:19:13 -07:00
Gene Walters 1ef7d5c14b updating based on feedback 2021-04-21 09:46:06 -07:00
Gene Walters c30083ca92 Merge branch 'main' into genewalt_emfx_ReleaseUnusedRawAssetDataAfterInit 2021-04-21 00:25:44 -07:00
Benjamin Jillich 041f68c238 [LYN-2859] EMotionFX: Getting active states from anim graph via script crashes the editor (#150) 2021-04-21 07:54:37 +02:00
Walters b38ab6c2bc Change reservation strategy in MotionInstancePool to reduce fragmentation 2021-04-20 22:17:11 -07:00
Walters b9c618329a Customer PR. Released unused raw asset data in EmotionFX asset to reclaim memory after asset initialization 2021-04-19 17:08:15 -07:00
Benjamin Jillich 568b31cf1c [LYN-2856] EMotionFX: Creating an Anim Graph snapshot crashes the Editor (#67)
Cherry picking bug fix from 1.0
2021-04-19 18:03:28 +02:00
AMZN-stankowi 4c2260af97 Lyn 2651 rebased to main (#74)
* Helios - LYN-2651 Lerping bones, cleaned up key frame generation for morph targets. Merge from 1.0.
2021-04-19 08:51:52 -07:00
amzn-sj b38449ffaa Merge branch 'main' into LYN-2893 2021-04-16 16:21:36 -07:00
Chris Burel 0db617f4d8 Make EMotionFX shaders load from the Shaders directory, instead of prepending "Shaders" to all filenames (#56)
Because the `shaderPath` variable is used as a base directory, it needs
to end with the directory separator. Otherwise the parts before the data
dir become a file prefix used when loading all shaders. Attempts to load
"Line_VS.glsl" from "Shaders/" end up instead trying to load
"ShadersLine_VS.glsl".
2021-04-16 14:19:45 -07:00
amzn-sj 2f115cb739 Merge branch 'main' into LYN-2893 2021-04-16 09:10:40 -07:00
amzn-sj a81ca4490f Move EMotionFX's OpenGL dependency to 3rd Party and make sure Mac builds successfully 2021-04-15 10:42:34 -07:00
amzn-sean 23cf2d5d68 SystemComponent is now only build in PhysX.Static, instead of most of the Physx projects. 2021-04-15 12:24:48 +01:00
alexpete 8469c9ca0a Integrating github/staging through commit 5f214be 2021-04-13 17:18:57 -07:00
alexpete c5b955d281 Integrating github/staging through commit b0dd7ed 2021-04-09 12:03:26 -07:00
alexpete 1044dc3da1 Integrating github/staging through commit ab87ed9 2021-04-09 11:27:37 -07:00
alexpete c2cbd430fe Integrating up through commit 90f050496 2021-04-07 14:03:29 -07:00
Brian Herrera 39f53338bf Merge branch 'main' into LoadPipelineFromGitHub 2021-03-26 17:05:57 -07:00
alexpete 36c4e827bd Integrating latest from github/staging
Integrating up through commit 5e1bdae
2021-03-26 14:32:02 -07:00
Brian Herrera e8bbb5a0d5 Set scripts to be executable
This is required to build on linux/mac
2021-03-26 09:26:12 -07:00
alexpete 75dc720198 Integrating latest 47acbe8 2021-03-25 13:57:57 -07:00
alexpete a10351f38d Initial commit 2021-03-08 14:30:57 -08:00